ฉันจะจำลองผลรวมของตัวแปรสุ่มของเบอร์นูลลี่อย่างมีประสิทธิภาพได้อย่างไร


38

ฉันกำลังสร้างแบบจำลองตัวแปรสุ่ม ( ) ซึ่งเป็นผลรวมของตัวแปรสุ่ม Bernoulli อิสระบางตัว ( ) บาง ~ 15-40k แต่ละคนมีโอกาสประสบความสำเร็จที่แตกต่างกัน ( ) อย่างเป็นทางการที่และ\ Pr (x_i = 0) = 1 p_iYXipiY=XiPr(Xi=1)=piPr(Xi=0)=1pi

ฉันสนใจที่จะตอบคำถามอย่างรวดเร็วเช่นPr(Y<=k) (โดยที่ได้รับk )

ขณะนี้ฉันใช้การจำลองแบบสุ่มเพื่อตอบคำถามดังกล่าว ผมสุ่มวาดแต่ละXiตามมันpiแล้วรวมทั้งหมดXiค่าที่จะได้รับY'Yฉันทำซ้ำขั้นตอนนี้ไม่กี่พันครั้งและกลับส่วนครั้งที่Pr(Yk)k)

เห็นได้ชัดว่านี่ไม่ถูกต้องทั้งหมด (แม้ว่าความแม่นยำจะเพิ่มขึ้นอย่างมากเมื่อจำนวนการจำลองเพิ่มขึ้น) นอกจากนี้ดูเหมือนว่าฉันมีข้อมูลเพียงพอเกี่ยวกับการแจกจ่ายเพื่อหลีกเลี่ยงการจำลองการใช้งาน คุณคิดวิธีที่สมเหตุสมผลในการรับความน่าจะเป็นPr(Yk)หรือไม่?

PS

ฉันใช้ Perl & R

แก้ไข

ฉันคิดว่าอาจจำเป็นต้องมีคำอธิบายเพิ่มเติม ฉันจะอธิบายการตั้งค่าของปัญหาของฉันในไม่ช้า รับเป็นจีโนมวงกลมที่มีเส้นรอบวงcและชุดของnช่วงแมปกับมัน ยกตัวอย่างเช่นและc=3*10^9 ranges={[100,200],[50,1000],[3*10^9-1,1000],...}หมายเหตุช่วงทั้งหมดถูกปิด (รวมปลายทั้งสอง) โปรดทราบว่าเราจัดการเฉพาะจำนวนเต็ม (หน่วยทั้งหมด)

ฉันกำลังมองหาภูมิภาคบนวงกลมที่มีการซ่อนเร้นโดยnช่วงที่กำหนด ดังนั้นเพื่อทดสอบว่าช่วงความยาวxที่กำหนดบนวงกลมนั้นมีการปกปิดหรือไม่ฉันทดสอบสมมติฐานที่nช่วงนั้นมีการแมปแบบสุ่ม ความน่าจะเป็นช่วงที่แมปความยาวq>xอย่างเต็มที่จะครอบคลุมช่วงที่กำหนดความยาวคือx (q-x)/cความน่าจะเป็นนี้ค่อนข้างเล็กเมื่อcมีขนาดใหญ่และ / หรือqเล็ก สิ่งที่ผมสนใจคือจำนวนของช่วง (จากn) xซึ่งครอบคลุม นี่คือวิธีที่Yจะเกิดขึ้น

ฉันทดสอบสมมติฐานว่างกับทางเลือกด้านเดียว (สายลับ) โปรดทราบว่าฉันกำลังทดสอบสมมติฐานหลายรายการ ( xความยาวต่างกัน) และตรวจสอบให้แน่ใจว่าได้แก้ไขแล้ว


p_i ของคุณได้รับการแก้ไขตลอดทั้งแบบฝึกหัดการสร้างแบบจำลองหรือพวกเขาสามารถเปลี่ยนจากการคำนวณหนึ่งไปสู่อีก
whuber

p_is ได้รับการแก้ไข
David B

ในแง่ของการตอบสนองปัจจุบันคุณสามารถแบ่งปันการประมาณของ (a) ผลรวมของ p's และ (b) ผลรวมของกำลังสองของพวกเขาได้หรือไม่? ค่าเหล่านี้กำหนดตัวเลือกของคุณ
whuber

@whuber: สิ่งเหล่านี้แตกต่างกันอย่างมากระหว่างกรณี ไม่ใช่โมดูลครั้งเดียวที่ฉันสร้าง (น่าเสียดาย)
David B

@ David แต่คุณไม่สามารถให้คำแนะนำบางอย่างเช่นช่วงปกติได้หรือไม่ ตัวอย่างเช่นหากผลรวมของ p อยู่ในช่วงระหว่าง 1 ถึง 100 นั่นเป็นข้อมูลที่เป็นประโยชน์และแนะนำวิธีแก้ปัญหาที่มีประสิทธิภาพ แต่หากสามารถรับได้มากถึง 10,000 ที่สามารถยกเว้นบางวิธีได้
whuber

คำตอบ:


24

หากมักจะคล้ายกับปัวซองคุณลองใช้ปัวซองด้วยพารามิเตอร์หรือไม่?λ=pi

แก้ไข : ฉันได้พบผลทางทฤษฎีที่จะปรับนี้เช่นเดียวกับชื่อสำหรับการกระจายของที่ : มันเรียกว่าการกระจายทวินามปัวซอง ความไม่เท่าเทียมกันของเลอบแคมบอกคุณว่าอย่างใกล้ชิดกระจายอยู่ในห้วงการกระจายของ Poisson กับพารามิเตอร์p_i มันจะบอกคุณคุณภาพของการประมาณนี้ถูกควบคุมโดยรวมของสี่เหลี่ยมที่ s, ถอดความสตีล (1994) ดังนั้นหากทั้งหมดของคุณมีขนาดเล็กพอสมควรตามที่ปรากฏในขณะนี้มันควรจะเป็นการประมาณที่ดีทีเดียวYλ=pipipi

แก้ไข 2 : เล็ก 'สมเหตุสมผลเล็กน้อย' อย่างไร ขึ้นอยู่กับว่าคุณต้องการการประมาณที่ดีเพียงใด! บทความวิกิพีเดียทฤษฎีบทเลอบแคมของให้ในรูปแบบที่ถูกต้องของผลที่ผมอ้างถึงข้างต้น: ผลรวมของความแตกต่างแน่นอนระหว่างมวลฟังก์ชัน (PMF) ของและ PMF ของการกระจาย Poisson เป็นไม่เกินสองเท่าของผลรวม ของกำลังสองของ s ผลการค้นหาอื่นจากเลอบแคม (1960)อาจจะง่ายต่อการใช้งาน: จำนวนนี้ยังเป็นไม่เกิน 18 ครั้งที่ใหญ่ที่สุดp_iมีผลลัพธ์ดังกล่าวค่อนข้างน้อย ... ดูSerfling (1978)สำหรับการตรวจสอบหนึ่งครั้งYpipi


1
+1 ไม่ใช่ความคิดที่เลว อาจเป็นไปได้ว่าส่วนผสมของ Poissons จะทำงานได้ดีขึ้นอยู่กับว่าคำถามจะถูกอธิบายอย่างไร
whuber

1
ฉันคิดว่าจะแนะนำการกระจายตัวแบบทวินามลบซึ่งเกิดขึ้นเป็นส่วนผสมแกมม่า - ปัวซอง แต่มันมีความแปรปรวนมากกว่าค่าเฉลี่ยในขณะที่ปัญหานี้มีความแปรปรวนน้อยกว่าค่าเฉลี่ย จากนั้นฉันไม่แน่ใจว่าส่วนผสมของ Poissons ใดจะใช้ได้หรือไม่แน่นอนว่าส่วนผสมดังกล่าวจะมีความแปรปรวนมากกว่าค่าเฉลี่ยหรือไม่?
onestop

@onestop มันบอกว่าอยู่ที่ไหนความแปรปรวนน้อยกว่าค่าเฉลี่ย? ฉันพลาดข้อความนั้น
whuber

ขออภัยที่นี่เป็นความลับเล็กน้อย แต่ความคิดเห็นเหล่านี้ไม่อนุญาตให้มีรายละเอียดมากนัก mpiktas ของคือความแปรปรวนซึ่งน้อยกว่าค่าเฉลี่ยp_i น้อยกว่าเพียงเล็กน้อยถ้าโดยเฉลี่ยมีขนาดเล็กมากแม้ว่าดังนั้นปัวซองมาตรฐานอาจจะดีพอประมาณ บางทีฉันควรขยายคำตอบของฉันด้านบน .. แต่จากนั้นเธรดการสนทนาอาจทำให้สับสน p i p iBn=pi(1pi)pipi
onestop

คุณหมายถึงอะไรโดย ? ฉันจะรับค่าได้อย่างไร X iXiXi
David B

11

ฉันเจอคำถามของคุณในขณะที่ค้นหาวิธีแก้ไขปัญหานี้ ฉันไม่พอใจอย่างมากกับคำตอบที่นี่ แต่ฉันคิดว่ามีวิธีแก้ปัญหาง่ายๆที่ให้การกระจายที่แน่นอนแก่คุณ

การกระจายตัวของผลรวมของตัวแปรสุ่มสองตัวที่ไม่ต่อเนื่องคือความหนาแน่นของความแปรปรวน ดังนั้นถ้าคุณมีที่คุณรู้จักและคุณก็สามารถคำนวณได้:P ( X ) P ( Y )Z=X+YP(X)P(Y)

P(Z=z)=k=P(X=k)P(Y=zk)

(แน่นอนสำหรับตัวแปรสุ่ม Bernoulli คุณไม่จำเป็นต้องไปค่อนข้างจะไม่มีที่สิ้นสุด.)

คุณสามารถใช้สิ่งนี้เพื่อค้นหาการกระจายที่แน่นอนของผลรวมของ RVs ของคุณ ผลรวมของ RVs สองอันดับแรกด้วยกันโดยการแปลง PDF (เช่น [0.3, 0.7] * [0.6, 0.4] = [0.18, 0.54, 0.28] จากนั้นโน้มน้าวการกระจายใหม่ด้วยไฟล์ PDF Bernoulli ฉบับต่อไปของคุณ (เช่น [0.18, 0.54, 0.28] * [0.5, 0.5] = [0.09, 0.36, 0.41, 0.14]) ทำซ้ำสิ่งนี้ต่อไปจนกว่าจะมีการเพิ่ม RVs ทั้งหมด และ voila เวกเตอร์ที่ได้คือ PDF ที่แน่นอนของผลรวมของตัวแปรทั้งหมดของคุณ

ฉันตรวจสอบด้วยการจำลองว่าสิ่งนี้ให้ผลลัพธ์ที่ถูกต้อง มันไม่ได้ขึ้นอยู่กับสมมติฐานเชิงซีมโทติคและไม่มีข้อกำหนดว่าโพรบเบอร์นูลลีนั้นมีขนาดเล็ก

อาจมีวิธีการทำเช่นนี้ได้อย่างมีประสิทธิภาพมากกว่าการบิดซ้ำ แต่ฉันไม่ได้คิดอย่างลึกซึ้ง ฉันหวังว่านี่จะเป็นประโยชน์กับใครบางคน!


2
คุณได้ลองกับตัวแปร 40K หรือไม่? (ฉันสงสัยว่าต้องใช้เวลาในการคำนวณกี่ชั่วโมงหรือหลายวัน ... )
whuber

5
(+1) ฉันพบวิธีที่จะทำให้แนวคิดนี้เป็นจริง มันต้องใช้สองเทคนิค: อันดับแรกใช้ FFT สำหรับการโน้มน้าวใจ วินาทีอย่าทำตามลำดับ แต่แบ่งและพิชิต: ทำในคู่ที่แยกจากนั้นทำผลลัพธ์ในคู่ที่แยกจากกันเป็นต้นอัลกอริทึมจะปรับขนาดเป็นมากกว่าสำหรับความน่าจะเป็น ตัวอย่างเช่นMathematicaสามารถคำนวณการแจกแจงทั้งหมดสำหรับความน่าจะเป็น 40,000 รายการในเวลาเพียง 0.4 วินาที (มีการคำนวณ 1,000,000 ภายใน 10.5 วินาที) ฉันจะให้รหัสในความคิดเห็นติดตาม O ( n 2 ) nO(nlogn)O(n2)n
whuber

7
นี่คือMathematicaรหัส: เมื่อต้องการใช้มันทำสิ่งที่ชอบmultinomial[p_] := Module[{lc, condense}, lc = Function[{s}, ListConvolve[s[[1]], s[[2]], {1, -1}, 0]]; condense = Function[{s}, Map[lc, Partition[s, 2, 2, {1, 1}, {{1}}]]]; Flatten[NestWhile[condense, Transpose[{1 - p, p}], Length[#] > 1 &]]] p = RandomReal[{0, 1}, 40000]; pp = multinomial[p];นี้จะสร้างความน่าจะเป็นแล้วคำนวณการกระจายแน่นอน p NBเมื่อค่าเฉลี่ยของไม่มากการแจกแจงจะใกล้เคียงปกติ: นั่นนำไปสู่อัลกอริทึมที่เร็วกว่ามาก ppp
whuber

9

@onestop ให้การอ้างอิงที่ดี บทความวิกิพีเดียเกี่ยวกับการแจกแจงปัวซองทวินามเป็นสูตรคำนวณซ้ำสำหรับการคำนวณการแจกแจงความน่าจะเป็นแน่นอน มันต้องใช้ความพยายามของน่าเสียดายที่มันเป็นผลรวมแบบสลับดังนั้นมันจะไม่เสถียรเชิงตัวเลข: เราหวังที่จะทำการคำนวณนี้ด้วยเลขทศนิยม โชคดีที่เมื่อมีขนาดเล็กคุณจะต้องคำนวณจำนวนเล็ก ๆ ของความน่าจะเป็นดังนั้นความพยายามที่เป็นสัดส่วนจริงๆ{p_i})) ความแม่นยำที่จำเป็นในการคำนวณด้วยเหตุผลทางคณิตศาสตร์ ( เช่นที่แน่นอนเพื่อให้ความไม่แน่นอนเชิงตัวเลขไม่เป็นปัญหา) เติบโตช้าพอที่เวลาโดยรวมอาจยังคงอยู่ที่ประมาณp i O ( n log ( i p i ) ) O ( n 2 )O(n2)piO(nlog(ipi))O(n2). เป็นไปได้

จากการทดสอบฉันสร้างอาร์เรย์ของความน่าจะเป็นสำหรับค่าต่าง ๆ ของถึงซึ่งเป็นขนาดของปัญหานี้ สำหรับค่าเล็ก ๆ ของ (สูงสุด ) เวลาสำหรับการคำนวณความน่าจะเป็นที่แน่นอนคือในไม่กี่วินาทีและปรับขนาดเป็นสองเท่าดังนั้นฉันจึงคำนวณการคำนวณสำหรับออกไปสาม SDs ค่าเฉลี่ย (ความน่าจะเป็นสำหรับ 0, 1, ... , 22 สำเร็จ) ใช้เวลา 80 นาที (กับ Mathematica 8) ซึ่งสอดคล้องกับเวลาที่คาดการณ์ไว้ (ความน่าจะเป็นที่ได้นั้นเป็นเศษส่วนที่ตัวเศษและตัวส่วนมีประมาณ 75,000 ตัวต่อตัว!) นี่แสดงให้เห็นว่าการคำนวณสามารถทำได้n n = 2 16 n n = 2 12 n = 2 16pi=1/(i+1)nn=216nn=212n=216

อีกทางเลือกหนึ่งคือเรียกใช้การจำลองแบบยาว (หนึ่งล้านการทดลองควรทำ) จะต้องทำเพียงครั้งเดียวเพราะไม่เปลี่ยนแปลงpi


9

(เนื่องจากวิธีการนี้เป็นวิธีการที่ไม่ขึ้นอยู่กับโซลูชันอื่น ๆ ที่โพสต์รวมถึงวิธีที่ฉันโพสต์ไว้ฉันจึงเสนอให้เป็นการตอบแยกต่างหาก)

คุณสามารถคำนวณการกระจายตัวที่แน่นอนในไม่กี่วินาที (หรือน้อยกว่า) หากผลรวมของ p มีขนาดเล็ก

เราได้เห็นคำแนะนำแล้วว่าการกระจายอาจประมาณ Gaussian (ภายใต้บางสถานการณ์) หรือ Poisson (ภายใต้สถานการณ์อื่น) ทั้งสองวิธีที่เรารู้ว่ามันหมายถึงคือผลรวมของและความแปรปรวนของคือผลรวมของ(1-p_i) ดังนั้นการจัดจำหน่ายจะมีความเข้มข้นภายในไม่กี่ค่าเบี่ยงเบนมาตรฐานของค่าเฉลี่ยของการพูด SDS กับระหว่างวันที่ 4 และ 6 หรือราว ดังนั้นเราจึงจำเป็นต้องใช้เพียงคำนวณความน่าจะเป็นที่รวมเท่ากับ (จำนวนเต็ม)สำหรับผ่าน\ เมื่อส่วนใหญ่ของp i σ 2 p i ( 1 - p i ) z z x k k = μ - z σ k = μ + z σ p ฉันσ 2 μ k [ μ - z μpiσ2pi(1pi)zzXkk=μzσk=μ+zσpiมีขนาดเล็กมีค่าประมาณเท่ากับ (แต่น้อยกว่าเล็กน้อย)ดังนั้นเพื่ออนุรักษ์นิยมเราสามารถทำการคำนวณสำหรับในช่วงเวลาหมู่}] ตัวอย่างเช่นเมื่อผลรวมของเท่ากับและเลือกเพื่อให้ครอบคลุมก้อยดีเราจะต้องคำนวณเพื่อให้ครอบคลุมใน = , ซึ่งเป็นเพียง 28 ค่าσ2μkpi9z=6k[9-6[μzμ,μ+zμ]pi9z=6k[0,27][969,9+69][0,27]

การกระจายคำนวณซ้ำ ให้เป็นการกระจายตัวของผลรวมของแรกของตัวแปร Bernoulli เหล่านี้ สำหรับจากถึงผลรวมของตัวแปรตัวแรกสามารถเท่ากับในสองวิธีที่ไม่เหมือนกัน: ผลรวมของตัวแปรตัวแรกเท่ากับและคือหรืออื่น ๆ ที่ผลรวมของแรกตัวแปรเท่ากับและเป็น1ดังนั้น i j 0 i + 1 i + 1 j i j i + 1 st 0 i j - 1 i + 1 st 1fiij0i+1i+1jiji+1st0ij1i+1st1

fi+1(j)=fi(j)(1pi+1)+fi(j1)pi+1.

เราต้องทำการคำนวณนี้เพื่ออินทิกรัล ในช่วงเวลาจากถึงสูงสุด( 0 , μ - z j μ+zmax(0,μzμ) μ+zμ.

เมื่อส่วนใหญ่ของมีขนาดเล็ก (แต่นั้นยังคงแยกได้จากด้วยความแม่นยำที่สมเหตุสมผล) วิธีการนี้ไม่ได้เกิดจากการสะสมของข้อผิดพลาดจุดลอยตัวขนาดใหญ่ที่ใช้ในโซลูชันที่ฉันโพสต์ไว้ก่อนหน้านี้ ดังนั้นจึงไม่จำเป็นต้องคำนวณความแม่นยำเพิ่มเติม ตัวอย่างเช่นการคำนวณความแม่นยำสองครั้งสำหรับอาร์เรย์ที่มีความน่าจะเป็น (ซึ่งต้องการการคำนวณความน่าจะเป็นของผลรวมระหว่างถึง 1 - p i 1 2 16 p i = 1 / ( i + 1 ) μ = 10.6676 0 31 3 × 10 - 15 z = 6 3.6 × 10 - 8pi1pi1216pi=1/(i+1)μ=10.6676031) ใช้เวลา 0.1 วินาทีกับ Mathematica 8 และ 1-2 วินาทีกับ Excel 2002 (ทั้งคู่ได้คำตอบเดียวกัน) การทำซ้ำที่มีความแม่นยำสี่เท่า (ในมาติกา) ใช้เวลาประมาณ 2 วินาที แต่ไม่ได้เปลี่ยนคำตอบใด ๆ โดยกว่า15} การสิ้นสุดการแจกจ่ายที่ SDs ลงในหางส่วนบนหายไปเพียงของความน่าจะเป็นทั้งหมด3×1015z=63.6×108

การคำนวณอีกครั้งสำหรับอาร์เรย์ของค่าสุ่มที่มีความแม่นยำมากกว่าสองเท่าระหว่าง 0 ถึง 0.001 ( ) ใช้เวลา 0.08 วินาทีกับ Mathematicaμ=19.9093

อัลกอริทึมนี้ขนานได้ เพียงแค่แบ่งชุดของเป็นชุดย่อยที่แยกกันขนาดที่เท่ากันโดยประมาณหนึ่งตัวต่อโปรเซสเซอร์ คำนวณการกระจายสำหรับแต่ละชุดย่อยจากนั้นโน้มน้าวผลลัพธ์ (โดยใช้ FFT หากคุณต้องการแม้ว่าการเร่งความเร็วนี้อาจไม่จำเป็น) เพื่อให้ได้คำตอบเต็ม สิ่งนี้ทำให้ใช้งานได้จริงแม้ในขณะที่มีขนาดใหญ่เมื่อคุณต้องมองออกไปที่หาง (ใหญ่) และ / หรือมีขนาดใหญ่ μ z npiμzn

ระยะเวลาสำหรับอาร์เรย์ของตัวแปรกับเครื่องชั่งน้ำหนักประมวลผลเป็นm) ความเร็วของ Mathematica อยู่ที่ประมาณหนึ่งล้านต่อวินาที ตัวอย่างเช่นด้วยตัวประมวลผล ,ตัวแปร, ความน่าจะเป็นรวมของ , และออกไปที่ส่วนเบี่ยงเบนมาตรฐานในส่วนท้าย,ล้าน: คิดสองสามวินาทีของเวลาในการคำนวณ หากคุณรวบรวมสิ่งนี้คุณอาจเร่งความเร็วของคำสั่งสองขนาดm O ( n ( μ + z √)nmO(n(μ+zμ)/m)m=1n=20000μ=100z=6n(μ+zμ)/m=3.2

ในกรณีทดสอบเหล่านี้กราฟของการแจกแจงแสดงความเบ้เชิงบวกอย่างชัดเจนบางอย่างว่าไม่ปกติ

สำหรับการบันทึกนี่คือวิธีการแก้ปัญหา Mathematica:

pb[p_, z_] := Module[
  {\[Mu] = Total[p]},
  Fold[#1 - #2 Differences[Prepend[#1, 0]] &, 
   Prepend[ConstantArray[0, Ceiling[\[Mu] + Sqrt[\[Mu]] z]], 1], p]
  ]

( NBการเขียนโค้ดสีที่เว็บไซต์นี้นำมาใช้นั้นไม่มีความหมายสำหรับรหัส Mathematica โดยเฉพาะอย่างยิ่งสิ่งที่เป็นสีเทาไม่ใช่ความคิดเห็น: เป็นสิ่งที่งานทั้งหมดทำ!)

ตัวอย่างของการใช้งานคือ

pb[RandomReal[{0, 0.001}, 40000], 8]

แก้ไข

คำRตอบคือช้ากว่าMathematicaสิบเท่าในกรณีทดสอบ - บางทีฉันไม่ได้เขียนมันอย่างเหมาะสม - แต่มันก็ยังดำเนินการได้อย่างรวดเร็ว (ประมาณหนึ่งวินาที):

pb <- function(p, z) {
  mu <- sum(p)
  x <- c(1, rep(0, ceiling(mu + sqrt(mu) * z)))
  f <- function(v) {x <<- x - v * diff(c(0, x));}
  sapply(p, f); x  
}
y <- pb(runif(40000, 0, 0.001), 8)
plot(y)

แปลง PDF


8

ด้วยแตกต่างกันทางออกที่ดีที่สุดของคุณฉันคิดว่าเป็นเรื่องปกติ ให้(1-p_i) แล้วก็piBn=i=1npi(1pi)

Bn1/2(i=1nXii=1npi)N(0,1),
เป็นโดยมีเงื่อนไขว่าสำหรับแต่ละnε>0

Bn1i=1nE((Xipi)21{|Xipi|>εBn1/2})0,
เป็นซึ่งสำหรับตัวแปร Bernoulli จะถือถ้าB_nนี่เป็นเงื่อนไขที่เรียกว่า Lindeberg ซึ่งเพียงพอและจำเป็นสำหรับการลู่เข้าสู่มาตรฐานปกติnBn

อัปเดต: ข้อผิดพลาดการประมาณสามารถคำนวณได้จากความไม่เท่าเทียมกันดังต่อไปนี้:

supx|Fn(x)Φ(x)|ALn,
โดยที่ และเป็น CDF ของผลรวมการปรับขนาดและศูนย์กลางของx_i
Ln=Bn3/2i=1nE|Xipi|3
FnXi

ในฐานะที่เป็น whuber ชี้ลู่ได้ช้าสำหรับความประพฤติไม่ดีp_iสำหรับเรามีและ1/2} จากนั้นรับเราได้รับว่าค่าเบี่ยงเบนสูงสุดจาก cdf ปกติมาตรฐานคือมหันต์ 0.3pipi=11+iBnlnnLn(lnn)1/2n=216


3
สิ่งนี้ไม่เป็นจริงเมื่อ p_i เข้าใกล้ศูนย์เมื่อฉันเพิ่มขึ้น ไม่เช่นนั้นคุณได้พิสูจน์แล้วว่าการแจกแจงปัวซองนั้นเป็นปกติ!
whuber

1
นั่นคือเหตุผลที่มันจะต้องเป็นB_nหากเข้าใกล้ศูนย์ในอัตราที่เร็วกว่า ,B_n Bnpi1/ilimBn<
mpiktas

@mpiktas ถูกต้อง ความคล้ายคลึงกับการแจกแจงปัวซองนั้นไม่ค่อยเหมาะสมที่นี่

โดยวิธีการที่ฉันไม่ได้ตรวจสอบสภาพมหึมาที่จริงในวรรคสอง

@G เจย์เคอร์นส์ฉันเห็นด้วยว่าการเปรียบเทียบกับปัวซองนั้นไม่สมบูรณ์ แต่ฉันคิดว่ามันเป็นแนวทางที่ดี ลองจินตนาการถึงลำดับของ p, p_i = 10 ^ {- j} โดยที่ j คือลำดับความสำคัญของ i (เท่ากับ 1 สำหรับ i <= 10, ถึง 2 สำหรับ i <= 100, ฯลฯ ) เมื่อ n = 10 ^ k, 90% ของ p เท่ากับ 10 ^ {- k} และผลรวมของพวกมันดูปัวซองด้วยความคาดหวัง 0.9 อีก 9% เท่ากับ 10 ^ {1-k} และผลรวมของพวกเขาดู Poisson (ด้วยความคาดหวังเดียวกัน) ดังนั้นการกระจายจะมีลักษณะโดยประมาณเหมือนกับผลรวมของ k Poisson เห็นได้ชัดว่าไม่มีที่ไหนใกล้ปกติ ดังนั้นจึงจำเป็นต้องมี "เงื่อนไขที่เลวร้าย"
whuber

4

ดีขึ้นอยู่กับรายละเอียดและการอภิปรายในความคิดเห็นของคุณเป็นที่ชัดเจนว่ามีค่าเฉลี่ยและความแปรปรวน{i}) รูปร่างของกระจาย 's ท้ายที่สุดจะขึ้นอยู่กับลักษณะการทำงานของp_iเพื่อให้เหมาะสม "ดี" (ในแง่ที่ว่ามีไม่มากเกินไปใกล้ศูนย์) การกระจายของจะเป็นปกติประมาณ (อยู่ตรงกลางที่ ) แต่เมื่อ เริ่มมุ่งหน้าไปที่ศูนย์การกระจายจะถูกย้ายไปทางซ้ายและเมื่อฝูงชนขึ้นกับYipiipi(1pi)YpipiYpiipiy-axis มันจะเริ่มมองปกติน้อยลงและปัวซองมากขึ้นเช่น @whuber และ @onestop ได้กล่าวถึง

จากความคิดเห็นของคุณ "การจัดจำหน่ายที่มีลักษณะ Poisson" ฉันสงสัยว่ากรณีหลังนี้คือสิ่งที่เกิดขึ้น แต่ไม่สามารถจริงๆให้แน่ใจว่าไม่ต้องเรียงลำดับของการแสดงผลหรือสรุปภาพสถิติเกี่ยวกับบาง 's อย่างไรก็ตามโปรดทราบว่าในขณะที่ @whuber ทำเช่นนั้นด้วยพฤติกรรมทางพยาธิวิทยาที่เพียงพอของคุณสามารถมีสิ่งที่น่ากลัวเกิดขึ้นได้ทุกประเภทเช่นข้อ จำกัด ที่มีการแจกแจงแบบผสม ฉันสงสัยว่าเป็นกรณีที่นี่อีกครั้ง แต่จริงๆมันขึ้นอยู่กับสิ่งที่คุณ 's กำลังทำppp

สำหรับคำถามดั้งเดิมของ "วิธีการสร้างแบบจำลองที่มีประสิทธิภาพ" ฉันจะแนะนำรูปแบบลำดับชั้นสำหรับคุณ แต่มันก็ไม่เหมาะสมถ้าเป็นค่าคงที่แบบคงที่ ในระยะสั้นลองดูฮิสโตแกรมของและทำการเดาแรกตามสิ่งที่คุณเห็น ฉันจะแนะนำคำตอบโดย @mpiktas (และโดย @csgillespie นามสกุล) หากของคุณไม่แออัดเกินไปทางซ้ายและฉันจะแนะนำคำตอบโดย @onestop หากพวกเขาแออัดซ้ายเหมือนกันppp

อย่างไรก็ตามนี่คือรหัส R ที่ฉันใช้ในขณะที่เล่นกับปัญหานี้: รหัสไม่เหมาะสมจริง ๆ ถ้าของคุณมีขนาดเล็กเกินไป แต่มันควรจะง่ายต่อการเสียบรุ่นต่างๆสำหรับ (รวมถึงน่ากลัว - คนบ้า) เพื่อดูว่าเกิดอะไรขึ้นกับการจัดจำหน่ายที่ดีที่สุดของYppY

set.seed(1)
M <- 5000
N <- 15000
p <- rbeta(N, shape1 = 1, shape2 = 10)
Y <- replicate(M, sum(rbinom(N, size = 1, prob = p)))

ทีนี้ลองดูผลลัพธ์

hist(Y)
mean(Y)
sum(p)
var(Y)
sum(p*(1 - p))

มีความสุข; ฉันแน่ใจ


ทำไมคุณถึงพูดว่า "รหัสไม่เหมาะสมจริง ๆ ถ้าของคุณมีขนาดเล็กเกินไป"? ดูเหมือนว่าจะทำงานกับฉันเช่นกับ shape1 = 1, shape2 = 999 ให้ค่าเฉลี่ยของ 0.001 pp
onestop

@ หยุดสิ่งที่ฉันหมายถึงคือตัวเลือกเฉพาะของ (1,10) ที่เขียนไว้ด้านบนไม่ได้ให้ค่าของที่เล็กมากจนถึงจุดที่การประมาณปกติดูดีทีเดียว ถ้าคนต้องการให้ปัวซองออกมาพวกเขาจะต้องลองอย่างอื่น ดูเหมือนว่าคุณจะทำได้ดี (1,999) ใช่ไหม? ฉันเคยคิดที่จะสร้างพูดว่า 0.25 แต่ฉันไม่ได้ลองเลย pα<1

2

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

นี่คือความพยายาม:

Xi|piBer(pi)

piBeta(α,β)

การใช้wikipediaเราสามารถรับค่าประมาณของและ (ดูส่วนการประมาณค่าพารามิเตอร์)α^β^

ตอนนี้คุณสามารถสร้างดึงสำหรับขั้นตอนสร้างจากแล้วสร้างจาก(p_i) หลังจากที่คุณได้กระทำนี้เวลาที่คุณจะได้รับx_i นี่คือรอบเดียวสำหรับการสร้าง Y ทำจำนวน (ใหญ่) นี้และฮิสโตแกรมของ Ys จะเป็นการประมาณความหนาแน่นของ Yพีฉันบีอีที( α , β ) X ฉันบีอีอาร์( P ฉัน ) N Y = Σ X ฉัน M MithpiBeta(α^,β^)XiBer(pi)NY=XiMM

Prob[Yy]=#YyM

การวิเคราะห์นี้ใช้ได้เฉพาะเมื่อไม่ได้รับการแก้ไขpiนี่ไม่ใช่กรณีที่นี่ แต่ฉันจะทิ้งไว้ที่นี่ในกรณีที่มีคนมีคำถามคล้ายกัน


1
สำหรับนักสอนบางคนนี่อาจไม่ใช่ชาวเบย์ นี่คือการทดลองแบบเบย์จริง ๆ แต่เป็นวิธีที่รวดเร็วในการจำลองความน่าจะเป็นของคุณใน R โดยไม่ต้องใช้จัมโบ้ mumbo ก่อนหน้ามากเกินไป
suncoolsu

1
ทำไมคุณถึงต้องการนักบวชเมื่อได้รับ p_i
whuber

@whuber ขอบคุณคุณพูดถูก ฉันพลาดส่วนที่คงที่ ฉันคิดว่าดาวิดใช้ค่าที่จะเป็นเป็น (qx) / c และไม่ได้รับการแก้ไข ฉันจะแก้ไขคำตอบของฉัน pi
suncoolsu

@suncoolsu - ทราบว่าเป็น "เบต้า Bernoulli" กระจายเป็นเพียงอีกหนึ่งกระจาย Bernoulli แต่แทนที่เบต้า} นี่คือเบต้า} ดังนั้นโดยทั่วไปโดยการผสมมากกว่าคุณจะใช้ประมาณทวินามที่นี่P_1piαα+β(1xi)B(α+xi,β+1xi)B(α,β)=αxiβ1xiα+βpip1=p2==pn
ความน่าจะเป็นทาง

2

ดังที่ได้กล่าวไว้ในคำตอบอื่น ๆ การแจกแจงความน่าจะเป็นที่คุณอธิบายคือการแจกแจงปัวซองทวินาม วิธีที่มีประสิทธิภาพสำหรับการคำนวณ CDF นั้นได้รับในHong, Yili เกี่ยวกับการคำนวณฟังก์ชันการกระจายสำหรับการกระจายทวินามปัวซอง

วิธีการคือการคำนวณ DFT (การแปลงฟูริเยร์แบบแยก) ของฟังก์ชันลักษณะอย่างมีประสิทธิภาพ

ฟังก์ชั่นพิเศษของการแจกแจงปัวซองทวินามให้โดย ( )ϕ(t)=jn[(1pj)+pjeit]i=1

อัลกอริทึมคือ:

  1. ปล่อย , สำหรับ .zj(k)=1pj+pjcos(ωk)+ipjsin(ωk)ω=2πn+1
  2. กำหนดกำหนด 1xk=exp{jnlog(zj(k))}x0=1
  3. Computeสำหรับ2] ใช้ symmetryเพื่อรับส่วนที่เหลือxkk=1,,[n/2]x¯k=xn+1k
  4. สมัคร FFT เพื่อเวกเตอร์x_n>1n+1<x0,x1,,xn>
  5. รับผลรวมสะสมเพื่อรับ CDF

อัลกอริทึมนี้มีอยู่ในแพ็คเกจ poibin R

วิธีนี้ให้ผลลัพธ์ที่ดีกว่าสูตรแบบเรียกซ้ำเนื่องจากพวกเขามีแนวโน้มที่จะไม่มีเสถียรภาพเชิงตัวเลข


3
ฉันเข้าถึงเฉพาะนามธรรมของกระดาษนั้น แต่ดูเหมือนว่าจะใช้วิธีการที่ฉันใช้ในstats.stackexchange.com/questions/41247/และอธิบายวิธีการเปรียบเทียบกับวิธีอื่นที่ให้ไว้ในชุดข้อความนี้ หากคุณรู้เพิ่มเติมเกี่ยวกับสิ่งที่ทำสำเร็จเรายินดีที่จะอ่านบทสรุป
whuber

1

ฉันอยากจะแนะนำให้ใช้การประมาณปัวซอง มันเป็นที่รู้จักกันดี (ดู AD บาร์เบอร์แอลโฮลส์และเอส Janson: Poisson ประมาณ) ว่าระยะห่างระหว่างรูปแบบรวมและ RVมีการกระจาย Poisson มีพารามิเตอร์มีขนาดเล็ก: นอกจากนี้ยังมีขอบเขตในแง่ของความแตกต่างของข้อมูล (ระยะทาง Kullback-Leibler คุณอาจเห็น P. Harremo's: การบรรจบกันของการกระจาย Poisson ในความแตกต่างของข้อมูล Preprint no. 2, ก.พ. , 2003 ภาควิชาคณิตศาสตร์, มหาวิทยาลัยโคเปนเฮเกนhttp: //www.harremoes.dk/Peter/poisprep.pdfYZipi

supA|P(YA)P(ZA)|min{1,1ipi}ipi2.
และสิ่งพิมพ์อื่น ๆ ของP.Harremoёs) ระยะไคสแควร์ (ดูฟและ Vorozheikin https://link.springer.com/article/10.1007%2Fs11202-008-0002-3 ) และบางส่วนระยะทางอื่น ๆ

เพื่อความแม่นยำของการประมาณ สำหรับฟังก์ชั่นมากมายคุณอาจเห็นฟและ Ruzankin https://projecteuclid.org/euclid.aop/1039548369 นอกจากนั้นกระดาษนั้นยังมีขอบเขตความน่าจะเป็นแบบง่าย: สำหรับทั้งหมดเรามี |Ef(Y)Ef(Z)|fA

P(YA)1(1maxipi)2P(ZA).


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