tsoutliersパッケージとauto.arimaを使用して予測を解釈および実行する方法


9

1993年から2015年までの月次データがあり、これらのデータを予測したいと思います。私はtsoutliersパッケージを使用して外れ値を検出しましたが、自分のデータセットを使用して予測を続行する方法がわかりません。

これは私のコードです:

product.outlier<-tso(product,types=c("AO","LS","TC"))
plot(product.outlier)

これはtsoutliersパッケージからの私の出力です

ARIMA(0,1,0)(0,0,1)[12]                    

Coefficients:
        sma1    LS46    LS51    LS61    TC133   LS181   AO183   AO184   LS185   TC186    TC193    TC200
      0.1700  0.4316  0.6166  0.5793  -0.5127  0.5422  0.5138  0.9264  3.0762  0.5688  -0.4775  -0.4386
s.e.  0.0768  0.1109  0.1105  0.1106   0.1021  0.1120  0.1119  0.1567  0.1918  0.1037   0.1033   0.1040
       LS207    AO237    TC248    AO260    AO266
      0.4228  -0.3815  -0.4082  -0.4830  -0.5183
s.e.  0.1129   0.0782   0.1030   0.0801   0.0805

sigma^2 estimated as 0.01258:  log likelihood=205.91
AIC=-375.83   AICc=-373.08   BIC=-311.19

 Outliers:
    type ind    time coefhat  tstat
1    LS  46 1996:10  0.4316  3.891
2    LS  51 1997:03  0.6166  5.579
3    LS  61 1998:01  0.5793  5.236
4    TC 133 2004:01 -0.5127 -5.019
5    LS 181 2008:01  0.5422  4.841 
6    AO 183 2008:03  0.5138  4.592
7    AO 184 2008:04  0.9264  5.911
8    LS 185 2008:05  3.0762 16.038
9    TC 186 2008:06  0.5688  5.483
10   TC 193 2009:01 -0.4775 -4.624
11   TC 200 2009:08 -0.4386 -4.217
12   LS 207 2010:03  0.4228  3.746
13   AO 237 2012:09 -0.3815 -4.877
14   TC 248 2013:08 -0.4082 -3.965
15   AO 260 2014:08 -0.4830 -6.027
16   AO 266 2015:02 -0.5183 -6.442

これは私の陰謀です

これらの警告メッセージもあります。

Warning messages:
1: In locate.outliers.iloop(resid = resid, pars = pars, cval = cval,  :
  stopped when maxit was reached
2: In locate.outliers.iloop(resid = resid, pars = pars, cval = cval,  :
  stopped when maxit was reached
3: In locate.outliers.oloop(y = y, fit = fit, types = types, cval = cval,  :
  stopped when maxit was reached
4: In arima(x, order = c(1, d, 0), xreg = xreg) :
  possible convergence problem: optim gave code = 1
5: In auto.arima(x = c(5.77, 5.79, 5.79, 5.79, 5.79, 5.79, 5.78, 5.78,  :
  Unable to fit final model using maximum likelihood. AIC value approximated

疑問:

  1. 私が間違っていない場合、tsoutliersパッケージは検出した外れ値を削除し、外れ値が削除されたデータセットを使用することで、データセットに適した最良の有馬モデルが得られますか?
  2. レベルシフトの削除などにより、調整シリーズデータセットが大幅にシフトダウンされています。これは、調整された系列で予測が行われた場合、より最近のデータがすでに12を超えているため、予測の出力が非常に不正確になることを意味しませんが、調整されたデータは約7〜8にシフトします。
  3. 警告メッセージ4と5はどういう意味ですか?調整されたシリーズを使用してauto.arimaを実行できないことを意味しますか?
  4. ARIMA(0,1,0)(0,0,1)[12]の[12]はどういう意味ですか?それは私が毎月設定したデータセットの私の頻度/周期性だけですか?そして、これは私のデータ系列も季節性であることを意味しますか?
  5. データセットの季節性を検出するにはどうすればよいですか?時系列プロットの視覚化からわかるように、明らかな傾向を確認できません。分解関数を使用すると、季節的な傾向があると想定されますか?では、注文者1のMAがあるため、季節性の傾向がある場合、tsoutliersが私に言ったことを単に信じますか?
  6. これらの外れ値を特定した後、このデータを使用して予測を継続するにはどうすればよいですか?
  7. これらの外れ値を他の予測モデルに組み込む方法-指数平滑法、ARIMA、構造モデル、ランダムウォーク、シータ?レベルシフトがあるため、外れ値を削除できないと確信しています。調整された系列データのみを取得すると、値が小さすぎるため、どうすればよいですか。

これらの外れ値を予測のためにauto.arimaのリグレッサとして追加する必要がありますか?これはどのように機能しますか?

回答:


5

これらのコメントは長すぎるため、「回答」

  1. (AUTOBOXが行うように)それが調整せずにARIMAを識別するのは間違っています。推定では介入調整がないと想定し、異常の非処理によって影響を受ける可能性のあるARIMAモデルを識別するために急いでいます。多くの場合、ARIMA構造を特定する前に、ユーザー指定の因果系列および/または未指定の確定的構造(異常値/レベルシフト、季節パルス、ローカルタイムトレンド)の両方を調整する必要があります。自然の真の/正しい状態は区別を必要としないが、元のシリーズを不必要に区別するという間違いを犯す貧弱な尊厳のこの例を参照してください。非定常性は必ずしも差異化の必要性を意味するわけではありませんが、しばしば意味を失ったこと、すなわちレベル/平均の変化に対する調整を示唆します。

  2. 正確な予測は常に元のシリーズから行われるため、履歴が与えられれば予測は信じられないほどであるはずです。

  3. 私はこの手順を積極的に使用していないので、わかりません。ARIMAモデリングは反復的な(マルチステージ)セルフチェックプロセスであるので良いとか十分だと思ったのではなく、無料のrベースのソリューションを求めたので、私はそれをお勧めします。

  4. モデルは、データにma(12)季節成分があると考えていることを示唆していますが、これは単に季節パルスの必要性を反映している可能性があります。

  5. 季節的な傾向の概念はせいぜい曖昧です。

  6. 私の答えはあまりにも明白で自己退屈だろう


1
tuとても@リカルド
IrishStat

4

パッケージ 'tsoutliers'は、Chen and Liu(1993) [1]で説明されている手順を実装しています。パッケージと手順の説明もこのドキュメントに記載さています

簡単に言えば、手順は2つの主要な段階で構成されています。

  1. 選択したARIMAモデルでの外れ値の検出。
  2. 前の手順で検出された外れ値を含むARIMAモデルを選択または再フィッティングし、新しいフィットで重要ではない外れ値を削除します。

次に、系列は検出された外れ値に対して調整され、段階(1)および(2)は、それ以上の外れ値が検出されなくなるまで、または最大反復回数に達するまで繰り返されます。


最初の段階(異常値の検出)も反復プロセスです。各反復の最後に、この段階で検出された外れ値に対してARIMAモデルの残差が調整されます。このプロセスは、外れ値が見つからなくなるまで、または反復の最大数(デフォルトでは4回)に達するまで繰り返されます。表示される最初の3つの警告は、この内部ループに関連しています。つまり、ステージは4回の反復後に終了します。

maxit.iloopfunction の引数を使用して、この最大反復回数を増やすことができますtso。最初の段階で多数の反復を設定せずに、プロセスを2番目の段階に進め、そこでARIMAモデルを再フィッティングまたは選択することをお勧めします。


警告4と5は、それぞれ関数stats::arimaとに対して、ARIMAモデルの適合プロセスとモデルの選択プロセスに関連していますforecast:auto.arima。尤度関数を最大化するアルゴリズムは、常に解に収束するとは限りません。これらの問題に関連するいくつかの詳細は、この投稿この投稿などにあります


[1] Chung ChenおよびLon-Mu Liu(1993)「時系列におけるモデルパラメータと外れ値の影響の共同推定」、 米国統計協会ジャーナル88(421)、pp。284-297。DOI:10.1080 / 01621459.1993.10594321


tso()の実行にどのくらいの時間がかかりますか?
Anoop Toffy 2017年

@AnoopToffyこれは、データの長さ、周期性などに依存します。年次、月次、四半期データ、サンプルサイズ約120の観測値、およびARIMAモデルで合理的にキャプチャできるダイナミックの場合、アルゴリズムは最大で実行されます約10秒(通常ははるかに短い)。
javlacalle 2017年
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.