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(谷歌每年举办的全球大型编程竞赛)中程序员绩效的公开数据。具体而言,我们考察不同编程语言对参赛者在竞赛中表现的影响。尽管与其它变量相比,与编程语言相关的总体效应较弱——无论考虑相关性还是因果联系——我们发现同一数据的纯关联分析与因果分析之间存在显著差异。关键启示是:即使是对观测数据进行不完美的因果分析,也能比纯预测技术更精确且更稳健地回答突出研究问题——因为纯预测技术中真实的因果效应可能被混杂。