Je lis le livre Statistics (Freeman, Pisani, Purves) et j'essaie de reproduire un exemple où une pièce est lancée disons 50 fois, le nombre de têtes comptées et cela se répète 1000 fois.
Tout d'abord, j'ai gardé le nombre de lancers (taille de l'échantillon) à 1000 et augmenté les répétitions. Plus il y a de répétitions, plus les données correspondent à la courbe normale.
Ensuite, j'ai essayé de maintenir le nombre de répétitions à 1 000 et d'augmenter la taille de l'échantillon. Plus la taille de l'échantillon est grande, pire la courbe normale semble correspondre aux données. Cela semble être contradictoire avec l'exemple du livre qui se rapproche mieux de la courbe normale à mesure que la taille de l'échantillon augmente.
Je voulais voir ce qui se passerait si j'augmentais la taille de l'échantillon, mais avec un plus grand nombre de répétitions qui étaient fixées à 10 000. Cela semble également contredire le livre.
Des idées sur ce que je fais mal?
Code et graphiques ci-dessous.
%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. Expérience avec un nombre croissant de répétitions (taille d'échantillon fixe de 1000)
plot_hist(1000, 1000)
plot_hist(10000, 1000)
plot_hist(100000, 1000)
2. Expérience avec l'augmentation de la taille de l'échantillon (fixée à 1000 répétitions)
plot_hist(1000, 100)
plot_hist(1000, 1000)
plot_hist(1000, 10000)
3. Expérience avec l'augmentation de la taille de l'échantillon (fixée à 10 000 répétitions)
plot_hist(10000, 100)
plot_hist(10000, 1000)
plot_hist(10000, 10000)
plot_hist(10000, 100000)