软件开发与统计编程/分析相比如何?

时间:2010-02-19 10:02:12

标签: r statistics

统计分析/编程,正在编写代码。无论是描述性还是推理性,您都可以编写代码:导入数据,清理数据,分析数据和编译报告。

分析数据可能涉及许多曲折的统计程序,以及您查看数据的角度。最后,您有许多文件,包含许多代码行,可以对您的数据执行任务。其中一些是可重复使用的,你将其封装为“有利可图”的功能。

“统计分析”这个过程对我来说就像“编程”一样但我不确定每个人都有同感。

来自Wikipedia article on Software development

  

软件开发一词经常出现   用来指代的活动   计算机编程,这是   写作和维护的过程   源代码,而广义   该术语包括所有内容   涉及到的概念   期望的软件直到决赛   软件的表现形式。   因此,软件开发可能会   包括研究,新发展,   修改,重用,重新设计,   维护或任何其他活动   这导致了软件产品。   对于较大的软件系统,通常   由一群人开发,一些人   通常遵循流程的形式   指导生产阶段   软件。

根据这种简单的定义(以及我的拙见),这听起来非常像建立统计分析。但我想这不是那么简单。

这引出了我的问题:您可以在两项活动之间找出哪些不同之处?

它可以是技术方面,不同的策略或工作方式,以及您认为相关的其他内容。

这个问题来自以下主题:

3 个答案:

答案 0 :(得分:12)

正如我在my response to your other question中所说,您所描述的编程。所以简短的回答是:没有区别。稍微长一点的答案是统计和科学计算应该比其他编程需要更多的控制开发。

可以使用Excel或使用SPSS,SAS,Matlab或S-Plus(例如)的点击式方法进行一定比例的统计分析。使用涉及编程的那些程序(或R)之一进行的更复杂的分析显然是软件开发的一种形式。这种统计计算可以从遵循软件开发的所有最佳实践中受益匪浅:源代码控制,文档,项目计划,范围文档,错误跟踪/变更控制等。

此外,与任何编程项目一样,有不同类型的统计分析可以遵循不同的方法:

  • 探索性数据分析应遵循迭代方法,如the Agile methodology。在这种情况下,当您不清楚前面涉及的步骤时,使用自适应和自我反思的开发方法至关重要。
  • 更常规的分析(例如政府年度调查,例如人口普查)可以遵循更传统的方法,例如waterfall方法,因为它将遵循一系列非常明确的步骤提前。

我建议任何统计学家都会从阅读像"Code Complete"这样的书中受益(看the other top books in this post):你的分析越有条理,成功的可能性就越大。

在某种意义上,统计分析需要甚至更多围绕版本控制和文档的良好实践,而不是其他编程。如果您的程序只是满足某些业务需求,那么只要程序按规范要求的方式运行,所使用的算法或软件就非常重要。另一方面,通过科学和统计计算, 准确性 再现性 是至关重要的。这是John Chambers"Software for Data Analysis"'(S语言的创建者)中的一个主要重点Sweave。这是添加文字编程(例如使用{{3}})作为统计学家工具箱中的重要工具的另一个原因。

答案 1 :(得分:4)

也许共同点是“解决问题。”

除此之外,我怀疑我怀疑我能提供任何见解,但我至少可以从个人经验中提供有限的答案。

这个问题出现在我们招聘中 - 即,我们雇用一名程序员并教他们统计数据,还是雇用统计人员并教他们编程?理想情况下,我们可以找到一个能够熟练掌握这两个学科的人,事实上,这是我们投入的第三个网,但很少取得任何成功。

这是一个例子。两个活动(软件开发和统计分析)之间最稳定的区别可能是它们各自的输出或项目可交付成果。例如,在我的小组中,有人正在对我们的分离路径和因子实验的结果进行统计分析(例如,从t检验结果,差异是否显着,或者检验是否应该继续)。该分析将发送给营销部门,他们将用于修改构成网站的网页,以提高转换率。第二项任务涉及这些分析的抽象和部分自动化,以便可以近乎实时地处理结果。

对于第一项任务,我们将指派一名统计员;对于第二个,一个程序员。我们试图解决的业务问题对于这两个任务都是相同的,但是对于第一个,关键是统计,第二个,统计问题已经基本解决,关键是核心编程任务(I / O)。

还要注意与这两个活动相关的工具的演变是如何演变的,因此两者之间的区别(软件开发和数据分析)被进一步混淆:主流开发语言正在被用作特定领域的分析工具与此同时,继续开发框架,使非开发人员能够在DSL中快速构建轻量级,面向任务的应用程序。

例如,python是一种通用开发语言,它具有R绑定(RPy2)及其本机交互式解释器(IDLE),大大方便了Python在统计分析中的使用,同时,有一个明显的趋势针对(web)应用程序开发的R包开发:Qt,gWidgetsWWW和RApache的R绑定 - 都是针对客户端或Web App开发的R包,其初始版本是(我认为)在过去18个月内。除此之外,至少从去年的最后一个季度开始,我注意到关于Web应用程序开发主题的博客文章,演示文稿等的频率越来越高。

最后,我想知道你的问题是否可能是R越来越受欢迎的证据。这就是我的意思。十年前,当我的雇主购买了一个站点许可证时,我开始学习和使用一种主要的统计计算产品(这里没有说明哪一个,它以“S”开头)。我发现它不自然且不灵活。与Perl(我当时使用的)不同,这个工具不是我的大脑的延伸(这不是分析工具的可选属性,对我而言,它或多或少是一个的定义)。与此系统交互更像是使用自动售货机 - 我选择了一些我想要的统计功能,然后等待“输出”,这通常是一组令人印象深刻的高影响全彩色图表。几乎总是我想要的是修改我的输入或使用该输出进行下一个分析步骤。这似乎需要另一个单独的自动售货机之旅。事实上,这个工具是上下文感知的 - 即,它知道统计数据 - 而Perl没有,并没有弥补尴尬的互动。以这种方式进行的统计分析绝不会与软件开发混淆。 (同样,这只是我自己经验的总结,我并不认为它可以被抽象化。它也不是对任何(或所有)商业数据分析平台的争论 - 数百万人使用它们并且他们已经赢得了数以万计的收入。创造它们的人,所以让我们假设这是我自己的限制导致了未能结合。)

直到大约18个月前我才听说过R,而我在扫描PyPI(Web界面到Python的外部软件包存储库)时为python的统计库发现了它。在那里我遇到了RPy,它看起来很棒但需要一个名为“R”的依赖(RPy当然实际上只是一组Python绑定到R)。

也许R对程序员和非程序员同样有吸引力,对程序员/分析师来说,这是天赐之物。它打击了我的数据分析平台愿望清单上的所有内容:基于全功能通用编程语言的引擎(在这种情况下是经过验证的方案后代),底层功能范例,内置交互式解释器,本机数据从头开始构建用于数据分析的类型,以及烘焙的领域知识。数据分析变得更像编码。生活很美好。

答案 2 :(得分:1)

如果您正在使用R,那么您可能正在编写代码来解决您的统计问题,因此从这个意义上讲,统计分析是编程的一个子集。

另一方面,有很多SPSS用户从未尝试过指点和点击以解决他们的统计数据问题。这感觉不像给我编程。

相关问题