There is abundant observational data in the software engineering domain, whereas running large-scale controlled experiments is often practically impossible. Thus, most empirical studies can only report statistical correlations -- instead of potentially more insightful and robust causal relations. To support analyzing purely observational data for causal relations, and to assess any differences between purely predictive and causal models of the same data, this paper discusses some novel techniques based on structural causal models (such as directed acyclic graphs of causal Bayesian networks). Using these techniques, one can rigorously express, and partially validate, causal hypotheses; and then use the causal information to guide the construction of a statistical model that captures genuine causal relations -- such that correlation does imply causation. We apply these ideas to analyzing public data about programmer performance in Code Jam, a large world-wide coding contest organized by Google every year. Specifically, we look at the impact of different programming languages on a participant's performance in the contest. While the overall effect associated with programming languages is weak compared to other variables -- regardless of whether we consider correlational or causal links -- we found considerable differences between a purely associational and a causal analysis of the very same data. The takeaway message is that even an imperfect causal analysis of observational data can help answer the salient research questions more precisely and more robustly than with just purely predictive techniques -- where genuine causal effects may be confounded.
翻译:摘要:软件工程领域存在大量观测数据,但开展大规模受控实验往往在实践上不可行。因此,大多数实证研究只能报告统计相关性,而非可能更富有洞见且更稳健的因果关系。为支持对纯观测数据进行因果关系分析,并评估同一数据上纯预测模型与因果模型之间的差异,本文讨论了一些基于结构因果模型(如有向无环图形式的因果贝叶斯网络)的新技术。利用这些技术,可严谨地表达并部分验证因果假设,进而利用因果信息指导构建能捕捉真实因果关系的统计模型——从而使得相关确实蕴含因果。我们将这些思路应用于分析谷歌每年举办的全球性大型编程竞赛Code Jam中程序员表现的相关公开数据。具体而言,我们研究了不同编程语言对参赛者竞赛表现的影响。尽管无论考虑关联性还是因果性联系,编程语言的总体效应相较于其他变量均较弱,但我们发现:对完全相同的数据,纯关联分析与因果分析之间存在显著差异。关键启示在于:即便对观测数据进行不完美的因果分析,也能比纯预测技术更精准、更稳健地回答关键研究问题——因为纯预测技术中真正的因果效应可能被混淆。