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