即使在简单的示例中,mle估计也会出错

时间:2019-08-28 10:31:12

标签: r mle

我试图用mle估计模型,因此从一个简单的示例开始,对此也进行了here的解释:

不幸的是,即使重现此代码,我也总是会收到错误消息: Error in optim(start, f, method = method, hessian = TRUE, ...) : initial value in 'vmmin' is not finite

我的代码如下

library(stats4)

N=100
x <- runif(N)
y <- 5 * x + 3 + rnorm(N)

LL <- function(beta0, beta1, mu, sigma) {
  R = y - x * beta1 - beta0
  R = dnorm(R, mu, sigma, log = TRUE)
  -sum(log(R))
}
fit <- mle(LL, start = list(beta0 = 5.9, beta1 = 2.8, sigma=1), fixed = list(mu=0))
fit

我从线性ols模型中得出了起始值,但是将它们向上或向下更改一点都不能解决错误。 有人有想法吗,这是怎么了?

1 个答案:

答案 0 :(得分:1)

您告诉dnorm使用选项log = TRUE返回概率的对数,然后再次获取结果的对数。错了:要么删除该选项,要么更好的是,删除以后的日志记录调用。

最好保留该选项,因为dnorm的值可能非常小,如果它们不适合R使用的浮点数,则四舍五入为零,这将导致log(0)(通常是最小值正数是2 ^ -1074或4.940656e-324,其日志为“仅” -744.4401)。为了解决这个问题,您应该写下可能性的对数,简化公式,然后对结果表达式进行编码。这基本上就是选项log = TRUE为您所做的。