【问题标题】:Fail to fill matrix with results无法用结果填充矩阵
【发布时间】:2017-08-26 20:24:06
【问题描述】:

我想根据滚动数据集 [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' 必须是

谁能帮我弄清楚出了什么问题? 非常感谢~!

(*数据集“Source”是一个5200*4的矩阵,实际数据如下链接所示: https://docs.google.com/spreadsheets/d/1AnTErQd2jm9ttKDZa7On3DLzEZUWaz5Km3nKaB7K18o/edit#gid=0)

【问题讨论】:

  • 您的示例不可重现。 x&lt;-Source[1 : 2567,"AAA"] 对我们不可用。

标签: r loops matrix scalar gmm


【解决方案1】:

您的错误来自错误的语法。我添加了变量j &lt;- 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

【讨论】:

    猜你喜欢
    • 2019-06-14
    • 1970-01-01
    • 1970-01-01
    • 2018-09-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-05-06
    • 2020-09-10
    相关资源
    最近更新 更多