Beta dağılımı parametrelerinin ortalama ve varyans kullanılarak hesaplanması


66

Dağılımın olmasını istediğim ortalama ve varyansı biliyorsanız, bir Beta dağılımı için ve β parametrelerini nasıl hesaplayabilirim ? Bunu yapmak için bir R komutu örnekleri en yararlı olacaktır.αβ


4
Not betareg R paket ortalama ile (Alternatif bir parametrelendirmesini kullanır , ve hassas, φ = α + β --ve dolayısıyla varyans μ ( 1 - μ ) / ( 1 + calcu ) ) bu hesaplamalara olan ihtiyacı ortadan kaldırır. μ=α/α+βϕ=α+βμ(1−μ)/(1+ϕ)
— gung - Reinstate Monica

Yanıtlar:


90

Μ = α ayarını yaptım veσ2=αβ

μ=αα+β
ve için çözülmüştüravep. Sonuçlarıma göreα=(1-μ
σ2=αβ(α+β)2(α+β+1)
αβveβ=α(1
α=(1−μσ2−1μ)μ2
β=α(1μ−1)

Beta dağılımının parametrelerini belirli bir ortalama, mu ve varyanstan tahmin etmek için bazı R kodları yazdım: var:

estBetaParams <- function(mu, var) {
  alpha <- ((1 - mu) / var - 1 / mu) * mu ^ 2
  beta <- alpha * (1 / mu - 1)
  return(params = list(alpha = alpha, beta = beta))
}

μσ2

  1. μ=αα+β∈(0,1)
  2. σ2=αβ(α+β)2(α+β+1)=μ(1−μ)α+β+1<μ(1−μ)1=μ(1−μ)∈(0,0.52)

2
@stan Bu size verilerinizle aynı ortalama ve varyansa sahip Beta dağılımını verecektir. Dağıtımın verilere ne kadar iyi uyduğunu size göstermeyecektir. Kolmogorov-Smirnov Testini deneyin .
— normalde

4
İle bu işlevini çağırdığınızda estBetaParams(0.06657, 0.1)alıyorum alpha=-0.025, beta=-0.35. Bu nasıl mümkün olabilir?
— Amelio Vazquez-Reina,

1
Bu hesaplamalar yalnızca varyans ortalamanın altındaysa * (1-ortalama) çalışacaktır.
— danno

2
σ2≤μ(1−μ)σ2=μ(1−μ)α+β+1α+β+1≥1σ2≤μ(1−μ)

1
@ AmelioVazquez-Reina Orijinal verilerinizi verirseniz, bir beta dağılımının neden uygun olmadığı konusunda hızlı bir şekilde açık olacağını bekliyorum.
— Glen_b

21

İşte bu tür problemleri çözmenin genel bir yolu, R yerine Maple kullanarak. Bu, diğer dağıtımlarda da işe yarar:

with(Statistics):
eq1 := mu = Mean(BetaDistribution(alpha, beta)):
eq2 := sigma^2 = Variance(BetaDistribution(alpha, beta)):
solve([eq1, eq2], [alpha, beta]);

çözüm yol açar

α=−μ(σ2+μ2−μ)σ2β=(σ2+μ2−μ)(μ−1)σ2.

Bu Max'in çözümüne eşdeğerdir.


5

shape1=ashape2=b

f(x)=Γ(a+b)Γ(a)Γ(b)xa−1(1−x)b−1

a>0b>00<x<1

R'de, bunu hesaplayabilirsiniz.

dbeta (x, şekil1 = a, şekil2 = b)

E(X)=aa+bV(X)=ab(a+b)2(a+b+1)

İyi iş!

Düzenle

Buldum:

a=(1−μV−1μ)μ2

ve

b=(1−μV−1μ)μ(1−μ)

μ=E(X)V=V(X)


Cevabımın diğerlerine çok benzer olduğunu biliyorum. Bununla birlikte, ilk önce R'nin hangi parametrelemeyi kullandığını kontrol
— etmenin

2

μ=αα+β
σ2=αβ(α+β)2(α+β+1)
β=α(1μ−1)

1
Wikipedia'da çok fazla işten uzak durmanızı sağlayan parametre tahmini bölümü :)
— rm999

1

[a,b]

μ=aβ+bαα+β,σ2=αβ(b−a)2(α+β)2(1+α+β)

hangi vermek için ters çevrilebilir:

α=λμ−ab−a,β=λb−μb−a

nerede

λ=(μ−a)(b−μ)σ2−1

Bir kullanıcı şu yorumu bırakmaya çalıştı: "burada bir yerde bir hata var. Geçerli formül doğru farkı döndürmüyor."
— Silverfish

1

μαββ

β=α(1−μ)μ
α
σ2=α2(1−μ)μ(α+α(1−μ)μ)2(α+α(1−μ)μ+1)
σ2=α2(1−μ)μ(αμ)2α+μμ
σ2=(1−μ)μ2α+μ
α


0

Python'u arıyordum ama bunun üzerine tökezledi. Yani bu benim gibi başkaları için faydalı olacaktır.

Beta parametrelerini tahmin etmek için bir python kodu (yukarıda verilen denklemlere göre):

# estimate parameters of beta dist.
def getAlphaBeta(mu, sigma):
    alpha = mu**2 * ((1 - mu) / sigma**2 - 1 / mu)

    beta = alpha * (1 / mu - 1)

    return {"alpha": 0.5, "beta": 0.1}


print(getAlphaBeta(0.5, 0.1)  # {alpha: 12, beta: 12}

αβscipy.stats.beta

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.