การคำนวณพารามิเตอร์ของการแจกแจงแบบเบต้าโดยใช้ค่าเฉลี่ยและความแปรปรวน


66

ฉันจะคำนวณพารามิเตอร์และสำหรับการแจกแจงแบบเบต้าได้อย่างไรถ้าฉันรู้ค่าเฉลี่ยและความแปรปรวนที่ฉันต้องการให้การกระจายมี ตัวอย่างของคำสั่ง R เพื่อทำสิ่งนี้จะเป็นประโยชน์มากที่สุดบีตาαβ


4
โปรดทราบว่าแพ็คเกจbetaregใน R ใช้การกำหนดพารามิเตอร์ทางเลือก (ด้วยค่าเฉลี่ย, , & ความแม่นยำ, - ดังนั้นความแปรปรวนคือ ) ซึ่งขัดขวางความจำเป็นในการคำนวณเหล่านี้ φ = α + บีตาμ ( 1 - μ ) / ( 1 + φ )μ=α/α+βϕ=α+βμ(1μ)/(1+ϕ)
gung - Reinstate Monica

คำตอบ:


90

ฉันตั้งค่าและและ แก้ไขสำหรับและ\ผลลัพธ์ของฉันแสดงว่าและ σ2=αบีตา

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

ฉันได้เขียนโค้ด R ขึ้นมาเพื่อประมาณค่าพารามิเตอร์ของการแจกแจงเบต้าจากค่าเฉลี่ย, mu, และค่าความแปรปรวน, 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μσ2

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

2
@stan สิ่งนี้จะให้การแจกแจงแบบเบต้าซึ่งมีค่าเฉลี่ยและความแปรปรวนเหมือนกับข้อมูลของคุณ มันจะไม่บอกคุณว่าการกระจายที่เหมาะสมกับข้อมูล ลองทดสอบ Kolmogorov-Smirnov
สันนิษฐานว่าปกติ

4
เมื่อผมเรียกฟังก์ชั่นนี้กับestBetaParams(0.06657, 0.1)ฉันได้รับ,alpha=-0.025 beta=-0.35เป็นไปได้อย่างไร?
Amelio Vazquez-Reina

1
การคำนวณเหล่านี้จะใช้งานได้หากความแปรปรวนน้อยกว่าค่าเฉลี่ย * (1 ค่าเฉลี่ย)
danno

2
@danno - เป็นกรณีที่เสมอ ที่เห็นนี้เขียนแปรปรวนเป็น1} ตั้งแต่ ,ขวา) σ2μ(1μ)σ2=μ(1μ)α+β+1α+β+11σ2μ(1μ)
สันนิษฐานว่าปกติ

1
@ AmelioVazquez-Reina หากคุณให้ข้อมูลดั้งเดิมของคุณฉันคาดว่าจะเห็นได้อย่างรวดเร็วว่าทำไมการแจกแจงเบต้าไม่เหมาะสม
Glen_b

21

ต่อไปนี้เป็นวิธีทั่วไปในการแก้ปัญหาประเภทนี้โดยใช้ Maple แทนที่จะเป็น R สิ่งนี้ใช้ได้กับการแจกแจงแบบอื่นเช่นกัน:

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

ซึ่งนำไปสู่การแก้ปัญหา

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

นี่เทียบเท่ากับโซลูชันของ Max


5

ใน R การแจกแจงแบบเบต้าพร้อมพารามิเตอร์และมีความหนาแน่นshape1=ashape2=b

f(x)=Γ(a+b)Γ(a)Γ(b)xa1(1x)b1 ,

สำหรับ ,และ<1b > 0 0 < x < 1a>0b>00<x<1

ใน R คุณสามารถคำนวณได้โดย

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

ใน parametrisation ค่าเฉลี่ยคือและความแปรปรวนคือ)} ดังนั้นตอนนี้คุณสามารถติดตามคำตอบของ Nick SabbeE(X)=aa+bV(X)=ab(a+b)2(a+b+1)

การทำงานที่ดี!

แก้ไข

ฉันหา:

a=(1μV1μ)μ2 ,

และ

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

ที่และ(X)μ=E(X)V=V(X)


ฉันรู้ว่าคำตอบของฉันคล้ายกันมากกับคนอื่น ๆ อย่างไรก็ตามฉันเชื่อว่ามันเป็นจุดที่ดีเสมอในการตรวจสอบสิ่งที่ parametrisation R ใช้ ....
ocram

2

ตัวอย่างเช่นใน Wikipedia คุณสามารถค้นหาสูตรต่อไปนี้สำหรับค่าเฉลี่ยและความแปรปรวนของการแจกแจงเบต้าที่ให้อัลฟ่าและเบต้า: และ เหล่านี้ (กรอกข้อมูลในสมการล่างสุด) ให้ผลลัพธ์ที่คุณต้องการ (แม้ว่ามันอาจจะใช้งานได้)

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

1
Wikipedia มีส่วนที่เกี่ยวกับการประมาณค่าพารามิเตอร์ที่ช่วยให้คุณหลีกเลี่ยงการทำงานมากเกินไป :)
rm999

1

สำหรับการแจกแจงเบต้าทั่วไปที่กำหนดไว้ในช่วงเวลาคุณมีความสัมพันธ์:[a,b]

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

ซึ่งสามารถคว่ำให้:

α=λμaba,β=λbμba

ที่ไหน

λ=(μa)(bμ)σ21

ผู้ใช้พยายามที่จะแสดงความคิดเห็นต่อไปนี้: "มีข้อผิดพลาดบางแห่งที่นี่สูตรปัจจุบันไม่ส่งกลับความแปรปรวนที่ถูกต้อง"
Silverfish

1

แก้สมการสำหรับหรือ , แก้หาคุณจะได้ จากนั้นเสียบนี่เข้ากับสมการที่สองและแก้หา\ดังนั้นคุณจะได้รับซึ่งจะทำให้ แล้วเสร็จสิ้นการแก้\μαββ

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


0

ฉันกำลังมองหางูหลาม แต่สะดุดกับสิ่งนี้ ดังนั้นนี่จะเป็นประโยชน์สำหรับคนอื่นเช่นฉัน

นี่คือรหัสไพ ธ อนเพื่อประมาณค่าพารามิเตอร์เบต้า (ตามสมการที่ให้ไว้ด้านบน):

# 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

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.