1

给定以下数据集:

csf     age    sex  tiv   group
0,30    7,92    1   1,66    1
0,26    33,75   0   1,27    3
0,18    7,83    0   1,43    2
0,20    9,42    0   1,70    1
0,29    22,33   1   1,68    2
0,40    20,75   1   1,56    1
0,26    13,25   0   1,68    1
0,28    6,67    0   1,66    1
0,22    10,58   0   1,38    1
0,22    13,08   0   1,41    2
0,33    36,42   1   1,68    3
0,29    35,00   1   1,34    3
0,11    7,25    1   1,20    2
0,13    10,00   0   1,12    3
0,32    34,58   1   1,33    3
0,68    8,25    1   1,90    1
0,25    11,08   1   1,92    2
0,33    10,92   0   1,24    1
0,20    9,33    1   1,58    1
0,25    51,67   0   1,15    3
0,16    27,67   0   1,19    3
0,19    33,25   0   1,29    3
0,16    7,92    1   1,67    1
0,17    13,42   0   1,34    3
0,45    48      1   1,85    1
0,34    14,67   1   1,80    1
0,23    35,33   0   1,31    3
0,18    15,50   1   1,59    1
0,11    12,08   0   1,34    2
0,21    9,92    0   1,43    1
0,19    8,83    0   1,59    1
0,21    6,83    1   1,78    1
0,13    10      0   1,28    1
0,38    38,42   1   1,63    3
0,27    13,83   0   1,63    1
0,28    15,33   0   1,43    2
0,31    38      1   1,70    1
0,19    13,08   0   1,56    1
0,13    26,25   0   1,07    3
0,14    63,08   1   1,34    3
0,19    10,25   1   1,27    3
0,38    37,25   1   1,63    3
0,28    37,33   0   1,47    3
0,34    20,25   1   1,41    2
0,36    40,33   1   1,44    3
0,26    42,83   0   1,43    2
0,29    46,08   1   1,74    2
0,19    10,25   0   1,56    1
0,20    12,08   1   1,76    1
0,29    30,58   1   1,39    3
0,23    44,67   1   1,45    3

我想知道组间的 CSF 是否不同。但我知道 CSF 受年龄、性别和 tiv 的影响很大。因此,我想绘制超出年龄、性别和 tiv 影响的群体之间的差异。为此,我需要为这三个协变量调整 CSF。我的问题是:我怎样才能为每个人获得他/她调整后的 CSF 值?

我做了以下线性模型:

model1 <- lm(csf ~ age + sex + tiv,data=mri22))

并使用 (residuals+intercept) 的和以获得不受年龄、性别和 tiv 影响的 csf 值:

csf_adj <- resid(model1) + coef(model1)[1]

但是,鉴于 CSF 不可能为负,我得到了许多没有意义的负值。所以我的问题是:如何获得针对所有三个协变量调整的良好 CSF 值?

4

3 回答 3

0

正如@Gopala 所说,显然拦截中没有组的影响。对响应(系数)也没有影响。您可以在绘图和统计测试中看到这一点。

mri22$group <- as.factor(mri22$group)
plot(mri22)
plot(csf~group,data=mri22,col=mri22$group)

plot(csf~age,data=mri22,col=mri22$group)
plot(csf~sex,data=mri22,col=mri22$group)
plot(csf~tiv,data=mri22,col=mri22$group)

model1 <- lm(csf ~ age + sex + tiv,data=mri22)
summary(model1)

model2 <- lm(csf ~ 0+age + sex + tiv+group,data=mri22)
summary(model2)
model3 <- lm(csf ~ 0+age*I(group) + sex + tiv,data=mri22)
summary(model3)
model4 <- lm(csf ~ 0+age*I(group) + sex*I(group) + tiv*I(group),data=mri22)
summary(model4)


Coefficients:
                Estimate Std. Error t value Pr(>|t|)  
age            0.0025507  0.0020500   1.244   0.2208  
I(group)1     -0.1902470  0.2174566  -0.875   0.3870  
I(group)2     -0.0076027  0.2224419  -0.034   0.9729  
I(group)3     -0.2303957  0.1993927  -1.155   0.2549  
sex            0.0208069  0.0480609   0.433   0.6675  
tiv            0.2552315  0.1428288   1.787   0.0817 .
age:I(group)2 -0.0002252  0.0030392  -0.074   0.9413  
age:I(group)3 -0.0021075  0.0026656  -0.791   0.4339  
I(group)2:sex -0.0048219  0.0790885  -0.061   0.9517  
I(group)3:sex -0.0014738  0.0711362  -0.021   0.9836  
I(group)2:tiv -0.1307945  0.2153850  -0.607   0.5472  
I(group)3:tiv  0.0796898  0.2143078   0.372   0.7120  
---
Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1
于 2016-04-13T14:17:18.350 回答
0

你可以像这样运行回归,它会告诉你组是否显着。在这里,它表明它不是:

df$group <- as.factor(df$group)
fit <- lm(csf ~ age + sex + tiv + group, data = df)
summary(fit)

Call:
lm(formula = csf ~ age + sex + tiv + group, data = df)

Residuals:
     Min       1Q   Median       3Q      Max 
-0.12429 -0.04760 -0.00306  0.01967  0.34004 

Coefficients:
             Estimate Std. Error t value Pr(>|t|)  
(Intercept) -0.155845   0.147860  -1.054   0.3000  
age          0.002895   0.001539   1.881   0.0694 .
sex          0.019926   0.036502   0.546   0.5891  
tiv          0.237891   0.097655   2.436   0.0208 *
group2      -0.037555   0.040104  -0.936   0.3563  
group3      -0.013844   0.051717  -0.268   0.7907  
---
Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1

Residual standard error: 0.0874 on 31 degrees of freedom
Multiple R-squared:  0.4342,    Adjusted R-squared:  0.3429 
F-statistic: 4.757 on 5 and 31 DF,  p-value: 0.00243
于 2016-04-13T13:58:59.093 回答
0

虽然为时已晚。。

您的模型是 csf,线性取决于年龄、性别和 tiv。这应该可以解释一定百分比的数据方差。剩余的方差百分比将在残差中。

Csf = a.age + b.sex + c.tiv + d 是模型。如果 r 是残差,则基于模型的预测 csf 为 a.age + b.sex + c.tiv + d,而观察到的 csf(您拥有的数据)为 a.age + b.sex + c.tiv + d + r。

现在,如果您想控制年龄、性别和 tiv 用相应的方法替换个体。例如,调整后的 icv = a.(年龄平均值)+ b.(性别平均值)+ c.(tiv 平均值)+ d + r。

现在,这个调整后的 csf 会​​因年龄、性别或 tiv 以外的任何因素而有所变化。

于 2020-08-09T08:58:25.100 回答