我想基于滚动数据集[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'必须&lt; 'n.used'
有谁可以帮我弄清楚出了什么问题? 非常感谢〜!
(*数据集“Source”是5200 * 4矩阵,实际数据显示在以下链接中: https://docs.google.com/spreadsheets/d/1AnTErQd2jm9ttKDZa7On3DLzEZUWaz5Km3nKaB7K18o/edit#gid=0)
答案 0 :(得分: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