ฉันจะคำนวณพารามิเตอร์และสำหรับการแจกแจงแบบเบต้าได้อย่างไรถ้าฉันรู้ค่าเฉลี่ยและความแปรปรวนที่ฉันต้องการให้การกระจายมี ตัวอย่างของคำสั่ง R เพื่อทำสิ่งนี้จะเป็นประโยชน์มากที่สุดบีตา
ฉันจะคำนวณพารามิเตอร์และสำหรับการแจกแจงแบบเบต้าได้อย่างไรถ้าฉันรู้ค่าเฉลี่ยและความแปรปรวนที่ฉันต้องการให้การกระจายมี ตัวอย่างของคำสั่ง R เพื่อทำสิ่งนี้จะเป็นประโยชน์มากที่สุดบีตา
คำตอบ:
ฉันตั้งค่าและและ แก้ไขสำหรับและ\ผลลัพธ์ของฉันแสดงว่าและ σ2=αบีตา
ฉันได้เขียนโค้ด 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
estBetaParams(0.06657, 0.1)
ฉันได้รับ,alpha=-0.025
beta=-0.35
เป็นไปได้อย่างไร?
ต่อไปนี้เป็นวิธีทั่วไปในการแก้ปัญหาประเภทนี้โดยใช้ Maple แทนที่จะเป็น R สิ่งนี้ใช้ได้กับการแจกแจงแบบอื่นเช่นกัน:
with(Statistics):
eq1 := mu = Mean(BetaDistribution(alpha, beta)):
eq2 := sigma^2 = Variance(BetaDistribution(alpha, beta)):
solve([eq1, eq2], [alpha, beta]);
ซึ่งนำไปสู่การแก้ปัญหา
นี่เทียบเท่ากับโซลูชันของ Max
ใน R การแจกแจงแบบเบต้าพร้อมพารามิเตอร์และมีความหนาแน่น
,
สำหรับ ,และ<1b > 0 0 < x < 1
ใน R คุณสามารถคำนวณได้โดย
dbeta (x, shape1 = a, shape2 = b)
ใน parametrisation ค่าเฉลี่ยคือและความแปรปรวนคือ)} ดังนั้นตอนนี้คุณสามารถติดตามคำตอบของ Nick Sabbe
การทำงานที่ดี!
แก้ไข
ฉันหา:
,
และ
,
ที่และ(X)
ตัวอย่างเช่นใน Wikipedia คุณสามารถค้นหาสูตรต่อไปนี้สำหรับค่าเฉลี่ยและความแปรปรวนของการแจกแจงเบต้าที่ให้อัลฟ่าและเบต้า: และ เหล่านี้ (กรอกข้อมูลในสมการล่างสุด) ให้ผลลัพธ์ที่คุณต้องการ (แม้ว่ามันอาจจะใช้งานได้)
สำหรับการแจกแจงเบต้าทั่วไปที่กำหนดไว้ในช่วงเวลาคุณมีความสัมพันธ์:
ซึ่งสามารถคว่ำให้:
ที่ไหน
แก้สมการสำหรับหรือ , แก้หาคุณจะได้ จากนั้นเสียบนี่เข้ากับสมการที่สองและแก้หา\ดังนั้นคุณจะได้รับซึ่งจะทำให้ แล้วเสร็จสิ้นการแก้\
ฉันกำลังมองหางูหลาม แต่สะดุดกับสิ่งนี้ ดังนั้นนี่จะเป็นประโยชน์สำหรับคนอื่นเช่นฉัน
นี่คือรหัสไพ ธ อนเพื่อประมาณค่าพารามิเตอร์เบต้า (ตามสมการที่ให้ไว้ด้านบน):
# 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