错误:系统在计算上是奇异的->使用pgmm进行系统GMM回归

时间:2018-08-14 17:03:09

标签: r regression panel gmm

简而言之:我正在尝试通过使用R中的“ pgmm”包进行GMM估算。 这样做的原因是要研究腐败对公共债务的影响。当我尝试对整个事物进行回归时,我得到“系统在计算上是奇异的” 作为错误。

变量:

  

债务<-部门变量(公共债务占GDP的百分比)

     

cpi <-ind。我要调查的变量(腐败感知指数)

     

edu <-工业控制变量(中学入学率)

     

pol <-工业控制变量(政治稳定指数)

     

exp <-ind。控制变量(政府支出)

     

gdp <-ind。控制变量(gdp / cap)

除cpi和pol之外的所有变量都在日志中。

数据包含某个时期内约120个国家/地区的那些指标 在1998年至2016年之间。删除了带有“ NA”的观测值,留下了1232个Obsvations用于回归。

我使用已经存在的纸张作为此模型的方向。作为我的第一个动态面板模型,我对最终回归感到困惑。

本文引用: “差异方程用因变量的滞后水平,两个周期和水平方程滞后一个周期来检测。”

因此,我使用了以下代码(实际上我不是100%知道这是否是作者引述的意思):

gmm <- pgmm(debt ~ lag(debt, 1:2) + cpi +lag(exp,0:1) + lag(pol,0:1) +
   lag(gdp,0:1) +lag(edu, 0:1) | lag(debt,2:99),
   data = data3,   effect = "twoways", model="twosteps")

收到以下错误:

    Error in solve.default(crossprod(WX, t(crossprod(WX, A1)))) : 
  system is computationally singular: reciprocal condition number = 9.6207e-21
In addition: Warning message:
In pgmm(debt ~ lag(debt, 1:2) + cpi + lag(exp, 0:1) + lag(pol, 0:1) +  :
  the first-step matrix is singular, a general inverse is used

我使用搜索功能解决了这个问题,变量之间的高度相关性似乎常常成为障碍。下表列出了变量之间的相关性。

            debt        cpi         edu         gdp         exp         pol
debt  1.00000000 -0.1000317  0.06941532  0.01582022  0.15649933  0.03183785
cpi  -0.10003172  1.0000000 -0.54167403  0.03139960 -0.51025570 -0.78065946
edu   0.06941532 -0.5416740  1.00000000  0.04745409  0.38184303  0.49614498
gdp   0.01582022  0.0313996  0.04745409  1.00000000  0.02357436 -0.09799053
exp   0.15649933 -0.5102557  0.38184303  0.02357436  1.00000000  0.52357420
pol   0.03183785 -0.7806595  0.49614498 -0.09799053  0.52357420  1.00000000

确实有一些较高的值,所以我再次测试了回归分析,但未删除特定变量,但警告仍然出现。

对于这种情况,数据本身就是有问题的,您可以看到csv.file的一些示例行:

"","country","year","debt","cpi","edu","gdp","exp","pol"
"3","Albania","2002",4.16044436392662,7.5,4.29374171980631,7.60190195987517,2.41323161308111,3.21
"4","Albania","2003",4.09767235231478,7.5,4.32585302986794,7.60240133566582,2.38784493694487,3.19
"5","Albania","2004",4.0517849478033,7.5,4.31988523813603,7.60290046220476,2.39607543608138,3.07
"6","Albania","2005",4.06388535473739,7.6,4.36054760299676,7.60339933974067,2.38508631450579,2.99
....
"1388","Yemen","2010",3.74714836223791,7.8,3.7716108517114,7.60589000105312,2.47232786758114,1.08
"1389","Yemen","2011",3.82209829790016,7.92,3.81793208202855,7.60638738977265,2.54944517092557,1.07
"1390","Yemen","2012",3.85651029549789,7.7,3.83449380291891,7.60688453121963,2.67138621673062,1.07
"1391","Yemen","2013",3.87535902105655,8.2,3.88424062441569,7.60738142563979,2.57184857992181,1.13
"1393","Zimbabwe","2012",3.81330703248899,8,3.83773040084629,7.60688453121963,3.17971910966701,2.72
"1394","Zimbabwe","2013",3.87743156065853,7.9,3.85248529271195,7.60738142563979,3.12588295801904,2.83

很抱歉,如果我可能看不到一些严重的错误,但是现在我在这个问题上苦苦挣扎了几天。 GMM对我来说是一个全新的领域,我非常感谢您的帮助:)

沮丧的学生的问候

2 个答案:

答案 0 :(得分:0)

我也多次遇到此问题。尽管我不完全了解GMM及其在plm中的工作原理,但是您可以尝试修改模型的某些方面。可能是一些实质性的事情(您使用的变量,某些相互作用可能产生共线性,然后导致计算失败),但有时对系数的计算方式进行细微改动也很有帮助。

例如,您可以通过在pgmm内将另一个值设置为fsm参数来更改矩阵。但是,您可能应该阅读更多有关您的操作如何影响结果的信息。

答案 1 :(得分:0)

  

您正在使用两种估算器:

  1. 使用时不变变量可以生成奇异矩阵。
  2. 我认为,如果您使用时变变量,则可以大大减少此问题。
相关问题