设置PLM函数的公差以计算R中的随机效应面板分析

时间:2018-10-02 10:02:25

标签: r panel matrix-inverse plm

我正在使用plm中的R软件包对一个18岁,88个人的相对较大的小组进行分析。
在其他分析中,我想计算模型的随机效应估计量,但出现此错误:

 Error in solve.default(crossprod(ZBeta)) : 
 system is computationally singular: reciprocal condition number = 3.27049e-18

现在,我知道这是由于以下事实:计算R将非常小的数字视为零。这使得不可能计算协方差矩阵的逆。在其他packages and functions中,可以设置一个公差值,以防止R将某个数量级近似为零。例如,就我而言,我可以声明tol=1e-19解决我的问题,但是显然plm不接受tol选项。

有人可以建议其他任何命令来为此程序包设置更大的容差吗?

traceback()
6: solve.default(crossprod(ZBeta))
5: solve(crossprod(ZBeta))
4: ercomp.formula(formula, data, effect, method = random.method, 
       models = random.models, dfcor = random.dfcor)
3: ercomp(formula, data, effect, method = random.method, models = random.models, 
       dfcor = random.dfcor)
2: plm.fit(formula, data, model, effect, random.method, random.models, 
       random.dfcor, inst.method)
1: plm(log(tot_events + 1) ~ var_log, data = pdata_ctrls_num, model = "random", 
       na.action = na.omit)

编辑

我终于解决了该问题,将random.method从默认的"swar"更改为"walhus"

也许另一种可能性是调整restrict.matrix选项,以避免数量如此之少,但是我不确定。

这只是一种解决方法,如果可以更改公差设置,我会感到更加高兴。

0 个答案:

没有答案