mle估计错误,即使在简单的例子中

Error in mle Estimation, even in simple example

我正在尝试使用 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 模型中导出了起始值,但是稍微向上或向下更改这些值并没有解决错误。 有没有人知道,这里有什么问题?

您使用选项 log = TRUE 告诉 dnorm return 概率的对数,然后再次获取结果的对数。这是错误的:要么删除该选项,要么更好地删除之后对日志的调用。

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