R:使用MaxLik()包估计mle时出错

R:使用MaxLik()包估计mle时出错,r,glm,mle,R,Glm,Mle,我的目的是使用Newton-Raphson算法找到最大似然估计量,并将其解与glm()进行比较。所以我尝试在R中使用maxLik(),结果是错误的,我以前没有使用过这个包,请修复这个错误,谢谢 d <- read.delim("http://dnett.github.io/S510/Disease.txt") d$disease=as.factor(d$disease) d$ses=as.factor(d$ses) d$sector=as.factor(d$s

我的目的是使用Newton-Raphson算法找到最大似然估计量,并将其解与glm()进行比较。所以我尝试在R中使用maxLik(),结果是错误的,我以前没有使用过这个包,请修复这个错误,谢谢

d <- read.delim("http://dnett.github.io/S510/Disease.txt")
    
d$disease=as.factor(d$disease)
d$ses=as.factor(d$ses)
d$sector=as.factor(d$sector)
str(d)

y<-as.numeric(as.character(d$disease))
x1<-as.numeric(as.character(d$age))
x2<-as.numeric(as.character(d$sector))
x3<-as.numeric(as.character(d$ses))

oreduced <- glm(disease ~ age + sector, family=binomial(link = logit), data=d)
summary(oreduced)
    
    
nlldbin=function(param){
  eta<-param[1]+param[2]*x1+param[3]*(x2==2)
  p<-1/(1+exp(-eta))
  -sum(y*log(p)+(1-y)*log(1-p),na.rm=TRUE)
}
est_nr<-maxLik(nlldbin,start=c(0.01,0.01,0.01))
summary(est_nr)

我们试图使对数似然最大化,但由于总和为负数,您的函数正在最小化。因此,只需去掉负片,给出:

nlldbin <- function(param){
  eta <- param[1] + param[2]*x1 + param[3]*(x2==2)
  p <- 1/(1+exp(-eta))  
  sum(y*log(p) + (1-y) * log(1-p), na.rm=TRUE)
}

nlldbin
是否有NA?似乎
x3
未使用?您是否浏览了
maxLik()
文档示例,这是否有效?这个例子确实有效,但是当我将这个包应用到模型上时,它就不起作用了。我不明白为什么它不起作用。您的函数在
optim(c(0,0,0),nlldbin)
中工作。我尝试将损失更改为
-sum(dbinom(y,1,p,log=TRUE))
,以防出现稳定性问题,但出现相同的错误…argh从LL中删除负数!我尝试过使用optim软件包,它很有效。但在这种情况下,我想将估计值与maxLik包进行比较,我可以使用newton-raphson算法来找到估计值。你有办法解决这个问题吗?
nlldbin <- function(param){
  eta <- param[1] + param[2]*x1 + param[3]*(x2==2)
  p <- 1/(1+exp(-eta))  
  sum(y*log(p) + (1-y) * log(1-p), na.rm=TRUE)
}
nlldbin2 <- function(param){
  eta <- cbind(1, x1, x2 == 2) %*% param
  p <- plogis(eta)
  sum(dbinom(y, 1, p, log=TRUE))
}