[英]Maximum likelihood estimation works with beta-binomial distribution but fails with beta distribution on same dataset
我有一个棒球统计数据集。 at-bats
有1列, hits
有1列。
我的目标是使用mle
方法(最大似然估计)来计算beta分布的alpha
和beta
参数。
mlf1 = function (alpha, beta) {
-sum(dbetabinom.ab(data$hits, data$atbats, alpha, beta, log=T))
}
mlf2 = function (alpha, beta) {
-sum(dbeta(data$hits/data$atbats, alpha, beta, log=T))
}
因此, mlfX
是用于计算负对数可能性的函数。 mlf1
使用beta二项式分布,这意味着您需要传递成功( data$hits
)和总观测值( data$atbat
)进行计算。 mlf2
使用纯 beta分布,它按上述列的比例运行。 它们基本上应该产生相同的结果。
我可以执行以下操作而不会出现问题:
mle(mlf1, start=list(alpha=1, beta=10) method="L-BFGS-B")
它产生alpha
〜74和beta
〜222
如果我使用第二个负对数可能性方法执行mle
:
mle(mlf2, start=list(alpha=1, beta=10) method="L-BFGS-B")
它给了我这个:
Error in optim(start, f, method = method, hessian = TRUE, ...) :
L-BFGS-B needs finite values of 'fn'
如果我修改mlf2
来过滤掉30个以上at-bats
它将开始起作用。
mlf2modified = function (alpha, beta) {
data = filter(data, atbats > 30)
-sum(dbeta(data$hits/data$atbats, alpha, beta, log=T))
}
我的问题是,为什么这两种基本相同的方法会使优化器的行为完全不同? 如果您只有比例并且不希望由于优化程序起作用而浪费数据点,该怎么办才能避免这种情况?
更新:
dbetabinom.ab
来自VGAM
包, mle
来自stats4
, dbeta
来自stats
正如其他人所述,您正在比较两种不同的方法来估计费率。 当直接在y / n上使用beta分布时,您将每种汇率都视为提供了与其他汇率一样多的信息。 当您使用beta二项式时,您同时使用y和n的信息,即2中的1提供的有关基础利率等于50%的信息少于200中的100。
估计速率的最简单方法是使用二项式分布,但是由于您是贝叶斯分布,或者因为您认为观测值比二项式具有更大的方差(证明对色散参数的额外使用是合理的),最终与β-二项分布。 因此,如果n不都相等,那么得到不同的结果也就不足为奇了。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.