辛普森悖论

R 中级回归

Richie Cotton

Data Evangelist at DataCamp

巧妙的悖论!

当整体数据的模型趋势与各子集模型的趋势大相径庭时,即为辛普森悖论。

trend = 斜率系数

R 中级回归

合成的辛普森数据

x y group
62.24344 70.60840 D
52.33499 14.70577 B
56.36795 46.39554 C
66.80395 66.17487 D
66.53605 89.24658 E
62.38129 91.45260 E
  • 5 个数据组,标记为"A"到"E"
1 https://www.rdocumentation.org/packages/datasauRus/topics/simpsons_paradox
R 中级回归

线性回归

整体数据集

mdl_whole <- lm(
  y ~ x, 
  data = simpsons_paradox
)
coefficients(mdl_whole)
(Intercept)            x  
    -38.554        1.751  

按组

mdl_by_group <- lm(
  y ~ group + group:x + 0, 
  data = simpsons_paradox
)
coefficients(mdl_by_group)
  groupA    groupB    groupC    groupD    groupE  
 32.5051   67.3886   99.6333  132.3932  123.8242  
groupA:x  groupB:x  groupC:x  groupD:x  groupE:x  
 -0.6266   -1.0105   -0.9940   -0.9908   -0.5364
R 中级回归

绘制整个数据集

ggplot(simpsons_paradox, aes(x, y)) +
  geom_point() +
  geom_smooth(method = "lm", se = FALSE)

整体散点图-辛普森.png

R 中级回归

按组绘图

ggplot(simpsons_paradox, aes(x, y, color = group)) +
  geom_point() +
  geom_smooth(method = "lm", se = FALSE)

分组散点图-辛普森.png

R 中级回归

化解差异

建议

如有可能,先把数据画出来。

常见建议

无法一概而论选哪种最优模型——取决于数据与问题。

进一步建议

在建模前先明确问题。

R 中级回归

测验分数示例

整体散点图-电子游戏.png

按组散点图-电子游戏.png

R 中级回归

传染病示例

整体散点图-传染病.png

按组散点图-传染病.png

1 https://stats.stackexchange.com/questions/478463/examples-of-simpsons-paradox-being-resolved-by-choosing-the-aggregate-data
R 中级回归

再次化解差异

  • 通常(但不总是)分组模型更有洞见。
  • 是否遗漏了解释变量?
  • 语境很重要。
R 中级回归

真实数据中的辛普森悖论

  • 悖论通常不那么明显。
  • 可能出现零斜率,而非方向完全相反。
  • 可能并非每个组都出现。
R 中级回归

Passons à la pratique !

R 中级回归

Preparing Video For Download...