我正在估计一个简单的CCAPM模型的参数,这是代码:
window.variableName = window.variableName || {};
指令变量是所有资产收益的n = 1,2,4,6滞后项。在数据中,我有17种资产,所以有4 * 17 * 17时刻条件。
运行代码时,出现错误:
library(gmm)
inst=c(1,2,4,6); #instruction variables set;
price<-read.table("return.txt",head=FALSE); #get price;
consumption<-t(read.table("consumption.txt",head=FALSE)); #get
consumption;
j=ncol(price); #number of asset;
T=nrow(price); #number of observation;
r<-price[2:T,]/price[1:T-1,]; #get return;
c<-consumption[2:T,]/consumption[1:T-1,]; #get ct+1/ct;
g<-function(parm,data0){
g1=vector()
d=parm[1]*data0[,1]^(-parm[2])*data0[,2:(j+1)]-1
for (i in 1:j){
g1<-cbind(g1,d[,i]*data0[,(j+2):((length(inst)+1)*j+1)]);
}
return(g1)
}
ma=max(inst);
x0=cbind(c[-(1:ma)],r[(ma+1):(T-1),]);
for (i in inst){
x0=cbind(x0,r[(ma-i+1):(T-1-i),])
}
data0=as.matrix(x0);
res<-gmm(g,x=data0,c(0.9,0.1))
在网站上搜索问题后,我仍然不知道我的代码有什么问题。我认为这可能是因为我的矩矩阵是奇异的,但是在更改滞后项后,错误仍然存在。
这是数据文件。 consumption.txt和return.txt