2012-04-24 11 views
4

私は外部回帰子でArimaモデルを生成しています。 nの観測があるとします。 predict.Arimaの機能forecastからのパッケージは、ちょうどn + 1の観測を予測します。シリーズの終わりを過ぎていない時期にArimaモデルを使って予測値を計算する

Iは、Iが特定の値所与N観測値を予測する必要がある、すなわち、外部の回帰の値を変更する、N値(系列の最後の値)の予測を行うために必要外部回帰のために。

library(forecast) 
set.seed(123) 
aux <- 1:24 
covari <- aux + rnorm(24,0,2) 
vari <- ts(aux * runif(24,0,3), start=c(2010,1), freq=12) 

mod <- auto.arima(vari, xreg=covari) 

predict(mod, newxreg=20) 

このコードはモデルを生成し、予測を生成する方法を示しています。私は、パラメータn.aheadを設定する前に、ピリオドの数を制御することができます。

predict(mod, newxreg=runif(4,15,25), n.ahead=4) 

このコードは、シリーズの次の4つの値の予測を生成します。

私が必要とするのは、n.ahead=-1です。つまり、シリーズ内の値は予測されますが、外部回帰は異なります。

外部回帰器を1つしか使用していない場合は、加法モデルであるため、xregの値にxregの係数を掛けた値で観測されたxregの値の差を加算できます。しかし、外部回帰子の数が増えると複雑になります。

Arimaモデルのシリーズの終わりに先行していない値を予測する方法はありますか?

答えて

3

「予測する」とはどういう意味ですか?時系列では、観測された過去の値を条件とする将来価値の推定値です。したがって、観測値の「予測」は単に観測値です。

しかし、おそらくあなたは適合値を意味します。つまり、以前のすべての観測で条件付きの観測のワンステップ予測です。その場合、あなたはfitted(mod)を使ってあなたが望むものを得ることができます。

ところで、predict.Arima()は予測パッケージに含まれていません。予測パッケージは、代替品としてforecast.Arima()機能を提供します。たとえば:

forecast(mod, xreg=20) 
forecast(mod, xreg=runif(4,15,25), h=4) 

更新: としては、コメントで説明し、OPは、説明変数の異なる値を仮定して、過去の観測の「予測」が観察されていた望んでいます。それを解釈するにはいくつかの方法があります。

最初に、係数は新しい情報を反映するように更新され、過去のデータのみが使用されます。その場合は、モデルを再フィットしてフィットした値を取得するだけです。

第2に、係数は更新されず、過去のデータのみが使用されます。そのための機能はなく、なぜ誰がそれをやる必要があるのか​​分かりません。しかし、次のようにして行うことができます。

fitted(mod) + mod$coef["covari"] * (newx - oldx) 

第3に、係数が更新されず、すべてのデータが使用されます。その後、私たちは得る

observed + mod$coef["covari"] * (newx - oldx) 
+0

こんにちは教授Hyndman、実際に私は "予測"と言っていませんでした。たぶん私はより明確になるかもしれません。私は、 'xreg'の値が異なると、シリーズの終わりを過ぎていない期間の値を**予測したいと思います。つまり、Jan-2010からDez-2011までの時系列モデルと外部回帰モデルを用いてArimaモデルを構築した場合、外部回帰モデルと異なる値を観測した場合、モデルがDez-2011に予測する値はどれくらいですか? –

+0

OK。今更新された –

+0

私はあなたの問題に応じてより自然かもしれないもう一つの選択肢があることを認識しました。詳しい情報がなければ、私は必要なものだけを推測することができます。 –

関連する問題