การแจกแจงความน่าจะเป็นสำหรับความน่าจะเป็นที่ต่างกัน


36

ถ้าฉันต้องการได้ความน่าจะเป็น 9 ครั้งในการทดลอง 16 ครั้งต่อการทดลองแต่ละครั้งมีความน่าจะเป็น 0.6 ฉันสามารถใช้การแจกแจงทวินาม ฉันจะใช้อะไรได้ถ้าการทดลอง 16 ครั้งแต่ละครั้งมีความน่าจะเป็นที่แตกต่างกัน


1
@whuber ในคำอธิบายของคุณเกี่ยวกับการประมาณปกติการคำนวณค่าเฉลี่ยและส่วนเบี่ยงเบนมาตรฐานนั้นแตกต่างกับคำอธิบายในวิกิพีเดีย ใน Wiki ค่าเฉลี่ยคือ np และส่วนเบี่ยงเบนมาตรฐานคือ np (1-p) ดังนั้นในปัญหานี้สำหรับการประมาณค่าปกติของความน่าจะเป็นที่ต่างกันของความสำเร็จในการแจกแจงทวินามค่าเฉลี่ยคือ p1 + p2 + p3 + p4 + p5 + ... + pi และความแปรปรวนคือ p1 (1-p1) + p2 ( 1-P2) + ... + ปี่ (1-PI) ฉันถูกไหม?
David

1
ดูวิกิพีเดียในการกระจายทวินามปัวซอง นอกจากนี้ยังมีคำค้นหาที่ปรากฏขึ้นไม่กี่ครั้งที่นี่
Glen_b

@ David เมื่อทั้งหมดเท่ากับค่าทั่วไปดังนั้นและแสดง คำอธิบาย Wikipedia ที่คุณอ้างถึงเป็นเพียงกรณีพิเศษ pipp1+p2++pn=npp1(1p1)++pn(1pn)=np(1p)
whuber

ดูเพิ่มเติมstats.stackexchange.com/questions/160458/…

คำตอบ:


22

นี่คือผลรวมของการทดลองแบบทวินาม 16 ครั้ง สมมติฐานของความเป็นอิสระทำให้เราสามารถคูณความน่าจะเป็นได้ ดังนั้นหลังจากการทดลองสองครั้งที่มีความน่าจะเป็นและของความสำเร็จโอกาสของความสำเร็จในการทดลองทั้งสองคือโอกาสของการไม่ประสบความสำเร็จคือและโอกาสของความสำเร็จหนึ่งคือ(1 การแสดงออกครั้งสุดท้ายนั้นเป็นไปตามความจริงที่ว่าทั้งสองวิธีของการได้รับความสำเร็จเพียงอย่างเดียวนั้นไม่เกิดขึ้นพร้อมกัน: ในที่สุดพวกเขาก็สามารถเกิดขึ้นได้ นั่นหมายถึงความน่าจะเป็นของพวกเขาเพิ่มp1p2p1p2(1p1)(1p2)p1(1p2)+(1p1)p2

โดยใช้วิธีการเหล่านี้สองกฎ - ความน่าจะเป็นอิสระคูณและร่วมกันคนพิเศษเพิ่ม - คุณสามารถทำงานได้คำตอบสำหรับการพูด, 16 การทดลองที่มีความน่าจะเป็น{16} ในการทำเช่นนั้นคุณต้องคำนึงถึงวิธีการทั้งหมดในการรับจำนวนความสำเร็จที่กำหนดแต่ละครั้ง (เช่น 9) มีวิธีที่จะทำให้สำเร็จ 9 ครั้ง ยกตัวอย่างเช่นหนึ่งในนั้นเกิดขึ้นเมื่อการทดลองที่ 1, 2, 4, 5, 6, 11, 12, 14 และ 15 ประสบความสำเร็จและคนอื่น ๆ ล้มเหลว ความสำเร็จมีความน่าจะเป็นและและความล้มเหลวมีความน่าจะเป็น{16} การคูณตัวเลข 16 ตัวเหล่านี้ทำให้มีโอกาส( 16)p1,,p16(169)=11440p1,p2,p4,p5,p6,p11,p12,p14,p151p3,1p7,,1p13,1p16ของลำดับผลลัพธ์เฉพาะนี้ การบวกตัวเลขนี้กับจำนวนที่เหลืออีก 11,439 ตัวให้คำตอบ

แน่นอนว่าคุณจะใช้คอมพิวเตอร์

ด้วยการทดลองมากกว่า 16 ครั้งมีความจำเป็นที่จะต้องประมาณการกระจายตัว หากไม่มีความน่าจะเป็นที่และเล็กเกินไปการประมาณปกติมีแนวโน้มที่จะทำงานได้ดี ด้วยวิธีนี้คุณจะทราบว่าความคาดหวังของผลรวมของการทดลองคือและ (เนื่องจากการทดลองนั้นเป็นอิสระ) ความแปรปรวนคือ(1-p_n) จากนั้นคุณหลอกกระจายของผลรวมเป็นเรื่องปกติที่มีค่าเฉลี่ยและส่วนเบี่ยงเบนมาตรฐาน\คำตอบมีแนวโน้มที่จะดีสำหรับการคำนวณความน่าจะเป็นที่สอดคล้องกับสัดส่วนของความสำเร็จที่แตกต่างจากpi1pinμ=p1+p2++pnσ2=p1(1p1)+p2(1p2)++pn(1pn)μσμไม่เกินหลายเท่า ในฐานะที่เป็นเติบโตขนาดใหญ่ประมาณนี้ได้รับเคยถูกต้องมากขึ้นและการทำงานสำหรับหลายขนาดใหญ่ของห่างจาก\σnσμ


9
นักวิทยาศาสตร์คอมพิวเตอร์เรียกว่า "การทดลองปัวซอง" เพื่อแยกพวกมันออกจากการทดลองของเบอร์นูลลี นอกจากการประมาณทฤษฏีทฤษฎีขีด จำกัด กลางแล้วยังมีขอบเขตหางที่ดีอีกด้วย นี่คือหนึ่ง การค้นหาของ Google ที่ "ขอบเขตของ Chernoff สำหรับการทดลอง Poisson" จะทำให้เกิดผลลัพธ์ที่คุณอาจพบในการรักษาแบบ CS ทั่วไป
พระคาร์ดินัล

@ Cardinal ระบบการตั้งชื่อนั้นน่าสนใจ มันจะใช้ได้สำหรับขนาดเล็กมากแต่ดูเหมือนว่าจะทำให้เข้าใจผิดเพราะการแจกแจงอย่างอื่นนั้นไม่ใกล้เคียงกับการแจกแจงปัวซอง (มีการสนทนาเกี่ยวกับประวัติส่วนตัวอีกครั้งเกี่ยวกับคำถามนี้โดยที่ "16" ถูกแทนที่ด้วย 10,000 และเราทำการตรวจสอบความน่าจะเป็นของหาง แต่ฉันไม่สามารถหามันได้อีก)pi
whuber

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

2
@cardinal นั้นถูกต้องที่เรา "CS folks" เรียกพวกเขาว่า Poisson trials ในความเป็นจริงสำหรับกรณีนี้ขอบเขตที่ถูกต้องของ Chernoff-Hoeffding จะทำให้คุณทราบถึงขอบเขตที่ OP ต้องการ
Suresh Venkatasubramanian

1
ตามความคิดเห็นของ @David เมื่อวานนี้มีบางอย่างผิดปกติกับคำสั่งของคุณที่มีค่าเฉลี่ยประมาณเราสรุป 16 Bernoulli rvs ซึ่งแต่ละอันสามารถรับค่า 0 หรือ 1 ดังนั้นผลรวมจะมีโดเมนการสนับสนุนตั้งแต่ 0 ถึง 16 ไม่ใช่ระหว่าง 0 และ 1 ควรตรวจสอบ sd ของคุณด้วย
μ=(p1+p2++pn)/n
wolfies

12

ทางเลือกอีกทางหนึ่งสำหรับการประมาณค่าปกติของ @ whuber คือการใช้ความน่าจะเป็น "การผสม" หรือโมเดลเชิงลำดับชั้น นี้จะมีผลบังคับใช้เมื่อจะคล้ายกันในทางใดทางหนึ่งและคุณสามารถจำลองนี้โดยการกระจายความน่าจะเป็นที่มีฟังก์ชั่นความหนาแน่นของการจัดทำดัชนีโดยบางพารามิเตอร์\คุณได้สมการอินทิกรัล:หน้าฉัน ~ D ฉันs T ( θ ) กรัม( P | θ ) θpipiDist(θ)g(p|θ)θ

Pr(s=9|n=16,θ)=(169)01p9(1p)7g(p|θ)dp

ความน่าจะเป็นทวินามมาจากการตั้งค่าการประมาณปกติมาจาก (ฉันคิดว่า) การตั้งค่า (ด้วยและตามที่กำหนดไว้ในคำตอบของ @ whuber) และจากนั้นสังเกต " ก้อย "ของ PDF นี้ลดลงอย่างรวดเร็วรอบจุดสูงสุดg ( p | θ ) = g ( p | μ , σ ) = 1g(p|θ)=δ(pθ)μσg(p|θ)=g(p|μ,σ)=1σϕ(pμσ)μσ

คุณสามารถใช้การแจกแจงแบบเบต้าซึ่งจะนำไปสู่รูปแบบการวิเคราะห์อย่างง่ายและไม่จำเป็นต้องมีปัญหาจาก "p เล็ก ๆ " ที่การประมาณปกติทำได้ - เนื่องจากเบต้านั้นค่อนข้างยืดหยุ่น การใช้การแจกแจงแบบกับกำหนดโดยวิธีแก้ไขปัญหาของสมการต่อไปนี้ (นี่คือค่าประมาณ "mimimum KL divergence"):beta(α,β)α,β

ψ(α)ψ(α+β)=1ni=1nlog[pi]
ψ(β)ψ(α+β)=1ni=1nlog[1pi]

โดยที่เป็นฟังก์ชั่น digamma - เกี่ยวข้องกับอนุกรมฮาร์โมนิกอย่างใกล้ชิดψ(.)

เราได้รับการกระจายแบบ "เบต้า - ทวินาม"

(169)1B(α,β)01p9+α1(1p)7+β1dp=(169)B(α+9,β+7)B(α,β)

การกระจายนี้ลู่ไปสู่การกระจายปกติในกรณีที่จุด @whuber ออก - แต่ควรจะให้คำตอบที่เหมาะสมสำหรับธุรกิจขนาดเล็กและเบ้ - แต่ไม่ต่อเนื่อง , การกระจายเบต้ามีเพียงหนึ่งจุดสูงสุด แต่คุณสามารถแก้ไขปัญหานี้ได้อย่างง่ายดายเพียงใช้การแจกแจงเบต้าสำหรับโหมดคุณแยกอินทิกรัลจากเป็นชิ้นเพื่อให้แต่ละชิ้นมีโหมดที่ไม่ซ้ำกัน (และข้อมูลเพียงพอที่จะประเมินพารามิเตอร์) และพอดีกับการกระจายเบต้าภายในแต่ละชิ้น จากนั้นเพิ่มผลลัพธ์โดยสังเกตว่าการเปลี่ยนแปลงของตัวแปรสำหรับp i p i M M 0 < p < 1 M p = x - LnpipiMM0<p<1M L<x<Up=xLULL<x<U เบต้าอินทิกรัลเปลี่ยนเป็น:

B(α,β)=LU(xL)α1(Ux)β1(UL)α+β1dx

+1 คำตอบนี้มีคำแนะนำที่น่าสนใจและฉลาด อันสุดท้ายดูยืดหยุ่นและทรงพลังเป็นพิเศษ
whuber

เพียงใช้สิ่งที่เรียบง่ายและเป็นรูปธรรมสมมติว่า (i)และ (ii)สำหรับถึง 16 สิ่งที่จะเป็นทางออกสำหรับ คุณและประมาณการและทำให้ประมาณการของคุณสำหรับให้ตามปัญหา OP ได้หรือไม่ pi=pi=i17i=1αpi=i/17i=1αP ( X = 9 ) n = 16βP(X=9)n=16
wolfies

คำตอบและข้อเสนอที่ยอดเยี่ยมโดยเฉพาะเบต้า! มันต้องการจะเย็นจะเห็นคำตอบนี้เขียนในรูปแบบทั่วไปที่มีและssns
pglpm

8

ให้ ~ด้วยฟังก์ชันสร้างความน่าจะเป็น (pgf): B e r n o u l l i ( p i )XiBernoulli(pi)

pgf=E[tXi]=1pi(1t)

ให้แสดงผลรวมของตัวแปรสุ่มอิสระดังกล่าว จากนั้น pgf สำหรับผลรวมของตัวแปรดังกล่าวคือ: n S n = 16S=i=1nXinSn=16

pgfS=E[tS]=E[tX1]E[tX2]E[tX16] (... by independence)=i=116(1pi(1t))

เราหาซึ่งก็คือ:P(S=9)

19!d9pgfSdt9|t=0

เสร็จเรียบร้อย. นี้ก่อให้เกิดการแก้ปัญหาที่เป็นสัญลักษณ์ที่แน่นอนเป็นหน้าที่ของที่p_iคำตอบนั้นค่อนข้างยาวในการพิมพ์บนหน้าจอ แต่เป็นเวไนยได้ทั้งหมดและใช้เวลาน้อยกว่า th ของวินาทีในการประเมินโดยใช้Mathematicaบนคอมพิวเตอร์ของฉัน1pi1100

ตัวอย่าง

ถ้าดังนั้น: P(S=9)=9647941854334808184pi=i17,i=1 to 16P(S=9)=964794185433480818448661191875666868481=0.198268

หากดังนั้น: P(S=9)=0.000228613...pi=i17,i=1 to 16P(S=9)=0.000228613

มากกว่า 16 การทดลอง?

ด้วยการทดลองมากกว่า 16 ครั้งไม่จำเป็นต้องประเมินการกระจายตัว วิธีการดังกล่าวข้างต้นที่แน่นอนการทำงานได้อย่างง่ายดายเพียงตัวอย่างที่มีการพูดหรือ100 ตัวอย่างเช่นเมื่อจะใช้เวลาน้อยกว่า th ของวินาทีเพื่อประเมิน PMF ทั้งหมด ( เช่นที่ทุกค่า ) โดยใช้รหัสด้านล่างn=50n=100n=50110s=0,1,,50

รหัส Mathematica

รับเวกเตอร์ของค่าให้พูดว่า:pi

n = 16;   pvals = Table[Subscript[p, i] -> i/(n+1), {i, n}];

... นี่คือรหัสMathematica ที่จะทำทุกสิ่งที่ต้องการ:

pgfS = Expand[ Product[1-(1-t)Subscript[p,i], {i, n}] /. pvals];
D[pgfS, {t, 9}]/9! /. t -> 0  // N

0.198268

วิธีหา PMF ทั้งหมด:

Table[D[pgfS, {t,s}]/s! /. t -> 0 // N, {s, 0, n}]

... หรือใช้ผู้เข้าชมสม่ำเสมอและเร็วกว่า (ขอบคุณคำแนะนำจาก Ray Koopman ด้านล่าง):

CoefficientList[pgfS, t] // N

สำหรับตัวอย่างที่มีจะใช้เวลาในการคำนวณเพียง 1 วินาทีจากนั้น 0.002 วินาทีเพื่อหา PMF ทั้งหมดที่ใช้ดังนั้นจึงมีประสิทธิภาพมากn=1000pgfSCoefficientList


1
มันง่ายยิ่งขึ้น With[{p = Range@16/17}, N@Coefficient[Times@@(1-p+p*t),t,9]]ให้โอกาสในการสำเร็จ 9 ครั้งและWith[{p = Range@16/17}, N@CoefficientList[Times@@(1-p+p*t),t]]ให้ความน่าจะเป็นที่ 0, ... , 16 ครั้ง
Ray Koopman

@ RayKoopman นั่นเจ๋ง Tableสำหรับ -values เป็นเจตนาเพื่อให้รูปแบบทั่วไปมากขึ้นไม่เหมาะกับ การใช้งานของเป็นอย่างมากที่ดี! ฉันได้เพิ่มโค้ดข้างต้นซึ่งเพิ่มความเร็วในการเข้าถึงโดยตรงอย่างมหาศาล ดังนั้นแม้แม้จะเร็วกว่า มันไม่ได้สร้างความแตกต่างมากนักสำหรับต่ำกว่า 50 (ทั้งสองวิธีใช้เวลาเพียงเสี้ยววินาทีในการสร้าง PMF ทั้งหมด) แต่คุณจะได้เปรียบในทางปฏิบัติจริงเมื่อnมีขนาดใหญ่มาก pRangeCoefficientListExpandCoefficientListParallelTablenCoefficientList
wolfies

5

@wolfies แสดงความคิดเห็นและความพยายามของฉันในการตอบสนองมันเปิดเผยปัญหาสำคัญกับคำตอบอื่น ๆ ของฉันซึ่งฉันจะหารือในภายหลัง

กรณีเฉพาะ (n = 16)

มีวิธีที่ค่อนข้างมีประสิทธิภาพในการเขียนโค้ดการแจกแจงแบบเต็มโดยใช้ "เคล็ดลับ" ในการใช้หมายเลขฐาน 2 (ไบนารี) ในการคำนวณ แต่จะต้อง 4 บรรทัดของรหัส R ที่จะได้รับการกระจายเต็มรูปแบบของที่Prโดยทั่วไปมีตัวเลือกเวกเตอร์ทั้งหมดตัวเลือกที่ตัวแปรไบนารีสามารถทำได้ ตอนนี้สมมติว่าเราแต่ละหมายเลขทางเลือกที่แตกต่างไปจากถึง n สิ่งนี้ด้วยตัวเองไม่มีอะไรพิเศษ แต่ตอนนี้สมมติว่าเราเป็นตัวแทน "หมายเลขตัวเลือก" โดยใช้เลขฐาน 2 ตอนนี้ใช้เพื่อให้ฉันสามารถเขียนตัวเลือกทั้งหมดดังนั้นจึงมีY=i=1nZiPr(Zi=1)=pi2nz=(z1,,zn)Zi12nn=323=8ตัวเลือก จากนั้นใน "หมายเลขสามัญ" จะกลายเป็นใน "เลขฐานสอง" ตอนนี้สมมติว่าเราเขียนเหล่านี้เป็นตัวเลขสี่หลักแล้วเรามี0001,0010,0011,0100,0101,0110,0111,1000ตอนนี้ดูตัวเลขสุดท้ายของแต่ละตัวเลข -สามารถคิดได้ว่าเป็น , ฯลฯ การนับในรูปแบบไบนารีให้วิธีที่มีประสิทธิภาพในการจัดระเบียบผลรวม . โชคดีที่มีฟังก์ชั่น R ซึ่งสามารถทำการแปลงแบบไบนารี่ให้เราเรียกและเราแปลงรูปแบบไบนารีดิบให้เป็นตัวเลขผ่านทางแล้วเราจะได้เวกเตอร์1,2,3,4,5,6,7,81,10,11,100,101,110,111,10000001,0010,0011,0100,0101,0110,0111,10003001(Z1=0,Z2=0,Z3=1)Y=1intToBits(x)as.numeric(intToBits(x))32องค์ประกอบแต่ละองค์ประกอบเป็นตัวเลขของเวอร์ชันฐาน 2 ของหมายเลขของเรา (อ่านจากขวาไปซ้ายไม่ใช่จากซ้ายไปขวา) การใช้เคล็ดลับนี้รวมกับ vectorisations R อื่น ๆ เราสามารถคำนวณความน่าจะเป็นที่ในรหัส R 4 บรรทัด:y=9

exact_calc <- function(y,p){
    n       <- length(p)
    z       <- t(matrix(as.numeric(intToBits(1:2^n)),ncol=2^n))[,1:n] #don't need columns n+1,...,32 as these are always 0
    pz      <- z%*%log(p/(1-p))+sum(log(1-p))
    ydist   <- rowsum(exp(pz),rowSums(z))
    return(ydist[y+1])
}

เสียบปลั๊กในกรณีที่เหมือนกันและรูทกรณี sqrtให้การกระจายเต็มรูปแบบ สำหรับ y เป็น:pi(1)=i17pi(2)=i17

yPr(Y=y|pi=i17)Pr(Y=y|pi=i17)00.00000.055810.00000.178420.00030.265230.00260.243040.01390.153650.04910.071060.11810.024870.19830.006780.23530.001490.19830.0002100.11810.0000110.04910.0000120.01390.0000130.00260.0000140.00030.0000150.00000.0000160.00000.0000

ดังนั้นสำหรับปัญหาเฉพาะของประสบความสำเร็จในการทดลองครั้งการคำนวณที่แน่นอนนั้นตรงไปตรงมา นอกจากนี้ยังสามารถใช้งานได้กับความน่าจะเป็นจำนวนมากจนถึงประมาณซึ่งเกินกว่าที่คุณน่าจะเริ่มประสบปัญหาหน่วยความจำและจำเป็นต้องใช้เทคนิคการคำนวณที่แตกต่างกันy16n=20

โปรดทราบว่าด้วยการใช้ "การแจกแจงแบบเบต้า" ที่แนะนำของฉันเราจะได้รับการประมาณค่าพารามิเตอร์ของและสิ่งนี้ให้การประมาณความน่าจะเป็นที่เกือบจะเหมือนกันในให้ค่าประมาณ{17} ดูเหมือนว่าแปลกเนื่องจากความหนาแน่นของการแจกแจงแบบเบต้าด้วยใกล้เคียงกับฮิสโตแกรมของค่าอย่างใกล้ชิด เกิดอะไรขึ้นα=β=1.3206ypr(y=9)=0.06799117α=β=1.3206pi

กรณีทั่วไป

ตอนนี้ฉันจะหารือเกี่ยวกับกรณีทั่วไปมากขึ้นและทำไมการประมาณเบต้าอย่างง่ายของฉันจึงล้มเหลว โดยพื้นฐานแล้วการเขียนจากนั้นกับการแจกแจงแบบอื่นจริง ๆ แล้วทำให้สมมติฐานที่สำคัญ - เราสามารถประมาณความน่าจะเป็นจริงด้วย ความน่าจะเป็นทวินามเดียว - ปัญหาเดียวที่ยังคงอยู่คือค่าจะใช้ วิธีการหนึ่งที่เห็นนี้คือการใช้ความหนาแน่นของการผสมซึ่งเป็นชุดที่ไม่ต่อเนื่องในช่วงที่เกิดขึ้นจริงp_iดังนั้นเราจึงแทนที่การแจกแจงเบต้าด้วยความหนาแน่นแบบไม่ต่อเนื่องของ(y|n,p)Binom(n,p)ppf(θ)ppipBeta(a,b)pi=116wiδ(ppi). จากนั้นใช้การประมาณการผสมสามารถแสดงเป็นคำได้โดยเลือกค่ามีความน่าจะเป็นและสมมติว่าการทดลอง bernoulli ทั้งหมดมีความน่าจะเป็นpiwiนี้ เห็นได้ชัดว่าการประมาณเช่นนี้จะทำงานได้ดีค่าส่วนใหญ่ควรจะคล้ายกัน นี่หมายความว่าโดยทั่วไปแล้วสำหรับการกระจายค่าของชุด @wolfies อย่างสม่ำเสมอส่งผลให้การประมาณค่าไม่ดีอย่างน่าประหลาดใจเมื่อใช้การกระจายการผสมเบตา สิ่งนี้ยังอธิบายว่าเหตุใดการประมาณจึงดีกว่าสำหรับ - มันแพร่กระจายน้อยกว่าpipi=i17pi=i17

ผสมแล้วใช้สังเกตเฉลี่ยมากกว่าทางเลือกที่เป็นไปได้ทั้งหมดในครั้งเดียว Pเพราะตอนนี้ "ผสม" เป็นเหมือนถัวเฉลี่ยถ่วงน้ำหนักก็ไม่อาจทำสิ่งใดดีกว่าการใช้ที่ดีที่สุดเดียวPดังนั้นหากกระจายออกไปอย่างเพียงพอจะไม่มีเดี่ยวที่สามารถประมาณค่าทั้งหมดได้ดีpi pppippi

สิ่งหนึ่งที่ผมได้พูดในคำตอบอื่น ๆ ของฉันก็คือว่ามันอาจจะดีกว่าที่จะใช้เป็นส่วนผสมของการกระจายเบต้าในช่วงที่ถูก จำกัด - แต่นี้ยังจะไม่ช่วยนี่เพราะนี้จะยังคงผสมมากกว่าหนึ่งเดียว Pสิ่งที่สมเหตุสมผลคือการแบ่งช่วงเวลาออกเป็นชิ้น ๆ และมีทวินามภายในแต่ละชิ้น ตัวอย่างเช่นเราสามารถเลือกเป็นตัวแยกของเราและใส่สองชื่อให้ได้เก้า Binomials ภายในแต่ละช่วงความน่าจะเป็นโดยทั่วไปภายในแต่ละการแยกเราจะพอดีกับการประมาณอย่างง่ายเช่นการใช้ทวินามที่มีความน่าจะเป็นเท่ากับค่าเฉลี่ยของp(0,1)(0,0.1,0.2,,0.9,1)0.1piในช่วงนั้น ถ้าเราทำให้ช่วงเวลามีขนาดเล็กพอการประมาณจะดีขึ้นโดยพลการ แต่โปรดทราบว่าสิ่งทั้งหมดนี้ทำให้เราต้องจัดการกับการทดลองทวินามแบบอิสระที่มีความน่าจะเป็นต่างกันแทนที่จะเป็นการทดลองแบบBernoulli อย่างไรก็ตามส่วนก่อนหน้าของคำตอบนี้แสดงให้เห็นว่าเราสามารถทำการคำนวณที่แน่นอนได้หากจำนวนทวินามมีขนาดเล็กพอเพียงประมาณ 10-15 หรือมากกว่านั้น

ในการขยายคำตอบจากเบอเนลลีไปยังคำตอบทวินามเราเพียงแค่ "ตีความใหม่" ว่าตัวแปรคืออะไร เราเพียงแค่ระบุว่า - สิ่งนี้จะลดลงไปเป็นใช้ Bernoulli ดั้งเดิมแต่ตอนนี้บอกว่า binomials ที่ประสบความสำเร็จมาจากไหน ดังนั้นกรณีตอนนี้หมายความว่า "ความสำเร็จ" ทั้งหมดมาจากทวินามที่สามและไม่มีจากสองครั้งแรกZiZi=I(Xi>0)Zi(Z1=0,Z2=0,Z3=1)

โปรดทราบว่านี่ยังคงเป็น "เลขชี้กำลัง" ซึ่งจำนวนการคำนวณเป็นเช่นโดยที่คือจำนวนทวินามและคือขนาดกลุ่ม - ดังนั้นคุณจึงมีที่p_j) แต่นี่จะดีกว่าที่คุณจะต้องจัดการด้วยการใช้ตัวแปรสุ่มแบบเบอเนลลี ตัวอย่างเช่นสมมติว่าเราแบ่งความน่าจะเป็นเป็นกลุ่มด้วยความน่าจะเป็นในแต่ละกลุ่ม สิ่งนี้ให้การคำนวณเมื่อเปรียบเทียบกับkggkYj=1gXjXjBin(k,pj)2gkn=16g=4k=444=256216=65536

โดยการเลือกกลุ่มและสังเกตว่าขีด จำกัด ได้เกี่ยวกับซึ่งเป็นเรื่องเกี่ยวกับเซลล์เราได้อย่างมีประสิทธิภาพสามารถใช้วิธีนี้เพื่อเพิ่มสูงสุดเพื่อng=10n=20107nn=50

ถ้าเราทำให้ประมาณขัดเกลาโดยลดเราจะเพิ่มขนาด "เป็นไปได้" สำหรับn หมายความว่าคุณสามารถมีประสิทธิภาพประมาณ125นอกเหนือจากนี้การประมาณปกติควรแม่นยำอย่างยิ่งgng=5n125


@momo - ฉันคิดว่ามันโอเคเพราะคำตอบของฉันมีสองวิธีที่แตกต่างกันในการแก้ไขปัญหา คำตอบนี้ไม่ใช่รุ่นแรกที่แก้ไขของฉัน - เป็นเพียงคำตอบที่แตกต่าง
ความน่าจะเป็นทาง

1
สำหรับการแก้ปัญหาในRที่มีประสิทธิภาพมากและจับมากค่าขนาดใหญ่กว่าของโปรดดูstats.stackexchange.com/a/41263 ตัวอย่างเช่นมันแก้ปัญหานี้สำหรับให้การกระจายเต็มรูปแบบภายในไม่กี่วินาที (A เทียบเคียงMathematica 9วิธีการแก้ปัญหา - ดู @wolfies' คำตอบ - นอกจากนี้ยังมีประสิทธิภาพดีสำหรับขนาดเล็กแต่ไม่สามารถดำเนินการการดำเนินการด้วยเช่นค่าขนาดใหญ่ของ .)n = 10 4 n nnn=104nn
whuber

5

(โดยทั่วไปว่ายาก) pmf คือ รหัส R:

Pr(S=k)=A{1,,n}|A|=k(iApi)(j{1,,n}A(1pj)).
p <- seq(1, 16) / 17
cat(p, "\n")
n <- length(p)
k <- 9
S <- seq(1, n)
A <- combn(S, k)
pr <- 0
for (i in 1:choose(n, k)) {
    pr <- pr + exp(sum(log(p[A[,i]])) + sum(log(1 - p[setdiff(S, A[,i])])))
}
cat("Pr(S = ", k, ") = ", pr, "\n", sep = "")

สำหรับที่ใช้ในการตอบหมาป่าเรามี:pi

Pr(S = 9) = 0.1982677

เมื่อเติบโตขึ้นใช้บิดn


1
การทำเช่นนั้นด้วยรหัส R มีประโยชน์จริง ๆ พวกเราบางคนเป็นนักคิดที่เป็นรูปธรรมมากขึ้นและมันช่วยให้มีฟังก์ชั่นการสร้างรุ่นที่ใช้งานได้อย่างมาก
DWIN

@DWin ผมให้มีประสิทธิภาพRรหัสในวิธีการแก้ปัญหาเดียวกัน (มีค่าที่แตกต่างของ ) ที่stats.stackexchange.com/a/41263 ปัญหาที่นี่แก้ไขได้ในเวลาการคำนวณทั้งหมด 0.00012 วินาที (ประมาณโดยแก้ไข 1,000 ครั้ง) เทียบกับ 0.53 วินาที (ประมาณโดยแก้ปัญหาหนึ่งครั้ง) สำหรับรหัสนี้และ 0.00058 วินาทีโดยใช้รหัสMathematicaของ Wolfies (ประมาณโดยแก้ 1,000 ครั้ง) piR
whuber

ดังนั้นจะเป็นไปตามการกระจายแบบปัวซอง - ทวินาม P(S=k)
fccoelho

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