首页 > 解决方案 > 使用最大似然的回归模型中的误差

问题描述

我正在尝试将我的数据拟合到如下回归模型:y=betaMu+betaA*Xa+betaD*Xd+si其中si是具有正态分布的错误项。我写了下面的代码,phen[,2]数据在哪里ydata.xa[,1]Xadata.xd[,1]Xd

library(stats4)
ll <- function(betaM,betaA,betaD, mu, sigma){
  R= phen[,2]-betaM-betaA*data.xa[,1]-betaD*data.xd[,1]
  R = suppressWarnings(dnorm(R, mu, sigma, log=TRUE))
  -sum(log(R))
}
fit <- mle(ll,start = list(betaM = 1, betaA = 1,betaD=1 ,mu = -1, sigma=1.5))

但我不断收到此错误:

optim(start, f, method = method, hessian = TRUE, ...) 中的错误:“vmmin”中的初始值不是有限的另外:警告消息:在 log(R) 中:产生了 NaN

谁能帮我解决这个问题?

标签: rregressionmle

解决方案


您似乎正在计算对似然的对数(即,两次取对数,可能是偶然的)。如果您的任何概率密度 < 1,则对数密度将为负数,取对数密度的对数将给出NaN. 代替

R = suppressWarnings(dnorm(R, mu, sigma, log=TRUE))
-sum(log(R))

, 尝试

LL <- dnorm(R, mu, sigma, log=TRUE)
-sum(LL)

另外:(1)禁止警告是不好的做法,除非您绝对找不到避免它们的方法;(2) 重新分配的值可能会令人困惑R(尽管在这种情况下是无害的)。


推荐阅读