zeroinfl"系统在计算上是单数的"而在预测因子中没有相关性

时间:2017-05-23 12:22:58

标签: r regression poisson singular

我试图模拟一年中工人缺勤天数的计数数据(因变量)。我有一套预测因子,包括关于工人的信息,关于他们的工作等等,而且大多数都是分类变量。因此,有大量的系数需要估算(83),但由于我有超过60万行,我认为这不应该是有问题的。 另外,我的数据集中没有遗漏值。

我的因变量包含很多零值,所以我想用zeroinfl包的函数pscl来估计零膨胀模型(泊松或负二项式),代码如下:

zpoisson <- zeroinfl(formule,data=train,dist = "poisson",link="logit")

但是经过很长时间后我得到了以下错误:

Error in solve.default(as.matrix(fit$hessian)) : system is computationally singular: reciprocal condition number = 1.67826e-41

我认为这个错误意味着我的一些协变量是相关的,但在检查成对相关和方差膨胀因子(VIF)时似乎并非如此。此外,我还估计了其他模型,如logit和泊松或负二项计数模型,没有问题,而这些类型的模型也对相关预测变量敏感。

您是否知道为什么zeroinfl功能不起作用?它是否与我有太多预测因素这一事实有关,即使它们没有相关性?我已经尝试使用Boruta算法删除一些预测变量,但它保留了所有预测变量。

提前感谢您的帮助。

1 个答案:

答案 0 :(得分:1)

  1. 回归量之间的共线性是此错误的一个潜在原因。但是,也有其他人。
  2. 问题实际上可能是计算,因为缩放器的缩放是坏的。一些回归量可能采用数千或数百万的值,然后具有微小的系数,而其他回归量采用较小的值并具有较大的系数。然后,这导致数值不稳定的Hessian矩阵和上面的反演误差。典型的原因包括当x本身很大时的平方回归量x ^ 2。简单地取x / 1000左右可能会解决问题。
  3. 问题还可能是响应中的分离缺少变异。例如,如果对于某些组或因子级别,只有零,相应的系数估计可能会发散并且具有巨大的标准误差。与二元回归中的(准)完全分离非常相似。