私はauto.arima()
、Rの関数を使用してARIMA(5,1,2)モデルを近似しました。そして、次数を調べることにより、これは予測するのに最適なモデルではないと言えます。データ系列に外れ値が存在する場合、そのようなデータにモデルを適合させる方法は何ですか?
私はauto.arima()
、Rの関数を使用してARIMA(5,1,2)モデルを近似しました。そして、次数を調べることにより、これは予測するのに最適なモデルではないと言えます。データ系列に外れ値が存在する場合、そのようなデータにモデルを適合させる方法は何ですか?
回答:
マイケルチェニックは正しい方向にあなたを指しています。Ruey Tsayの作品もこの知識体系に追加されたものとして見ます。詳細はこちら。
今日の自動化されたコンピューターアルゴリズムと競合することはできません。彼らは、あなたが考慮していない、多くの場合紙や本に記載されていない時系列にアプローチする多くの方法を検討します。分散分析の方法を尋ねると、さまざまなアルゴリズムと比較するときに正確な答えが期待できます。パターン認識をどのように行うかと質問すると、ヒューリスティックスが関係しているため、多くの回答が可能です。あなたの質問はヒューリスティックの使用を含みます。
データに外れ値が存在する場合にARIMAモデルを近似する最良の方法は、可能な自然状態を評価し、特定のデータセットに最適であると見なされるアプローチを選択することです。自然の状態として考えられるのは、説明された変動の主な原因がARIMAプロセスであるということです。この場合、acf / pacf関数を介してARIMAプロセスを「一時的に識別」し、残差を調べて外れ値の可能性を調べます。外れ値は、脈拍、つまり、1回限りのイベントまたは季節的な脈拍である場合があります。これは、ある頻度で系統的な外れ値によって示されます(たとえば、月次データの場合は12)。3番目のタイプの外れ値は、それぞれが同じ符号と大きさを持つ連続したパルスのセットを持っている場合で、これはステップまたはレベルシフトと呼ばれます。暫定的なARIMAプロセスからの残差を調べた後、経験的に識別された決定論的構造を暫定的に追加して、暫定的な結合モデルを作成できます。変動の主な原因が4種類または「外れ値」のいずれかである場合も、それらをab initio(最初)で識別し、次にこの「回帰モデル」からの残差を使用して確率的(ARIMA)構造を識別することで、より適切に対処できます。 。これらの2つの代替戦略は、ARIMAパラメータが時間とともに変化するか、いくつかの考えられる原因、おそらく加重最小二乗またはべき変換の必要性により、エラー分散が時間とともに変化する「問題」がある場合、もう少し複雑になります。ログ/逆数など 別の複雑さ/機会は、メモリ、因果関係、および経験的に特定されたダミーシリーズを組み込んだシームレスに統合されたモデルを形成するために、ユーザーが提案する予測子シリーズの貢献をいつどのように形成するかです。この問題は、次の形式のインジケーターシリーズで最もよくモデル化されたトレンドシリーズがある場合、さらに悪化します。、またはおよびようなレベルシフトシリーズの組み合わせ。Rでそのようなプロシージャを試して書きたいと思うかもしれませんが、人生は短いです。問題を実際に解決し、この場合は手順がどのように機能するかを示していただければ幸いです。データを投稿するか、sales @ autobox.comに送信してください
データの受信/分析後の追加コメント/為替レートの日次データ/ 2007年1月1日以降の18 = 765値
データには以下のacfが含まれていました。
という形式のアルマモデルと多数の外れ値を特定すると、acf値は非常に小さいため、残差のacfはランダム性を示します。AUTOBOXはいくつかの外れ値を識別しました:
最終モデル:
残差の分散変化が特定され組み込まれたTSAYの分散安定化補強の必要性が含まれています。自動実行で発生した問題は、会計士のように、使用していた手順が介入検出(別名、異常値検出)を介してデータに挑戦するのではなく、データを信じることでした。私はここに完全な分析を投稿しました。
R (まだ)には、arima関数に対応する堅牢な対応機能はありません。表示される場合は、ここに表示されます。たぶん代替案は、単純な一変量の外れ値検出ルールに関して外れている観測をダウンウェイトすることですが、加重ARMA回帰を実行するためにパッケージを使用する準備ができていないようです。もう1つの可能な代替策は、Winsorizeを使用して境界点を設定することです。
#parameters
para <- list(ar=c(0.6,-0.48), ma=c(-0.22,0.24))
#original series
y1 <- y0 <- arima.sim(n=100, para, sd=sqrt(0.1796))
#outliers
out <- sample(1:100, 20)
#contaminated series
y1[out] <- rnorm(20, 10, 1)
plot( y1, type="l")
lines(y0, col="red")
#winsorized series
y2 <- rep(NA, length(y1))
a1 <- (y1-median(y1)) / mad(y1)
a2 <- which(abs(a1)>3)
y2[-a2] <- y1[-a2]
for(i in 2:length(y2)){
if(is.na(y2[i])){ y2[i] <- y2[i-1] }
}
ロバストな時系列モデルに関するかなりの数の文献があります。マーティンとヨーハイは主要な貢献者の一人です。彼らの仕事は1980年代にさかのぼります。私は時系列で外れ値を検出するためにいくつかの作業を行いましたが、マーティンは、外れ値の検出と時系列での裾が重い残差の存在下でのパラメーター推定の両方に実際に貢献した多くの1人です。
履歴を予測または分析するためのモデルの目的は何ですか?これが予測用ではなく、これらが外れ値であることがわかっている場合は、ダミー変数を追加するだけです。ダミー変数は、これらの日付では1、その他の日付では0です。これにより、ダミー係数が異常値を処理し、モデル内の他の係数を解釈できるようになります。
これが予測のためのものである場合は、2つの質問をする必要があります。これらの異常値は再び発生しますか?もしそうなら、私はそれらを説明する必要がありますか?
たとえば、リーマン兄弟がダウンしたときに、データ系列に異常値があったとします。それはあなたが予測する方法のないイベントですが、明らかに、このようなことが将来起こる可能性があるため、単にそれを無視することはできません。外れ値のダミーを投入すると、エラー分散からこのイベントの不確実性を効果的に取り除くことができます。予測はテールリスクを過小評価します-おそらく、リスク管理にとっては良いことではありません。ただし、売上のベースライン予測を作成する場合は、ダミーが機能します。テールに関心がないため、最も可能性の高いシナリオに関心があるため、予測できないイベントを考慮する必要はありません。この目的。
したがって、モデルの目的は、外れ値の扱い方に影響を与えます。