【发布时间】:2021-06-28 14:09:49
【问题描述】:
我在R写了如下模型:
model1_b <- glm(bupacts ~ sex + couples + women_alone, data = risky, family = poisson(link="log"))
我想使用optim 查找此模型的系数估计值。也就是说,我想达到上述模型产生的系数与使用optim 产生的系数相匹配的程度。下面是似然函数的代码:
log.like <- function(par) {
xb <- par[1] + par[2] * risky$sex + par[3] * risky$couples + par[4] * risky$women_alone
lambda <- exp(xb)
ll <- sum(log(exp(-lambda) * (lambda ^ risky$bupacts) / factorial(risky$bupacts)))
return(-ll)}
result <- optim(c(0, 0, 0, 0), log.like, hessian = TRUE, method = "BFGS")
我不断收到错误消息:initial value in 'vmmin' is not finite。有人可以帮我吗?我不确定发生了什么。
【问题讨论】:
-
这是一个很好的问题,但是我们可以请minimal reproducible example吗?您是否反对使用
dpois()而不是您的手动泊松对数似然? -
我对此没有异议。
dpois()的函数会是什么样子? -
您可以用
ll <- sum(dpois(risky$bupacts, lambda, log=TRUE))替换您的ll行。 (它可能解决你的问题,因为你不会在对数转换之前计算可能性......)我们仍然想要一个可重现的例子来诊断你的起始值问题......跨度> -
谢谢——感谢您的帮助。我会试试这个。澄清一下,我发布的内容如何不是可重复的示例?我查看了您共享的链接,但我不清楚我还应该添加什么。
-
我们没有您的数据 (
risky)。您可以发布您的数据(或仍然会产生问题的数据子集),或者尝试找到同样复制问题的内置或模拟数据集。 stackoverflow.com/questions/5963269/… 是关于可重复性的规范 R 特定 Q ...
标签: r glm log-likelihood