|||
据说用年龄和年龄平方矫正是流行病学研究常用一种的做法。
然而,一位朋友收到审稿人这样的质疑:Why were age and age2 both used to adjust the BMD data? This seems like an over correction.
质疑大意:年龄(age)和年龄平方(age2)两个高度相关的变量同时放入回归模型会不会引起对骨密度(BMD)的过分矫正(貌似几乎矫了两次)?
该问题背景:用如下线性回归模型研究某遗传因素(SNP)和骨密度(BMD)的相关性:
骨密度(BMD)=遗传因素(SNP)+年龄(AGE)+年龄平方(AGE2)
该问题的关键:年龄和年龄平方是两个高度相关的变量,而常规线性回归最好是这些变量之间不相关。
笔者认为一般是不会有过矫的问题。因为回归计算会拟合一个最佳回归系数,如果年龄和年龄平方效应冗余的话,其中一个变量的回归系数将会接近零,由此冗余效应就会被剔除。
最直接的理解办法可能是计算机模拟实验。以下是模拟步骤和解析。
---------------------------------------------------------------------
#准备相关变量
size<-3000 #样本大小
snp <- sample(0:2,size,replace=T) #遗传因素
age <- rep(1:size) #年龄
age2<-age*age #年龄平方
cor(age,age2) #相关系数,高度相关97%
e <- rnorm(size) #随机噪声
bmi <- 0.5 * snp + 2*age +e #理论模型,假设没有年龄平方的效应
fit <- lm(bmi ~ snp+ age + age2) #线性回归检验模型,包含了年龄平方效应
summary(fit)
---------------------------------------------------------------------
结果:
Coefficients: | Estimate | Std.Error | t-value | Pr(>|t|) |
(Intercept) | 2.52E-02 | 5.85E-02 | 0.43 | 0.667 |
snp | 4.83E-01 | 2.23E-02 | 21.715 | <2e-16 |
age | 2.00E+00 | 8.36E-05 | 23911.66 | <2e-16 |
age2 | -7.68E-10 | 2.70E-08 | -0.028 | 0.977 |
可以看到在拟合的模型中年龄和年龄平方的效应都被准确估计,只是年龄平方的效应接近零(-7.68E-10)。
但是如果理论模型确实有年龄平方的效应呢?
---------------------------------------------------------------------
bmi <- 0.5 * snp + 2*age +age2 +e #理论模型
fit <- lm(bmi ~ snp+ age+ age2) #再次线性回归检验全模型
summary(fit)
---------------------------------------------------------------------
结果:
Coefficients: | Estimate | Std.Error | t-value | Pr(>|t|) |
(Intercept) | 2.52E-02 | 5.85E-02 | 4.30E-01 | 0.667 |
snp | 4.83E-01 | 2.23E-02 | 2.17E+01 | <2e-16 |
age | 2.00E+00 | 8.36E-05 | 2.39E+04 | <2e-16 |
age2 | 1.00E+00 | 2.70E-08 | 3.71E+07 | <2e-16 |
可以看到在拟合模型中年龄和年龄平方的效应仍然都被准确估计。
结论:年龄和年龄平方同时放在回归模型中不会对表型过度矫正,拟合出的回归系数可以修正其间的冗余作用效果。
Archiver|手机版|科学网 ( 京ICP备07017567号-12 )
GMT+8, 2024-11-21 21:24
Powered by ScienceNet.cn
Copyright © 2007- 中国科学报社