线性回归模型摘要中的 NA

NAs in linear regression model summary

我正在尝试 运行 内置 ChickWeight 数据的线性回归模型,其中预测变量小鸡、时间、饮食、时间饮食相互作用作为固定效应,体重作为结果。

我的模型摘要中出现了一些 NA。我做错了什么吗?

model2<-lm(weight~ Chick + Time + Diet + Time*Diet, data = Data)
summary(model2)

如果您查看模型的摘要,您会看到:

Coefficients: (3 not defined because of singularities)

这意味着您的某些预测变量完全相关——在本例中为 ChickDiet——这就是为什么某些系数显示为 NA.

即使不是这种情况,我也不确定您为什么要为 Chick 添加固定效果。如果你想解释每只小鸡有多个观察的事实,你可以改为包括 Chick 的随机截距。使用 lme4:

library(lme4)

Data <- ChickWeight

model2_mixed <- lmer(
  weight ~ Time*Diet + (1 | Chick), 
  data = Data
)
summary(model2_mixed)

输出:

Linear mixed model fit by REML ['lmerMod']
Formula: weight ~ Time * Diet + (1 | Chick)
   Data: Data

REML criterion at convergence: 5466.9

Scaled residuals: 
    Min      1Q  Median      3Q     Max 
-3.3158 -0.5900 -0.0693  0.5361  3.6024 

Random effects:
 Groups   Name        Variance Std.Dev.
 Chick    (Intercept) 545.7    23.36   
 Residual             643.3    25.36   
Number of obs: 578, groups:  Chick, 50

Fixed effects:
            Estimate Std. Error t value
(Intercept)  31.5143     6.1163   5.152
Time          6.7115     0.2584  25.976
Diet2        -2.8807    10.5479  -0.273
Diet3       -13.2640    10.5479  -1.258
Diet4        -0.4016    10.5565  -0.038
Time:Diet2    1.8977     0.4284   4.430
Time:Diet3    4.7114     0.4284  10.998
Time:Diet4    2.9506     0.4340   6.799

Correlation of Fixed Effects:
           (Intr) Time   Diet2  Diet3  Diet4  Tm:Dt2 Tm:Dt3
Time       -0.426                                          
Diet2      -0.580  0.247                                   
Diet3      -0.580  0.247  0.336                            
Diet4      -0.579  0.247  0.336  0.336                     
Time:Diet2  0.257 -0.603 -0.431 -0.149 -0.149              
Time:Diet3  0.257 -0.603 -0.149 -0.431 -0.149  0.364       
Time:Diet4  0.254 -0.595 -0.147 -0.147 -0.432  0.359  0.359

正如@zephryl 指出的那样,在整个实验过程中,每只小鸡都喂食相同的食物,因此如果我们将 Chick 作为固定效应, Chick 效应与 Diet 效应混淆。直觉上,比如说,一只小鸡体重没有增加多少,我们不能说是因为他们的饮食不是很好,还是那只小鸡很不幸是一只虚弱的小鸡。

因此我们考虑了实验的设计:我们对每只小鸡进行了多次测量,因此每只小鸡都是一个 测量值。

我们得到与@zephryl 的混合效应模型非常相似的估计,所以一切都很好。

fit.geeglm <- geepack::geeglm(
  weight ~ Time * Diet,
  id = ChickWeight$Chick,
  family = "gaussian",
  data = ChickWeight
)
broom::tidy(fit.geeglm)
#> # A tibble: 8 × 5
#>   term        estimate std.error  statistic  p.value
#>   <chr>          <dbl>     <dbl>      <dbl>    <dbl>
#> 1 (Intercept)   30.9       3.06  102.       0       
#> 2 Time           6.84      0.736  86.3      0       
#> 3 Diet2         -2.30      5.22    0.194    0.660   
#> 4 Diet3        -12.7       4.87    6.77     0.00925 
#> 5 Diet4         -0.139     4.85    0.000820 0.977   
#> 6 Time:Diet2     1.77      1.42    1.55     0.213   
#> 7 Time:Diet3     4.58      1.29   12.6      0.000387
#> 8 Time:Diet4     2.87      0.968   8.80     0.00301

reprex package (v2.0.1)

于 2022-03-18 创建