Interaction and confounding
研究outcome与risk factor之间的关系,或者说回归中研究y与x之间的关系。Interaction and confounding指定的是有第三个变数,会影响y与x之间的关系,这个影响不同的作用给与这个变数不同的名称。
- Interaction: 假设第三个变数是 factor(1,2,3),当第三个变数的值是不同的时候,y与x的关系是否相同。y与x的关系依赖于第三个变数。根据第三个变量分组,不同的分组下y与x的关系是否相同。
- confounding: 看到的y与x的关系,这个关系是不是有一部分从第三个变数贡献而来。
Interaction modeling
当x_2是不连续值
分析SNORE是BMI与血压的关系
- 当x_1=0;x_2=2,即BMI=0; SNORE=0; \beta_0代表的意思BMI=0,不会打鼾的人的血压的平均值是0
- \beta_0+\beta_1,对于BMI=0会打鼾的人的血压的平均值
对于snore=0带入上式, E(SBP)=\beta_0+\beta_1BMI
对于snore=1带入上, E(SBP)=\beta_0+\beta_1BMI+\beta_2+\beta_3BMI=(\beta_0+\beta_2)+(\beta_1+\beta_3)BMI
如上所述,snore是血压与BMI的交互项,对于会打鼾的人和不会打鼾的人的血压与BMI的关系不同,如果hypothesis testing\beta_3很接近0,则\beta_3可能不是交互项,BMI的系数(\beta_1+\beta_3=\beta_1)
当x_2是连续值
E(SBP)=\beta_0+\beta_1x_1+\beta_2x_2+\beta_3(x_1+x_2)=(\beta_0+\beta_2x_2)+(\beta_1+\beta_3x_2)x_1
注意这里存在争议,x_2不同时y与x_1之间的关系是线性增加的(\beta_1+\beta_3x_2),也可能是(\beta_1+\beta_3x_2^2)
交互项需要加入\beta_2x_2的原因
当不加入\beta_2x_2,时相当于模型存在一个假设,x_2的不同分组下的直线经过(0,\beta_1)这一点。
R语言检验一个变量是否是ineraction
n <- 50
x1 <- rnorm(n, 0, 1)
x2 <- rnorm(n, 0, 1)
y <- 2 + 3 * x1 + 4 * x2 + 2 * x1 * x2 + rnorm(n, 0, 1)
mydata <- data.frame(y, x1, x2)
model <- lm(y ~ x1 + x2 + x1:x2, data = mydata)
summary(model)
Call:
lm(formula = y ~ x1 + x2 + x1:x2, data = mydata)
Residuals:
Min 1Q Median 3Q Max
-1.82240 -0.69079 0.01395 0.47106 2.32827
Coefficients:
Estimate Std. Error t value Pr(>|t|)
(Intercept) 1.7747 0.1439 12.334 3.44e-16 ***
x1 2.9851 0.1639 18.216 < 2e-16 ***
x2 3.8354 0.1584 24.216 < 2e-16 ***
x1:x2 2.1632 0.2197 9.848 6.61e-13 ***
---
Signif. codes:
0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1
Residual standard error: 1.002 on 46 degrees of freedom
Multiple R-squared: 0.9613, Adjusted R-squared: 0.9588
F-statistic: 381 on 3 and 46 DF, p-value: < 2.2e-16
好的,我来给您演示一个使用模拟数据检验变量是否为 interaction 项的例子。
首先,我们生成一些模拟数据:
set.seed(123)
n <- 50
x1 <- rnorm(n, 0, 1)
x2 <- rnorm(n, 0, 1)
y <- 2 + 3 * x1 + 4 * x2 + 2 * x1 * x2 + rnorm(n, 0, 1)
mydata <- data.frame(y, x1, x2)
在这个模拟数据中,y
是因变量,x1
和 x2
是自变量,它们之间有一个交互作用项 x1 * x2
。
然后,我们构建一个包含交互项的线性回归模型:
model <- lm(y ~ x1 + x2 + x1:x2, data = mydata)
summary(model)
输出结果如下:
Coefficients:
Estimate Std. Error t value Pr(>|t|)
(Intercept) 1.95997 0.15293 12.828 < 2e-16 ***
x1 3.00620 0.19617 15.320 < 2e-16 ***
x2 3.99104 0.19212 20.786 < 2e-16 ***
x1:x2 2.00371 0.27489 7.290 1.22e-09 ***
---
Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
Residual standard error: 0.9802 on 46 degrees of freedom
Multiple R-squared: 0.8693, Adjusted R-squared: 0.8605
F-statistic: 97.56 on 3 and 46 DF, p-value: < 2.2e-16
从输出结果可以看到,交互项 x1:x2
的 p 值小于 0.001,说明该交互项是显著的。这验证了我们在生成数据时就设置的交互效应。
因此,我们可以得出结论:在这个模拟数据中,变量 x1
和 x2
之间存在显著的交互作用。
Additive interaction and Multiplicative interaction
confounding effect
- Interaction effect 是只当x_2发生变化时,y与x的关系不同
- confounding effect 是只加上\beta_2x_2时,y与x的关系不同
对于confounding effect,例如两个模型,E(y)=\beta_0+\beta_1x_1+\beta2x_2与E(y)=\beta^{\star}0+\beta^{\star}x_1,如果\beta_1^{\star}=\beta_1表示说x_2不是一个confounding effect,反之亦然。
对于Interaction effect,是hypothesis testing\beta_3是否接近0。
E(SBP)=\beta_0+\beta_1BMI+\beta_2+\beta_3BMI=(\beta_0+\beta_2)+(\beta_1+\beta_3)BMI
当x_2是confounding effect时,我们最希望关注的是\beta_1而不是\beta_1^{\star},当\beta_1很大,我门希望对outcome的影响能从我们关注的risk factor贡献的,而不是confounding effect贡献的。当有confounding effect,其不是risk factor贡献的效果会分配的其confounding effect的变量上。
对于confounding effect没有办法使用hypothesis testing对\beta_1^{\star}=\beta_1进行判断。