Beta dağılımının ortalaması için güven aralığını hesaplama


12

[0,1] 'de verilen bir derecelendirme seti için bir beta dağılımı düşünün. Ortalamayı hesapladıktan sonra:

μ=αα+β

Bu ortalama etrafında güven aralığı sağlamanın bir yolu var mı?


1
dominik - nüfus ortalamasını tanımladınız . Güven aralığı, bu ortalamanın bazı tahminlerine dayanacaktır. Hangi örnek istatistiği kullanıyorsunuz?
Glen_b - Monica'yı

Glen_b - Merhaba, [0,1] aralığında bir dizi normalleştirilmiş derecelendirme (bir ürünün) kullanıyorum. Aradığım şey, ortalama (belirli bir güven düzeyi için) etrafında bir aralık tahmini, örneğin: ortalama + - 0.02
dominik

2
dominic: Tekrar deneyeyim. Nüfusun ne demek olduğunu bilmiyorsun . Bir tahminin aralığınızın ortasında oturmasını istiyorsanız ( yorumunuzda olduğu gibi, tahmin yarım genişlik ), aralarına bir aralık yerleştirmek için orta sırada bu miktar için bir tahminciye ihtiyacınız olacaktır. Bunun için ne kullanıyorsun? Maksimum olasılık? Anlar yöntemi? başka bir şey? ±
Glen_b

Glen_b - sabrınız için teşekkürler. MLE'yi kullanacağım
dominic

2
Dominic'i; bu durumda, büyük için maksimum olabilirlik tahmin edicilerinin asimtotik özellikleri kullanılır; ML tahmini asimptotik normal ortalama ile dağıtılacak ve Fisher Bilgi hesaplanabilir standart hata . Küçük örneklerde bazen MLE'nin dağılımını hesaplayabiliriz (beta durumunda bunun zor olduğunu hatırlıyorum); bir alternatif, oradaki davranışını anlamak için örneklem boyutunuzdaki dağılımı simüle etmektir. μ μnμμ
Glen_b -Mons Monica

Yanıtlar:


22

Bir beta dağılımındaki parametreler için güven aralıklarını hesaplamak için belirli yöntemler olsa da, beta dağıtımı da dahil olmak üzere her türlü dağıtım için (neredeyse) kullanılabilen ve R'de kolayca uygulanabilen birkaç genel yöntemi açıklayacağım. .

Profil olabilirlik güven aralıkları

Karşılık gelen profil olabilirlik güven aralıklarıyla maksimum olabilirlik tahmini ile başlayalım. İlk önce bazı örnek verilere ihtiyacımız var:

# 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 dağılımı için olasılık yoğunluk fonksiyonu.

Gerçek / teorik ortalama

> alpha/(alpha+beta)
0.877193

Şimdi beta dağılımından bir örnek için negatif log olabilirlik fonksiyonunu hesaplamak için, parametrelerden biri olarak ortalama bir fonksiyon yaratmalıyız. Bu dbeta()işlevi kullanabiliriz , ancak bu, ortalamayı içeren bir parametreleme kullanmadığından, parametrelerini ( α ve β ) ortalamanın ve diğer bazı parametrelerin (standart sapma gibi) bir işlevi olarak ifade etmeliyiz :

# 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))
}

Maksimum olabilirlik tahminini bulmak mle()için stats4kütüphanedeki işlevi kullanabiliriz :

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

Şimdilik uyarıları dikkate almayın. Bunlara parametreler için geçersiz değerler deneyen ve α ve / veya β için negatif değerler veren optimizasyon algoritmaları neden olur . (Uyarıyı önlemek için bir lowerargüman ekleyebilir ve methodkullanılan optimizasyonu değiştirebilirsiniz .)

Şimdi iki parametremiz için hem tahminler hem de güven aralıklarımız var:

> 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

Beklendiği gibi, güven aralıklarının simetrik olmadığını unutmayın :

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

Beta dağılımı için profil olasılık grafiği.

(İkinci dış macenta çizgileri% 95 güven aralığını gösterir.)

Ayrıca, sadece 10 gözlemle bile, çok iyi tahminler aldığımızı unutmayın (dar bir güven aralığı).

Alternatif olarak mle(), fitdistr()işlevi MASSpaketten kullanabilirsiniz. Bu da maksimum olabilirlik tahmin edicisini hesaplar ve negatif günlük olasılığını değil, yalnızca yoğunluğu sağlamanız gereken avantaja sahiptir, ancak profil olabilirlik güven aralıkları vermez, yalnızca asimptotik (simetrik) güven aralıkları verir.

Paketten daha iyi bir seçenek mle2()(ve ilgili işlevler) bbmle, bu da biraz daha esnek ve güçlü mle()ve biraz daha güzel grafikler veriyor.

Bootstrap güven aralıkları

Başka bir seçenek de bootstrap kullanmaktır. R'de kullanımı son derece kolaydır ve yoğunluk fonksiyonu bile sağlamanız gerekmez:

> 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

Bootstrap'in, verileriniz bir beta dağıtımından gelmese bile çalışmasının ek avantajı vardır.

Asimptotik güven aralıkları

Ortalama güven aralıkları için, merkezi limit teoremine (ve t- dağılımına) dayanan eski iyi asimptotik güven aralıklarını unutmayalım . (MLT uygular ve örnek ortalaması dağılımının yaklaşık olarak normal yani) ya da her ikisinin büyük değerleri sürece Elimizdeki olarak ya büyük numune boyutu a ve p (böylece beta dağılımı kendisi yaklaşık olarak normal olduğu), iyi çalışır. Burada ikimiz de yok, ama güven aralığı hala çok kötü değil:

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

N'nin biraz büyük değerleri için (ve iki parametrenin çok aşırı değerleri değil), asimptotik güven aralığı son derece iyi çalışır.


Teşekkürler Karl. Kısa soru: Alfa ve beta sürümünüzü nasıl belirlediniz? Alfa ve beta almak için varyansı ve örnek ortalaması kullandım, ancak örnek ortalamayı popülasyon ortalaması ile karıştırmış olabileceğimi düşünüyorum, bu yüzden doğru şekilde gittiğime emin değilim ... Glen_b'in yukarıdaki açıklamasına bakın .
dominik

Belirlemek için a ve p ortalama ve standart sapma fonksiyonları olarak, sadece fonksiyonları olarak ortalama ve standart sapmalar için fonksiyonları ters a'dan ve p (ama emin de net açın bakın değilim).
Karl Ove Hufthammer

α,β

0

Beta regresyonuna göz atın. R kullanarak nasıl yapılacağı hakkında iyi bir giriş burada bulunabilir:

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

Güven aralığı oluşturmanın bir başka (gerçekten kolay) yolu parametrik olmayan bir boostrap yaklaşımı kullanmaktır. Wikipedia iyi bir bilgiye sahiptir:

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

Ayrıca burada güzel video:

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

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.