使用 `gmm` (GMM 估计) 时出现“系统计算上奇异”的错误。

7

尝试使用R中的GMM软件包来估计线性模型的参数(a-f):

LEV1 = a*Macro + b*Firm + c*Sector + d*qtr + e*fqtr + f*tax

Macro、Firm和Sector都是具有n行的矩阵。qtr、fqtr和tax是具有n个成员的向量。

我有一个名为unconstrd的大型数据框,其中包含所有数据。首先,我将该数据分成单独的矩阵:

v_LEV1 <- as.matrix(unconstrd$LEV1)
Macro <- as.matrix(cbind(unconstrd$Agg_Corp_Prof,unconstrd$R1000_TR, unconstrd$CP_Spread))
Firm <- as.matrix(cbind(unconstrd$ppe_ratio, unconstrd$op_inc_ratio_avg, unconstrd$selling_exp_avg,
                  unconstrd$tax_avg, unconstrd$Mark_to_Bk, unconstrd$mc_ratio))
Sector <- as.matrix(cbind(unconstrd$Sect_Flag03,
                  unconstrd$Sect_Flag04, unconstrd$Sect_Flag05, unconstrd$Sect_Flag06,
                  unconstrd$Sect_Flag07, unconstrd$Sect_Flag08, unconstrd$Sect_Flag12,
                  unconstrd$Sect_Flag13, unconstrd$Sect_Flag14, unconstrd$Sect_Flag15,
                  unconstrd$Sect_Flag17))
v_qtr <- as.matrix(unconstrd$qtr)
v_fqtr <- as.matrix(unconstrd$fqtr)
v_tax <- as.matrix(unconstrd$tax_dummy)

然后,我将 gmm 调用的 x 变量的数据绑定在一起:
h=cbind(Macro,Firm,Sector,v_qtr, v_fqtr, v_tax)

然后,我调用了gmm:
gmm1 <- gmm(v_LEV1 ~ Macro + Firm + Sector + v_qtr + v_fqtr + v_tax, x=h)

我收到了这个消息:
Error in solve.default(crossprod(hm, xm), crossprod(hm, ym)) : 
  system is computationally singular: reciprocal condition number = 1.10214e-18

我提前道歉并承认我是R语言的新手,以前从未使用过GMM。 GMM函数非常通用,我已经查看了网上可用的示例,但没有什么特别的东西可以帮助我的情况。

2个回答

7

您试图适应一个没有完整排名的矩阵——尝试排除一些变量和/或寻找错误。如果没有您的数据或至少样本,我们无法再说更多。

这更像是一个建模问题,而不是一个编程问题,可以在Crossvalidated.com上提问。


1
让我非常明确:在你所有的回归器中,一个或多个是其他列的线性组合,这意味着秩不足。 - Dirk Eddelbuettel
这正是错误信息告诉你的。可能是由于GMM中的瞬时条件导致了这种情况。再次强调,没有您的数据,我们无法确定。但是错误提示您无法拟合您要拟合的内容。 - Dirk Eddelbuettel
想想看,季度和财务季度变量可能是彼此的线性组合。 - eqsf
ppe_ratio 4.237e-01 1.080e-02 39.225 < 2e-16 *** op_inc_ratio_avg -2.050e-01 1.368e-02 -14.991 < 2e-16 *** selling_exp_avg -2.624e-02 4.143e-03 -6.334 2.48e-10 *** tax_avg -2.866e+00 2.156e-01 -13.292 < 2e-16 *** Mark_to_Bk 1.627e-09 2.275e-10 7.152 9.12e-13 *** mc_ratio -6.410e-03 1.087e-03 -5.897 3.82e-09 *** - eqsf
抱歉,评论文本编辑器不是很好。我的观点是,根据lm模型,这些宏变量和公司变量都是显著的。 - eqsf
显示剩余8条评论

3

我很确定我的变量之间没有线性依赖关系,但我还是一个接一个地添加了变量来查看导致错误的原因。最终,我请同事用SAS运行GMM,它完美地运行,没有错误信息。我不确定R版本的问题出在哪里,但现在我有了一个解决方案,并放弃了在R上使用GMM。

感谢所有试图帮助我的人。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接