R 极大似然估计中的误差,即使是在简单的例子中
我试图用最大似然估计(mle)估计一个模型,因此从一个简单的例子开始,也解释了: 不幸的是,即使在复制此代码时,我也总是会遇到错误: optimstart中的错误,f,method=method,hessian=TRUE,…:“vmmin”中的初始值不是有限的 我的代码看起来像R 极大似然估计中的误差,即使是在简单的例子中,r,mle,R,Mle,我试图用最大似然估计(mle)估计一个模型,因此从一个简单的例子开始,也解释了: 不幸的是,即使在复制此代码时,我也总是会遇到错误: optimstart中的错误,f,method=method,hessian=TRUE,…:“vmmin”中的初始值不是有限的 我的代码看起来像 library(stats4) N=100 x <- runif(N) y <- 5 * x + 3 + rnorm(N) LL <- function(beta0, beta1, mu, sigm
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模型中导出了起始值,但稍微向上或向下更改这些值并不能解决错误。
有人知道吗,这里有什么问题吗?您让dnorm返回概率日志,选择log=TRUE,然后再次获取结果日志。这是错误的:要么删除该选项,要么最好在以后删除对日志的调用
最好保留该选项,因为dnorm的值可能非常小,如果它们不适合R使用的浮点数,则四舍五入为零,这将导致log0通常最小正数为2^-1074或4.940656e-324,其log仅为-744.4401。为了说明这一点,您应该写下可能性的对数,简化公式,然后对结果表达式进行编码。这基本上就是log=TRUE选项为您所做的