这是我的代码,但我有这个错误..
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
答案 0 :(得分:3)
我强烈怀疑这是Andrew Gelman folk theorem of statistical computing的一个例子:
如果遇到计算问题,通常会出现模型问题
如果我复制你的例子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)
给出80个“由optim提供的非有限值”错误的实例和20个“solve.default中的错误(de / n):Lapack例程dgesv:系统是完全奇异的:U [x,x] = 0“表示各种x值。
我在函数中挖掘,在各个级别上使用debug
。问题似乎是初始化过程(glmrobMT -> beta0IniCP -> betaExacto
)从数据中随机采样(不替换)多个行,等于模型矩阵(19)的列数,并尝试拟合泊松GLM它。由于数据的结构,这些子样本几乎总是多线性的,导致系数中的NA
值,从而使事情变得紧张。
我不知道如何解决这个问题,但我会问以下一般建模问题: