Zeroinfl“系统在计算上是奇异的”,而预测变量没有相关性

Rco*_*fee 5 regression r poisson singular

我正在尝试对一年中工人缺勤天数的计数数据(因变量)进行建模。我有一组预测变量,包括有关工人、有关他们的工作等的信息,其中大多数是分类变量。因此,需要估计大量系数 (83),但由于我有超过 600 000 行,我认为这应该不会有问题。此外,我的数据集中没有缺失值。

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

zpoisson <- zeroinfl(formule,data=train,dist = "poisson",link="logit")
Run Code Online (Sandbox Code Playgroud)

但长时间运行后出现以下错误:

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

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

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

在此先感谢您的帮助。

Ach*_*eis 3

  1. 回归量之间的共线性是导致此错误的一个潜在原因。然而,还有其他一些。
  2. 这个问题实际上可能是在计算上的,因为回归量的缩放很糟糕。某些回归器可能采用数千或数百万的值,然后具有很小的系数,而其他回归器则采用较小的值并具有巨大的系数。这会导致数值不稳定的 Hessian 矩阵以及上述反演时的错误。典型的原因包括当 x 本身已经很大时,平方回归量 x^2 。只需取 x/1000 左右即可解决问题。
  3. 问题也可能是响应中的分离缺乏变化。例如,如果对于某些组或因子水平,只有零,则相应的系数估计可能会发散并具有巨大的标准误差。很像二元回归中的(准)完全分离。