ขนาดตัวอย่างที่จำเป็นในการประมาณความน่าจะเป็นของ“ ความสำเร็จ” ในการทดลองใช้ Bernoulli


13

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

ถ้าฉันต้องการวิศวกรรมย้อนกลับโดยทั่วไปแล้วโปรแกรมเมอร์ใช้ค่าอะไรในการพิจารณาความถี่ที่ได้รับรางวัล (ประมาณ 15-30%) ฉันจะคำนวณจำนวนตัวอย่างที่ฉันต้องการได้อย่างไร

ฉันเริ่มต้นด้วยส่วน "เครื่องมือประมาณความน่าจะเป็นจริง" ที่นี่: Checking_whether_a_coin_is_fairแต่ฉันไม่แน่ใจว่าฉันกำลังมุ่งหน้าไปทางที่ถูกต้อง ฉันได้รับผลลัพธ์จาก ~ 1,000 ตัวอย่างที่จำเป็นสำหรับข้อผิดพลาดสูงสุด 3% ที่ความมั่นใจ 95%

ท้ายที่สุดนี่คือสิ่งที่ฉันพยายามแก้ไข:

  • กิจกรรม # 1 ให้รางวัล 1.0R, X% ของเวลา
  • กิจกรรม # 2 ให้รางวัล 1.4R กับ Y% ของเวลา

ฉันต้องการประเมิน X & Y อย่างแม่นยำพอที่จะตัดสินว่ากิจกรรมใดมีประสิทธิภาพมากกว่า ขนาดตัวอย่างที่มีขนาดใหญ่เป็นปัญหาเนื่องจากฉันสามารถได้รับ 1 ตัวอย่างทุก ๆ 20 นาทีเท่านั้น


6
" ฉันได้ผลลัพธ์ประมาณ 1,000 ตัวอย่างที่ต้องการสำหรับข้อผิดพลาดสูงสุด 3% ที่ความมั่นใจ 95% " --- สวยมาก นั่นเป็นเหตุผลที่โพลมักจะสุ่มตัวอย่างประมาณ 1,000 คน ... จากนั้นรายงานความผิดพลาดตามลำดับที่ 3% มันใช้งานได้ค่อนข้างดีเมื่อเปอร์เซ็นต์ไม่ใกล้เคียงกับ 0 หรือ 1 (กว้างเกินไปในกรณีเหล่านั้น)
Glen_b -Reinstate Monica

1
คุณหมายถึงอะไร "ซึ่งมีประสิทธิภาพมากกว่า" คุณหมายถึง "เหตุการณ์ใดที่มีรางวัลที่คาดหวังมากกว่านี้"
Glen_b -Reinstate Monica

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

2
คุณสามารถใช้samplig เรียงลำดับซึ่งขนาดตัวอย่างไม่ได้รับการแก้ไขล่วงหน้า ข้อดีของวิธีนี้คือมันรับประกันความมั่นใจไม่ว่าจะมีความน่าจะเป็น (ไม่ทราบ) ดูตัวอย่างที่นี่ ; พิเศษที่อ้างอิงสุดท้ายกระดาษ
หลุยส์ Mendo

คำตอบ:


5

สมมติว่าการทดลองของแต่ละบุคคลมีความเป็นอิสระคุณสังเกตทวินามตัวแปร ที่คุณตัดสินใจในและต้องการที่จะประเมินพีตอนนี้การประมาณความเป็นไปได้สูงสุดของเศษส่วนตัวอย่างมีความแปรปรวนซึ่งทำได้สำหรับ\ ดังนั้นข้อผิดพลาดมาตรฐานคือ{n}} ช่วงความเชื่อมั่น aprroximate ตัวอย่างขนาดใหญ่มีข้อผิดพลาดมาตรฐานประมาณครึ่งความกว้างครึ่งหนึ่งดังนั้นเพื่อให้ได้สูงสุดที่คุณต้องแก้ ซึ่งให้n พีพีพี = X / n P ( 1 - P )

XBin(n,p)
nppp^=X/n p=1p(1p)n14n1/p=12 0.0321/4n=12n0.03n1112p
22n0.03
n11121112 ตอนนี้คุณสามารถแก้ไขข้อกำหนดอื่น ๆ สำหรับ halfwidth ได้เช่นเดียวกัน หากคุณรู้ว่า (หรือเต็มใจที่จะสันนิษฐาน) ว่านั้นอยู่ห่างจาก 0.5 คุณสามารถทำได้ด้วยการสังเกตที่ค่อนข้างน้อยp

2

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

ขนาดของตัวอย่างจะแตกต่างกันไปตามฟังก์ชั่นของค่าฮาร์ดโค้ด

ดังนั้นนี่คือรหัส:

#main code
#want 95% CI to be no more than 3% from prevalence
#expect prevalence around 15% to 30%
#think sample size is ~1000

my_prev <- seq(from=0.15, to=0.30, by = 0.002)

samp_sizes <- seq(from=400, to=800, by = 1)
samp_sizes

N_loops <- 2000

store <- matrix(0,
                nrow = length(my_prev)*length(samp_sizes),
                ncol = 3)
count <- 1

#for each prevalence
for (i in 1:length(my_prev)){

     #for each sample size
     for(j in 1:length(samp_sizes)){

          temp <- 0

          for(k in 1:N_loops){

               #draw samples
               y <- rbinom(n = samp_sizes[j],
                           size = 1,
                           prob = my_prev[i])

               #compute prevalence, store
               temp[k] <- mean(y)

          }

          #compute 5% and 95% of temp
          width <-  diff(quantile(x = temp,probs = c(0.05,0.95)))

          #store samp_size, prevalence, and CI half-width
          store[count,1] <- my_prev[i]
          store[count,2] <- samp_sizes[j]
          store[count,3] <- width[[1]]

          count <- count+1
     }

}


store2 <- numeric(length(my_prev))

#go through store
for(i in 1:length(my_prev)){
     #for each prevalence
     #find first CI half-width below 3%
     #store samp_size

     idx_p <- which(store[,1]==my_prev[i],arr.ind = T)
     idx_p

     temp <- store[idx_p,]
     temp

     idx_2 <- which(temp[,3] <= 0.03*2, arr.ind = T)
     idx_2

     temp2 <- temp[idx_2,]
     temp2

     if (length(temp2[,3])>1){
     idx_3 <- which(temp2[,3]==max(temp2[,3]),arr.ind = T)
     store2[i] <- temp2[idx_3[1],2]
     } else {
          store2[i] <- temp2[2]
     }


}


#plot it
plot(x=my_prev,y=store2,
     xlab = "prevalence", ylab = "sample size")
lines(smooth.spline(x=my_prev,y=store2),col="Red")
grid()

และนี่คือพล็อตของขนาดตัวอย่างเทียบกับความชุกดังกล่าวซึ่งความไม่แน่นอนใน 95% CI สำหรับความชุกนั้นใกล้เคียงที่สุดที่จะเป็น 3% โดยไม่ต้องข้ามมัน±

ขนาดตัวอย่างเทียบกับความชุก

นอกเหนือจาก 50% ดูเหมือนว่าจำเป็นต้องมี "การสังเกตค่อนข้างน้อย" ตามที่ kjetil แนะนำ

ฉันคิดว่าคุณสามารถได้รับการประมาณความชุกที่ดีก่อน 400 ตัวอย่างและปรับกลยุทธ์การสุ่มตัวอย่างของคุณในขณะที่คุณไป ฉันไม่คิดว่าควรมีการเขย่าเบา ๆ ตรงกลางและคุณอาจชน N_loops มากถึง 10e3 และกระแทก "by" ใน "my_prev" ลงไปที่ 0.001


หากสิ่งนี้ช้าอาจเป็นเพราะคุณทำขั้นตอนเล็กเกินไป!
kjetil b halvorsen

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

1

ดูเหมือนว่าคุณต้องการที่จะประเมินสำหรับเหตุการณ์ # 1 คุ้มค่าของและเหตุการณ์ # 2 ค่าของYคุณสามารถใช้ความไม่เสมอภาคของ Hoeffdingเพื่อกำหนดขอบเขตได้ที่นี่หรือถ้าคุณต้องการสารเติมแต่งแทนที่จะเป็นขอบเขตแบบทวีคูณคุณสามารถใช้ขอบเขตของ Chernoffได้YXY

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