4

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

我的因变量包含很多零值,所以我想用包的功能估计一个零膨胀模型(泊松或负二项式),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 和 Poisson 或负二项式计数模型,没有问题,而这些类型的模型也对相关预测变量敏感。

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

在此先感谢您的帮助。

4

1 回答 1

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