การบูตสแตรปเหมาะสมกับข้อมูลต่อเนื่องนี้หรือไม่


11

ฉันเป็นมือใหม่ที่สมบูรณ์ :)

ฉันกำลังศึกษาขนาดตัวอย่าง 10,000 คนจากประชากรประมาณ 745,000 คน แต่ละตัวอย่างแสดงถึง "ความคล้ายคลึงกันของเปอร์เซ็นต์" กลุ่มตัวอย่างส่วนใหญ่อยู่ที่ประมาณ 97% -98% แต่มีไม่กี่คนที่อยู่ระหว่าง 60% ถึง 90% นั่นคือการกระจายตัวค่อนข้างเบ้ ประมาณ 0.6% ของผลลัพธ์เป็น 0% แต่สิ่งเหล่านี้จะได้รับการแยกจากตัวอย่าง

ค่าเฉลี่ยของตัวอย่าง 10,000 ตัวอย่างทั้งหมดคือ 97.7% และใน Excel StdDev คือ 3.20 ฉันเข้าใจว่า StdDev ไม่สามารถใช้งานได้ที่นี่เพราะผลลัพธ์ไม่ได้กระจายตามปกติ (และเนื่องจาก +3.20 จะทำให้คุณสูงกว่า 100%!)

คำถามของฉันคือ:

  1. การบูตสแตรป (แนวคิดใหม่สำหรับฉัน) เหมาะสมหรือไม่
  2. ฉันกำลังทำการบูตอย่างถูกต้องหรือไม่ :)
  3. ขนาดตัวอย่างที่เพียงพอคืออะไร

สิ่งที่ฉันทำคือการสุ่มตัวอย่างใหม่ (แทนที่) ผลลัพธ์ 10,000 รายการของฉันและคำนวณค่าเฉลี่ยใหม่ ฉันทำสิ่งนี้สองสามพันครั้งและเก็บค่าเฉลี่ยไว้ในอาร์เรย์ จากนั้นฉันคำนวณ "ค่าเฉลี่ยของค่าเฉลี่ย" และนี่คือผลลัพธ์ทางสถิติของฉัน ในการหาค่า 99% CI ฉันเลือกค่า 0.5% -th และค่า 99.5% -th ซึ่งจะสร้างช่วงที่แน่นมาก: 97.4% - 98.0% นี่เป็นผลลัพธ์ที่ถูกต้องหรือฉันกำลังทำอะไรผิดหรือเปล่า?

สำหรับขนาดตัวอย่างฉันกำลังสุ่มตัวอย่างเพียงประมาณ 1.3% ของประชากร - ฉันไม่รู้ว่านี่เป็น "เพียงพอ" หรือไม่ ฉันจะรู้ได้อย่างไรว่ากลุ่มตัวอย่างของฉันเป็นตัวแทนของประชากรหรือไม่ เป็นการดีที่ฉันต้องการจะมั่นใจ 99% ของค่าเฉลี่ยที่ +/- 0.50% เปอร์เซ็นต์คะแนน (เช่น 97.2% - 98.2%)

ขอบคุณล่วงหน้าสำหรับเคล็ดลับใด ๆ !

คำตอบ:


19

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

3.2%/10000=0.032%=0.00032

นั่นเล็กมาก - เล็กกว่าความแม่นยำคุณต้องการ±0.50%

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

รูปที่ 1

ดูเหมือนปกติมากใช่ไหม

ดังนั้นแม้ว่ามันจะดูเหมือนว่าคุณจะ bootstrapping อย่างถูกต้องร่วมมือไม่จำเป็นต้อง:สมมาตรช่วงความเชื่อมั่นสำหรับค่าเฉลี่ยจะได้รับตามปกติโดยการคูณข้อผิดพลาดมาตรฐานโดยเปอร์เซ็นต์ที่เหมาะสมของการกระจายปกติมาตรฐาน (เพื่อ ด้วยปัญญา, ) และย้ายระยะทางนั้นไปยังด้านข้างของค่าเฉลี่ย ในกรณีของคุณดังนั้นช่วงความมั่นใจจึงเป็นZ 1 - α / 200 Z 1 - α / 200 = 2.5758 99 %100-α%Z1-α/200Z1-α/200=2.575899%

(0.977-2.5758(0.032)/10000, 0.977+2.5758(0.032)/10000)=(97.62%,97.78%).

ขนาดตัวอย่างที่เพียงพอสามารถพบได้โดยการแปลงความสัมพันธ์นี้เพื่อแก้ปัญหาสำหรับขนาดตัวอย่าง ที่นี่มันบอกเราว่าคุณต้องการขนาดตัวอย่างรอบ ๆ

(3.2%/(0.5%/Z1-α/200))2272

นี่มีขนาดเล็กพอที่เราอาจต้องการตรวจสอบข้อสรุปอีกครั้งว่าการกระจายตัวตัวอย่างของค่าเฉลี่ยเป็นปกติ ฉันดึงตัวอย่างจากจากประชากรของฉันและ bootstrapped ค่าเฉลี่ย (สำหรับการทำซ้ำ ):2729999

รูปที่ 2

มันดูเป็นปกตินั่นเอง ในความเป็นจริงช่วงความเชื่อมั่นของ bootstrappedเกือบจะเหมือนกันกับ CI ปกติทฤษฎี\%)(97.16%,98.21%)(97.19%,98.24%)

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


Rรหัสเพื่อดำเนินการวิเคราะห์เหล่านี้และพล็อตกราฟิกเหล่านี้ดังต่อไปนี้ มันตัวอย่างจากประชากรที่มีการกระจาย Beta โดยมีค่าเฉลี่ยและ SD ของ0.0320.9770.032

set.seed(17)
#
# Study a sample of 10,000.
#
Sample <- rbeta(10^4, 20.4626, 0.4817)
hist(Sample)
hist(replicate(10^3, mean(rbeta(10^4, 20.4626, 0.4817))),xlab="%",main="1000 Sample Means")
#
# Analyze a sample designed to achieve a CI of width 1%.
#
(n.sample <- ceiling((0.032 / (0.005 / qnorm(1-0.005)))^2))
Sample <- rbeta(n.sample, 20.4626, 0.4817)
cat(round(mean(Sample), 3), round(sd(Sample), 3)) # Sample statistics
se.mean <- sd(Sample) / sqrt(length(Sample))      # Standard error of the mean
cat("CL: ", round(mean(Sample) + qnorm(0.005)*c(1,-1)*se.mean, 5)) # Normal CI
#
# Compare the bootstrapped CI of this sample.
#
Bootstrapped.means <- replicate(9999, mean(sample(Sample, length(Sample), replace=TRUE)))
hist(Bootstrapped.means)
cat("Bootstrap CL:", round(quantile(Bootstrapped.means, c(0.005, 1-0.005)), 5))

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