比较lm()和lmList()的不同拟合。为什么?

时间:2014-10-15 09:49:41

标签: r linear-regression lm

鉴于这个名为'data1'的数据框:

     a   b    c   
    60  7.42  1   
    52 35.83  1   
    42 32.75  1   
    94 30.50  1   
    84 52.08  1   
    70 30.25  1  
    59 41.75  1   
   103 42.50  1  
    49 30.67  1   
    50 37.33  1   
    54 12.25  2   
    73 36.16  2   
    79  3.33  2  
    89  4.50  2   
   110 53.35  2  
    84 10.50  2   
    64 36.67  2   
    74  7.42  2   
    76  5.67  2  
    75 58.08  2  
    70 40.42  3   
    94 34.08  3   
    73 35.33  3   
    51  5.25  3   
    70 19.92  3   
    88 52.00  3   
    52  8.42  3   
    87 13.00  3   
   114 65.25  3  
    86 43.42  3   

我想使用lm()函数在R中进行线性回归。我想为每个'c'级别拟合回归。所以,我可以为每个级别的c分别使用lmList()或lm()代替。

使用lmList(),我获得:

summary(fit1 <- (lmList(a ~ b | c, data=data1)))

Call:
  Model: a ~ b | c 
   Data: data1 

Coefficients:
   (Intercept) 
      Estimate Std. Error  t value     Pr(>|t|)
1     48.40474  17.190453 2.815792 9.571251e-03
2     74.06143   7.995761 9.262587 2.146984e-09
3     54.03792  10.418448 5.186753 2.591707e-05
   b 
       Estimate Std. Error  t value   Pr(>|t|)
1     0.5246647  0.4795047 1.094180 0.28473633
2     0.1640226  0.2628905 0.623920 0.53856582
3     0.7714555  0.2829830 2.726155 0.01177752

Residual standard error: 16.74138 on 24 degrees of freedom

但是,如果我为每个组使用lm()(例如,c = 3):

data1_3 <- subset(data1,c==3)

summary(fit2 <- lm(a ~ b, data=data1_3))

Residuals:
    Min      1Q  Median      3Q     Max 
-15.220  -7.992  -3.844   7.367  22.933 

Coefficients:
            Estimate Std. Error t value Pr(>|t|)    
(Intercept)  54.0379     7.8395   6.893 0.000125 ***
b             0.7715     0.2129   3.623 0.006753 ** 

因此,使用lmList(),组(c = 3)的p值为0.01,而lm()为0.006。 为什么会出现这种差异?

1 个答案:

答案 0 :(得分:4)

来自文档:

  

pool:一个可选的逻辑值,指示是否合并估算值   剩余标准误差的计算应用于计算   摘要的标准偏差或标准误差。

library(nlme)
summary(fit1 <- (lmList(a ~ b | c, data=DF, pool=FALSE)))
Call:
  Model: a ~ b | c 
   Data: DF 

Coefficients:
#   (Intercept) 
#  Estimate Std. Error   t value     Pr(>|t|)
#1 48.40474  21.656460  2.235118 5.584928e-02
#2 74.06143   7.357469 10.066157 8.080255e-06
#3 54.03792   7.839491  6.893039 1.254064e-04
#   b 
#   Estimate Std. Error   t value    Pr(>|t|)
#1 0.5246647  0.6040780 0.8685380 0.410397519
#2 0.1640226  0.2419042 0.6780478 0.516869219
#3 0.7714555  0.2129341 3.6229776 0.006753388