【发布时间】:2017-06-07 01:47:54
【问题描述】:
我试图通过计算均方预测误差来比较两个不同的预测模型。
这里是数据集earnings.csv dataset的链接
使用 2000-2006 年的数据作为训练数据集,使用 2007-2008 年的数据作为测试数据集。
在 R 中同时使用 decompose() 和 stl() 函数将时间序列分解为趋势、季节性和误差分量。
在 R 中使用 lm() 函数将线性模型拟合到趋势分量。然后预测 2007-2008 年的月收入。将两种方法下的预测与测试数据集进行比较,无论是图形还是通过计算样本均方预测误差 (MSPE)。
讨论两种不同分解方法的误差项的随机性。
这是我的 R 代码:
Data <-read.table("earnings.csv",header = T,sep=",")
tsData <- ts(Data$X,start = 2000, frequency = 12)
plot(tsData,xlab= "Month",ylab = "Earnings")
tsData = log(tsData)
trainingSet = window(tsData,start=2000,end=c(2006,12))
testSet = window(tsData,start=2007,end=c(2008,12))
decompTS =decompose(trainingSet)
stltraining = stl(trainingSet,s.window = "periodic")
lm1 = lm(trainingSet~decompTS$trend)
lm1
lm2 = lm(trainingSet~stltraining$time.series[,2])
lm2
decompTest=(decompose(testSet))$trend
pred1=lm1$coefficients*decompTest
pred2=predict(lm2,decompTest)
plot(pred1)
plot(pred2)
mspe1=mean((testSet-pred1)^2)
我得到的 mspe1 值为 null。我在这里做错了什么?感谢您的帮助
【问题讨论】:
-
请参阅stats.stackexchange.com/help/on-topic 以获取有关主题内容的建议。你的问题是关于找出你的代码有什么问题。当您提供对数据集的访问权限时,这似乎是 Stack Overflow 的主题,我正在投票支持迁移。请注意,您的 #4 尤其不是编程问题,即使在这里也算作自学。
标签: r time-series cross-validation prediction