2017-04-01 124 views
0

我想基於滾動數據集[1:2567],[2:2568] ...等,使用GMM估計參數'r'。最後,結果將填入矩陣中。 我已經測試瞭如下的核心代碼,這可以得到有效答案。無法填充結果矩陣

x<-Source[1 : 2567,"AAA"] 
     z<-as.matrix(x) 
     e<-function(r,x){ 
+   m<-exp(-x/r)-1 
+   return(m) 
+  } 

    coef(gmm(e,z,t0=1,method="BFGS",control=1e-12)) 
Theta[1] 
1.096466 



    x<-Source[2 : 2568,"AAA"] 
     z<-as.matrix(x) 
     e<-function(r,x){ 
+   m<-exp(-x/r)-1 
+   return(m) 
+  } 

    coef(gmm(e,z,t0=1,method="BFGS",control=1e-12)) 
Theta[1] 
1.102329 

但是,當我想要使用循環結構時,它會返回一個錯誤消息。

n <- 2 
    result <- matrix(rep(0, n), nrow = n) 
    for(i in c(1 :n)){ 
+  x<-Source[i : i + 2566,"AAA"] 
+  z<-as.matrix(x) 
+  e<-function(r,x){ 
+   m<-exp(-x/r)-1 
+   return(m) 
+  } 
+  
+  result[i,1] <- coef(gmm(e,z,t0=1,method="BFGS",control=1e-12)) 
+ } 

錯誤ar.ols(X,AIC = AIC,order.max = order.max,na.action = na.action,: 'order.max' 必須是<「N。使用」

誰能幫我找出什麼毛病? 非常感謝〜!

(*數據集‘源’是5200 * 4矩陣,與鏈接顯示實際數據如下: https://docs.google.com/spreadsheets/d/1AnTErQd2jm9ttKDZa7On3DLzEZUWaz5Km3nKaB7K18o/edit#gid=0

+2

您的例子是不可重現。 'x <-Source [1:2567,「AAA」]對我們不可用。 –

回答

0

您的錯誤來自語法錯誤。我添加了變量j <- i + 2566。用下面的代碼:

Source <- read.csv(file="source_data.csv", header=TRUE, sep=",") #read csv 
n <- 2 
    result <- matrix(rep(0, n), nrow = n) 
    for(i in c(1:n)){ 
    j <- i + 2566 
    x<-Source[i:j,"AAA"] 
    z<-as.matrix(x) 
    e<-function(r,x){ 
     m<-exp(-x/r)-1 
     return(m) 
    } 
    result[i,1] <- coef(gmm(e,z,t0=1,method="BFGS",control=1e-12)) 
} 
result 

我得到以下輸出:

  [,1] 
[1,] 1.096466 
[2,] 1.102329