Menghitung parameter dari distribusi Beta menggunakan mean dan varians


66

Bagaimana saya bisa menghitung parameter dan untuk distribusi Beta jika saya tahu mean dan varians yang saya inginkan untuk distribusi? Contoh perintah R untuk melakukan ini akan sangat membantu.αβ


4
Perhatikan bahwa paket betareg dalam R menggunakan parameterisasi alternatif (dengan rerata, , & presisi, - dan karenanya variansnya adalah ) yang menyingkirkan kebutuhan untuk perhitungan ini. μ=α/α+βϕ=α+βμ(1-μ)/(1+ϕ)
gung - Reinstate Monica

Jawaban:


90

Saya menetapkan dan dan dipecahkan untuk dan . Hasil saya menunjukkan bahwa dan

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

Saya telah menulis beberapa kode R untuk memperkirakan parameter distribusi Beta dari mean, mu, dan varians, 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))
}

Ada beberapa kebingungan di sekitar batas-batas dan untuk setiap distribusi Beta yang diberikan, jadi mari kita perjelas di sini.σ 2μσ2

  1. μ=αα+β(0,1)
  2. σ2=αβ(α+β)2(α+β+1)=μ(1-μ)α+β+1<μ(1-μ)1=μ(1-μ)(0,0,52)

2
@stan Ini akan memberi Anda distribusi Beta yang memiliki mean dan varians yang sama dengan data Anda. Itu tidak akan memberi tahu Anda seberapa baik distribusi sesuai dengan data. Coba Tes Kolmogorov-Smirnov .
Diasumsikan normal

4
Ketika saya memanggil fungsi ini dengan estBetaParams(0.06657, 0.1)saya mendapatkan alpha=-0.025, beta=-0.35. Bagaimana ini mungkin?
Amelio Vazquez-Reina

1
Perhitungan ini hanya akan berfungsi jika variansnya kurang dari rata-rata * (1-rata).
danno

2
@danno - Selalu seperti itu . Untuk melihat ini, tulis ulang varians sebagai . Karena , . σ 2 = μ ( 1 - μ )σ2μ(1-μ) α+β+11σ2μ(1-μ)σ2=μ(1-μ)α+β+1α+β+11σ2μ(1-μ)
Diasumsikan normal

1
@ AmelioVazquez-Reina Jika Anda memberikan data asli Anda, saya berharap akan segera jelas mengapa distribusi beta tidak cocok.
Glen_b

21

Berikut adalah cara umum untuk menyelesaikan jenis masalah ini, menggunakan Maple alih-alih R. Ini juga berfungsi untuk distribusi lain:

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

yang mengarah ke solusi

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

Ini setara dengan solusi Max.


5

Dalam R, distribusi beta dengan parameter dan memiliki kepadatanshape2 = bbentuk1=Sebuahshape2=b

f(x)=Γ(Sebuah+b)Γ(Sebuah)Γ(b)xSebuah-1(1-x)b-1 ,

untuk , , dan .b > 0 0 < x < 1Sebuah>0b>00<x<1

Di R, Anda dapat menghitungnya dengan

dbeta (x, shape1 = a, shape2 = b)

Dalam parametrisasi itu, rerata adalah dan variansnya adalah . Jadi, Anda sekarang dapat mengikuti jawaban Nick Sabbe. V(X)=abE(X)=SebuahSebuah+bV(X)=ab(a+b)2(a+b+1)

Kerja bagus!

Sunting

Saya menemukan:

a=(1μV1μ)μ2 ,

dan

b=(1μV1μ)μ(1μ) ,

di mana dan .V = V ( X )μ=E(X)V=V(X)


Saya menyadari jawaban saya sangat mirip dengan yang lain. Meskipun demikian, saya percaya itu selalu merupakan hal yang baik untuk memeriksa dulu apa parametrisation R menggunakan ....
ocram

2

Di Wikipedia, misalnya, Anda dapat menemukan rumus berikut untuk rata-rata dan varian dari distribusi beta yang diberikan alpha dan beta: dan Membalik ini (isi dalam persamaan bawah) harus memberi Anda hasil yang Anda inginkan (meskipun mungkin butuh kerja). σ2=αβ

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

1
Wikipedia memiliki bagian tentang estimasi parameter yang memungkinkan Anda menghindari terlalu banyak pekerjaan :)
rm999

1

Untuk distribusi Beta umum yang ditentukan pada interval , Anda memiliki relasi:[Sebuah,b]

μ=Sebuahβ+bαα+β,σ2=αβ(b-Sebuah)2(α+β)2(1+α+β)

yang dapat dibalik untuk memberikan:

α=λμ-Sebuahb-Sebuah,β=λb-μb-Sebuah

dimana

λ=(μ-Sebuah)(b-μ)σ2-1

Seorang pengguna telah berusaha untuk meninggalkan komentar berikut: "ada kesalahan di suatu tempat di sini. Formulasi saat ini tidak mengembalikan varian yang benar."
Silverfish

1

Selesaikan persamaan untuk atau , penyelesaian untuk , Anda mendapatkan Kemudian hubungkan ini ke persamaan kedua, dan selesaikan untuk . Jadi Anda mendapatkan Yang menyederhanakan menjadi Lalu selesaikan penyelesaian untuk .μαββ

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


0

Saya mencari python, tetapi menemukan ini. Jadi ini akan bermanfaat bagi orang lain seperti saya.

Berikut ini adalah kode python untuk memperkirakan parameter beta (sesuai dengan persamaan yang diberikan di atas):

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

Anda dapat memverifikasi parameter dan dengan mengimpor paket.αβscipy.stats.beta

Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.