ベータ分布の平均の信頼区間を計算します


12

[0,1]の所定の評価セットのベータ分布を考えます。平均を計算した後:

μ=αα+β

この平均の周りに信頼区間を提供する方法はありますか?


1
ドミニク- 人口平均を定義しました。信頼区間は、その平均の推定値に基づいています。どのサンプル統計を使用していますか?
Glen_b-モニカの復職14

Glen_b-こんにちは、間隔[0,1]で(製品の)正規化された評価のセットを使用しています。私が探しているのは、平均の周りの間隔の推定です(与えられた信頼レベルに対して)。例えば:平均+
-0.02

2
ドミニク:もう一度試してみましょう。人口の平均がわかりません。推定値を間隔の中央に配置する場合(コメントのように、推定値 半値幅)、中間に間隔を置くために、その量の推定値が中間の順序で必要になります。そのために何を使用していますか?最尤法?瞬間の方法?他に何か?±
-Glen_b-モニカの復活14

Glen_b-しばらくお待ちください。MLEを使用します
ドミニク、14年

2
ドミニク; その場合、が大きい場合、最尤推定量の漸近特性を使用します。μのML推定値は、平均μフィッシャー情報から計算できる標準誤差で漸近的に正規分布します。小さなサンプルでは、​​MLEの分布を計算できる場合があります(ベータ版の場合は難しいことを思い出すようです)。別の方法は、サンプルサイズで分布をシミュレートして、そこでの動作を理解することです。nμμ
グレン_b-モニカの復帰14

回答:


22

ベータ分布のパラメーターの信頼区間を計算する特定の方法がありますが、ベータ分布を含む(ほぼ)あらゆる種類の分布に使用でき、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))

ベータ分布の確率密度関数。

実/理論平均は

> alpha/(alpha+beta)
0.877193

次に、平均をパラメーターの1つとして、ベータ分布からサンプルの負の対数尤度関数を計算する関数を作成する必要があります。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使用する最適化を変更できます。)

これで、2つのパラメーターの推定値と信頼区間の両方が得られました。

> 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

ベータ分布のプロファイル尤度プロット。

(2番目の外側のマゼンタの線は、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

ブートストラップには、データがベータ版からのものではない場合でも機能するという追加の利点があります。

漸近信頼区間

平均の信頼区間については、中心極限定理(およびt分布)に基づいた古き良き漸近信頼区間を忘れないでください。サンプルサイズが大きい(CLTが適用され、サンプル平均の分布がほぼ正規である)か、αβの両方の値が大きい(ベータ分布自体がほぼ正規である)限り、うまく機能します。ここではどちらもありませんが、信頼区間はそれほど悪くありません。

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

nのわずかに大きい値(2つのパラメーターの極端な値ではない)の場合、漸近信頼区間は非常にうまく機能します。


ありがとう、カール。簡単な質問:アルファとベータをどのように決定しましたか?分散とサンプル平均を使用してアルファとベータを取得しましたが、サンプル平均を母平均と混同した可能性があるため、正しい方法で行ったかどうかはわかりません...上記のGlen_bのコメントを参照してください。
ドミニク14年

αβを平均と標準偏差の関数として決定するために、平均と標準偏差の関数をαβの関数として反転しました(ただし、ネットで調べることもできます)。
カールオベハフハンマー14年

αβ

0

ベータ回帰をご覧ください。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

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.