2017-11-13 15 views
0

より多くのデータを持つ異なる多変量GARCHモデルを使用している適用関数を実行したい。 GARCHモデルを実行するには、後で適合する変数の数を決定する関数cgarchspecを実行する必要があります。いくつかの理由について、以下のapply関数は以下のようにR関数cgarchspecは単独では機能するが、適用関数では機能しない

library(rmgarch) 
func.garch.i <- function(x) { 
cgarch11spec.loop <- cgarchspec(uspec =multispec(replicate(x,garch11.spec)), VAR = TRUE, robust = FALSE, lag = 1, lag.max = NULL, 
           lag.criterion = c("AIC", "HQ", "SC", "FPE"), external.regressors = NULL, 
           robust.control = list(gamma = 0.25, delta = 0.01, nc = 10, ns = 500), 
           dccOrder = c(1, 1), asymmetric = FALSE, 
           distribution.model = list(copula = c("mvnorm"), 
                 method = c("Kendall"), time.varying = TRUE, 
                 transformation = c("parametric")), 
           start.pars = list(), fixed.pars = list()) 
} 
nb <- seq(2,3) 
apply(nb, func.garch.i(x)) 

引数garch11.specが定義されて動作しません:

garch11.spec = ugarchspec(mean.model = list(armaOrder = c(0,0)), 
         variance.model = list(garchOrder = c(1,1), 
               model = "sGARCH"), 
         distribution.model = "norm") 

をしかし、私は例えばfunc.garch.i(2)を実行しようとした場合、それがうまく機能...なぜapply機能で機能していませんか?

答えて

0

同じ問題を抱えている可能性のある人には、私は最終的に解決策を見つけました。関数multispecは、事前に分離して計算する必要があります。

func.garch.i <- function(x) { 
uspec <- multispec(replicate(x,garch11.spec)) 
cgarch11spec.loop <- cgarchspec(uspec, VAR = TRUE, robust = FALSE, lag = 1, lag.max = NULL, 
           lag.criterion = c("AIC", "HQ", "SC", "FPE"), external.regressors = NULL, 
           robust.control = list(gamma = 0.25, delta = 0.01, nc = 10, ns = 500), 
           dccOrder = c(1, 1), asymmetric = FALSE, 
           distribution.model = list(copula = c("mvnorm"), 
                 method = c("Kendall"), time.varying = TRUE, 
                 transformation = c("parametric")), 
           start.pars = list(), fixed.pars = list()) 
} 
関連する問題