我工作的时间序列551的每月数据的M3比赛。
所以,我的数据是:
library(forecast)
library(Mcomp)
# Time Series
# Subset the M3 data to contain the relevant series
ts.data<- subset(M3, 12)[[551]]
print(ts.data)我想实现时间序列交叉验证的最后18个观察到的样本间隔。
有些人通常会称之为“滚动起源的预测评估”或类似的东西。
我怎样才能做到这一点?采样间隔是什么意思?哪些是我必须评估的时刻表?
我很困惑,任何帮助来点燃这将是受欢迎的。
发布于 2021-01-08 23:39:36
tsCV包的forecast函数是一个很好的起点。
从文件上看,
tsCV(y,预测函数,h= 1,window = NULL,xreg = NULL,初始值= 0,。..)
让“y”包含时间序列y1:T,然后将“预测函数”依次应用于时间序列y1:t,对于t=1,…,ft+h,作出预测ft+h,误差由et+h =yt+ Let +h给出。
首先,tsCV将模型拟合到y1中,然后预测y1 + h,然后将模型拟合为y1:2,预测T步骤的y2 +h等等。
tsCV函数返回预测错误。
将其应用于ts.data的训练数据
# function to fit a model and forecast
fmodel <- function(x, h){
forecast(Arima(x, order=c(1,1,1), seasonal = c(0, 0, 2)), h=h)
}
# time-series CV
cv_errs <- tsCV(ts.data$x, fmodel, h = 1)
# RMSE of the time-series CV
sqrt(mean(cv_errs^2, na.rm=TRUE))
# [1] 778.7898在你的情况下,也许你应该
ts.data$xx1
https://stackoverflow.com/questions/65627659
复制相似问题