我需要找到二项式数据向量的最大似然估计。
这样的人:
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)
答案 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)
...