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

时间:2018-12-04 23:02:21

标签: r economics

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

这样的人:

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)

1 个答案:

答案 0 :(得分:2)

这里有几个问题。

  • 似乎缺少负号(默认情况下{optim() 最小化,除非您设置控制参数fnscale=-1,所以您需要定义一个负数对数似然函数)
  • size参数必须为整数
  • 从数据中估计size参数是不寻常的,并且在技术上具有挑战性(如果您想了解该技术,通常可以使用 N-mixture模型来完成:例如,参见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)

有很多理由很难做到这一点(从数量上);如果您确实只需要查找单个二项式样本x的概率的MLE(s试验中具有相同成功概率的独立观测值),则解析解为sum(x)/sum(s) ...