0

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

变量:

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

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

教育 <- 工业。控制变量(中学入学率)

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

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

国内生产总值<-工业。控制变量(gdp/cap)

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

数据包含 1998 年至 2016 年期间大约 120 个国家的这些指标。带有“NA”的观测值被删除,剩下 1232 个观测值用于回归。

我使用现有的论文作为该模型的方向。作为我的第一个动态面板模型,当谈到最终回归时,我有点困惑。

该论文引用:“差分方程用因变量的滞后水平、两个时期和滞后一个时期的差异水平方程来衡量。”

所以我使用了以下代码(我实际上不是 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 对我来说是一个全新的领域,我非常感谢一些帮助 :)

来自沮丧学生的问候

4

2 回答 2

0

我也遇到过很多次这个问题。虽然我不完全了解 GMM 以及它在 plm 中的工作原理,但您可以尝试修改模型的某些方面。它可能是一些实质性的东西(你使用的变量,一些可能产生共线性然后导致计算失败的交互),但有时对系数计算方式的微小改变也有很大帮助。

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

于 2018-11-14T18:45:28.837 回答
0

您正在使用两种方式估计器:

  1. 使用时不变变量可以生成奇异矩阵。
  2. 我认为如果你使用时变变量,这个问题就会大大减少。
于 2018-12-06T21:48:46.117 回答