【发布时间】:2016-01-05 17:35:16
【问题描述】:
我想预测一个线性模型,我是用 ols 估计的。但是,它总是预测未来相同的时间段,与我的数据集长度相同。
这是我所做的。
data <- ts(matrix(rnorm(144, mean=0, sd=1), ncol=6), start=c(2007,1), frequency=12)
我计算了两个因素。
factors <- ts(t(t(eigen(cor(data))$vectors[,1:2] %*%
sqrt(diag(eigen(cor(data))$values[1:2]))) %*%
t(scale(data))), start=c(2007,1), frequency=12)
colnames(factors) <- c("f1", "f2")
我将因素与数据集结合起来。
favar <- ts.union(factors, data)
colnames(favar) <- c(colnames(factors), "a", "b", "c", "d", "e", "f")
然后,我为“a”估计了一个线性模型。
require(forecast)
model <- tslm(a ~ f1 + f2 + b + c + d + e + f + 0, data=ts(sapply(favar, function(x)
lag(x, h=1))[-1,], start=c(2007, 2), frequency=12))
如果我现在预测我的模型,它在未来时间段内的长度与我的数据集相同。
forecast(model, newdata=favar, h=6, ts=T)
我为 h 设置的值无关紧要,结果总是提前 24 个月的预测。我认为,问题出现了,因为我必须提供newdata,为此我使用了我的原始数据集favar。但是,如果我尝试在没有它的情况下预测模型,则会收到以下错误:
eval(expr, envir, enclos) 中的错误:找不到对象“f1”
我已经尝试使用predict.lm 对其进行预测,并且仅使用lm 而不是tslm 来估计模型。无论如何,我面临同样的问题:预测周期总是与提供的newdata 的长度相同。
更新:我刚刚注意到,不仅预测的长度与我的数据集相同,而且值也相同。基本上,我只有一份原始数据的副本。
感谢您的帮助。
【问题讨论】:
标签: r linear-regression forecasting predict