Estoy leyendo el libro de Estadísticas (Freeman, Pisani, Purves) y estoy tratando de reproducir un ejemplo en el que se lanza una moneda, digamos 50 veces, el número de caras contadas y esto se repite, digamos 1,000 veces.
Primero, mantuve el número de lanzamientos (tamaño de muestra) en 1000 y aumenté las repeticiones. Cuantas más repeticiones, mejor se ajustan los datos a la curva normal.
Luego, intenté mantener el número de repeticiones fijo en 1,000 y aumenté el tamaño de la muestra. Cuanto más grande era el tamaño de la muestra, peor parecía la curva normal ajustarse a los datos. Esto parece ser contradictorio con el ejemplo del libro que se aproxima mejor a la curva normal a medida que aumenta el tamaño de la muestra.
Quería ver qué sucedería si aumentara el tamaño de la muestra, pero con un mayor número de repeticiones que se fijaron en 10,000. Esto también parece contradecir el libro.
¿Alguna idea de lo que estoy haciendo mal?
Código y gráficos a continuación.
%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. Experimente con un número creciente de repeticiones (tamaño de muestra fijo de 1000)
plot_hist(1000, 1000)
plot_hist(10000, 1000)
plot_hist(100000, 1000)
2. Experimente con el aumento del tamaño de la muestra (fijado en 1000 repeticiones)
plot_hist(1000, 100)
plot_hist(1000, 1000)
plot_hist(1000, 10000)
3. Experimente con el aumento del tamaño de la muestra (fijado en 10,000 repeticiones)
plot_hist(10000, 100)
plot_hist(10000, 1000)
plot_hist(10000, 10000)
plot_hist(10000, 100000)