滚动交叉验证的问题,其中使用了 R 中的 tsCV 函数

问题描述 投票:0回答:1

我有一个数据集,总共16条数据(2012年到2015年的季度数据)作为样本数据集。 我想使用第 14 个数据(2015 年第 2 季度)之前的数据,根据通过 arima 模型学习的模型来预测第 15 个数据(2015 年第 3 季度),然后计算与第 15 个实际数据的差异(=误差)。然而,下面编码中提到的第一种方法计算出的第15个(2015年第3季度)误差值(实际值-预测值)在第二种方法中的第14个(2015年第2季度)位置输出,其中tsCV函数为用过的。有人可以解释一下吗?

library(forecast)
### First method
tscv_test1 <- c(11, 25, 3, 8, 7, 78, 5, 2, 7, 82, 20, 10, 22, 45, 11, 8)
tscv_test1_ts <- ts(tscv_test1, start= c(2012, 1), freq = 4) 
train.length = 14
train.ts1 <- window(tscv_test1_ts, start=c(2012,1), end=c(2012, train.length))
valid.ts1 <- window(tscv_test1_ts, start=c(2012, train.length+1), end=c(2012, train.length+1))
arima.fit1 <- arima(train.ts1, order=c(0,0,0), seasonal=list(order=c(0,1,0), period=4))
arima.pred1 <- forecast(arima.fit1, h= 1)
error1 <- valid.ts1 - arima.pred1$mean[1]
error1
### Second method
tscv_test1_cv <- window(x = tscv_test1_ts, start=c(2012,1), end=c(2015,4))
far2 <- function(x, h){forecast(arima(x, order=c(0,0,0), seasonal=list(order=c(0,1,0), period=4)), h=h)}
error_test1 <- tsCV(tscv_test1_cv, far2, h=1)
error_test1
r cross-validation forecasting rolling-computation
1个回答
0
投票

请阅读帮助功能

help(tsCV)
:

Value:数值时间序列对象,包含作为向量的预测误差(如果 h=1),否则为矩阵。时间索引对应于训练数据的最后一个周期。这些列对应于预测范围。

© www.soinside.com 2019 - 2024. All rights reserved.