R中的线性模型,我如何阅读我的结果?

时间:2017-08-24 12:43:01

标签: r linear-regression

我正在尝试做一些线性模型,并希望更改使用的参考。我看到了这个:How to force R to use a specified factor level as reference in a regression?,并亲自尝试过。当我做以下事情时,我的答案根本没有任何意义......

我执行以下操作:

set.seed(123)
x <- rnorm(100)
DF <- data.frame(x = x,
                 y = 4 + (1.5*x) + rnorm(100, sd = 2),
                 b = gl(5, 20))
m1 <- lm(y ~ x + b, data = DF)
summary(m1)

到目前为止我的输出:

Coefficients:
            Estimate Std. Error t value Pr(>|t|)    
(Intercept)   3.7907     0.1962  19.323  < 2e-16 ***
x             1.4359     0.2189   6.561 2.89e-09 ***
b1           -0.5004     0.3905  -1.281    0.203    
b2            0.1293     0.3916   0.330    0.742    
b3           -0.1305     0.3904  -0.334    0.739    
b4            0.5354     0.3931   1.362    0.176    

到目前为止一切顺利。然后我将引用更改为b = 3

DF <- within(DF, b <- relevel(b, ref = 3))
levels(DF$b)
[1] "3" "1" "2" "4" "5"
m2 <- lm(y ~ x + b, data = DF)
summary(m2)

我的其他结果:

Coefficients:
            Estimate Std. Error t value Pr(>|t|)    
(Intercept)   3.7907     0.1962  19.323  < 2e-16 ***
x             1.4359     0.2189   6.561 2.89e-09 ***
b1           -0.1305     0.3904  -0.334    0.739    
b2           -0.5004     0.3905  -1.281    0.203    
b3            0.1293     0.3916   0.330    0.742    
b4            0.5354     0.3931   1.362    0.176    

初看起来,看起来很好。但是,它不是...... 一个包含所有结果的表,所以我可以计算每个b的效果,其中第一列b1 = 0 =参考,第二列b3 = 0 =参考。

intercept   3.7907  3.7907
b1  0   -0.1305
b2  -0.5004 -0.5004
b3  0.1293  0
b4  -0.1305 0.1293
b5  0.5354  0.5354

做一些简单的数学 - &gt; b1 =拦截+ beta b1

结果:

b1  3.7907  3.6602
b2  3.2903  3.2903
b3  3.92    3.7907
b4  3.6602  3.92
b5  4.3261  4.3261

他们不对应。我注意到我的拦截并没有在模型之间发生变化,而且估计值只是转移了。所以线性模型已经出错了。但我无法弄清楚在哪里......

0 个答案:

没有答案