最大似然的回归模型中的误差

时间:2019-12-04 19:35:44

标签: r regression mle

我正尝试将数据拟合为如下所示的回归模型:y=betaMu+betaA*Xa+betaD*Xd+si,其中si是具有正态分布的误差项。我在下面编写了代码,其中phen[,2]y的数据,data.xa[,1]Xa,而data.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

有人可以帮我解决这个问题吗?

1 个答案:

答案 0 :(得分:1)

您似乎正在计算对数可能性的对数(即,两次对数,大概是偶然的)。如果您的任何概率密度均小于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的值可能会造成混乱(尽管在这种情况下无害)。

相关问题