R:让我了解时间序列预测包的准确性功能
R: Put me through on the accuracy function on forecast package for time series
我打算为我模拟其数据的 ARIMA
预测方法找到均方根误差。我的方法是使用 R
完成的,因为我遵循 Rob J. Hyndman 方法:
- 将时间序列数据分成
train
和test
组。
- 通过
auto.arima()
函数获得最佳模型
- 对未来训练数据集的预测,直至测试集的长度。
- 计算预测的
RMSE
。
MWE
library(forecast)
n=50
phi <- 0.6
set.seed(106100125)
ar1 <- arima.sim(n, model = list(ar=phi, order = c(1, 0, 0)), sd = 1)
train <- head(ar1, round(length(ar1) * 0.8)) # Train set
test <- tail(ar1, length(ar1) - length(train)) # Test set
nfuture <- forecast(train, model = auto.arima(train), h = length(test)) # makes the `forecast of test set to the future up to length of test set
RMSE <- accuracy(test, nfuture) # RETURN RMSE
当我在 MWE 中调用 RMSE
时,我得到了 0
。但是当我调用 test
和 nfuture
时,我得到了
#[1] 1.0470537 0.3984545 0.5811056 2.2703350 -1.0060028 -1.6126040 -0.4329466 2.1523534 1.2588265 0.7308986
和
#[1] 0.55281252 0.42374990 0.32481894 0.24898494 0.19085556 0.14629738 0.11214200 0.08596072 0.06589186 0.05050839
分别表明两者不相似因此,RMSE
不能0
请帮助我指出我做错了什么,并告诉我我需要做些什么来改正。
使用您的代码,会产生以下错误:
RMSE <- accuracy(test, nfuture)
#> Error in xx - ff[1:n]: non-numeric argument to binary operator
您调换了参数的顺序。如果你解决了这个问题,你会得到以下结果
accuracy(nfuture, test)
#> ME RMSE MAE MPE MAPE MASE
#> Training set 0.1068326 0.7035255 0.5543322 146.47245 194.2587 0.9426693
#> Test set 0.3185452 1.2399912 1.0237739 81.17983 82.4495 1.7409780
#> ACF1 Theil's U
#> Training set 0.1696878 NA
#> Test set 0.1777069 0.9050431
由 reprex package (v0.3.0)
于 2020-09-24 创建
我打算为我模拟其数据的 ARIMA
预测方法找到均方根误差。我的方法是使用 R
完成的,因为我遵循 Rob J. Hyndman 方法:
- 将时间序列数据分成
train
和test
组。 - 通过
auto.arima()
函数获得最佳模型 - 对未来训练数据集的预测,直至测试集的长度。
- 计算预测的
RMSE
。
MWE
library(forecast)
n=50
phi <- 0.6
set.seed(106100125)
ar1 <- arima.sim(n, model = list(ar=phi, order = c(1, 0, 0)), sd = 1)
train <- head(ar1, round(length(ar1) * 0.8)) # Train set
test <- tail(ar1, length(ar1) - length(train)) # Test set
nfuture <- forecast(train, model = auto.arima(train), h = length(test)) # makes the `forecast of test set to the future up to length of test set
RMSE <- accuracy(test, nfuture) # RETURN RMSE
当我在 MWE 中调用 RMSE
时,我得到了 0
。但是当我调用 test
和 nfuture
时,我得到了
#[1] 1.0470537 0.3984545 0.5811056 2.2703350 -1.0060028 -1.6126040 -0.4329466 2.1523534 1.2588265 0.7308986
和
#[1] 0.55281252 0.42374990 0.32481894 0.24898494 0.19085556 0.14629738 0.11214200 0.08596072 0.06589186 0.05050839
分别表明两者不相似因此,RMSE
不能0
请帮助我指出我做错了什么,并告诉我我需要做些什么来改正。
使用您的代码,会产生以下错误:
RMSE <- accuracy(test, nfuture)
#> Error in xx - ff[1:n]: non-numeric argument to binary operator
您调换了参数的顺序。如果你解决了这个问题,你会得到以下结果
accuracy(nfuture, test)
#> ME RMSE MAE MPE MAPE MASE
#> Training set 0.1068326 0.7035255 0.5543322 146.47245 194.2587 0.9426693
#> Test set 0.3185452 1.2399912 1.0237739 81.17983 82.4495 1.7409780
#> ACF1 Theil's U
#> Training set 0.1696878 NA
#> Test set 0.1777069 0.9050431
由 reprex package (v0.3.0)
于 2020-09-24 创建