我正在尝试使用以下模型:
在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
的整体平均值。当我的意思是滞后变量居中时,为什么这不会重新出现在最终模型中?
答案 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