Saya membaca buku Statistik (Freeman, Pisani, Purves) dan saya mencoba mereproduksi contoh di mana koin dilemparkan katakan 50 kali, jumlah kepala dihitung dan ini diulang katakan 1.000 kali.
Pertama, saya menjaga jumlah lemparan (ukuran sampel) pada 1000 dan meningkatkan pengulangan. Semakin banyak pengulangan, semakin baik data sesuai dengan kurva normal.
Jadi selanjutnya, saya mencoba menjaga jumlah pengulangan tetap pada 1.000 dan meningkatkan ukuran sampel. Semakin besar ukuran sampel, semakin buruk kurva normal tampaknya sesuai dengan data. Ini tampaknya bertentangan dengan contoh buku yang mendekati perkiraan kurva normal seiring dengan meningkatnya ukuran sampel.
Saya ingin melihat apa yang akan terjadi jika saya menambah ukuran sampel, tetapi dengan jumlah pengulangan yang lebih besar yaitu 10.000. Ini tampaknya juga bertentangan dengan buku itu.
Ada ide yang saya lakukan salah?
Kode dan grafik di bawah ini.
%matplotlib inline
def plot_hist(num_repetitions, num_tosses):
tosses = np.random.randint(0, 2, size=[num_repetitions, num_tosses])
sums = np.apply_along_axis(lambda a: np.sum(a == 1), 1, tosses)
xmin, xmax = min(sums), max(sums)
lnspc = np.linspace(xmin, xmax, len(sums))
m, s = stats.norm.fit(sums) # get mean and standard deviation
pdf_g = stats.norm.pdf(lnspc, m, s) # now get theoretical values in our interval
bins = np.arange(xmin, xmax) - 0.5
step = int((xmax - xmin)/5)
fig, ax = plt.subplots()
_ = ax.hist(sums, bins, edgecolor='black', linewidth=1.2, density=True)
_ = ax.plot(lnspc, pdf_g, label="Norm", color='red')
_ = ax.set_xticks(bins[::step] + 0.5)
_ = ax.set_title('{:,} tosses - {:,} repetitions'.format(num_tosses, num_repetitions))
1. Percobaan dengan meningkatkan jumlah pengulangan (ukuran sampel tetap 1000)
plot_hist(1000, 1000)
plot_hist(10000, 1000)
plot_hist(100000, 1000)
2. Eksperimen dengan meningkatkan ukuran sampel (ditetapkan pada 1000 pengulangan)
plot_hist(1000, 100)
plot_hist(1000, 1000)
plot_hist(1000, 10000)
3. Eksperimen dengan peningkatan ukuran sampel (ditetapkan pada 10.000 pengulangan)
plot_hist(10000, 100)
plot_hist(10000, 1000)
plot_hist(10000, 10000)
plot_hist(10000, 100000)
Jawaban:
Dalam kasus kedua, dengan meningkatkan jumlah lemparan, Anda menambah jumlah sampah yang bisa dicoba oleh satu percobaan. Sementara kasus pertama percobaan 2 hanya memiliki maksimal 100 nampan yang dapat diisi, contoh terakhir memiliki 10.000 nampan. Anda meningkatkan "resolusi" percobaan Anda dengan faktor 100 (yaitu, satu nampan di percobaan pertama Anda sekarang diwakili oleh sekitar 100 dalam percobaan kedua Anda). Tentu saja ini berarti Anda akan membutuhkan 100 faktor untuk mengisi lebih banyak tempat.
sumber
_ = ax.hist(sums, bins=35, edgecolor='black', linewidth=1.2, density=True)
) percobaan ketiga sekarang mendekati kurva normal.Anda dapat menganggap flip koin individu sebagai uji coba Bernoulli independen. Satu percobaan akan memberi Anda masing-masing kepala / ekor atau keberhasilan / kegagalan, masing-masing. Jika Anda mengulangi ini mengatakan 100.000 kali, jumlah rata-rata kepala akan sangat dekat dengan 0,5, jika koin itu adil.
Sekarang jika Anda meningkatkan jumlah uji coba menjadi 1.000 dan mempertahankan pengulangan pada 1, Anda akan mendapatkan urutan 1.000 keberhasilan / kegagalan dan tidak bisa mengatakan banyak tentang kemungkinan mengamati, rata-rata, 500 kepala kecuali jika Anda menambah jumlah pengulangan untuk masing-masing uji coba independen. Dengan meningkatnya jumlah pengulangan, Anda akan mendapatkan perkiraan yang lebih baik dan lebih baik untuk distribusi normal.
Bagi saya lebih mudah untuk memikirkan percobaan bukan sebagai "lemparan" atau "ukuran sampel" tetapi bukannya koin yang terpisah dan pengulangan sebagai jumlah flips dari masing-masing koin. Maka secara intuitif juga masuk akal bahwa dengan meningkatkan jumlah koin (atau percobaan), sambil menjaga jumlah total pengulangan (atau membalik) konstan, perkiraan data ke distribusi normal menjadi lebih buruk.
sumber
Saya pikir jawaban lain di sini bagus, tetapi ingin menambahkan jawaban yang meluas ke alat statistik lain.
Anda mulai dengan garis dasar yang menurut Anda harus mendekati kurva normal, dan kemudian pergi dari sana untuk melihat apakah Anda bisa lebih baik memperkirakan kurva normal. Cobalah pergi ke arah lain, dan lihat apa yang dapat Anda lakukan untuk melakukan pekerjaan yang lebih buruk di aproksimasi. Cobalah simulasi di mana Anda memiliki 10 flips dan 1000 repetisi. Bandingkan ini dengan simulasi di mana Anda memiliki 1000 flips dan 10 repetisi. Harus jelas bahwa kasus sebelumnya memiliki perkiraan yang lebih baik.
Ekstensi yang ingin saya buat adalah ke ANOVA (analisis varian). Anda melihat banyak ilmuwan data baru yang kurang memahami masalah ini, dan merancang studi mereka sehingga mereka memiliki banyak kesalahan, tetapi hanya sedikit pengulangan. Mereka memiliki banyak data, tetapi dikatakan kurang dari yang mereka inginkan. Seperti mengukur setiap daun di pohon, tetapi hanya memiliki dua pohon. Kita dapat mengatakan sedikit tentang daun pada kedua pohon itu, tetapi tidak pada daun pada pohon secara umum. Sebaiknya Anda mengambil sampel daun yang jauh lebih kecil, dan mendapatkan banyak pohon.
sumber
Untuk mendapatkan intuisi tambahan pertimbangkan hal berikut:
Bayangkan Anda hanya melakukan satu pengulangan.
Dalam hal ini Anda dapat meningkatkan jumlah lemparan semua yang Anda inginkan tetapi tidak akan menyerupai distribusi normal. Dan ini masuk akal karena histogram Anda hanya akan memiliki satu puncak tunggal.
Distribusi normal adalah perkiraan untuk distribusi probabilitas (dari distribusi binomial).
Apa yang Anda lakukan adalah tidak membuat distribusi ini. Tetapi sebaliknya, Anda memperkirakan distribusi ini dengan menggunakan jumlah simulasi yang terbatas (dan kecil). (dan yang Anda temukan adalah perkiraan ini menjadi lebih buruk ketika Anda menambah jumlah tempat sampah di histogram)
Jadi, Anda berdua membutuhkan banyak pengulangan dan pengulangan.
sumber