ฉันสามารถประมาณ (ตัวเลข) ค่าประมาณสำหรับการแจกแจงเบต้าด้วยอัลฟาและเบต้าขนาดใหญ่ได้อย่างไร


12

มีวิธีที่มีเสถียรภาพเชิงตัวเลขในการคำนวณค่าของการแจกแจงแบบเบต้าสำหรับจำนวนเต็มขนาดใหญ่ alpha, beta (เช่น alpha, beta> 1000000) หรือไม่

ที่จริงแล้วฉันต้องการเพียงแค่ช่วงความมั่นใจ 99% รอบ ๆ โหมดเท่านั้นหากนั่นทำให้ปัญหาง่ายขึ้น

เพิ่ม : ฉันขอโทษคำถามของฉันไม่ได้ระบุไว้อย่างชัดเจนเหมือนที่ฉันคิด สิ่งที่ฉันต้องการทำคือ: ฉันมีเครื่องจักรที่ตรวจสอบผลิตภัณฑ์บนสายพานลำเลียง เศษส่วนของผลิตภัณฑ์เหล่านี้ถูกปฏิเสธโดยเครื่อง ตอนนี้หากผู้ประกอบการเครื่องจักรเปลี่ยนแปลงการตั้งค่าการตรวจสอบบางอย่างฉันต้องการแสดงให้เขา / เธอทราบอัตราการปฏิเสธโดยประมาณและคำแนะนำบางอย่างเกี่ยวกับความน่าเชื่อถือของการประมาณการในปัจจุบัน

ดังนั้นฉันคิดว่าฉันปฏิบัติกับอัตราการปฏิเสธจริงเป็นตัวแปรสุ่ม X และคำนวณการแจกแจงความน่าจะเป็นสำหรับตัวแปรสุ่มนั้นตามจำนวนของวัตถุที่ถูกปฏิเสธ N และวัตถุที่ยอมรับ M ถ้าฉันถือว่าการกระจายก่อนหน้านี้เหมือนกันสำหรับ X นี่คือ การกระจายเบต้าขึ้นอยู่กับ N และ M ฉันสามารถแสดงการแจกแจงนี้ให้กับผู้ใช้โดยตรงหรือหาช่วงเวลา [l, r] เพื่อให้อัตราการปฏิเสธที่แท้จริงอยู่ในช่วงเวลานี้ด้วย p> = 0.99 (โดยใช้คำศัพท์ของ shabbychef) และแสดง ระยะห่าง สำหรับ M, N ขนาดเล็ก (เช่นทันทีหลังจากการเปลี่ยนแปลงพารามิเตอร์) ฉันสามารถคำนวณการแจกแจงโดยตรงและประมาณช่วงเวลา [l, r] แต่สำหรับ M, N ขนาดใหญ่วิธีการไร้เดียงสานี้นำไปสู่ข้อผิดพลาดอันเดอร์โฟล์เนื่องจาก x ^ N * (1-x) ^ M มีขนาดเล็กเพื่อแสดงว่าเป็นทศนิยมความแม่นยำสองเท่า

ฉันเดาว่าทางออกที่ดีที่สุดของฉันคือใช้การกระจายเบต้าแบบไร้เดียงสาสำหรับ M, N ขนาดเล็กและเปลี่ยนเป็นการกระจายแบบปกติที่มีค่าเฉลี่ยและความแปรปรวนเท่ากันทันทีที่ M, N เกินเกณฑ์ มันสมเหตุสมผลไหม


1
คุณต้องการที่จะรู้คณิตศาสตร์หรือเพียงแค่การแก้ปัญหารหัสใน R หรือบางอย่าง?
จอห์น

ฉันต้องใช้สิ่งนี้ใน C # ดังนั้นคณิตศาสตร์น่าจะดี ตัวอย่างโค้ดก็ใช้ได้เช่นกันถ้ามันไม่พึ่งพาฟังก์ชั่น R / Matlab / Mathematica ในตัวฉันไม่สามารถแปลเป็น C # ได้
nikie

PDF, CDF หรือ CDF ผกผัน?
JM ไม่ใช่นักสถิติ

หากคุณไม่ยืนยันใน Beta คุณสามารถใช้การกระจาย Kumaraswamy ที่คล้ายกันมากและมีรูปแบบพีชคณิตที่ง่ายกว่ามาก: en.wikipedia.org/wiki/Kumaraswamy_distribution
Tim

คำตอบ:


13

การประมาณปกติทำได้ดีมากโดยเฉพาะในส่วนท้าย ใช้ค่าเฉลี่ยของและความแปรปรวนของเบต้า)} ยกตัวอย่างเช่นความผิดพลาดแน่นอนในความน่าจะเป็นหางในสถานการณ์ที่ยากลำบาก (ที่เบ้อาจจะมีความกังวล) เช่นยอดเขารอบและน้อยกว่าเมื่อคุณอยู่ มากกว่า 1 SD จากค่าเฉลี่ย ( ไม่ใช่เพราะเบต้ามีขนาดใหญ่มาก: ด้วยข้อผิดพลาดสัมพัทธ์สัมบูรณ์จะถูก จำกัด ด้วยα/(α+β)αβ(α+β)2(1+α+β)α=106,β=1080.000260.00006α=β=1060.0000001.) การประมาณนี้ยอดเยี่ยมสำหรับวัตถุประสงค์ใด ๆ ที่เกี่ยวข้องกับช่วงเวลา 99%

เมื่อพิจารณาถึงการแก้ไขคำถามโปรดทราบว่าไม่มีการคำนวณอินทิกรัลเบต้าโดยรวมอินทิกรัลเข้าด้วยกัน: แน่นอนว่าคุณจะได้รับอันเดอร์โฟลว์ (แม้ว่าพวกเขาจะไม่สำคัญจริงๆ . มีหลายวิธีหลายวิธีในการคำนวณอินทิกรัลหรือค่าประมาณดังที่บันทึกใน Johnson & Kotz (ดิสทริบิวชันในสถิติ) เครื่องคิดเลขออนไลน์พบที่http://www.danielsoper.com/statcalc/calc37.aspx คุณต้องการอินเวอร์สของอินทิกรัลนี้ วิธีการคำนวณผกผันมีการบันทึกไว้ในเว็บไซต์ Mathematica ที่http://functions.wolfram.com/GammaBetaErf/InverseBetaRegularized/. รหัสนี้มีให้ในสูตรตัวเลข (www.nr.com) เครื่องคิดเลขออนไลน์ที่ดีจริงๆคือเว็บไซต์ Wolfram Alpha (www.wolframalpha.com): ป้อนinverse beta regularized (.005, 1000000, 1000001)สำหรับจุดสิ้นสุดด้านซ้ายและinverse beta regularized (.995, 1000000, 1000001)สำหรับจุดสิ้นสุดด้านขวา ( , ช่วงเวลา 99%)α=1000000,β=1000001


ที่สมบูรณ์แบบ! ฉันมีหนังสือ NR บนโต๊ะของฉันตลอดเวลา แต่ไม่เคยคิดที่จะมองไปที่นั่น ขอบคุณมาก.
nikie

3

การทดสอบกราฟิกอย่างรวดเร็วแสดงให้เห็นว่าการแจกแจงแบบเบต้าดูเหมือนว่าเป็นการแจกแจงแบบปกติมากเมื่อทั้งอัลฟ่าและเบต้ามีขนาดใหญ่มาก โดย googling "เบต้าการ จำกัด การแจกแจงแบบปกติ" ฉันพบhttp://nrich.maths.org/discus/messages/117730/143065.html?1200700623ซึ่งให้การ 'handwaving' handwaving

หน้าวิกิพีเดียสำหรับการแจกแจงแบบเบต้าจะให้ค่าเฉลี่ย, โหมด (v ใกล้เคียงกับค่าเฉลี่ยสำหรับอัลฟาและเบต้าขนาดใหญ่) และความแปรปรวนดังนั้นคุณสามารถใช้การแจกแจงแบบปกติที่มีค่าเฉลี่ย & ค่าความแปรปรวนเดียวกันเพื่อให้ได้ค่าประมาณ การประมาณว่าดีพอสำหรับวัตถุประสงค์ของคุณหรือไม่นั้นขึ้นอยู่กับวัตถุประสงค์ของคุณ


คำถามงี่เง่า: คุณทำการทดลองกราฟิกอย่างไร ฉันพยายามพล็อตการกระจายสำหรับอัลฟา / เบต้าประมาณ 100 แต่ฉันไม่เห็นอะไรเลยเนื่องจากข้อผิดพลาดอันเดอร์โฟล์
nikie

คุณไม่ต้องการพล็อตการรวม: คุณต้องการพล็อตอินทิกรัล อย่างไรก็ตามคุณสามารถรับอินทิเกรตได้หลายวิธี หนึ่งคือการป้อน "พล็อต D (เบต้า (x, 1000000, 2000000), x) / เบต้า (1, 1000000, 2000000) จาก 0.3325 ถึง 0.334" ที่เว็บไซต์ Wolfram Alpha อินทิกรัลนั้นมีให้เห็นด้วย "Plot beta (x, 1000000, 2000000) / beta (1, 1000000, 2000000) จาก 0.3325 ถึง 0.334"
whuber

ฉันได้พล็อตอินทิกแรนต์นั่นคือ pdf ของการแจกแจงเบต้าใน Stata - มันมีฟังก์ชั่น builtin สำหรับ pdf สำหรับอัลฟ่าและเบต้าขนาดใหญ่คุณจำเป็นต้อง จำกัด ช่วงของพล็อตเพื่อดูว่าใกล้เคียงปกติ ถ้าฉันเขียนโปรแกรมด้วยตัวเองฉันจะคำนวณลอการิทึมของมันแล้วยกกำลังท้าย ที่ควรช่วยแก้ไขปัญหาอันเดอร์โฟล์ ฟังก์ชันเบต้าในตัวส่วนถูกกำหนดในรูปแบบของฟังก์ชันแกมม่าเทียบเท่ากับแฟกทอเรียลสำหรับจำนวนเต็มอัลฟาและเบต้าและแพ็คเกจ / ไลบรารีจำนวนมากรวมถึง lngamma () หรือ lnfactorial () แทน / เช่นเดียวกับฟังก์ชันแกมม่า () และแฟกทอเรียล ()
onestop

2

ฉันจะอนุมานว่าคุณต้องการช่วงเวลาเพื่อให้ความน่าจะเป็นที่การสุ่มจับจาก Beta RV อยู่ในช่วงเวลาที่มีความน่าจะเป็น 0.99 พร้อมกับคะแนนโบนัสสำหรับและเป็นสมมาตรรอบโหมด โดยความไม่เท่าเทียมกันของเกาส์หรือความไม่เท่าเทียม Vysochanskii-Petunin คุณสามารถสร้างช่วงเวลาที่มีช่วงเวลาและจะเป็นการประมาณที่เหมาะสมพอสมควร สำหรับมีขนาดใหญ่เพียงพอคุณจะมีปัญหาอันเดอร์โฟลว์ตัวเลขแม้จะแสดงถึงและเป็นตัวเลขที่แตกต่างกันดังนั้นเส้นทางนี้อาจดีพอ[l,r]lr[l,r]α,β lr


เมื่ออัลฟาและเบต้าอยู่ไม่ไกลกัน (กล่าวคืออัลฟา / เบต้าถูกผูกไว้ด้านบนและด้านล่าง) SD ของเบต้า [อัลฟาเบต้า] จะเป็นสัดส่วนกับ 1 / Sqrt (อัลฟา) เช่นสำหรับ alpha = beta = 10 ^ 6 SD นั้นอยู่ใกล้กับ 1 / Sqrt (8) / 1,000 ฉันคิดว่าจะไม่มีปัญหากับการแทนค่าของ l และ r แม้ว่าคุณจะใช้ความแม่นยำเพียงลอยเดียว .
whuber

ซึ่งจะบอกว่าไม่ใช่ 'ขนาดใหญ่พอ';)106
shabbychef

1
ใช่มันเป็นเลขที่บ้าสำหรับแอปพลิเคชันเบต้า BTW ความไม่เท่าเทียมเหล่านั้นจะไม่สร้างช่วงเวลาที่ดีเลยเพราะมันมีค่ามากเกินกว่าการแจกแจงทั้งหมด (เป็นไปตามข้อ จำกัด บางอย่าง)
whuber

@whuber: ถูกต้องพวกเขาเป็นตัวเลขที่บ้า ด้วยอัลกอริธึมไร้เดียงสาของฉันตัวเลข "มีเหตุผล" นั้นง่ายและทำงานได้ดี แต่ฉันไม่สามารถจินตนาการได้ว่าจะคำนวณหาพารามิเตอร์ "บ้า" ได้อย่างไร ดังนั้นคำถาม
nikie

2
ตกลงคุณพูดถูก: เมื่ออัลฟ่า + เบต้าเกิน 10 ^ 30 หรือมากกว่านั้นคุณจะมีปัญหากับคู่ :-) (แต่ถ้าคุณเป็นตัวแทนของ l และ r เป็นความแตกต่างจากค่าเฉลี่ยของอัลฟา / (อัลฟา + เบต้า) คุณจะไม่เป็นไรจนกว่าอัลฟาหรือเบต้าเกินประมาณ 10 ^ 303)
whuber

1

ถ้าเป็นตัวแปรกระจายเบต้าแล้วมันเป็นอัตราต่อรองของ (เช่น:ที่มีการกระจายตามปกติโดยประมาณนี่เป็นความจริงแม้สำหรับการแจกแจงเบ้สูงเช่นเดียวกับp l o g ( p / ( 1 - p ) ) m i n ( α , β ) > 100pplog(p/(1p))min(α,β)>100

ตัวอย่างเช่น

f <- function(n, a, b) {
    p <- rbeta(n, a, b)
    lor <- log(p/(1-p))
    ks.test(lor, 'pnorm', mean(lor), sd(lor))$p.value
}
summary(replicate(50, f(10000, 100, 1000000)))

มักจะสร้างผลลัพธ์เช่น

สรุป (ทำซ้ำ (50, f (10,000, 100, 1000000))) วันที่ 1 ค่าเฉลี่ยมัธยฐาน 3 Qu แม็กซ์ 0.01205 0.10870 0.18680 0.24810 0.36170 0.68730

เช่นค่า p ทั่วไปคือประมาณ 0.2

ดังนั้นแม้จะมี 10000 ตัวอย่างการทดสอบ Kolmogorov-Smirnov ขาดอำนาจในการแยกแยะความแตกต่างการเปลี่ยนแปลงอัตราการบันทึกอัตราต่อรองของเบต้าตัวแปรกระจายเบ้อย่างมากกับ\α=100,β=100000

อย่างไรก็ตามการทดสอบที่คล้ายกันในการกระจายของตัวเองp

f2 <- function(n, a, b) {
    p <- rbeta(n, a, b)
    ks.test(p, 'pnorm', mean(p), sd(p))$p.value
}
summary(replicate(50, f2(10000, 100, 1000000)))

ผลิตสิ่งที่ต้องการ

summary(replicate(50, f2(10000, 100, 1000000)))
     Min.   1st Qu.    Median      Mean   3rd Qu.      Max. 
2.462e-05 3.156e-03 7.614e-03 1.780e-02 1.699e-02 2.280e-01 

ด้วยค่า p ทั่วไปประมาณ 0.01

qqnormฟังก์ชั่นR ยังช่วยให้เห็นภาพได้อย่างมีประโยชน์โดยสร้างพล็อตที่ดูตรงมากสำหรับการกระจายอัตราต่อรองที่บ่งบอกถึงความเป็นมาตรฐานโดยประมาณการกระจายตัวของตัวแปร beta dsitribute ทำให้เกิดเส้นโค้งที่โดดเด่น

ดังนั้นจึงมีเหตุผลที่จะใช้การประมาณแบบเกาส์ในพื้นที่บันทึกอัตราการเข้าชมแม้สำหรับค่าเบ้สูงตราบใดที่ทั้งคู่มีค่ามากกว่า 100α,β

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