计算 beta 分布均值的置信区间

机器算法验证 意思是 贝塔分布
2022-01-21 02:35:09

考虑 [0,1] 中给定评级集的 beta 分布。计算平均值后:

μ=αα+β

有没有办法提供围绕这个平均值的置信区间?

2个回答

虽然有计算 beta 分布中参数的置信区间的特定方法,但我将描述一些通用方法,它们可用于(几乎)所有类型的分布,包括 beta 分布,并且在 R 中很容易实现.

轮廓似然置信区间

让我们从具有相应轮廓似然置信区间的最大似然估计开始。首先我们需要一些样本数据:

# Sample size
n = 10

# Parameters of the beta distribution
alpha = 10
beta = 1.4

# Simulate some data
set.seed(1)
x = rbeta(n, alpha, beta)

# Note that the distribution is not symmetrical
curve(dbeta(x,alpha,beta))

beta 分布的概率密度函数。

实际/理论平均值是

> alpha/(alpha+beta)
0.877193

现在我们必须创建一个函数,用于计算来自 beta 分布的样本的负对数似然函数,均值作为参数之一。我们可以使用该dbeta()函数,但由于它不使用涉及均值的参数化,因此我们必须将其参数(αβ)表示为均值和其他一些参数(如标准偏差)的函数:

# Negative log likelihood for the beta distribution
nloglikbeta = function(mu, sig) {
  alpha = mu^2*(1-mu)/sig^2-mu
  beta = alpha*(1/mu-1)
  -sum(dbeta(x, alpha, beta, log=TRUE))
}

要找到最大似然估计,我们可以使用库mle()中的stats4函数:

library(stats4)
est = mle(nloglikbeta, start=list(mu=mean(x), sig=sd(x)))

暂时忽略警告。它们是由优化算法尝试参数的无效值引起的,给α和/或β提供负值(为避免警告,您可以添加lower参数并更改method使用的优化。)

现在我们有两个参数的估计值和置信区间:

> est
Call:
mle(minuslogl = nloglikbeta, start = list(mu = mean(x), sig = sd(x)))

Coefficients:
        mu        sig 
0.87304148 0.07129112

> confint(est)
Profiling...
         2.5 %    97.5 %
mu  0.81336555 0.9120350
sig 0.04679421 0.1276783

请注意,正如预期的那样,置信区间不是对称的:

par(mfrow=c(1,2))
plot(profile(est)) # Profile likelihood plot

Beta 分布的轮廓似然图。

(第二个外部洋红色线显示 95% 置信区间。)

另请注意,即使只有 10 个观察值,我们也能得到非常好的估计(狭窄的置信区间)。

作为 的替代方法mle(),您可以使用包中的fitdistr()函数MASS这也计算了最大似然估计量,并且具有您只需要提供密度而不是负对数似然的优点,但不会为您提供轮廓似然置信区间,只有渐近(对称)置信区间。

一个更好的选择是包中的mle2()(和相关函数)bbmle,它比 更灵活、更强大mle(),并且给出了更好的图。

自举置信区间

另一种选择是使用引导程序。它在 R 中非常容易使用,您甚至不必提供密度函数:

> library(simpleboot)
> x.boot = one.boot(x, mean, R=10^4)
> hist(x.boot)                # Looks good
> boot.ci(x.boot, type="bca") # Confidence interval
BOOTSTRAP CONFIDENCE INTERVAL CALCULATIONS
Based on 10000 bootstrap replicates

CALL : 
boot.ci(boot.out = x.boot, type = "bca")

Intervals : 
Level       BCa          
95%   ( 0.8246,  0.9132 )  
Calculations and Intervals on Original Scale

引导程序具有额外的优势,即使您的数据不是来自 beta 发行版,它也可以工作。

渐近置信区间

对于均值的置信区间,我们不要忘记基于中心极限定理(和t分布)的旧式渐近置信区间。只要我们有较大的样本量(因此适用 CLT 并且样本均值的分布近似正态)或αβ的值都很大(因此 beta 分布本身近似正态),它就可以很好地工作。这里我们都没有,但置信区间仍然不是太差:

> t.test(x)$conf.int
[1] 0.8190565 0.9268349

对于稍微大一点的n值(而不是两个参数的太极端的值),渐近置信区间的效果非常好。

查看 Beta 回归。可以在此处找到有关如何使用R进行此操作的很好的介绍:

http://cran.r-project.org/web/packages/betareg/vignettes/betareg.pdf

构建置信区间的另一种(非常简单)方法是使用非参数自举法。维基百科有很好的信息:

http://en.wikipedia.org/wiki/Bootstrapping_%28statistics%29

这里也有不错的视频:

http://www.youtube.com/watch?v=ZCXg64l9R_4