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

R:如何计算测试集ETS的精度?,r,forecasting,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(foreca

我对测试集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
向量:

如何修正错误或如何正确计算精度

示例数据(t$值):


首先,在你发布的预测输出中似乎有些不对劲;它从191点开始,这意味着fitted系列在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)

其中,
(train\ts)
给出了训练序列的最后一个时间点,然后我通过添加
c(0,1)
来增加一个时间步长(在同一个周期中),以设置测试序列的开始时间。

你能给出一个可重复的示例吗?DatamineR,我添加了我的示例。我认为错误是由于函数
精度
造成的,在两个参数
f
x
的情况下,该函数期望两个时间序列的时间重叠。可能这些,由于任何原因,不符合你的情况。如果您只是尝试(将
向量
转换为R向量):
准确性(预测,c(向量),test=NULL,d=NULL,d=NULL)
错误不再显示。
Time Series:
Start = 1 
End = 12 
Frequency = 1 
 [1] 5243 5010 5374 4952 6911 4260 6063 5597 4536 5522 4254 5048
[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
vector = ts(tail(t,12),start=end(train_ts)+c(0, 1), frequency=7)