Leyendo comentario de compañeros me motive en realizar analisis extras con la ayuda de ChatGPT.
1. Prueba de Normalidad (Test de Shapiro-Wilk)
from scipy.stats import shapiro
# Filtrar los datos para eliminar valores NaN, ya que la prueba de Shapiro-Wilk no los manejaweights = nhanes_df['weight'].dropna()
# Realizar el test de Shapiro-Wilkstat, p = shapiro(weights)print('Statistics=%.3f, p=%.3f' % (stat, p))
# Interpretar el resultadoif p > 0.05: print('La muestra parece provenir de una distribución normal (no se rechaza H0)')else: print('La muestra no parece provenir de una distribución normal (se rechaza H0)')
Resultado: Statistics=0.943, p=0.000
Interpretación: La prueba de Shapiro-Wilk rechaza la hipótesis nula de normalidad, indicando que los datos de peso no siguen una distribución normal. La advertencia que se muestra sugiere que el valor p puede no ser preciso debido a que el tamaño de la muestra supera los 5000 registros. En tales casos, es común que la prueba de Shapiro-Wilk muestre una sensibilidad alta a las desviaciones de la normalidad debido al gran tamaño de la muestra.
2.Prueba de Homocedasticidad (Test de Levene)
from scipy.stats import levene
# Obtener grupos de datos por génerogroup_female = nhanes_df[nhanes_df['gender'] == 'Female']['weight'].dropna()group_male = nhanes_df[nhanes_df['gender'] == 'Male']['weight'].dropna()
# Realizar el test de Levenestat, p = levene(group_female, group_male)print('Statistics=%.3f, p=%.3f' % (stat, p))
# Interpretar el resultadoif p > 0.05: print('Las varianzas son iguales entre los grupos (no se rechaza H0)')else: print('Las varianzas no son iguales entre los grupos (se rechaza H0)')
Resultado: Statistics=2.923, p=0.087
Interpretación: El resultado de la prueba de Levene indica que no hay evidencia suficiente para rechazar la hipótesis nula, lo que sugiere que las varianzas entre los grupos de género son iguales. Esto es bueno para los análisis subsiguientes que asuman igualdad de varianzas entre grupos.
3.Prueba t de Student para muestras independientes (con ajuste para varianzas desiguales)
from scipy.stats import ttest_ind
# Realizar la prueba t de Student con ajuste para varianzas desigualesstat, p = ttest_ind(group_female, group_male, equal_var=False)print('Statistics=%.3f, p=%.3f' % (stat, p))
# Interpretar el resultadoif p > 0.05: print('No hay diferencia significativa en las medias de los pesos entre géneros (no se rechaza H0)')else: print('Existe una diferencia significativa en las medias de los pesos entre géneros (se rechaza H0)')
Resultado: Statistics=-22.367, p=0.000
Interpretación: La prueba t para muestras independientes muestra un resultado estadísticamente significativo, lo que indica que hay una diferencia significativa en las medias de los pesos entre géneros. Dado que la p es extremadamente baja, podemos rechazar con confianza la hipótesis nula de igualdad de medias.
## Implicaciones y Pasos Adicionales
Dado que la prueba de Shapiro-Wilk mostró que los datos no son normales, es importante considerar el uso de métodos no paramétricos como alternativa a la prueba t de Student, especialmente cuando se tratan grandes muestras. Aunque la prueba de Levene sugirió homocedasticidad, la falta de normalidad podría afectar la validez de la prueba t.
## Correccion de la logica detras del codigo que nos proporciono el profesor
from scipy import stats
# Filtrar los datos para seleccionar solo las columnas de género y peso y eliminar valores NaNweights_df = nhanes_df[['gender', 'weight']].dropna()
# Separar los pesos por génerofemale_weight = weights_df[weights_df['gender'] == 'Female']['weight']male_weight = weights_df[weights_df['gender'] == 'Male']['weight']
# Determinar el tamaño de la muestra seguro para realizar pruebas de normalidadsample_size = min(5000, len(female_weight), len(male_weight))
# Verificar la normalidad de las distribuciones de peso si el tamaño de la muestra es suficienteif sample_size > 0: print("Normalidad (Female):", stats.shapiro(female_weight.sample(sample_size, random_state=1))) print("Normalidad (Male):", stats.shapiro(male_weight.sample(sample_size, random_state=1)))
# Realizar una prueba t de Student para muestras independientes (si ambos grupos son normales) # o usar Mann-Whitney si no se cumple la normalidad if stats.shapiro(female_weight.sample(sample_size, random_state=1))[1] > 0.05 and stats.shapiro(male_weight.sample(sample_size, random_state=1))[1] > 0.05: print("Prueba t de Student:", stats.ttest_ind(female_weight, male_weight, equal_var=True)) else: print("Prueba de Mann-Whitney:", stats.mannwhitneyu(female_weight, male_weight))else: print("No hay suficientes datos para realizar la prueba.")
Los resultados que has obtenido de las pruebas de Shapiro-Wilk y de Mann-Whitney U son muy informativos y permiten tomar decisiones sobre cómo proceder con el análisis de tus datos:
Resultados de la Prueba de Normalidad (Shapiro-Wilk)
- Femenino: Estadístico = 0.918, Valor p = 4.799e-36
- Masculino: Estadístico = 0.944, Valor p = 7.328e-31
Ambos grupos muestran un valor p extremadamente pequeño, lo cual indica que debemos rechazar la hipótesis nula de que los datos se distribuyen normalmente para ambos géneros. Esto confirma que los pesos, tanto en hombres como en mujeres, no siguen una distribución normal.
Implicaciones
La falta de normalidad en las distribuciones de peso sugiere que métodos estadísticos que asumen normalidad, como la prueba t de Student para muestras independientes, no son apropiados en este caso. Esto justifica el uso de métodos no paramétricos, que no requieren la suposición de normalidad.
Resultado de la Prueba de Mann-Whitney
- Estadístico de Mann-Whitney U = 2403846.5
- Valor p ≈ 0.000 (6.131e-130)
El resultado extremadamente significativo del valor p en la prueba de Mann-Whitney U indica que hay una diferencia significativa en las distribuciones de peso entre los géneros. Podemos concluir que la distribución del peso es distinta entre hombres y mujeres en tu muestra de datos.
Conclusiones y Pasos Siguientes
- Diferencias Significativas: El análisis confirma que existen diferencias estadísticamente significativas en el peso entre géneros, las cuales son robustas dado que no dependen de supuestos de normalidad.
- Exploración de Factores Contribuyentes: Puedes investigar más a fondo qué factores podrían estar contribuyendo a estas diferencias. Por ejemplo, considerar variables relacionadas con el estilo de vida, salud general, y factores socioeconómicos.
- Análisis Adicional: Dado que se confirmaron diferencias en la distribución de los pesos, sería útil realizar análisis adicionales para entender la naturaleza de estas diferencias, como calcular medias, medianas, modas, y quizás realizar análisis de percentiles para entender mejor la estructura de los datos.
- Visualización de Datos: Sería útil visualizar las distribuciones de peso para cada género usando histogramas, box plots o gráficos de densidad para obtener una representación visual clara de cómo se comparan las distribuciones.
Este enfoque integral no solo confirma las diferencias entre grupos, sino que también establece una base sólida para investigaciones más detalladas que puedan explicar por qué existen estas diferencias y cómo se podrían abordar en contextos aplicados como la salud pública o el desarrollo de políticas.