Pensamiento computacional a través de STEAM con Sphero: Un ejercicio con estudiantes
de primero de secundaria
26
2024 | Revista Estudios de la Información, 2(1), 4-26.
https://doi.org/10.54167/rei.v2i1.1567
Anexo 3. Código en Python para realizar la prueba de hipótesis de Wilcoxon
import numpy as np
import scipy.stats as stats
import pandas as pd
# Datos extraídos de las columnas del anexo 1
pretest = [
5, 5, 8, 4, 9, 8, 5, 5, 5, 7, 4, 7, 3, 10, 3, 6, 4, 3, 8, 5, 7, 7, 4, 10, 3, 4, 8, 2, 7, 7,
8, 5, 6, 3, 7, 5, 6, 3, 8, 6, 5, 3, 3, 5, 5, 5, 5, 5, 8, 6, 5, 5, 7, 6, 6, 6, 4, 6, 5, 6, 3, 6,
3, 5, 5, 4, 8
]
postest = [
6, 8, 6, 5, 10, 5, 9, 5, 8, 6, 5, 5, 2, 11, 7, 3, 2, 5, 7, 7, 10, 8, 7, 9, 6, 9, 7, 4, 5, 7,
7, 9, 7, 7, 3, 8, 5, 5, 8, 5, 6, 5, 5, 7, 6, 7, 6, 4, 8, 5, 5, 8, 6, 8, 9, 11, 8, 5, 5, 6, 5, 6,
5, 5, 6, 5, 7
]
# Paso 2: Prueba de normalidad (Shapiro-Wilk)
stat_antes, p_antes = stats.shapiro(pretest)
stat_despues, p_despues = stats.shapiro(postest)
print("Prueba de normalidad para respuestas antes del curso:")
print("Estadístico W:", stat_antes)
print("Valor p:", p_antes)
print("\nPrueba de normalidad para respuestas después del curso:")
print("Estadístico W:", stat_despues)
print("Valor p:", p_despues)
# Evaluación de normalidad
alpha = 0.05
if p_antes > alpha:
print("Las respuestas antes del curso siguen una distribución normal (p > 0.05).")
else:
print("Las respuestas antes del curso NO siguen una distribución normal (p <= 0.05).")
if p_despues > alpha:
print("Las respuestas después del curso siguen una distribución normal (p > 0.05).")
else:
print("Las respuestas después del curso NO siguen una distribución normal (p <= 0.05).")
# Evaluación de si se puede proceder con la prueba t de Student
if p_antes > alpha and p_despues > alpha:
print("\nAmbas columnas pasaron la prueba de normalidad. Procedemos con la prueba t de
Student.")
# Paso 3: Prueba t de Student
t_stat, p_value = stats.ttest_rel(pretest, postest)
print("\nPrueba t de Student:")
print("Estadístico t:", t_stat)
print("Valor p:", p_value)
# Conclusión
if p_value < 0.05:
print("\nHay una diferencia estadísticamente significativa entre las medias antes y
después del curso (p < 0.05).")
else:
print("\nNo hay una diferencia estadísticamente significativa entre las medias antes y
después del curso (p >= 0.05).")
else:
print("\nNo todas las columnas pasaron la prueba de normalidad. No es apropiado realizar la
prueba t de Student.")
print("En su lugar, se realizará la prueba de Wilcoxon para muestras relacionadas.")
# Paso 3: Prueba de Wilcoxon de una cola
wilcoxon_stat, wilcoxon_p = stats.wilcoxon(pretest, postest, alternative='less')
print("\nPrueba de Wilcoxon (una cola, alternativa 'less'):")
print("Estadístico:", wilcoxon_stat)
print("Valor p:", wilcoxon_p)
# Conclusión
if wilcoxon_p < 0.05:
print("\nHay una diferencia estadísticamente significativa a favor de más respuestas
correctas después del curso según la prueba de Wilcoxon (p < 0.05).")
else:
print("\nNo hay una diferencia estadísticamente significativa a favor de más respuestas
correctas después del curso según la prueba de Wilcoxon (p >= 0.05).")