计算贝塔分布平均值的置信区间


12

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

μ=αα+β

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


1
多米尼克-您已定义了总体均值。置信区间将基于对该平均值的一些估计。您正在使用什么样本统计数据?
Glen_b-恢复莫妮卡2014年

Glen_b-嗨,我正在使用[0,1]间隔中的一组(产品的)标准化评级。我正在寻找的是对均值(对于给定的置信度)的时间间隔的估计,例如:均值+-0.02
dominic 2014年

2
多米尼克:让我再试一次。您不知道人口平均数。如果您希望估算值位于间隔的中间(如注释中所示,估算值为 half-width),则需要以中间顺序对该数量进行某种估算,以在其周围放置一个间隔。那是用来做什么的 最大似然?瞬间的方法?还有什么吗 ±
Glen_b-恢复莫妮卡2014年

Glen_b-感谢您的耐心配合。我将使用MLE
2014年

2
统治 在那种情况下,对于较大的将使用最大似然估计器的渐近性质;的ML估计将渐近正态分布,均值和标准误差可以从Fisher信息中计算出。在小样本中,有时可以计算出MLE的分布(尽管在beta的情况下,我似乎还记得很难)。另一种方法是模拟样本大小的分布,以了解其行为。μ μnμμ
Glen_b-恢复莫妮卡2014年

Answers:


22

虽然有一些特定的方法可以计算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并且样本均值的分布近似正态)或αβ的值都大(因此β分布本身近似于正态),就可以很好地工作。这里我们都没有,但是置信区间还算不错:

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

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


谢谢卡尔。快速问题:您如何确定Alpha和Beta?我使用方差和样本均值来获取alpha和beta,但我想我可能会将样本均值与总体均值混淆了,所以我不确定我是否采用了正确的方法...请参见上文Glen_b的评论。
多米尼克2014年

为了确定αβ的平均值和标准偏差的功能,我只是倒了功能的平均值和标准偏差为函数αβ(但我敢肯定,你也可以看看它在网络上)。
2014年

+1卡尔。给定,β分布的均值和方差,我有一个类似的问题,是否有一种方法可以估计均值的置信区间。例如,在正态分布中,我们可以轻松地做到这一点,但我不知道您如何进行此beta分布。我提出了一个问题,但它被标记为重复。α,β
天气预报员

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.