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