3

約 5 年間の 1 年金利のデータがあります。この金利のモデルを作成したいと思います。GARCH(1,1) を使用した ARMA(3,2) が適切であるという結論に達しました。したがって、以下のコードを使用して見積もりを取得します。

> stibor1ydarmagarch=garchFit(formula=~arma(3,2)+garch(1,1),
                          data=stibor1yd, 
                          cond.dist="std", 
                          trace=FALSE)

これは正常に機能し、適切な見積もりが得られます。ただし、予測に関しては、エラーが発生します。エラーが発生する理由とその解決方法について誰かが手がかりを持っていますか?

> predict(stibor1ydarmagarch, n.ahead=10)
Error in a_vec[(i - 1):(i - u2)] : only 0's may be mixed with negative subscripts
4

1 に答える 1

4

この問題は、答えが含まれていない古い投稿と重複しているようです: R error when using predict() function with class = fGarch

このエラーは、(i - 1)または(i - u2)が負になる場合に発生するため、インデックスは許可されていない -1:2 のようなものです。

を介して適合オブジェクトの予測メソッドを確認した後、getMethod("predict","fGARCH")ここでエラーが発生したようです (無関係な部分は省略されています)。

    a_vec <- rep(0, (n.ahead))      
    u2 <- length(ar)      
    a_vec[1] = ar[1] + ma[1]       
    if ((n.ahead - 1) > 1) {
        for (i in 2:(n.ahead - 1)) {
          a_vec[i] <- ar[1:min(u2, i - 1)] * a_vec[(i - 1):(i - u2)]             
        }
    }

は常にi1 よりも大きいため、エラーが発生します。

(i - u2) < 0 <==> i < u2 <==> i < length(ar)

これは意味がありますか?モデルのar部分が2より大きい場合、これは常にエラーを生成するように見えるので、私にはそうではありません。

スカラーa_vec[i]であり、

ar[1:min(u2, i - 1)] * a_vec[(i - 1):(i - u2)] + ...長さが 1 より大きいベクトルを指定できます。

編集:

予測関数にバグがあるか、予測できるモデルの種類に関する文書化されていない制限がありfGarchます。わずかに変更すると、マニュアルの例でもエラーが発生します。

   set.seed(123)
   fit = garchFit(~arma(2,0)+garch(1,1), data = garchSim(), trace = FALSE)
   predict(fit, n.ahead = 4)
   meanForecast   meanError standardDeviation
1 -7.512452e-04 0.004161189       0.004161189
2 -1.107497e-03 0.003958535       0.003878321
3  2.617933e-04 0.003782362       0.003665391
4  6.264252e-05 0.003616971       0.003507209
Warning message:
In a_vec[i] <- ar[1:min(u2, i - 1)] * a_vec[(i - 1):(i - u2)] +  :
  number of items to replace is not a multiple of replacement length

fGarch パッケージの変更ログに基づくと、この問題は数年前に修正されたようですが、明らかに再発しているか、適切に修正されていません。

2009-11-05  chalabi

    * R/methods-predict.R: small changes in predict,fGARCH-method to
      correct its output when n.ahead=1 since addition of conditional
      errors.

パッケージの管理者に連絡することをお勧めします。

于 2013-03-18T12:00:09.887 に答える