通过抽样直到 10 次失败来估计伯努利过程中的概率:它有偏差吗?

机器算法验证 估计 伯努利分布
2022-01-22 02:09:12

假设我们有一个具有失败概率的伯努利过程q(这会很小,比如说,q0.01) 我们从中采样直到遇到10失败。因此,我们估计失败的概率为q^:=10/N在哪里N是样本数。

问题:是q^估计q? 如果是这样,有没有办法纠正它?

我担心坚持最后一个样本是失败的,这会使估计产生偏差。

3个回答

的确如此q^是有偏估计q在某种意义上说E(q^)q,但你不应该让这阻止你。这个确切的场景可以用来批评我们应该始终使用无偏估计器的想法,因为这里的偏差更多是我们碰巧正在做的特定实验的产物。如果我们提前选择了样本数量,数据看起来与它们完全一样,那么为什么我们的推论会改变呢?

有趣的是,如果您以这种方式收集数据,然后写下二项式(固定样本量)和负二项式模型下的似然函数,您会发现两者成正比。这意味着q^只是负二项模型下的普通最大似然估计,当然是完全合理的估计。

并不是坚持最后一个样本是失败的,这会使估计有偏差,它取的是N

所以 E[N10]=1q在你的例子中,但是 E[10N]q. 这接近于比较算术平均值和调和平均值

坏消息是偏差会随着q变小了,虽然不是很多q已经很小了。好消息是,随着所需失败次数的增加,偏差会减少。看来如果你需要f失败,则偏差由上面的乘法因子限定ff1对于小q; 当您在第一次失败后停止时,您不想要这种方法

停止后10失败,与q=0.01你会得到E[N10]=100E[10N]0.011097,而与q=0.001你会得到E[N10]=1000E[10N]0.001111. 偏差大约为109乘法因子

作为 dsaxton 回答的补充,这里有一些 R 中的模拟,显示了q^什么时候k=10q0=0.02

n_replications <- 10000
k <- 10
failure_prob <- 0.02
n_trials <- k + rnbinom(n_replications, size=k, prob=failure_prob)
all(n_trials >= k)  # Sanity check, cannot have 10 failures in < 10 trials

estimated_failure_probability <- k / n_trials
histogram_breaks <- seq(0, max(estimated_failure_probability) + 0.001, 0.001)
## png("estimated_failure_probability.png")
hist(estimated_failure_probability, breaks=histogram_breaks)
abline(v=failure_prob, col="red", lty=2, lwd=2)  # True failure probability in red
## dev.off()

mean(estimated_failure_probability)  # Around 0.022
sd(estimated_failure_probability)
t.test(x=estimated_failure_probability, mu=failure_prob)  # Interval around [0.0220, 0.0223]

看起来像E[q^]0.022,这是相对于可变性的相当小的偏差q^.

q_hat 的直方图