この問題は、答えが含まれていない古い投稿と重複しているようです: 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)]
}
}
は常にi
1 よりも大きいため、エラーが発生します。
(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.
パッケージの管理者に連絡することをお勧めします。