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)
Respuestas:
En el segundo caso, al aumentar el número de lanzamientos, aumenta el número de contenedores en los que puede caer una sola prueba. Mientras que el primer caso del experimento 2 solo tiene un máximo de 100 contenedores que se pueden llenar, el último ejemplo tiene 10000 contenedores. Aumentó la "resolución" de su experimento en un factor 100 (es decir, un contenedor en su primer experimento ahora está representado por aproximadamente 100 en su segundo). Por supuesto, esto significa que esperaría requerir un factor de 100 datos más para llenar sus contenedores.
fuente
_ = ax.hist(sums, bins=35, edgecolor='black', linewidth=1.2, density=True)
), el tercer experimento ahora se aproxima a la curva normal.Puede pensar en un lanzamiento de moneda individual como un ensayo independiente de Bernoulli. Una prueba le dará cara / cruz o éxito / fracaso, respectivamente. Si repite esto, digamos 100,000 veces, el número promedio de caras estará muy cerca de 0.5, si la moneda es justa.
Ahora, si aumenta el número de intentos a 1,000 y mantiene la repetición en 1, obtendrá una secuencia de 1,000 éxitos / fracasos y no puede decir mucho sobre la probabilidad de observar, en promedio, 500 caras a menos que aumente el número de repeticiones para cada uno de esos ensayos independientes. A medida que aumenta el número de repeticiones, obtendrá una aproximación cada vez mejor a la distribución normal.
Para mí es más fácil pensar en las pruebas no como "lanzamientos" o "tamaños de muestra", sino como monedas separadas y las repeticiones como el número de lanzamientos de cada una de esas monedas. Entonces también tiene sentido intuitivamente que al aumentar el número de monedas (o pruebas), mientras se mantiene constante el número total de repeticiones (o lanzamientos), la aproximación de los datos a la distribución normal empeora.
fuente
Creo que las otras respuestas aquí son geniales, pero quería agregar una respuesta que se extienda a otra herramienta estadística.
Estás comenzando con una línea de base que crees que debería aproximarse a una curva normal, y luego vas desde allí para ver si puedes aproximar mejor una curva normal. Intente ir en la otra dirección y vea qué puede hacer para hacer un trabajo peor al aproximarse. Pruebe simulaciones en las que tenga 10 vueltas y 1000 repeticiones. Compare esto con las simulaciones donde tiene 1000 vueltas y 10 repeticiones. Debe quedar claro que el primer caso tiene la mejor aproximación.
La extensión que quiero hacer es ANOVA (análisis de varianza). Se ven muchos nuevos científicos de datos que tienen una comprensión deficiente de este problema y diseñan sus estudios para que tengan muchos cambios, pero pocas repeticiones. Tienen muchos datos, pero dicen menos de lo que les gustaría. Como medir cada hoja de un árbol, pero solo tener dos árboles. Podemos decir bastante sobre las hojas de esos dos árboles, pero no las hojas de los árboles en general. Habría sido mejor obtener una muestra mucho más pequeña de hojas y muchos árboles.
fuente
Para obtener una intuición adicional, considere lo siguiente:
Imagina que solo haces una sola repetición.
En ese caso, puede aumentar la cantidad de lanzamientos todo lo que desee, pero no se parecerá a una distribución normal. Y esto tiene sentido ya que su histograma solo tendrá un pico único.
La distribución normal es una aproximación para la distribución de probabilidad (de la distribución binomial).
Lo que hiciste no fue crear esta distribución. Pero en cambio, aproximó esta distribución utilizando un número limitado (y pequeño) de simulaciones. (y lo que descubrió es que esta aproximación empeora cuando aumenta el número de contenedores en el histograma)
Entonces ambos necesitan una gran cantidad de lanzamientos y repeticiones.
fuente