如何解决R:让我看一下时间序列预测包的准确性函数
我打算为ARIMA
预测方法找到均方根误差,并对其数据进行了模拟。我的方法是按照Rob J. Hyndman的方法使用R
来完成的,如下所示:
- 将时间序列数据分为
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)),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创建
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。