二项式数据的最大似然估计

Maximum Likelihood Estimate for Binomial Data

我需要找到二项式数据向量的最大似然估计。

像这样的一个:

binvec <- rbinom(1000, 1, 0.5)

我尝试先创建函数,然后使用 optim() 对其进行优化。

llbinom <- function(theta, x) {return(sum(dbinom(x=x,
               size = theta[1],
               prob = theta[2],log=TRUE)))}
mybin <- optim(c(0.5,0.5),fn=llbinom,x=binvec)
mybin

我确实得到了一些结果,但也得到了 NaN 正在生成的错误消息,并且无法在初始参数下评估该函数。我从一个适用于正态分布数据的示例构建它,并且相信我在转换它时犯了一个错误。

这里是我得到的原码:

ll <- function(theta,x) {return(-sum(dnorm(x=x,
   mean=theta[1],sd=theta[2],log=TRUE)))}
mle <- optim(c(5,3),fn=ll,x=binvec)

这里有几个问题。

  • 你好像少了一个负号(optim() 默认最小化,除非你设置控制参数fnscale=-1,所以你需要定义负数对数似然函数)
  • size参数必须是整数
  • 从数据中估计 size 参数是不寻常的,而且在技术上具有挑战性(这通常使用 N 混合模型 完成,如果您想阅读掌握技术:例如,参见 unmarked 包);通常假定试验次数已知。所以我会尝试
llbinom <- function(theta, x) {return(
   -sum(dbinom(x=x,
               size = 1,
               prob = theta[1],log=TRUE)))}
mybin <- optim(c(0.5),fn=llbinom,x=binvec)

有很多理由以困难的方式(从数字上)做到这一点;如果您真的只需要找到单个二项式样本概率的 MLE x(在 s 次试验中具有相同成功概率的独立观察),解析解是 sum(x)/sum(s) ...