展开

Interaction and confounding

最后发布时间 : 2024-07-30 21:38:02 浏览量 :

研究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 是因变量,x1x2 是自变量,它们之间有一个交互作用项 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,说明该交互项是显著的。这验证了我们在生成数据时就设置的交互效应。

因此,我们可以得出结论:在这个模拟数据中,变量 x1x2 之间存在显著的交互作用。

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_2E(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进行判断。