Análisis de Normalidad
Criterios para determinar normalidad

Testeo de normalidad
Puede resultar útil contar con criterios y herramientas para saber si una distribución es normal o de algún otro tipo. En muchos casos puede ser un puntapié inicial para un estudio.
Utilidad del testeo de normalidad
El testeo de normalidad es útil espacialmente para:
Pruebas de Hipótesis: Muchas pruebas estadísticas asumen que los datos son normales (por ejemplo, la prueba t de Student).
Inferencia Estadística: La construcción de intervalos de confianza y la estimación de parámetros se basan en la suposición de normalidad.
Modelos Lineales: La normalidad de los errores es un supuesto en los modelos de regresión lineal.
Criterios para determinar si un conjunto de datos se distribuye normalmente
Los criterios para determinar la normalidad de un conjunto de datos incluyen:
Valor p: En las pruebas estadísticas, se calcula un valor p que indica la probabilidad de que los datos se distribuyan normalmente. Un valor p menor que un umbral (usualmente 0.05) sugiere que los datos no siguen una distribución normal.
Visualización de los datos: Gráficos como el histograma y el Q-Q plot (Quantile-Quantile plot) son herramientas visuales comunes para evaluar la normalidad.
Histograma: Compara la forma de la distribución de los datos con la curva de una distribución normal.
Q-Q plot: Muestra cómo se comparan las cuantiles de los datos con las cuantiles de una distribución normal. Si los puntos caen aproximadamente en una línea recta, los datos son aproximadamente normales.
Estadísticas descriptivas: Evaluar la skewness y la kurtosis de los datos.
Métodos Comunes para el Testeo de Normalidad
Pruebas Gráficas:
Histograma: Un histograma de datos normalmente distribuidos debería mostrar una forma de campana simétrica. Es preciso ver la forma. Suele ser util combinar con KDE.
Gráfico Q-Q (Quantile-Quantile): Un gráfico Q-Q compara los cuantiles observados con los cuantiles teóricos de una distribución normal. Si los datos son normales, los puntos deberían alinearse aproximadamente en una línea recta.Pruebas Estadísticas:
Prueba de Shapiro-Wilk: Evalúa la hipótesis nula de que los datos provienen de una distribución normal. Un p-valor mayor que 0.05 sugiere que no podemos rechazar la hipótesis nula (los datos son normales).
Prueba de Kolmogorov-Smirnov (K-S): Compara la distribución de la muestra con una distribución de referencia (como la normal). Un p-valor mayor que 0.05 sugiere que los datos son normales.
Prueba de Anderson-Darling: Una modificación de la prueba K-S que da más peso a los valores extremos. Si el estadístico es menor que el valor crítico, no podemos rechazar la hipótesis nula (los datos son normales).
Prueba de Jarque-Bera: Basada en los coeficientes de curtosis y asimetría. Un p-valor mayor que 0.05 sugiere que los datos son normales.
Herramientas en Python SciPy para determinar la normalidad de un conjunto de datos
En Python, especialmente usando SciPy, hay varias pruebas estadísticas para determinar la normalidad de un conjunto de datos:
Shapiro-Wilk Test (
scipy.stats.shapiro
): Una prueba muy popular para la normalidad, adecuada para muestras pequeñas.Anderson-Darling Test (
scipy.stats.anderson
): Otra prueba que es útil para muestras pequeñas y tiene diferentes variantes para diferentes distribuciones.Kolmogorov-Smirnov Test (
scipy.stats.kstest
): Esta prueba compara la muestra con una distribución de referencia, aunque se usa comúnmente con distribuciones uniformes.D'Agostino's K-squared Test (
scipy.stats.normaltest
): Esta prueba combina las pruebas de skewness y kurtosis para evaluar la normalidad.
Librerías, objetos y métodos específicos de Python para determinar la función de distribución que mejor representa un conjunto de datos
Para determinar la función de distribución que mejor representa un conjunto de datos, puedes usar las siguientes librerías y métodos en Python:
SciPy: Proporciona herramientas para ajustar datos a diversas distribuciones.
scipy.stats
: Contiene funciones para ajustar distribuciones y realizar pruebas de bondad de ajuste.
scipy.stats.norm.fit
: Ajusta una distribución normal a los datos.
scipy.stats.kstest
: Prueba de Kolmogorov-Smirnov para evaluar el ajuste de una distribución.
scipy.stats.chisquare
: Prueba de chi-cuadrado para evaluar el ajuste de una distribución.
Statsmodels: Proporciona más herramientas estadísticas y visualizaciones.
statsmodels.distributions
: Módulo para trabajar con distribuciones.
statsmodels.api.ProbPlot
: Crea Q-Q plots para evaluar visualmente el ajuste de una distribución.
Fitter: Librería específica para ajustar distribuciones y comparar el ajuste de diferentes distribuciones.
fitter.Fitter
: Objeto principal para ajustar distribuciones.
Uso de las pruebas de normalidad
En mi repositorio de git-hub he compartido las siguientes pruebas de normalidad en un jupiter-notebook:
Shapiro-Wilk Test Evalúa la hipótesis nula de que una muestra proviene de una distribución normal. Es una prueba muy sensible para muestras pequeñas. Shapiro-Wilk Test: ShapiroResult(statistic=0.9983408586650224, pvalue=0.45528206840858154) Si el valor p es menor que 0.05, se rechaza la hipótesis nula, sugiriendo que los datos no son normales.
Anderson-Darling Test Evalúa la hipótesis nula de que los datos siguen una distribución específica (por defecto, normal). Anderson-Darling Test: AndersonResult(statistic=0.44200822290179076, critical_values=array([0.574, 0.653, 0.784, 0.914, 1.088]), significance_level=array([15. , 10. , 5. , 2.5, 1. ]), fit_result= params: FitParams(loc=0.0679294632361939, scale=1.0564448832561808) success: True message: '`anderson` successfully fit the distribution to the data.') El resultado incluye un estadístico de prueba y una serie de valores críticos. Si el estadístico es mayor que los valores críticos correspondientes a ciertos niveles de significancia, se rechaza la hipótesis nula.
D'Agostino's K-squared Test Compara una muestra con una distribución de referencia (normal en este caso). D'Agostino's K-squared Test: NormaltestResult(statistic=2.253681017574136, pvalue=0.3240554911779068) Si el valor p es menor que 0.05, se rechaza la hipótesis nula, sugiriendo que los datos no son normales.
Ejemplo: testeo de normalidad para una curva normal pero no tanto
La figura correspondiente muestra un testeo de normalidad utilizando Python, aplicando tanto métodos gráficos como pruebas estadísticas, para una muestra normal pero no exacta.
Este ejemplo se encuentra desarrollado en python en jupyter notebook en github.
Interpretación de los resultados
Histograma y Gráfico Q-Q:
El histograma con la curva de densidad (KDE) muestra si los datos siguen una forma de campana simétrica.
En el gráfico Q-Q, si los puntos se alinean aproximadamente en una línea recta, indica que los datos son aproximadamente normales.Prueba de Shapiro-Wilk:
Evaluamos la hipótesis nula de que los datos provienen de una distribución normal.
Un p-valor mayor que 0.05 sugiere que no podemos rechazar la hipótesis nula (los datos son normales).Prueba de Kolmogorov-Smirnov (K-S):
Compara la distribución de la muestra con una distribución normal de referencia.
Un p-valor mayor que 0.05 sugiere que los datos son normales.Prueba de Anderson-Darling:
Evalúa la normalidad dando más peso a los valores extremos.
Si el estadístico es menor que el valor crítico, no podemos rechazar la hipótesis nula (los datos son normales).Prueba de Jarque-Bera:
Basada en la curtosis y asimetría de los datos.
Un p-valor mayor que 0.05 sugiere que los datos son normales.



