r - 使用最大似然的回归模型中的误差
问题描述
我正在尝试将我的数据拟合到如下回归模型: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,则对数密度将为负数,取对数密度的对数将给出NaN
. 代替
R = suppressWarnings(dnorm(R, mu, sigma, log=TRUE))
-sum(log(R))
, 尝试
LL <- dnorm(R, mu, sigma, log=TRUE)
-sum(LL)
另外:(1)禁止警告是不好的做法,除非您绝对找不到避免它们的方法;(2) 重新分配的值可能会令人困惑R
(尽管在这种情况下是无害的)。
推荐阅读
- java - 为什么 @Required 被 Spring 忽略?
- python - 使用列表理解修改字典列表
- c# - 从 Windows 窗体将值插入 SQL 数据库时出现不正确的语法错误
- wordpress - 如何将隐私政策页面与接受复选框上的标签文本链接?
- reactjs - 使用 AWS Cognito 对用户进行身份验证时出现网络错误
- java - 带有 Jersey 测试和 JAX-RS 的 Mockito - UnsatisfiedDependencyException
- php - 串流 MP3:iOS 2 分钟后重启 HTML5 音频
- docker - Docker:容器内的“网络无法访问”
- java - 用图像作为问题和答案做一个简单的测验
- javascript - 如何正确获取光标坐标?JavaScript