如何在回归模型中提供平均居中变量

时间:2014-02-10 17:17:24

标签: r regression linear-regression

我正在尝试使用以下模型:

enter image description here

在R.中使用lm

我无法理解以下行为......

library(nlme)
library(plyr)
#create toy data set
df0<-Orthodont
df0<-ddply(df0, .(Subject), mutate, lag1=c(NA,distance[1:(length(distance)-1)]))
df0<-subset(df0, !is.na(lag1))
head(df0)
#   distance age Subject  Sex lag1
# 2     21.5  10     M16 Male 22.0
# 3     23.5  12     M16 Male 21.5
# 4     25.0  14     M16 Male 23.5
# 6     23.5  10     M05 Male 20.0
# 7     22.5  12     M05 Male 23.5
# 8     26.0  14     M05 Male 22.5

lm(distance ~ 1, data=df0)$coef
# (Intercept) 
#     24.6358 
lm(distance ~ lag1, data=df0)$coef
# (Intercept)        lag1 
#   6.2798336   0.7866844 
lm(distance ~ I(lag1-mean(distance)), data=df0)$coef
#              (Intercept) I(lag1 - mean(distance)) 
#               25.6604346                0.7866844

第一个模型中的截距参数是distance的整体平均值。当我的意思是滞后变量居中时,为什么这不会重新出现在最终模型中?

1 个答案:

答案 0 :(得分:5)

尝试以mean(lag1)为中心?下面是一个按预期工作的示例,但您必须以相同的自变量为中心。

> set.seed(1)
> df <- data.frame(x=1:10, y=1:10+runif(10))
> lm(y ~ x, df)$coef
(Intercept)           x 
  0.5111385   1.0073410 
> lm(y ~ 1, df)$coef
(Intercept) 
   6.051514 
> lm(y ~ I(x - mean(x)), df)$coef
   (Intercept) I(x - mean(x)) 
      6.051514       1.007341