鉴于这个名为'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。 为什么会出现这种差异?
答案 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