R:如何计算测试集的ETS的准确度?

时间:2016-03-16 15:19:42

标签: r forecasting

我在计算测试集的ETS中的准确性时遇到问题。

train_ts<- ts(head(t$value,141), frequency=7) # this is train set (first 141 rows)
fit=auto.arima(train_ts)
forecasts = forecast(fit,h=12)
vector = ts(tail(t$value,12),frequency=7) # this is test set (last 12 rows)
accuracy(forecasts, vector, test=NULL, d=NULL, D=NULL) # I try to calculate accuracy

我有这个错误:

  

window.default(x,...)出错:&#39; start&#39;不能追求结束&#39;       另外:警告信息:       在window.default(x,...)中:&#39;开始&#39;价值未改变

预测结果:

Point Forecast       Lo 80       Hi 80       Lo 95       Hi 95
191    4742.038402 3781.130910 5702.945894 3272.457210 6211.619593
192    5068.467231 4105.169285 6031.765177 3595.230155 6541.704307
193    5233.951079 4270.487205 6197.414954 3760.460238 6707.441921
194    4883.850503 3910.172814 5857.528191 3394.738981 6372.962025
195    4857.666612 3883.140593 5832.192631 3367.257681 6348.075543
196    5180.408585 4203.616284 6157.200886 3686.533674 6674.283496
197    5091.348011 4112.687519 6070.008503 3594.615948 6588.080074
198    4833.290365 3848.222297 5818.358433 3326.758761 6339.821969
199    5003.034291 4017.771775 5988.296807 3496.205304 6509.863278
200    5175.020752 4189.555595 6160.485908 3667.881854 6682.159650
201    4963.008654 3972.665298 5953.352010 3448.409193 6477.608114
202    4882.858876 3890.856391 5874.861360 3365.721997 6399.995754

矢量:

Time Series:
Start = 1 
End = 12 
Frequency = 1 
 [1] 5243 5010 5374 4952 6911 4260 6063 5597 4536 5522 4254 5048

如何修复错误或如何正确计算准确度?

示例数据(t $值):

[1] 5564 6657 7184 6456 5597 5951 6771 5990 6289 6885 6171 4739 5737 5950 6721
[16] 6579 6763 6829 5779 5346 5652 6319 6407 7232 6600 6244 5631 5198 6360 7922
[31] 6035 4221 4361 4475 5585 4845 5958 6833 3617 5036 4560 3820 5724 6352 5773
[46] 6200 4378 5614 5165 6345 5769 6228 6378 4827 4402 5829 4880 6333 6406  434
[61] 4754 4303 5498 5048 6042 6664 5492 5684 6194 5349 5846 5916 5069 5071 4367
[76] 5381 5694 5731 6029 5639 5539 4490 5223 5436 5819  941 6576 5235 3574 6319
[91] 5063 5765 5919 6006 5479 3653 4281 5433 4851 5543 5995 5049 4728 5449 5728
[106] 6009 5378 5730 5206 4764 5458 5970 5254 5653 5539 1907 4438 5421 5529 5225
[121] 6158 5572 4777 4575 5275 4742 5648 5198 5624 4781 3959 4368 5478 4681 5288
[136] 5758 4540 3899 5760 4797 5580 5433 4898 4473 3566 4779 4897 5099 5866 6231
[151] 4982 4375 5976

1 个答案:

答案 0 :(得分:1)

首先,您发布的预测输出中似乎有些内容;它从点191开始,这意味着拟合系列在190处结束,但鉴于您发布的代码,这似乎并不正确。

无论如何,DatamineR的评论是正确的。您提供了两个具有不同时间范围的时间序列。 forecast函数会在拟合时间序列停止的位置进行调整,但是当您使用ts(tail(t$value,12),frequency=7)时,您将创建一个从1开始的新时间序列。

一种选择是将一个(或两个)转换为数字向量,如DatamineR建议的那样。否则,您可以将测试集的开始时间设置为正确的值,例如:

vector = ts(tail(t,12),start=end(train_ts)+c(0, 1), frequency=7)

其中end (train_ts)为您提供了培训系列的最后一个时间点,然后我添加了c(0,1)以设置开始时再添加一个时间步(在同一周期中)测试系列的时间。