使用预测与系数的平均值

时间:2015-03-04 06:05:38

标签: r regression lm predict

我有一个时间序列数据集,并且采用过去2年系数的滚动平均值并将其应用于当前年份变量。我创建了一个应用平均值的方法,但我想知道我是否可以使用像预测这样的函数来执行此操作,因此我不必单独写出每个变量。

我的代码的简化版本是这样的:

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对象,以便我可以使用预测方法并执行:

a_hat <- predict(fm, subset_data)

其中fm$coefficient包含avg_coeff。我试过了

fm2$coeff <- avg_coeff

但这确实会改变fm2$coeff,但是当我使用fm2运行预测时,它会使用原始系数。

1 个答案:

答案 0 :(得分:0)

如果你想每年都这样做,也许你可以做一些像

这样的事情
require(plyr)
formula <- as.formula( a ~ b + c)
fn <- function(X){  
    fm <- lm(formula, X)
    out <- fm$coefficients   
}
coeffs <- dlply(dta, .(year), fn)
avg_coeffs <- sapply(coeffs, mean)