1

我对 R 中的预测时间序列模型几乎没有疑问。

我为此得到的预测值是:

想取这些值:40,60,67,80,87作为百分比值。

那么,如何在百分比中考虑绘图的 Y 轴

YrTimeSeries <- c(40,60,67,80,87);

tsValue<-ts(YrTimeSeries,frequency=1,start=2006)
library(forecast)
(forecast(tsValue,h=5))
    Point Forecast    Lo 80    Hi 80    Lo 95    Hi 95
2011        86.9993 72.19680 101.8018 64.36083 109.6378
2012        86.9993 66.06645 107.9321 54.98528 119.0133
2013        86.9993 61.36233 112.6363 47.79094 126.2077
2014        86.9993 57.39653 116.6021 41.72576 132.2728
2015        86.9993 53.90256 120.0960 36.38220 137.6164
  1. 每年的预测值(蓝线)的值是相同的。有人可以解释一下为什么吗?
  2. 95% 的预测区间是(36.38220,137.62). 它推断什么?
4

1 回答 1

2

预测是一条平线,因为您forecast()使用其默认配置调用。这会调用ets()(查看forecast(tsValue,h=5)$method用于预测的方法),模型指定为“ZZZ”。ets()然后尝试找到最佳模型并选择“ANN”:加性误差、无趋势、无季节性(请参阅?ets),因此模型中没有任何内容会导致预测偏离平线。添加更多数据并调用ets()趋势以查看趋势预测:

YrTimeSeries <- c(40,60,67,80,87,100,200,300,400)
tsValue<-ts(YrTimeSeries,frequency=1,start=2006)
forecast(tsValue,h=5,model="AAN")

假设您的模型已正确指定,95% 预测区间为您提供 95% 的未来观测值的区间。

编辑:Vids 评论说他希望预测值在 0 到 100 之间。在这种情况下,我首先将输入数据转换为 logits (http://en.wikipedia.org/wiki/Logit),在其中添加了一些数据,以便我们获得自动趋势:

YrTimeSeries <- c(10,20,30,40,60,67,80,87)
YrTimeSeries.logit <- log((YrTimeSeries/100)/(1-YrTimeSeries/100))
tsValue<-ts(YrTimeSeries.logit,frequency=1,start=2006)

预测后,我们对平均预测和预测区间限制进行​​反变换:

100*(1/(1+exp(-(forecast(tsValue,h=5)$mean))))
100*(1/(1+exp(-(forecast(tsValue,h=5)$upper))))
100*(1/(1+exp(-(forecast(tsValue,h=5)$lower))))
于 2012-10-25T08:05:39.470 回答