r语言 - 如何将 glmrob 与 MT 方法一起使用?



这是我的代码,但我有这个错误..

model <- glmrob(x ~ as.factor(i) + as.factor(j), 
family = poisson(link = "log"), data = myData,method="MT")

错误信息:

Error in optim(start, sumaConPesos, method = "L-BFGS-B", x = x, y = y,  : non-finite value supplied by optim

我强烈怀疑这是安德鲁·格尔曼(Andrew Gelman)的统计计算民间定理的一个例子:

当您遇到计算问题时,您的模型通常会出现问题

如果我复制您的示例 100 次,我每次都会收到错误,但不同的错误不同:

library(robustbase)
data("GenInsLong",package="ChainLadder")
names(GenInsLong)[3] <- "claims"
tt <-
replicate(100,
{cat(".")
try(robustbase::glmrob(claims~factor(accyear)+factor(devyear),
family=poisson,method="MT", data=GenInsLong),
silent=TRUE)
})
table(tt)

对于 x 的各种值,给出了 80 个"由 Optim 提供的非有限值"误差实例和 20 个"求解中的错误.default(de/n): Lapack 例程 dgesv: system is 正好是奇异的:U[x,x] = 0"。

我已经在函数中深入研究,在各个级别上使用debug。 问题似乎是初始化过程(glmrobMT -> beta0IniCP -> betaExacto)从等于模型矩阵(19)的列数的数据中随机采样(不替换)行数,并尝试将泊松GLM拟合到其中。 由于数据的结构,这些子样本几乎总是多重共线性的,导致系数中的值NA,这会把事情搞砸。

我不知道如何解决这个问题,但我会问以下一般建模问题:

  • 您确定将具有 19 个参数的模型拟合到具有 55 个观测值的数据集是否有意义? 通常的自由主义经验法则是 N/p> 10,这是 N/p 大约 2 ...
  • 您确定将泊松模型(即使是稳健模型)拟合到平均值约为 250 万的响应中是否有意义? 平均值为 250 万的泊松模型的隐含变异系数为 sqrt(V)/平均值 = 1/sqrt(平均值) = 0.0006。尽管这些是计数,但它们是如此之大,以至于我建议使用基于连续分布的模型......

相关内容

最新更新