Ich lese das Statistikbuch (Freeman, Pisani, Purves) und versuche, ein Beispiel zu reproduzieren, in dem eine Münze etwa 50 Mal geworfen wird, die Anzahl der Köpfe gezählt wird und dies etwa 1.000 Mal wiederholt wird.
Zuerst habe ich die Anzahl der Würfe (Stichprobengröße) bei 1000 gehalten und die Wiederholungen erhöht. Je mehr Wiederholungen, desto besser passen die Daten zur normalen Kurve.
Als nächstes habe ich versucht, die Anzahl der Wiederholungen auf 1.000 zu beschränken und die Stichprobengröße zu erhöhen. Je größer die Stichprobe, desto schlechter schien die normale Krümmung zu den Daten zu passen. Dies scheint dem Buchbeispiel zu widersprechen, das sich mit zunehmender Stichprobengröße der normalen Kurve besser annähert.
Ich wollte sehen, was passieren würde, wenn ich die Stichprobe vergrößere, aber mit einer größeren Anzahl von Wiederholungen, die auf 10.000 festgelegt wurden. Dies scheint auch dem Buch zu widersprechen.
Irgendwelche Ideen, was ich falsch mache?
Code und Grafiken unten.
%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. Experimentieren Sie mit zunehmender Anzahl von Wiederholungen (fester Stichprobenumfang von 1000)
plot_hist(1000, 1000)
plot_hist(10000, 1000)
plot_hist(100000, 1000)
2. Experimentieren Sie mit zunehmender Probengröße (festgelegt auf 1000 Wiederholungen)
plot_hist(1000, 100)
plot_hist(1000, 1000)
plot_hist(1000, 10000)
3. Experimentieren Sie mit zunehmender Probengröße (festgelegt auf 10.000 Wiederholungen)
plot_hist(10000, 100)
plot_hist(10000, 1000)
plot_hist(10000, 10000)
plot_hist(10000, 100000)