a***r 发帖数: 420 | 1 做助教,本来只是想做个教学demo,show一下confounding 和 partial correlation的
概念,结果纠结了。。。
我simulate了三个variable: outcome, var1, var2。其中outcome是binary; var1 有
三个category 1/2/3; var2 continuous。三者之间都有correlation,我的目的是show
var2对var1和outcome之间association的confounding
R code如下:
> table(outcome)
outcome
0 1
52 48
> table(var1)
var1
0 1 2
19 44 37
> summary(var2)
Min. 1st Qu. Median Mean 3rd Qu. Max.
0.002583 0.053960 0.105000 0.122800 0.184200 0.392700
> cor(outcome,var1)
[1] 0.2854862
> cor(outcome,var2)
[1] 0.1518360
> cor(var1,var2)
[1] 0.1851194
##然后把outcome,var1因为var2造成的variation 分别 partial out:
beta1 <- solve(t(var2) %*% var2) %*% t(var2) %*% outcome
resid_out <- outcome - beta1*var2
beta2 <- solve(t(var2) %*% var2) %*% t(var2) %*% var1
resid_var1 <- var1 - beta2*var2
##然后算partial correlation:
> cor(resid_out,resid_var1)
[1] 0.3924849
##结果比原来的correlation大!!!!!!!
##可是可是,如果直接用lm:
> residual_out <- as.numeric(residuals(lm(outcome ~ var2)))
> residual_var1 <-as.numeric(residuals(lm(var1 ~ var2)))
> cor(residual_out,residual_var1)
[1] 0.2649774
##结果似乎又make sense了。。。
所以看起来是我求residual的方法有问题,我是算了个beta estimation,然后把原值
减去predicted。 我一直以为lm用的LSE,算出来也是一样的。结果今天被颠覆了。。。
是因为outcome是binary不满足linear regression的assumption么,那lm的residual又
是怎么求出来的呢?
诚求大侠指点,是哪里出了问题??
包子谢!bow~~~ | N******n 发帖数: 3003 | 2
show
你也可以simulate outcome=beta1*var1+beta2*var2, beta1 and beta2 can be
assumed as their corresponding partial correlation
【在 a***r 的大作中提到】 : 做助教,本来只是想做个教学demo,show一下confounding 和 partial correlation的 : 概念,结果纠结了。。。 : 我simulate了三个variable: outcome, var1, var2。其中outcome是binary; var1 有 : 三个category 1/2/3; var2 continuous。三者之间都有correlation,我的目的是show : var2对var1和outcome之间association的confounding : R code如下: : > table(outcome) : outcome : 0 1 : 52 48
| a***r 发帖数: 420 | 3 谢谢,你是说当它们的variance都是1的时候吧
不过我的问题是为啥直接算residual不对,lm算出来却好像是对的
【在 N******n 的大作中提到】 : : show : 你也可以simulate outcome=beta1*var1+beta2*var2, beta1 and beta2 can be : assumed as their corresponding partial correlation
|
|