【发布时间】:2015-03-04 06:05:38
【问题描述】:
我有一个时间序列数据集,正在对过去 2 年的系数进行滚动平均,并将其应用于当年的变量。我创建了一个应用平均值的方法,但我想知道是否可以使用 predict 之类的函数来执行此操作,这样我就不必单独写出每个变量。
我的代码的简化版本是这样的:
formula <- as.formula( a ~ b + c)
subset <- which(data$year == 2009)
fm1 <- lm(formula, data[subset,])
subset2 <- which(data$year == 2010)
fm2 <- lm(formula, data[subset,])
#Take average of coefficients from these two regression
avg_coeff <- (fm1$coeff + fm2$coeff)/2
#Apply average coefficients to current year data
subset3 <- which(data$year == 2011)
subset_data <- data[subset,]
a_hat <- avg_coeff[1] + avg_coeff[2] * subset_data$b + avg_coeff[3] * subset_data$c
此方法有效,但我想保留 lm 对象,以便我可以使用 predict 方法并执行以下操作:
a_hat <- predict(fm, subset_data)
其中fm$coefficient 包含avg_coeff。我试过了
fm2$coeff <- avg_coeff
但这确实改变了fm2$coeff,但是当我使用fm2 运行预测时,它使用原始系数。
【问题讨论】:
-
应该是
fm2$coefficients,而不是fm2$coeff。 -
哦,这似乎解决了它。你知道为什么我运行 fm$coeff 时,它仍然会吐出系数吗?
-
您在列表
fm中添加了一个新组件coeff。但是predict使用的是object$coefficients。 -
与
$函数存在部分匹配,但与$<-函数不匹配。更仔细地阅读?Extract帮助页面。一般至少需要阅读 10 次,需要几个月的时间才能获得 90% 的内容。
标签: r regression lm predict