2016-11-25 23 views
0

假設我有以下的「for」循環在R:建築系數矩陣解決環GARCH/ARMA + GARCH模型

USDlogreturns=diff(log(prices)) 
for(p in 0:1) for(q in 0:1){ 
model<-ugarchspec(variance.model = list(model="fGARCH", submodel = "GARCH", garchOrder = c(1, 1)),mean.model = list(armaOrder = c(p, q), include.mean = TRUE), distribution.model = "norm") 
modelfit<-ugarchfit(spec=model, data=USDlogreturns, solver="hybrid") 
} 

什麼是正確的命令四個模型的係數存放在矩陣?我已經嘗試根據以前的帖子的答案來構建命令(請參閱鏈接:Loop for ARMA model estimation),但無法獲得上述循環的預期結果。

編輯:

以下「僞碼」是錯誤的,因爲它不會在歐米加,α1和β1的係數存儲在係數矩陣的第三,第四和第五列。

任何人都可以幫我找出並糾正錯誤嗎?

僞代碼:

armagarchcoefmat=matrix(NA, 4, 6) 
a=0 
for(p in 0:1) for(q in 0:1){ 
a=a+1 
model<-ugarchspec(variance.model = list(model="fGARCH", submodel = "GARCH", garchOrder = c(1, 1)),mean.model = list(armaOrder = c(p, q), include.mean = TRUE), distribution.model = "norm") 
modelfit<-ugarchfit(spec=model, data=USDlogreturns, solver="hybrid") 
if(p>0) armagarchcoefmat[a, c(1: p) ]=coef(modelfit)[2:6][c( 1 : p)] 
if(q>0) armagarchcoefmat[a, c(2:(1+q))]=coef(modelfit)[2:6][c((p+1):(p+q))] 
armagarchcoefmat[a,  6 ]=head(coef(modelfit),1) 
} 
+0

你需要建立一個[可重複的例子(http://stackoverflow.com/questions/5963269/how-to-make-a-great-r-reproducible-example),包括所有的'庫()'調用w /功能代碼,輸入數據,當前結果,如'modelfit'的輸出,以及預期的結果,? – Parfait

回答

0

最終,我成功地解決我的問題。以下是在「armagarchcoefmat」矩陣中返回模型係數的代碼以及結果矩陣本身的外觀。這些行分別代表(0,0),(0,1),(1,0)和(1,1)(p,q)對。這些列分別包含phi,theta,mu,omega,alpha1和beta1係數估計值。

library(rugarch) 

    USDlogreturns=diff(log(prices)) 


    armagarchcoefmat=matrix(NA, 4, 6) 
    a<-0 
    for(p in 0:1) for(q in 0:1){ 
    a<-a+1 
    model<-ugarchspec(variance.model = list(model="fGARCH", submodel = "GARCH", garchOrder = c(1, 1)),mean.model = list(armaOrder = c(p, q), include.mean = TRUE), distribution.model = "norm") 
    modelfit<-ugarchfit(spec=model, data=USDlogreturns, solver="hybrid") 
    if(p>0) armagarchcoefmat[a, c(1: p) ]<-coef(modelfit)[2:3][c( 1 : p)] 
    if(q>0) armagarchcoefmat[a, c(2:(1+q))]<-coef(modelfit)[2:3][c((p+1):(p+q))] 
    armagarchcoefmat[a, 3 ]<-head(coef(modelfit),1) 
    armagarchcoefmat[a, c(4:6) ]<-tail(coef(modelfit),3) 

    } 

    > armagarchcoefmat 
      [,1]  [,2]  [,3]   [,4]  [,5]  [,6] 
[1,]   NA  NA 0.002168063 9.086569e-06 0.03919058 0.9598094 
[2,]   NA 0.1301537 0.002158361 9.643089e-06 0.04207555 0.9569244 
[3,] 0.1166279  NA 0.002172631 9.517783e-06 0.04160620 0.9573938 
[4,] -0.3500512 0.4745337 0.002110809 9.745079e-06 0.04236628 0.9566337