5

外部リグレッサーを使用して Arima モデルを生成しています。n 個の観測があるとします。パッケージのpredict.Arima関数は、 n + 1観測の予測を行うだけです。forecast

外部リグレッサーの値を変更して、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 の係数を掛けた値を加算するだけでよいからです。ただし、外部リグレッサーの数が増えると、より複雑になります。

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

4

1 に答える 1

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)
于 2012-04-25T01:25:15.080 に答える