2016-10-14 45 views
1

假设我已经中R.回路的ARMA模型估计

USDlogreturns=diff(log(prices)) 

for(i in 0:5){ 
    for(j in 0:5){ 
    fit <- arima(USDlogreturns, order=c(i,0,j), include.mean=TRUE) 
    } 
} 

你如何让R能够替换一个NA矩阵的所有估计模型的系数下面的“for”循环?

+0

我对这种for循环的使用有许多相关的问题。所以,如果能为我提供我需要的命令,我将不胜感激。 – msmna93

回答

1

您将需要的尺寸的矩阵M 36倍13. 然后使用

M=matrix(NA,36,13) 
k=0 # current row being filled in 
for(i in 0:5){ 
    for(j in 0:5){ 
    k=k+1 
    fit <- arima(USDlogreturns, order=c(i,0,j), include.mean=TRUE) 
    if(i>0) M[k,c(1: i) ]=fit$coef[c( 1 : i)] # AR coefficients in the 2nd-6th columns 
    if(j>0) M[k,c(8:(7+j))]=fit$coef[c((i+1):(i+j))] # MA coefficients in the 8th-12th columns 
      M[k,  13 ]=tail(fit$coef,1)   # "intercept" (actually, mean) in the 13th column 
    } 
} 

的列2至6将包含AR系数。
列8到12将包含MA系数。
第13列将包含“拦截”(实际上,手段,因为arima函数中的术语具有误导性)。

+0

是的,我知道内置的术语有时会产生误导。非常感谢你的回答。 – msmna93

+0

我不知道为什么我运行上面的代码,并得到这个错误信息。错误尾(fit @ coef,1): 尝试从一个不是S4对象的对象(类“Arima”)获得插槽“coef” > – msmna93

+0

没问题,我也到了那里。但重新运行新的代码,我得到这个新的错误信息:错误M [k,13] = tail(fit $ coef,1):找不到对象“M” – msmna93