週ベースで年次時系列を予測しようとしています (年に 52 週間で、164 週間のデータがあります)。頻度が 24 より大きいため、季節性が無視されないように、R は「ets」ではなく「stlf」を使用するようにアドバイスします。「stlf」関数は完全に機能し、次の結果が得られました。
> WR.ets<-stlf(WeeklyReferral,method="ets")
> summary(WR.ets)
Forecast method: STL + ETS(A,A,N)
Model Information:
ETS(A,A,N)
Call:
ets(y = x.sa, model = etsmodel)
Smoothing parameters:
alpha = 0.0262
beta = 1e-04
Initial states:
l = 93.1548
b = 0.1159
sigma: 12.6201
AIC AICc BIC
1675.954 1676.205 1688.353
Error measures:
ME RMSE MAE MPE MAPE MASE
Training set -0.1869514 12.62011 9.790321 -2.589141 11.12905 0.5990874
Forecasts:
Point Forecast Lo 80 Hi 80 Lo 95 Hi 95
2013.423 95.39869 79.22537 111.57201 70.66373 120.13364
2013.442 95.03434 78.85538 111.21330 70.29075 119.77793
...............................................................
ポイント予測は、予測値の平均を示します。しかし、私が欲しいのは平均ではなく実際の予測値です。したがって、私はそれがどのように機能するかを理解し、ステップを分解しようとしています。時系列で最初に「stl」分解を使用します
temp<-stl(WeeklyReferral,s.window="periodic", robust=TRUE)
> temp
Call:
stl(x = WeeklyReferral, s.window = "periodic", robust = TRUE)
Components
Time Series:
Start = c(2010, 15)
End = c(2013, 22)
Frequency = 52
seasonal trend remainder
2010.269 7.1597729 82.33453 -0.4943046
2010.288 -1.4283001 82.69446 5.7338358
..........................................
2013.404 8.0046803 117.74388 -0.7485615
次に、「傾向 + 残余」を新しい時系列として使用して、3 か月 (12 期間) 予測します。「stlf」関数によって取得された最後の状態ベクトルを、次の式の初期状態ベクトルとして使用します。そして、「stlf」関数がモデルが ETS(A,A,N) であることを示しているため、昨年の同じ週の季節値を予測値に追加します。
y<-c(rep(NA,13))
l<-c(rep(NA,13))
b<-c(rep(NA,13))
e<-c(rep(NA,12))
alpha<-0.0262
beta<-0.0001
y[1]<-117.74388-0.7485615
l[1]<-109.66913
b[1]<-0.11284923
for (j in 1:1000){
for(i in 2:13){
e[i-1]=rnorm(sd=12.6201,n=1)
b[i]<-b[i-1]+beta*e[i-1]
l[i]<-l[i-1]+b[i-1]+alpha*e[i-1]
y[i]<-l[i-1]+b[i-1]+e[i-1]+temp$time.series[i+164-52,1]
}}
私は正しいですか?
新しい分解された時系列で「ets」関数を使用しようとしましたが、さまざまなパラメーター (アルファ、ベータ、l、b、シグマ) が与えられ、予測値が得られませんでした。
ご意見をお待ちしております。