如何有效地管理统计分析项目?


89

我们经常听到计算机科学中的项目管理和设计模式,但是在统计分析中却很少见。但是,看来设计有效而持久的统计项目的决定性步骤是使事情井井有条。

我经常提倡使用R和在单独的文件夹(原始数据文件,转换后的数据文件,R脚本,图形,注释等)中文件的一致组织。采用这种方法的主要原因是,以后运行分析可能会更容易(例如,当您忘记了如何生成给定图时)。

统计项目管理最佳实践是什么,或者您想根据自己的经验提出建议?当然,这适用于任何统计软件。(请给每个帖子一个答案


我投票结束这个题为脱题的问题,因为这是关于项目管理的
Aksakal'Aug

2
@Aksakal:我觉得你有点苛刻。:)与“ 对统计感兴趣的人 ”有关。同样,超过70的投票强烈表明标准用户发现了这个有趣且有用的问题。
usεr11852

1
我认为这应该在这里作为主题考虑。
gung

@gung您是否想为该Meta线程添加答案,以便我们进行讨论?
变形虫

Answers:


80

我正在整理一系列关于SO(如@Shane所建议),Biostar(此后为BS)和本SE的快速指南。我尽力确认每个项目的所有权,并选择第一个或被高度评价的答案。我还添加了自己的东西,并标记了特定于[R]环境的项目。

数据管理

  • 创建一个项目结构,以将所有事物放置在正确的位置(数据,代码,图形等,giovanni / BS)
  • 切勿修改原始数据文件(理想情况下,它们应为只读),在进行转换,清理等操作时将其复制/重命名为新文件。
  • 检查数据一致性(whuber / SE)
  • 使用构建自动化工具(例如GNU make)管理脚本依赖性和数据流(Karl Broman / Zachary Jones

编码

分析

  • 不要忘记设置/记录您在调用RNG或随机算法(例如k均值)时使用的种子
  • 对于蒙特卡洛研究,将规格/参数存储在单独的文件中可能很有趣(sumatra可能是不错的选择,giovanni / BS)
  • 不要将自己限制在每个变量一个图上,而要使用多变量(Trellis)显示和交互式可视化工具(例如GGobi)

版本控制

  • 使用某种版本控制来轻松跟踪/导出,例如Git(Sharpie / VonC / JD Long / SO)-这是@Jeromy和@Tal提出的一些好的问题
  • 定期备份所有内容(Sharpe / JD Long / SO)
  • 记下您的想法,或依靠问题跟踪器,例如ditzgiovanni / BS)-与上一个项目部分重复,因为它在Git中可用

编辑/报告

作为旁注,Hadley Wickham提供了R项目管理的全面概述,包括可再现的示例统一的数据哲学

最后,Oliver Kirchkamp 在其面向R 的统计数据分析工作流中提供了非常详细的概述,说明了采用和遵循特定的工作流将如何帮助统计人员相互协作,同时确保数据完整性和结果可重复性。它还包括有关使用编织和版本控制系统的一些讨论。Stata用户可能会发现J. Scott Long的“使用Stata进行数据分析的工作流程”也很有用。


干得好!如果我可以在我的博客上发布它,您可以吗?(我的意思是,这段文字是抄送的,所以我可以,但是我想以任何方式让您许可:))Tal干杯
Tal Galili 2010年

@Tal没问题。这并不是一个详尽的列表,但是也许您以后可以汇总其他有用的链接。另外,请随时以更好的方式进行调整或重组。
chl 2010年

+1这是一个不错的清单。您可能会考虑“接受”,以便始终处于最优先位置。鉴于它是CW,所以任何人都可以对其进行更新。
Shane 2010年

@Shane好,我感谢您提供如此有用的链接作为第一个答案。随意添加/修改您想要的方式。
chl 2010年

我在这里重新发布了。很棒的清单! r-statistics.com/2010/09/...
塔尔加利利

21

感谢您的链接!这个问题对任何统计软件都是开放的-我不时使用Python和Stata,所以我想知道是否已确认的用户可能会在那带来有趣的建议。
chl

绝对; 尽管我要补充一点,以上链接中的建议实际上可以适用于任何统计项目(无论使用哪种语言)。
Shane

绝对可以!我同时更新了我的问题。
chl

8

这与Shane的答案重叠,但是在我看来,有两个主要码头:

  • 重现性 ; 不仅因为您不会以“某种方式”获得结果,而且还能够更快地重新运行分析(在其他数据上或在参数稍有更改的情况下),并有更多时间考虑结果。对于海量数据,您可以首先在一些小的“播放集”上测试您的想法,然后轻松地在整个数据上进行扩展。
  • 好的文件 ; 在版本控制下评论了脚本,一些研究期刊,甚至是更复杂项目的票证系统。提高重现性,使错误跟踪更加容易,并且编写最终报告变得微不足道。

+1我喜欢第二点(我使用roxygen + git)。第一点使我也想到了将您的代码交给另一位统计学家的可能性,该统计学家将能够在项目的后期阶段重现您的结果而无需任何帮助。
chl

重现性?无论如何,数据都有随机错误,所以谁在乎。文档?有两个可能的答案:1)我们太忙了,我们没有时间记录文档,或者2)我们只有预算来进行分析或记录,因此我们选择进行分析。你以为我在开玩笑吗?我曾在很多场合看到/听到过这些态度-在那些生活lives可危的项目中。
马克·L·斯通


1

只是我的2美分。我发现Notepad ++对此很有用。我可以为每个项目维护单独的脚本(程序控制,数据格式等)和一个.pad文件。.pad文件调用是与该项目关联的所有脚本。


3
您的意思是,使用npptor的notepad ++ :)
Tal Galili 2010年

1

尽管其他答案很好,但我要补充一点看法:避免使用SPSS。我用SPSS做硕士论文,现在从事市场研究工作。

在使用SPSS时,由于SPSS无法处理多个文件(请确保您可以处理多个文件,但不像R那样麻烦),因此开发有组织的统计代码非常困难(因为不能存储数据集)变量-您必须使用“数据集激活x”-代码,这可能会很麻烦。而且,语法很笨拙,并且鼓励使用简写,这使得代码更加难以阅读。


0

与R / Python / Matlab / etc一起使用的Jupyter Notebooks消除了记住哪个脚本生成特定图形的麻烦。这篇文章描述了一种使代码和图形彼此并排的整齐方法。将所有数据或论文章节保存在一个笔记本中,非常容易找到相关代码。

实际上,甚至更好,因为您可以滚动浏览多个数字来找到所需的数字。该代码将保持隐藏状态,直到需要它为止。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.