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)