R中的不可逆性Mhurdle包

Non-invertability Mhurdle package in R

对于一个项目,我正在分析角点解为 0 的数据。在我的支配下,我有一个响应 y 和大约 20 个自变量。为了对此类数据建模,我想使用删失回归模型,包括:Tobit、Truncated Normal Hurdle/Cragg 和 Tobit Type II。所有这些都可以使用 R 中的 'mhurdle' 包轻松实现。

但是,为了实施截断法线 Hurdle/Cragg 模型,我注意到发生了一件奇怪的事情。具体来说,当好的选择和缺乏资源机制的规范变得更加相似时,我开始 运行 进入错误:

 system is computationally singular: reciprocal condition number = 1.13973e-18

因此,例如,以下规范运行良好

  model_good <- mhurdle(y ~ x1 + x2 + ... + x20| x1 + x2 |, 0, data = X, dist = "n")

虽然在第二部分(良好选择)中包含来自第一部分(期望消费)的更多预测变量的规范遇到了麻烦:

  model_error <- mhurdle(y ~ x1 + x2 + ... + x20| x1 + x2 + ... x15 |, 0, data = X, dist = "n")

我检查了数据的可逆性,这似乎不是问题所在。 None 我使用的 20 个特征之间的成对相关性超过 0.15,并且矩阵 (X'X) 具有满秩。

现在我想知道,当两个部分的规范变得与模型工作方式固有的相似时,模型是否会抛出错误,或者这是一个包错误?

编辑:

我在估算文档中提供的示例 (http://citeseerx.ist.psu.edu/viewdoc/download?doi=10.1.1.204.8204&rep=rep1&type=pdf) 时也 运行 遇到问题,例如:

  model12i <- mhurdle(durable ~ age + quant | age + quant | age + quant, tobin, dist = "n", method = "bfgs")

还给出了一个奇点问题:

  Lapack routine dgesv: system is exactly singular: U[1,1] = 0

我遇到的问题似乎是由于我的数据结构方式造成的。具体而言,一些协变量是取值区间 (-1, 1) 的比率,而其他协变量是其域范围为 (-1e+10, 1e+10) 的会计变量。不知何故,该软件包无法处理域中的巨大差异。因此我采取了两个步骤:

  • 将所有会计变量除以 10.000
  • 移除异常值

执行这些步骤后,库按预期执行。