0
1
Métodos estadísticos paramétricos y
no paramétricos asistidos con Python
y Matlab
Cordova Espinoza, Mariela Lizety; Ponte
Valverde, Segundo Ignacio; Panocca Orellana,
Walter Jacinto; Zapillado Huanco, Oscar
Adrian; Armas Juarez, Ricardo Antonio;
Asnate Salazar, Edwin Johny
© Cordova Espinoza, Mariela Lizety; Ponte
Valverde, Segundo Ignacio; Panocca Orellana,
Walter Jacinto; Zapillado Huanco, Oscar
Adrian; Armas Juarez, Ricardo Antonio;
Asnate Salazar, Edwin Johny, 2025
Primera edición (1ra. ed.): Octubre, 2025
Editado por:
Editorial Mar Caribe ®
www.editorialmarcaribe.es
Av. Gral. Flores 547, 70000 Col. del
Sacramento, Departamento de Colonia,
Uruguay.
Diseño de caratula e ilustraciones: Isbelia
Salazar Morote
Libro electrónico disponible en:
https://editorialmarcaribe.es/ark:/10951/is
bn.9789915698441
Formato: Electrónico
ISBN: 978-9915-698-44-1
ARK: ark:/10951/isbn.9789915698441
Editorial Mar Caribe (OASPA): Como miembro de la
Open Access Scholarly Publishing Association,
apoyamos el acceso abierto de acuerdo con el código
de conducta, transparencia y mejores prácticas de
OASPA para la publicación de libros académicos y de
investigación. Estamos comprometidos con los más
altos estándares editoriales en ética y deontología,
bajo la premisa de «Ciencia Abierta en América
Latina y el Caribe»
Editorial Mar Caribe, firmante 795 de 12.08.2024
de la Declaración de Berlín
"... Nos sentimos obligados a abordar los retos de Internet
como medio funcional emergente para la distribución del
conocimiento. Obviamente, estos avances pueden
modificar significativamente la naturaleza de la
publicación científica, así como el actual sistema de
garantía de calidad...." (Max Planck Society, ed. 2003.,
pp. 152-153).
CC BY-NC 4.0
Los autores pueden autorizar al público en general a
reutilizar sus obras únicamente con fines no
lucrativos, los lectores pueden utilizar una obra para
generar otra, siempre que se crédito a la
investigación, y conceden al editor el derecho a
publicar primero su ensayo bajo los términos de la
licencia CC BY-NC 4.0.
Editorial Mar Caribe se adhiere a la "Recomendación
relativa a la preservación del patrimonio documental,
comprendido el patrimonio digital, y el acceso al
mismo" de la UNESCO y a la Norma Internacional de
referencia para un sistema abierto de información
archivística (OAIS-ISO 14721). Este libro está
preservado digitalmente por ARAMEO.NET
2
Editorial Mar Caribe
Métodos estadísticos paramétricos y no
paramétricos asistidos con Python y Matlab
Colonia, Uruguay
2025
3
Índice
Introducción .............................................................................................................. 7
Capítulo 1. ................................................................................................................. 9
Tipos de Datos y Asunciones Epistemológicas en la Inferencia Estadística: Una
Dicotomía Paramétrica y No Paramétrica .................................................................. 9
1. La Dualidad de la Inferencia Estadística ............................................................. 9
2. Taxonomía de los Datos y Escalas de Medición: El Fundamento de la Selección
............................................................................................................................ 10
2.1 Datos Nominales: La Ausencia de Orden .................................................... 11
2.2 Datos Ordinales: La Jerarquía sin Distancia ................................................ 12
2.3 Datos de Intervalo y Razón (Continuos): El Dominio de la Distribución ..... 13
Tabla 1: Pruebas estadísticas según la naturaleza de los datos .......................... 13
3. Estadística Paramétrica: Arquitectura de Supuestos y Robustez ....................... 14
3.1 El Supuesto de Normalidad: Mitos y Realidades del Teorema del Límite
Central ............................................................................................................. 14
3.2 Homocedasticidad: El Supuesto Crítico de Varianza Constante .................. 16
3.3 Independencia: El Supuesto Irrenunciable .................................................. 17
4. Estadística No Paramétrica: Mecanismos, Potencia y la Falacia de "Libre de
Supuestos" ........................................................................................................... 17
4.1 Mecanismo de Rangos y Robustez .............................................................. 18
4.2 El Mito de "Libre de Supuestos" .................................................................. 18
4.3 Eficiencia Relativa Asintótica (ARE) ........................................................... 19
5. Análisis Comparativo Detallado de Procedimientos Estadísticos ..................... 20
5.1 Comparación de Dos Grupos Independientes ............................................. 20
Tabla 2: Prueba t de Student Vs. Prueba U de Mann-Whitney .......................... 20
5.2 Comparación de Muestras Dependientes (Pareadas) .................................. 21
5.3 Comparación de Tres o Más Grupos (ANOVA vs. Kruskal-Wallis) ............. 21
5.4 Diseños Factoriales e Interacciones: La Frontera Compleja .......................... 22
6. Temas Avanzados y Controversias Metodológicas ........................................... 23
6.1 ANCOVA No Paramétrico .......................................................................... 23
6.2 Datos Censurados y Análisis de Supervivencia ........................................... 24
6.3 Valores P: Exactos vs. Asintóticos ............................................................... 24
4
7. Informe de Resultados y Tamaños del Efecto ................................................... 25
7.1 Tamaños del Efecto para Pruebas No Paramétricas ..................................... 25
7.2 Recomendaciones de Reporte (Estilo APA) ................................................. 25
8. Implicaciones Prácticas .................................................................................... 26
Tabla 3: Guía de Selección de Pruebas .............................................................. 27
Capítulo 2. ............................................................................................................... 29
Tratado Exhaustivo sobre la Teoría de la Probabilidad Computacional: Enfoques
Matemáticos, Empíricos y Subjetivos Asistidos por Python ..................................... 29
1. El Paradigma Clásico y la Combinatoria Computacional ................................. 30
1.1 Fundamentos Epistemológicos de la Probabilidad Matemática ................... 30
1.2 Implementación Computacional: Espacios Muestrales y itertools ............... 31
2. El Paradigma Frecuentista y la Simulación Estocástica ..................................... 43
2.1 La Ontología de la Frecuencia y la Objetividad Física ................................. 43
2.2 La Ley de los Grandes Números (LLN) y la Convergencia Computacional . 43
3. Probabilidad Condicional y la Estructura de la Dependencia ........................... 47
3.1 Definición y la Falacia de la Inversión ......................................................... 47
3.2 Análisis de Datos Reales con pandas: Tablas de Contingencia .................... 47
4. El Modelo Binomial como Puente Teórico-Práctico .......................................... 49
4.1 La Distribución Binomial ............................................................................ 49
4.2 Visualización y Análisis con scipy.stats....................................................... 50
5. La Revolución Bayesiana y la Probabilidad Subjetiva ....................................... 52
5.1 El Cambio de Paradigma: De la Frecuencia a la Creencia ............................ 52
5.2 Inferencia Bayesiana y Conjugación en Python ........................................... 53
Capítulo 3. ............................................................................................................... 57
Herramientas Estadísticas en el Ecosistema Python: Un Análisis Exhaustivo .......... 57
1. El Cambio de Paradigma en la Computación Estadística .................................. 57
2. Fundamentos de la Estructura de Datos y Manipulación Estadística ................ 58
2.1. Arquitectura del DataFrame y Tipificación Semántica ............................... 58
2.2. Tratamiento de Valores Atípicos y Datos Faltantes .................................... 59
2.3. Agregación Avanzada: El Paradigma Split-Apply-Combine ...................... 59
Tabla 4: Características de Pyhon, R y SQL....................................................... 60
5
3. Inferencia Estadística y Modelado Explicativo: El Rol de Statsmodels .............. 61
3.1. Dicotomía de la API: Enfoque Matricial vs. Enfoque de Fórmulas.............. 61
3.2. Regresión Lineal y Diagnósticos Exhaustivos ............................................. 62
3.3. ANOVA y Modelos Lineales Generalizados (GLM) ................................... 63
3.4. Análisis de Series Temporales y Econometría ............................................ 64
4. Simplificación y Estadística Académica: El Ascenso de Pingouin ..................... 64
4.1. Filosofía de Diseño: "Tidy Statistics" .......................................................... 64
4.2. Cobertura de Pruebas Especializadas ......................................................... 65
5. Visualización Estadística: Evidencia Gráfica .................................................... 65
5.1. Seaborn: Visualización Orientada a Modelos ............................................. 65
5.2. Integración Orientada a Objetos con Matplotlib ......................................... 66
6. Interoperabilidad Transversal: El Puente con R ................................................ 67
6.1. Arquitectura de rpy2 y Conversión de Objetos .......................................... 67
6.2. Invocación de Funciones y Paquetes de R .................................................. 67
7. Integración con Sistemas Heredados: SAS y SPSS ............................................ 68
7.1. Orquestación de SAS con saspy ................................................................. 68
7.2. Interacción Bidireccional con SPSS ............................................................. 68
8. Flujos de Trabajo Aplicados y Casos de Uso..................................................... 69
8.1. Análisis de Ensayos Clínicos y Bioestadística ............................................. 69
8.2. Econometría y Series Temporales Financieras ............................................ 70
9. El Paisaje Futuro: Tendencias 2025 ................................................................... 70
Tabla 5: Comparativa Técnica de Bibliotecas Clave .......................................... 71
Capítulo 4. ............................................................................................................... 73
Informe Integral sobre Metodologías Estadísticas Paramétricas y No Paramétricas
Asistidas por Software en el Ecosistema Python ...................................................... 73
1. La Convergencia de la Teoría Estadística y la Computación Moderna .............. 73
2. Arquitectura del Ecosistema Estadístico en Python .......................................... 74
2.1 SciPy: El Núcleo Matemático de Bajo Nivel ................................................. 74
2.2 Statsmodels: El Rigor Econométrico ............................................................ 75
2.3 Pingouin: La Democratización de la Estadística Robusta ............................ 75
Tabla 6: Comparativa de Capacidades ............................................................. 76
6
3. La Fase Crítica: Verificación de Supuestos y Diagnóstico de Datos................... 77
3.1 El Supuesto de Normalidad: Matices y Verificación .................................... 77
3.2 El Supuesto de Homocedasticidad (Homogeneidad de Varianzas) ............. 79
4. Métodos Estadísticos Paramétricos: Análisis de Medias ................................... 79
4.1 La Prueba T de Student y sus Variantes ...................................................... 80
4.2 Análisis de Varianza (ANOVA) .................................................................. 81
5. Modelado Lineal: El Marco Unificador Paramétrico ......................................... 82
5.1 Regresión por Mínimos Cuadrados Ordinarios (OLS) ................................. 82
5.2 Regresión con Pingouin .............................................................................. 83
6. Métodos Estadísticos No Paramétricos: Robustez sobre Potencia ..................... 83
6.1 Lógica de Rangos y Pérdida de Información ............................................... 83
6.2 Pruebas de Comparación de Grupos (Equivalentes No Paramétricos) ........ 84
7. Análisis Post-hoc y Correcciones por Comparaciones Múltiples ...................... 85
7.1 Post-hoc Paramétrico: Tukey HSD .............................................................. 85
7.2 Post-hoc No Paramétrico: Prueba de Dunn ................................................. 85
7.3 Correcciones de P-valor en Pingouin .......................................................... 86
8. Análisis de Asociación: Correlación y Contingencia ......................................... 86
8.1 Correlación Bivariada ................................................................................. 86
8.2 Pruebas de Independencia (Chi-Cuadrado) ................................................ 87
9. Más Allá del Valor P: Tamaños del Efecto y Potencia ....................................... 87
9.1 Métricas de Tamaño del Efecto ................................................................... 87
9.2 Potencia Estadística (Power Analysis) ......................................................... 88
10. Recomendaciones para el Flujo de Trabajo ..................................................... 88
Conclusión .............................................................................................................. 90
Bibliografía.............................................................................................................. 93
7
Introducción
La investigación científica contemporánea y el análisis de datos operan en un
entorno de complejidad creciente. Ya no es suficiente con recolectar datos; la
necesidad actual reside en extraer inferencias válidas, reproducibles y robustas a
partir de ellos. En este contexto, la estadística se erige como el lenguaje fundamental
de la validación científica. Sin embargo, la enseñanza y aplicación tradicional de la
estadística a menudo ha separado la teoría matemática de la ejecución práctica.
Este libro, "Métodos estadísticos paramétricos y no paramétricos asistidos con
software en Python", nace con el propósito de cerrar esa brecha. Se presenta como una
obra integral que no solo revisa los fundamentos teóricos de las pruebas de hipótesis,
sino que instrumentaliza estos conceptos a través de Python, el lenguaje de
programación que ha redefinido la ciencia de datos a nivel global.
Uno de los puntos críticos en cualquier investigación cuantitativa es la
selección de la prueba estadística adecuada. Esta decisión a menudo intimida a
estudiantes e investigadores, llevándolos a cometer errores metodológicos, como
aplicar pruebas que asumen normalidad a datos que claramente no la poseen.
Exploraremos la potencia de los métodos clásicos (como la prueba T de Student
y ANOVA) que, bajo el cumplimiento de supuestos estrictos como la normalidad y
homocedasticidad, ofrecen estimaciones precisas y generalizables. Además,
reivindicaremos el valor de los métodos "libres de distribución" (como la U de Mann-
Whitney o Kruskal-Wallis). Lejos de ser herramientas de segunda categoría, estos
métodos ofrecen una robustez indispensable cuando trabajamos con muestras
pequeñas, datos ordinales o presencia de valores atípicos.
Una problemática frecuente en la comunidad investigadora es la predilección
automática por la estadística paramétrica. Tradicionalmente, la enseñanza de la
estadística ha privilegiado el uso de pruebas que asumen una distribución normal
8
(como la prueba T o ANOVA), a menudo ignorando la naturaleza real de los datos
biológicos, sociales o económicos, que frecuentemente presentan asimetrías o escalas
ordinales.
El problema radica en que, al violar los supuestos de normalidad y
homocedasticidad, las pruebas paramétricas pierden potencia y validez.
Paralelamente, existe un desconocimiento generalizado sobre la estadística no
paramétrica, la cual es frecuentemente subestimada o percibida erróneamente como
una alternativa de menor calidad, en lugar de ser reconocida como la herramienta
robusta y necesaria para datos que no se comportan idealmente.
El problema central que aborda esta obra es la necesidad de integrar, en un
solo recurso, el criterio estadístico para discernir entre métodos paramétricos y no
paramétricos, con la competencia técnica para implementarlos en un entorno de
código abierto como Python. La carencia de esta integración resulta en investigaciones
metodológicamente frágiles y tecnológicamente obsoletas. En consecuencia, antes de
abordar las pruebas de hipótesis y los modelos predictivos, es imperativo construir
una base sólida. Python no es una herramienta estadística monolítica como SPSS; es
un lenguaje de propósito general que se especializa mediante librerías.
Para tal fin, el libro se estructura desde tres dimensiones: (a) Metodológica, el
error de usar pruebas paramétricas cuando no corresponde; (b) Tecnológica, la
limitación del software cerrado frente a la programación; y (c) Pedagógica, la falta de
libros que unan teoría más la práctica moderna. Por ende, invitamos a los lectores a
distinguir entre variables numéricas (continuas/discretas) y categóricas
(nominales/ordinales) antes de elegir una prueba estadística.
9
Capítulo 1.
Tipos de Datos y Asunciones
Epistemológicas en la Inferencia
Estadística: Una Dicotomía Paramétrica y
No Paramétrica
1. La Dualidad de la Inferencia Estadística
La práctica de la inferencia estadística contemporánea se encuentra dividida,
tanto histórica como metodológicamente, en dos grandes paradigmas: el enfoque
paramétrico y el enfoque no paramétrico. Esta distinción no es meramente técnica o
algorítmica; representa una divergencia fundamental en la filosofía del análisis de
datos, en la ontología de las variables medidas y en la tolerancia al riesgo
epistemológico de asumir modelos teóricos sobre la realidad observada. La elección
entre una prueba paramétrica, como la prueba t de Student o el Análisis de Varianza
(ANOVA), y su contraparte no paramétrica, como la prueba U de Mann-Whitney o la
prueba de Kruskal-Wallis, constituye una de las decisiones más críticas en el diseño y
análisis de la investigación científica.1
Históricamente, la estadística paramétrica ha dominado el panorama
científico, impulsada por la elegancia matemática de la distribución normal y el
Teorema del Límite Central. Figuras como R.A. Fisher y Karl Pearson cimentaron un
edificio teórico basado en la premisa de que los fenómenos naturales podían
modelarse mediante familias de distribuciones de probabilidad definidas por un
número finito de parámetros (típicamente media \mu y varianza \sigma^2).1 Sin
embargo, la realidad de los datos empíricos particularmente en las ciencias sociales,
10
biomédicas y del comportamiento a menudo desafía la idealización gaussiana. Los
datos reales presentan asimetrías, valores atípicos, truncamientos y escalas de
medición que no alcanzan la continuidad perfecta requerida por los modelos clásicos.3
En respuesta a estas limitaciones, surgió la estadística no paramétrica,
frecuentemente denominada "estadística de distribución libre" (distribution-free
statistics). Este conjunto de métodos, que incluye procedimientos basados en rangos
(ranks) y permutaciones, ofrece una alternativa robusta cuando los supuestos
paramétricos son insostenibles. No obstante, persiste un malentendido generalizado
en la comunidad investigadora: la creencia de que los métodos no paramétricos están
"libres de supuestos" y son, por ende, una panacea universal para datos
problemáticos. Este informe desmantelará tal noción, demostrando que la estadística
no paramétrica posee su propio conjunto de exigencias rigurosas como la simetría
de distribuciones o la independencia estocástica cuya violación puede ser tan
perniciosa como la de la normalidad en las pruebas paramétricas.5
El presente documento tiene como objetivo proporcionar un análisis
exhaustivo, crítico y matizado de los tipos de datos y los supuestos subyacentes a
ambas ramas de la estadística. A través de una revisión profunda de la literatura
metodológica reciente, se explorarán las consecuencias de la violación de supuestos,
la robustez comparativa de los estimadores, la eficiencia relativa asintótica y las
controversias actuales sobre la potencia estadística y el manejo de interacciones en
diseños complejos.
2. Taxonomía de los Datos y Escalas de Medición:
El Fundamento de la Selección
La adecuación de un procedimiento estadístico está inexorablemente
11
vinculada a la naturaleza de la variable de respuesta. La clasificación clásica de escalas
de medición propuesta por Stevens (1946) nominal, ordinal, de intervalo y de
razón sigue siendo el marco referencial primario, aunque la estadística
computacional moderna tiende a simplificar esta tipología en variables categóricas
(factores) y continuas (numéricas). Comprender los matices de estas categorías es el
primer paso para evitar errores inferenciales graves.8
2.1 Datos Nominales: La Ausencia de Orden
En el nivel más básico de medición, los datos nominales actúan puramente
como etiquetas para clasificar observaciones en categorías mutuamente excluyentes y
exhaustivas, sin implicar ningún orden jerárquico ni distancia métrica. Ejemplos
clásicos incluyen el fenotipo biológico, la afiliación política o el grupo de tratamiento
en un ensayo clínico. Desde una perspectiva paramétrica, que depende de operaciones
aritméticas como el cálculo de medias y desviaciones estándar, los datos nominales
son intratables directamente. No tiene sentido calcular el "promedio" de los grupos
sanguíneos A, B y O.
Para este tipo de datos, la inferencia se basa necesariamente en frecuencias y
proporciones. Las pruebas de bondad de ajuste de Chi-cuadrado y las pruebas de
independencia (contingencia) son los estándares no paramétricos por excelencia,
evaluando si las frecuencias observadas discrepan significativamente de las esperadas
bajo un modelo nulo.9 Sin embargo, incluso aquí existen matices críticos: cuando el
tamaño de la muestra es pequeño y las frecuencias esperadas en las celdas de una
tabla de contingencia descienden por debajo de cierto umbral (típicamente 5), la
aproximación asintótica a la distribución Chi-cuadrado falla. En tales casos, se hace
imperativo el uso de métodos exactos, como la Prueba Exacta de Fisher, que calcula la
probabilidad exacta de obtener los datos observados basándose en la distribución
hipergeométrica, sin depender de aproximaciones asintóticas al infinito. 2, 10
12
2.2 Datos Ordinales: La Jerarquía sin Distancia
Los datos ordinales introducen una estructura de rango u orden entre las
categorías, pero carecen de una unidad de medida constante entre ellas. Un ejemplo
omnipresente en la investigación social y psicológica es la escala Likert (e.g.,
"Totalmente en desacuerdo" a "Totalmente de acuerdo"). Aunque asignamos números
(1 a 5) a estas respuestas, la distancia psicológica entre "1" y "2" no es necesariamente
igual a la distancia entre "4" y "5".
La postura purista: Sostiene que aplicar operaciones aritméticas (suma, media) a
datos ordinales es un error categórico, ya que los números son meras etiquetas
de orden. Bajo esta visión, solo los métodos no paramétricos basados en rangos
(como la U de Mann-Whitney o la correlación de Spearman) son válidos, ya que
preservan el orden sin asumir distancias.5
La postura pragmática: Argumenta, basándose en simulaciones de robustez, que
cuando las escalas ordinales tienen suficientes niveles (generalmente 5 o más) y
la distribución no es extremadamente asimétrica, las pruebas paramétricas como
la prueba t o el ANOVA son robustas y proporcionan resultados válidos con
mayor potencia.13
Sin embargo, la literatura sugiere precaución. Tratar datos ordinales como
continuos puede llevar a conclusiones erróneas si existen efectos de "suelo" o "techo"
(donde las respuestas se agrupan en los extremos) o si la relación entre la variable
latente subyacente y la escala ordinal no es lineal. Los métodos no paramétricos, al
transformar los datos brutos en rangos (1º, 2º, 3º...), eliminan la influencia de la métrica
desconocida y se centran puramente en la dominancia estocástica, ofreciendo una
alternativa teóricamente más segura para variables como estadios de cáncer o niveles
de dolor.5
13
2.3 Datos de Intervalo y Razón (Continuos): El Dominio de la
Distribución
Las variables continuas permiten, en teoría, una precisión infinita y poseen
distancias iguales entre intervalos adyacentes. Las escalas de intervalo (temperatura
Celsius) y de razón (tiempo, masa, Kelvin) son el insumo natural para la estadística
paramétrica. La existencia de una media y una varianza poblacional definibles
permite la construcción de estimadores eficientes. No obstante, la continuidad es una
condición necesaria pero no suficiente para el uso de métodos paramétricos. La forma
de la distribución de estos datos continuos es el factor dirimente.
Distribuciones Gaussianas: Si los datos siguen una curva de campana, los
métodos paramétricos (t-test, Pearson) son óptimos en términos de potencia y
eficiencia.14
Distribuciones de Colas Pesadas y Asimétricas: Datos como los tiempos de
reacción, los ingresos económicos o los recuentos de células a menudo siguen
distribuciones exponenciales, log-normales o de Poisson. En estos casos, la media
aritmética es un estimador ineficiente y altamente sensible a valores extremos.
Aquí, los métodos no paramétricos no son solo una "alternativa", sino que
pueden ser matemáticamente superiores, ofreciendo mayor potencia al mitigar el
impacto de la varianza inflada por las colas pesadas (ver Tabla 1).4
Tabla 1: Pruebas estadísticas según la naturaleza de los datos
Tipo de Dato
Características
Principales
Medida de Tendencia
Central Preferida
Familia de Pruebas
Recomendada
Nominal
Categorías sin orden,
etiquetas
Moda
No paramétrica (Chi-
cuadrado, Fisher)
14
Ordinal
Orden jerárquico,
intervalos desiguales
Mediana
No paramétrica
(Mann-Whitney,
Kruskal-Wallis)
Intervalo/Razón
(Normal)
Continuo, distancias
iguales, simétrico
Media
Paramétrica (t-test,
ANOVA, Pearson)
Intervalo/Razón
(Sesgado)
Continuo, presencia
de valores atípicos,
asimetría
Mediana
No paramétrica o
Transformación +
Paramétrica
3. Estadística Paramétrica: Arquitectura de
Supuestos y Robustez
La estadística paramétrica se basa en la estimación de parámetros
poblacionales (\mu, \sigma, \beta) a partir de datos muestrales. Para que estas
estimaciones sean insesgadas y las inferencias (valores p, intervalos de confianza) sean
válidas, los datos deben cumplir con un conjunto estricto de condiciones. La violación
de estos supuestos no siempre invalida el análisis, pero requiere una comprensión
profunda de la robustez de cada prueba frente a desviaciones específicas.
3.1 El Supuesto de Normalidad: Mitos y Realidades del Teorema
del Límite Central
El supuesto más conocido es que los datos provienen de una población con
distribución normal. Sin embargo, esta afirmación requiere matices críticos que a
menudo se pierden en la práctica básica.
Lo que realmente se asume:
Para las pruebas basadas en el Modelo Lineal General (GLM), como el
15
ANOVA y la regresión lineal, el supuesto de normalidad aplica a los errores (residuos)
del modelo, no a las variables predictoras ni, estrictamente hablando, a la variable de
respuesta bruta (aunque si la respuesta es normal dentro de cada grupo, los residuos
suelen serlo).17, 18
El rol del Teorema del Límite Central (TLC):
El TLC establece que, dada una muestra suficientemente grande, la
distribución muestral de la media se aproximará a la normalidad independientemente
de la distribución de la población original. 19, 20 Esto confiere a las pruebas paramétricas
(como la prueba t y el ANOVA) una notable robustez en muestras grandes.
¿Qué es "grande"? La regla empírica de N > 30 es a menudo citada, pero puede
ser insuficiente si la distribución original es extremadamente asimétrica o tiene
colas muy pesadas. En tales casos, se pueden requerir cientos de observaciones
para que el TLC estabilice las inferencias.21
Muestras Pequeñas: En muestras pequeñas (N < 30), el TLC no ofrece protección.
Aquí, las violaciones de la normalidad pueden distorsionar severamente las tasas
de error Tipo I (falsos positivos) y reducir la potencia estadística. El uso de
métodos no paramétricos se vuelve crítico en este escenario. 22, 23
La Paradoja de las Pruebas de Normalidad:
Un error común en el flujo de trabajo analítico es utilizar pruebas de hipótesis
formales, como Shapiro-Wilk o Kolmogorov-Smirnov, para decidir si usar estadística
paramétrica. Esto presenta una paradoja lógica:
1. En muestras pequeñas: Estas pruebas tienen muy baja potencia. Es probable que
no detecten desviaciones significativas de la normalidad, llevando al
investigador a usar erróneamente una prueba paramétrica cuando no debería.23
2. En muestras grandes: Estas pruebas son extremadamente sensibles. Detectarán
desviaciones triviales de la normalidad (e.g., una ligera curtosis) que no afectan
la validez de la prueba paramétrica (gracias al TLC). Esto lleva al investigador a
16
descartar innecesariamente métodos paramétricos potentes. 24,25,26
Recomendación: La inspección visual mediante gráficos Q-Q (Quantile-Quantile)
e histogramas es superior a las pruebas de significancia para evaluar la
normalidad. En un gráfico Q-Q, los residuos deben alinearse sobre la diagonal;
desviaciones en forma de "S" o "banana" indican problemas de asimetría o colas
pesadas.17
3.2 Homocedasticidad: El Supuesto Crítico de Varianza Constante
La homocedasticidad (homogeneidad de varianza) exige que la dispersión de
los datos sea constante a través de todos los grupos comparados (\sigma_1^2 =
\sigma_2^2 =... = \sigma_k^2) o a lo largo del rango de predictores en una regresión.17
Consecuencias de la Violación:
A diferencia de la normalidad, la prueba t de Student y el ANOVA clásico son
extremadamente vulnerables a la heterocedasticidad, especialmente cuando los
diseños son desbalanceados (diferentes tamaños de muestra por grupo).
Caso Peor: Si el grupo con el tamaño de muestra más pequeño (n pequeño) tiene
la varianza más grande (s^2 grande), la prueba t liberaliza el valor p, inflando la
tasa de error Tipo I mucho más allá del nivel nominal (\alpha = 0.05),
produciendo resultados espurios.30
Caso Conservador: Si el grupo grande tiene la varianza grande, la prueba se
vuelve excesivamente conservadora, perdiendo potencia (error Tipo II).31
Soluciones Metodológicas:
La comunidad estadística moderna recomienda abandonar la prueba t de
Student tradicional (que asume varianzas iguales) en favor de la Prueba t de Welch (o
ANOVA de Welch) como procedimiento por defecto. La prueba de Welch ajusta los
grados de libertad y no asume homocedasticidad, manteniendo el control del error
17
Tipo I y la potencia casi al mismo nivel que Student, incluso cuando las varianzas son
iguales.30
Las pruebas formales para homocedasticidad incluyen la Prueba de Levene
(basada en desviaciones absolutas de la media o mediana) y la Prueba de Bartlett.
Bartlett es más potente pero muy sensible a la no-normalidad, mientras que Levene es
más robusta. Sin embargo, al igual que con la normalidad, usar estas pruebas como
"guardianes" previos al análisis puede ser problemático; usar Welch por defecto es
una estrategia más segura.33
3.3 Independencia: El Supuesto Irrenunciable
Tanto la estadística paramétrica como la no paramétrica asumen que las
observaciones son independientes entre sí. Esto significa que el valor de una
observación no influye en ni predice el valor de otra.
Violaciones Comunes: Diseños de medidas repetidas no modelados,
anidamiento (estudiantes dentro de escuelas), autocorrelación temporal en series
de tiempo y pseudoreplicación.
Impacto: La dependencia reduce la varianza efectiva de la muestra. Si se ignora,
los errores estándar se subestiman drásticamente, lo que conduce a estadísticas
de prueba infladas y valores p artificialmente bajos (falsos positivos masivos).
Solución: Si la independencia se viola por diseño (e.g., medidas repetidas), se
deben usar pruebas específicas (t pareada, ANOVA de medidas repetidas,
Modelos Mixtos) o sus equivalentes no paramétricos (Wilcoxon, Friedman).12
4. Estadística No Paramétrica: Mecanismos,
Potencia y la Falacia de "Libre de Supuestos"
La estadística no paramétrica se define a menudo por la ausencia de
dependencia de una familia paramétrica de distribuciones. La mayoría de estas
18
pruebas operan transformando los datos originales en rangos (ranks). Por ejemplo, en
una muestra combinada de dos grupos, el valor más bajo recibe el rango 1, el siguiente
el rango 2, y así sucesivamente. La inferencia se realiza entonces sobre estos rangos.1
4.1 Mecanismo de Rangos y Robustez
La transformación a rangos es la fuente de la robustez no paramétrica.
Consideremos un conjunto de datos:
Media aritmética: 259.25 (altamente influenciada por 1000).
Rangos: El valor 1000 se convierte simplemente en "el más alto" (4).
Si el valor 1000 se cambiara a 1,000,000, la media cambiaría drásticamente, pero
los rangos permanecerían idénticos (1, 2, 3, 4). Esto demuestra por qué las
pruebas no paramétricas tienen un punto de ruptura alto (generalmente 50% para
la mediana), lo que significa que pueden tolerar una alta proporción de
contaminación por valores atípicos sin colapsar.37
4.2 El Mito de "Libre de Supuestos"
Una creencia peligrosa es que las pruebas no paramétricas no requieren
supuestos. Esto es falso. Para que las pruebas como Mann-Whitney o Kruskal-Wallis
sean válidas e interpretables, deben cumplirse condiciones específicas:
1. Variable Continua Subyacente: Aunque los datos observados sean ordinales o
rangos, la teoría asume que provienen de una variable latente continua. Esto
implica teóricamente que la probabilidad de empates (ties) es cero. En la práctica,
los empates ocurren y requieren correcciones algorítmicas en el lculo del
estadístico U o H, lo que puede reducir la potencia si los empates son excesivos.39
2. Forma de la Distribución (El Supuesto de Similitud): Este es el supuesto más
sutil y frecuentemente violado. Para interpretar una diferencia significativa en la
prueba U de Mann-Whitney como una "diferencia de medianas", las
19
distribuciones de los dos grupos deben tener la misma forma (incluyendo
varianza y asimetría), difiriendo solo en su ubicación (desplazamiento). Si las
formas son diferentes (e.g., un grupo es simétrico y el otro muy asimétrico, o
tienen varianzas muy distintas), la prueba U no compara medianas, sino
dominancia estocástica (P(X > Y) \neq 0.5). Bajo heterocedasticidad, la prueba de
Mann-Whitney puede arrojar un resultado significativo incluso si las medianas
poblacionales son idénticas, lo que se conoce como el problema de Behrens-
Fisher no paramétrico.7
3. Simetría para Wilcoxon: La prueba de rangos con signo de Wilcoxon (para
muestras pareadas) asume que la distribución de las diferencias entre pares es
simétrica alrededor de la mediana. Si las diferencias son muy asimétricas, la
prueba pierde validez y potencia, siendo preferible la Prueba de Signos (Sign
Test), aunque esta última es menos potente.6
4.3 Eficiencia Relativa Asintótica (ARE)
Un argumento clásico a favor de las pruebas paramétricas es que son más
potentes. Sin embargo, el concepto de Eficiencia Relativa Asintótica (ARE) matiza esto
considerablemente. La ARE compara el tamaño de muestra necesario para que dos
pruebas tengan la misma potencia.
Bajo Normalidad Perfecta: La ARE de la prueba Mann-Whitney respecto a la
prueba t es 3/\pi \approx 0.955. Esto significa que la prueba no paramétrica es
casi tan eficiente (95.5%) como la paramétrica incluso cuando se cumplen los
supuestos ideales de esta última.4
Bajo No-Normalidad: Para distribuciones de colas pesadas (e.g., distribución
doble exponencial o Laplace), la ARE puede superar 1.0 (llegando a 1.5 o más).
Esto implica que la prueba no paramétrica es más potente y requiere menos
sujetos para detectar un efecto que la prueba t. Para distribuciones exponenciales,
20
la ARE de Mann-Whitney frente a la t puede ser de 3.0, una ventaja masiva.16
Esto desacredita la idea de que los métodos no paramétricos son siempre una
"segunda opción" menos deseable; en contextos de datos no gaussianos, suelen
ser la opción matemáticamente óptima.
5. Análisis Comparativo Detallado de
Procedimientos Estadísticos
La selección de la prueba adecuada depende de la intersección entre el diseño
del estudio (cuántos grupos, dependencia) y las propiedades de los datos.
5.1 Comparación de Dos Grupos Independientes
El escenario más común en la investigación: Grupo Tratamiento vs. Grupo
Control (ver Tabla 2).
Tabla 2: Prueba t de Student Vs. Prueba U de Mann-Whitney
Característica
Prueba t de Student
(Paramétrica)
Prueba U de Mann-Whitney
(No Paramétrica)
Variable Dependiente
Continua (Intervalo/Razón)
Ordinal o Continua
Hipótesis Nula (H_0)
\mu_1 = \mu_2 (Igualdad de
Medias)
F_1 = F_2 (Igualdad de
Distribuciones)
Supuestos Clave
Normalidad,
Homocedasticidad (si no se usa
Welch)
Independencia, misma forma
(para medianas)
Sensibilidad a datos atípicos
Alta (Punto de ruptura 0%)
Baja (Robusta)
21
Interpretación
Diferencia de promedios
Diferencia en rangos medios /
Probabilidad de superioridad
Equivalente Robusto
Prueba t de Welch (maneja
heterocedasticidad)
Prueba de Brunner-Munzel
(maneja heterocedasticidad)
Detalle Técnico: La prueba U de Mann-Whitney calcula el estadístico U
basándose en el número de veces que una observación del grupo A precede a una del
grupo B en el ranking conjunto. Es equivalente a calcular el área bajo la curva ROC
(AUC) para un clasificador binario. Cuando las varianzas son desiguales, la tasa de
error Tipo I de Mann-Whitney se infla, comportándose de manera similar a la prueba
t de Student clásica. En estos casos, se recomienda la prueba de Brunner-Munzel, que
es una generalización basada en rangos que ajusta por varianzas desiguales, análoga
a la t de Welch en el mundo paramétrico.34
5.2 Comparación de Muestras Dependientes (Pareadas)
Diseños pre-post o sujetos emparejados.
Prueba t Pareada: Calcula la diferencia D = X_{post} - X_{pre} para cada sujeto y
prueba si la media de D es cero. Asume que D se distribuye normalmente.
Wilcoxon Signed-Rank Test: Clasifica las diferencias D por magnitud absoluta
y asigna el signo original. Prueba si la suma de rangos positivos difiere de la
esperada. Asume que la distribución de D es simétrica. 35
Prueba de Signos (Sign Test): Simplemente cuenta cuántos cambios fueron
positivos vs. negativos, ignorando la magnitud. Es una prueba binomial exacta
(p=0.5). Es la más robusta pero la menos potente, útil solo cuando la asimetría de
las diferencias es extrema o la medición es muy burda.36
5.3 Comparación de Tres o Más Grupos (ANOVA vs. Kruskal-
22
Wallis)
ANOVA de una vía: Descompone la varianza total en varianza "entre grupos" y
"dentro de grupos". Es robusto a no-normalidad en grandes muestras pero frágil
ante heterocedasticidad (usar Welch ANOVA si falla). 37, 38
Kruskal-Wallis and Wilcoxon: Es una extensión de Mann-Whitney para k
grupos. Realiza un ANOVA sobre los rangos de los datos. 39
Limitación de Interpretación: Un resultado significativo en Kruskal-Wallis solo
indica que "al menos un grupo domina estocásticamente a otro". No dice
cuál. 40, 41, 42
The Wilcoxon inked rank test is thenon-parametric counterpart to the
dependent samples t- test. It's designed for situations where the t- test
hypotheticals, particularly regarding metric and typically distributed data,
are not me. 43, 44,45
Análisis Post-hoc: Tras un Kruskal-Wallis significativo, no se debe usar Tukey.
Las opciones correctas son:
1. Prueba de Dunn: La más recomendada. Compara rangos medios con
ajuste por empates y correcciones de Bonferroni o Holm para
comparaciones múltiples.46, 47
2. Prueba de Nemenyi: Más conservadora, asume tamaños de muestra
iguales y se basa en la distribución de rango estudiantizado. Menos
potente que Dunn.48, 49
3. Prueba de Conover-Iman: Más potente si se asume estricta igualdad de
varianzas en los rangos, pero menos robusta si no.
5.4 Diseños Factoriales e Interacciones: La Frontera Compleja
Una de las mayores ventajas de la estadística paramétrica es su capacidad para
evaluar interacciones (e.g., ¿el efecto del tratamiento depende del sexo?). El ANOVA
23
factorial de dos vías maneja esto elegantemente.
En el dominio no paramétrico, esto ha sido históricamente un obstáculo.
Prueba de Scheirer-Ray-Hare: Una extensión tradicional de Kruskal-Wallis para
dos factores. Sin embargo, la literatura moderna la desaconseja fuertemente
debido a su baja potencia y comportamiento conservador errático en
comparación con el ANOVA paramétrico.50
Aligned Rank Transform (ART): Es la solución contemporánea preferida. El
método "alinea" los datos eliminando los efectos principales antes de asignar
rangos, lo que permite probar interacciones de manera válida utilizando un
procedimiento ANOVA estándar sobre los datos transformados. 51, 52 ART es
robusto, potente y permite análisis de interacciones complejas en diseños no
paramétricos.53
6. Temas Avanzados y Controversias
Metodológicas
6.1 ANCOVA No Paramétrico
El Análisis de Covarianza (ANCOVA) permite ajustar el efecto de una variable
independiente por una covariable continua (e.g., comparar el efecto de una droga
ajustando por el peso inicial). El ANCOVA paramétrico asume linealidad entre la
covariable y la dependiente, y homogeneidad de pendientes de regresión.
Cuando estos supuestos fallan, el ANCOVA de Quade es una alternativa no
paramétrica clásica. Funciona realizando una regresión lineal sobre los rangos de las
variables y luego analizando los residuos. Aunque menos común en software
comercial, es una herramienta poderosa para eliminar variables confusoras en datos
ordinales.55 Alternativamente, el uso de modelos lineales generalizados (GLM) con
funciones de enlace adecuadas (e.g., regresión Gamma o Poisson) es a menudo
24
preferible a las pruebas de rangos puras para estos problemas complejos. 54, 55
6.2 Datos Censurados y Análisis de Supervivencia
Un tipo especial de datos "no normales" son los datos de tiempo hasta el evento
(supervivencia), que a menudo están censurados (el evento no ocurrió antes de que
terminara el estudio). Aquí, la media y la prueba t son inútiles.
Enfoque Paramétrico: Modelos de regresión de Weibull o Exponencial. Asumen
una forma específica para la función de riesgo. Son más eficientes si el modelo es
correcto.57
Enfoque No Paramétrico: El estimador de Kaplan-Meier y la prueba de Log-
Rank. No asumen ninguna forma funcional para el riesgo. Son el estándar de oro
en investigación biomédica debido a su capacidad para manejar censura sin
supuestos distributivos fuertes. Curiosamente, la censura aumenta la eficiencia
relativa de los estimadores paramétricos frente a los no paramétricos, haciendo
que la elección del modelo sea aún más crítica en estudios de supervivencia.57, 58
6.3 Valores P: Exactos vs. Asintóticos
Las pruebas no paramétricas modernas se basan en la combinatoria. Para
calcular un valor p exacto en una prueba de Mann-Whitney con muestras pequeñas
(n_1=4, n_2=4), el software calcula todas las posibles permutaciones de los rangos y ve
cuántas dan un estadístico tan extremo como el observado.
El Problema Asintótico: A medida que N crece, el número de permutaciones
explota computacionalmente. Por ello, el software (SPSS, R) cambia a una
aproximación asintótica (usando la distribución Normal Z o Chi-cuadrado)
cuando N supera cierto umbral (típicamente 20 o 30).
Riesgo: En muestras pequeñas (N<20), dispersas o muy desequilibradas, la
aproximación asintótica es inexacta y puede dar valores p erróneos. Es crucial
25
forzar el cálculo de pruebas exactas (Exact Tests) en estas situaciones para
garantizar la validez de la inferencia.11, 59
7. Informe de Resultados y Tamaños del Efecto
La mera presentación de un valor p es insuficiente en la ciencia moderna. La
APA y otras organizaciones exigen la inclusión de tamaños del efecto e intervalos de
confianza para contextualizar la magnitud biológica o social del hallazgo.
7.1 Tamaños del Efecto para Pruebas No Paramétricas
Dado que la d de Cohen se basa en medias y desviaciones estándar, no es
apropiada para datos de rangos.
Correlación Biserial de Rangos (r_{rb}): Derivada de la prueba Mann-
Whitney/Wilcoxon. Se calcula como la diferencia entre la proporción de pares
favorables y desfavorables. Varía de -1 a +1, lo que facilita su interpretación
intuitiva similar a una correlación de Pearson.60
Delta de Cliff (\delta): Una medida directa de dominancia estocástica.
Representa la probabilidad de que una observación del grupo 1 sea mayor que
una del grupo 2, menos la probabilidad inversa. Es extremadamente robusta y
fácil de interpretar.62
Eta-cuadrado (\eta^2) y Epsilon-cuadrado (\epsilon^2_H): Utilizados para la
prueba de Kruskal-Wallis. Estiman la proporción de varianza en los rangos
explicada por la variable de agrupación. \epsilon^2_H es preferible por ser
menos sesgado.61
7.2 Recomendaciones de Reporte (Estilo APA)
Al reportar resultados no paramétricos, se debe incluir el estadístico de prueba
(U, H, W), los grados de libertad (si aplica, o tamaños de muestra), el valor p exacto y
26
el tamaño del efecto. 62
Ejemplo (Mann-Whitney): "Se observó una diferencia significativa en los niveles de
dolor entre los grupos, U = 450, z = -2.85, p =.004, r_{rb} = 0.45. El tamaño del
efecto indica una diferencia moderada-alta."
Ejemplo (Kruskal-Wallis): "Hubo diferencias significativas entre los tres
tratamientos, H(2) = 14.5, p <.001, \epsilon^2 = 0.28. Las comparaciones post-hoc
de Dunn con corrección de Bonferroni revelaron diferencias entre el Tratamiento
A y el C (p=.002).".63
8. Implicaciones Prácticas
La dicotomía entre estadística paramétrica y no paramétrica no debe verse
como una elección entre "correcto" e "incorrecto", sino como una decisión estratégica
basada en la evidencia de los datos y la tolerancia al riesgo de los supuestos.
1. Priorizar la Pregunta de Investigación: Si el objetivo es estimar costos totales o
impactos agregados, la media (y por ende los métodos paramétricos o
bootstrapping) es la métrica relevante, incluso con datos asimétricos. Si el interés
es el "individuo típico" o la jerarquía de respuestas, la mediana y los rangos (no
paramétricos) son superiores.
2. Diagnóstico Inteligente: Abandonar las pruebas de normalidad (Shapiro-Wilk)
en muestras grandes en favor de la inspección visual (Q-Q plots) y el
conocimiento del dominio. En muestras grandes, el Teorema del Límite Central
valida las pruebas paramétricas para la mayoría de las violaciones de
normalidad, excepto en presencia de datos atípicos o distribuciones de varianza
infinita (Cauchy). 64
3. La Revolución de Welch: Adoptar la prueba t de Welch y el ANOVA de Welch
como estándares por defecto para mitigar los riesgos de heterocedasticidad, un
problema más grave que la no-normalidad en pruebas paramétricas.
27
4. No Paramétrico Moderno: Ir más allá de Mann-Whitney. Utilizar ART para
interacciones, pruebas exactas para muestras pequeñas y tamaños del efecto de
rango (Cliff's delta) para una comunicación transparente.
En última instancia, el rigor estadístico no reside en la adhesión ciega a una
receta, sino en la justificación explícita de la elección del modelo frente a la naturaleza
empírica de los datos recolectados (ver Tabla 3).
Tabla 3: Guía de Selección de Pruebas
Objetivo del Análisis
Distribución /
Supuestos
Prueba Paramétrica
Prueba No
Paramétrica
Comparar 2 Grupos
Independientes
Normal, Var. Iguales
t-test de Student
U de Mann-Whitney
Normal, Var.
Desiguales
t-test de Welch
Brunner-Munzel
No Normal, Colas
Pesadas
(Transformación)
U de Mann-Whitney
Comparar 2 Grupos
Pareados
Diferencias Normales
t-test Pareado
Wilcoxon Signed-
Rank
Diferencias
Asimétricas
--
Prueba de Signos
Comparar >2 Grupos
(1 Factor)
Normal,
Homocedástico
ANOVA de una vía
Kruskal-Wallis
Heterocedástico
Welch ANOVA
Kruskal-Wallis
28
Comparar >2 Grupos
(2 Factores)
Normal
ANOVA Factorial
Aligned Rank
Transform (ART)
Correlación
Lineal, Normal
Pearson (r)
Spearman (\rho) /
Kendall (\tau)
29
Capítulo 2.
Tratado Exhaustivo sobre la Teoría de la
Probabilidad Computacional: Enfoques
Matemáticos, Empíricos y Subjetivos
Asistidos por Python
La probabilidad, en su concepción más fundamental, constituye el lenguaje
matemático mediante el cual la humanidad ha intentado domesticar la incertidumbre.
Desde los juegos de azar en las cortes europeas del siglo XVII hasta los algoritmos de
inteligencia artificial que gobiernan la infraestructura digital contemporánea, la
necesidad de cuantificar lo desconocido ha sido una constante intelectual. Este
informe técnico tiene como objetivo desglosar, con una profundidad exhaustiva y un
rigor académico, las múltiples dimensiones de la probabilidad: la pureza deductiva
del enfoque clásico, la robustez empírica del frecuentismo, la flexibilidad adaptativa
del bayesianismo subjetivo, y las estructuras condicionales que unen estas visiones. A
diferencia de los tratados teóricos tradicionales, este análisis se apoya en la
computación científica moderna, utilizando el lenguaje de programación Python no
solo como una herramienta de cálculo, sino como un laboratorio experimental donde
los teoremas abstractos se manifiestan en simulaciones tangibles.
La dicotomía central que atraviesa la teoría de la probabilidad reside en la
interpretación de sus valores. ¿Es la probabilidad una propiedad intrínseca y física de
un objeto, como la masa o el volumen, o es una medida del estado de conocimiento
de un observador? Esta pregunta ha dividido a matemáticos y filósofos en dos grandes
campos: los objetivistas (o frecuentistas), que ven la probabilidad como una tendencia
física verificable mediante la repetición; y los subjetivistas (o bayesianos), que la
30
interpretan como un grado de creencia racional ante la falta de información completa.1
1. El Paradigma Clásico y la Combinatoria
Computacional
1.1 Fundamentos Epistemológicos de la Probabilidad Matemática
La probabilidad clásica, también denominada teórica o a priori, representa la
génesis del pensamiento probabilístico formal. Sus raíces se encuentran en la
correspondencia histórica entre Blaise Pascal y Pierre de Fermat, quienes, al intentar
resolver el "problema de los puntos" en juegos de azar interrumpidos, sentaron las
bases de la esperanza matemática. Posteriormente, Pierre-Simon Laplace formalizó
este enfoque en su "Théorie Analytique des Probabilités".
El pilar fundamental de la probabilidad clásica es el Principio de Indiferencia
(o Principio de Razón Insuficiente). Este axioma establece que, en ausencia de
evidencia que sugiera lo contrario, todos los resultados elementales de un
experimento aleatorio deben considerarse equiprobables. Bajo este paradigma, la
probabilidad no requiere experimentación física; es un ejercicio de lógica pura y
conteo. Si un espacio muestral S se compone de N eventos elementales mutuamente
excluyentes y equiprobables, la probabilidad de un evento A se define estrictamente
como el cociente entre la cardinalidad del subconjunto favorable y la cardinalidad del
espacio total:
P(A) = \frac{|A|}{|S|} = \frac{\text{Casos Favorables}}{\text{Casos Posibles}}
Esta definición, aunque elegante y poderosa para sistemas cerrados y simétricos
(como dados perfectos o barajas de cartas barajadas idealmente), conlleva una
limitación intrínseca: la circularidad. Definir la probabilidad basándose en eventos
"igualmente posibles" presupone una noción preexistente de probabilidad, lo que ha
31
llevado a críticas filosóficas sostenidas a lo largo de los siglos. Además, el enfoque
clásico colapsa cuando se enfrenta a sistemas asimétricos o espacios muestrales
infinitos, donde la enumeración directa es imposible.1
1.2 Implementación Computacional: Espacios Muestrales y
itertools
En el contexto de la computación científica con Python, la probabilidad clásica
se aborda mediante la generación explícita y exhaustiva de espacios muestrales. A
diferencia de la simulación estocástica (que veremos en el enfoque frecuentista), el
enfoque clásico computacional es determinista y enumerativo. Python ofrece la
biblioteca estándar itertools, una herramienta de programación funcional inspirada
en lenguajes como Haskell y APL, diseñada para iterar eficientemente sobre
estructuras combinatorias complejas.5
El uso de itertools permite modelar matemáticamente el producto cartesiano
de conjuntos, que es la operación fundamental para construir espacios muestrales
compuestos. Por ejemplo, el lanzamiento de múltiples dados o la extracción secuencial
de cartas se modelan mediante productos y combinaciones.
Análisis de Caso: La Suma de Dados y la Complejidad Combinatoria
Consideremos el problema clásico de determinar la probabilidad de obtener
una suma específica al lanzar n dados. Matemáticamente, esto implica contar
particiones enteras restringidas, un problema que se vuelve algebraicamente tedioso
a medida que n aumenta. Computacionalmente, podemos generar el universo
completo de posibilidades.
32
Python
import itertools as it
from fractions import Fraction
def analisis_clasico_dados(n_dados=3, suma_objetivo=10):
"""
Calcula la probabilidad teórica exacta mediante enumeración exhaustiva
del espacio muestral usando itertools.product.
"""
# Definición del espacio muestral unitario (un dado)
caras = range(1, 7)
# Generación del Espacio Muestral Completo (Ω)
# El producto cartesiano repite el conjunto 'caras' n_dados veces.
# Ω = {(1,1,1), (1,1,2),..., (6,6,6)} para n=3
espacio_muestral = list(it.product(caras, repeat=n_dados))
# Cardinalidad del espacio muestral (|Ω|)
total_casos = len(espacio_muestral)
# Filtrado de eventos favorables (A)
# A = {ω Ω : Σω = suma_objetivo}
eventos_favorables = [resultado for resultado in espacio_muestral if sum(resultado)
== suma_objetivo]
n_favorables = len(eventos_favorables)
# Cálculo de la probabilidad exacta usando aritmética racional
probabilidad = Fraction(n_favorables, total_casos)
return {
"Total Casos": total_casos,
"Favorables": n_favorables,
"Probabilidad (Fracción)": probabilidad,
"Probabilidad (Decimal)": float(probabilidad),
"Ejemplos": eventos_favorables[:5] # Mostrar primeros 5 casos para inspección
33
}
# Ejecución del análisis
resultado = analisis_clasico_dados()
print(f"Análisis Clásico para Suma 10 con 3 dados:")
print(f"Espacio Muestral Total: {resultado} (6^3)")
print(f"Probabilidad Teórica: {resultado['Probabilidad (Fracción)']} (~{resultado:.4f})")
En este código, la función it.product materializa el concepto abstracto de
espacio muestral.6 Es crucial notar que la complejidad computacional de este enfoque
crece exponencialmente (O(6^n)). Para n=3, el espacio es manejable (216 elementos),
pero para n=20, el espacio muestral excede la capacidad de memoria de las
computadoras convencionales. Aq radica la frontera de la probabilidad clásica
computacional: es exacta y perfecta, pero solo escalable para problemas de tamaño
acotado.
Ahora, ejecutamos la sintaxis en MATLAB: El método 1 (Convolución) es el
más eficiente y "nativo" de MATLAB, ya que genera la distribución completa de
probabilidades. El método 2 (Fórmula Exacta) es útil si solo necesitas un punto
específico sin calcular todo el vector.
Método 1: Usando Convolución (conv) - Recomendado
Este método utiliza la función conv, que es matemáticamente equivalente a
multiplicar los polinomios generadores de cada dado. Es muy rápido y te da la
probabilidad exacta.
Matlab
function p = prob_suma_dados_conv(n, suma_objetivo)
% n: número de dados
34
% suma_objetivo: la suma específica que buscas
% Validación básica
if suma_objetivo < n || suma_objetivo > 6*n
p = 0;
fprintf('La suma %d es imposible con %d dados.\n', suma_objetivo, n);
return;
end
% Probabilidad de un solo dado (1/6 para cada cara del 1 al 6)
dado = ones(1, 6) / 6;
% Inicializamos la distribución total con el primer dado
distribucion_total = dado;
% Convolucionamos n-1 veces
for i = 2:n
distribucion_total = conv(distribucion_total, dado);
end
% La distribucion_total empieza desde la suma mínima posible (n)
% El índice 1 corresponde a la suma 'n'.
% Por tanto, el índice para 'suma_objetivo' es: suma_objetivo - n + 1
35
indice = suma_objetivo - n + 1;
p = distribucion_total(indice);
% --- Opcional: Visualización ---
ejex = n : (6*n); % Rango de sumas posibles
bar(ejex, distribucion_total);
title(['Distribución de probabilidad para ', num2str(n), ' dados']);
xlabel('Suma');
ylabel('Probabilidad');
grid on;
end
Para usarlo:
Matlab
p = prob_suma_dados_conv(3, 10) % Probabilidad de sumar 10 con 3 dados
Método 2: Fórmula Analítica Directa
Si n es muy grande (por ejemplo, 100 dados) y el método de convolución
consume demasiada memoria, puedes usar la fórmula matemática exacta sin generar
el vector entero.
La fórmula es:
P(S) = \frac{1}{6^n} \sum_{k=0}^{\lfloor \frac{S-n}{6} \rfloor} (-1)^k \binom{n}{k}
36
\binom{S-6k-1}{n-1}
Matlab
function p = prob_suma_dados_analitica(n, S)
% n: número de dados
% S: suma objetivo
if S < n || S > 6*n
p = 0;
return;
end
limite_k = floor((S - n) / 6);
sumatoria = 0;
for k = 0:limite_k
% nchoosek es el coeficiente binomial (n combinado k)
term1 = (-1)^k;
term2 = nchoosek(n, k);
term3 = nchoosek(S - 6*k - 1, n - 1);
sumatoria = sumatoria + (term1 * term2 * term3);
end
37
p = sumatoria / (6^n);
end
Explicación breve
1. Convolución: La suma de variables aleatorias independientes tiene una
distribución de probabilidad que es la convolución de sus distribuciones
individuales. Al lanzar 3 dados, la forma de la gráfica se asemeja a una
campana (teorema del límite central).
2. Mapeo de Índices: En MATLAB, los arrays empiezan en 1. Sin embargo, la
suma mínima de n dados es n. Por eso necesitamos el ajuste indice =
suma_objetivo - n + 1.
Combinatoria Avanzada: Permutaciones y Combinaciones
Más allá del producto cartesiano, la teoría de probabilidad clásica exige el
manejo de selecciones sin reemplazo (combinaciones) y ordenamientos
(permutaciones). Python distingue estas operaciones matemáticamente a través de
itertools.combinations y itertools.permutations.6
Un ejemplo ilustrativo es el cálculo de probabilidades en el póker. La
probabilidad de obtener un "Full House" (un trío y un par) no se suele calcular
generando las 2.598.960 manos posibles de 5 cartas una por una (aunque es
computacionalmente factible hoy en día), sino utilizando fórmulas combinatorias que
Python puede evaluar. Sin embargo, para fines educativos y de validación, la
generación de subconjuntos del espacio muestral es invaluable.
Python
def probabilidad_poker_combinatoria():
38
# Representación de la baraja: Producto de Rangos y Palos
rangos = range(1, 14) # 1-13
palos =
baraja = list(it.product(rangos, palos))
# Espacio muestral de manos (Combinaciones de 5 cartas)
# Nota: No generamos la lista completa para evitar consumo de RAM excesivo en este
ejemplo,
# pero teóricamente iteraríamos sobre ella.
n_total_manos = 2598960 # math.comb(52, 5)
# La abstracción computacional permite validar lógica compleja:
# Definimos una función predicado para "Full House"
def es_full_house(mano):
valores = [carta for carta in mano]
conteos = {x: valores.count(x) for x in valores}
return sorted(conteos.values()) ==
# En un enfoque híbrido, podríamos usar combinaciones generadas iterativamente
# para estimar o verificar subconjuntos del espacio.
pass
El enfoque clásico en Python, por tanto, actúa como un puente entre la teoría
de conjuntos y la algoritmia, permitiendo verificar identidades combinatorias y
resolver problemas de probabilidad discreta con precisión absoluta, siempre que los
recursos computacionales lo permitan.8
Para calcular la probabilidad de un "Full House" (Full) en MATLAB, tenemos
dos caminos: el cálculo combinatorio exacto (ideal para resultados precisos) y la
simulación de Monte Carlo (ideal para ver cómo funciona el azar en la práctica).
1. Método Exacto (Combinatoria)
39
Este método aplica la fórmula matemática directa usando la función nchoosek
(combinaciones sin repetición).
La lógica matemática:
1. Total de manos: \binom{52}{5}.
2. Elegir el rango del trío: 1 de 13 posibles (\binom{13}{1}).
3. Elegir los palos del trío: 3 de 4 palos posibles (\binom{4}{3}).
4. Elegir el rango del par: 1 de los 12 restantes (\binom{12}{1}).
5. Elegir los palos del par: 2 de 4 palos posibles (\binom{4}{2}).
Matlab
function [probabilidad, porcentaje] = poker_full_house_exacto()
% --- Cálculo del Espacio Muestral ---
total_cartas = 52;
cartas_mano = 5;
total_manos_posibles = nchoosek(total_cartas, cartas_mano);
% --- Cálculo de Combinaciones para Full House ---
% 1. Elegir el rango para el trío (hay 13 rangos: 2,3...K,A)
formas_rango_trio = nchoosek(13, 1);
% 2. De ese rango, elegir 3 palos de los 4 disponibles
formas_palos_trio = nchoosek(4, 3);
40
% 3. Elegir el rango para el par (quedan 12 rangos)
formas_rango_par = nchoosek(12, 1);
% 4. De ese rango, elegir 2 palos de los 4 disponibles
formas_palos_par = nchoosek(4, 2);
% Multiplicamos las formas independientes
manos_full_house = formas_rango_trio * formas_palos_trio * ...
formas_rango_par * formas_palos_par;
% --- Probabilidad ---
probabilidad = manos_full_house / total_manos_posibles;
porcentaje = probabilidad * 100;
% Mostrar resultados
fprintf('--- Probabilidad Teórica ---\n');
fprintf('Total manos posibles: %d\n', total_manos_posibles);
fprintf('Manos Full House: %d\n', manos_full_house);
fprintf('Probabilidad: %.6f (aprox 1 en 694)\n', probabilidad);
fprintf('Porcentaje: %.4f%%\n', porcentaje);
end
2. Método Simulación (Monte Carlo)
41
Este script reparte cartas aleatorias millones de veces y cuenta cuántas veces
sale un Full House. Es excelente para verificar la teoría.
Nota: Se emplea randperm(52, 5) para asegurar que no se repiten cartas (sin
reemplazo).
Matlab
function poker_monte_carlo(num_simulaciones)
if nargin < 1; num_simulaciones = 100000; end % Valor por defecto
contador_full = 0;
% Una baraja tiene 13 rangos repetidos 4 veces (palos irrelevantes para Full)
% Representamos rangos como 1 a 13 repetidos 4 veces
baraja_rangos = repmat(1:13, 1, 4);
fprintf('Simulando %d manos...\n', num_simulaciones);
for i = 1:num_simulaciones
% Sacar 5 índices aleatorios únicos de la baraja (1 a 52)
indices_mano = randperm(52, 5);
% Obtener los rangos de esas cartas
mano = baraja_rangos(indices_mano);
% Contar cuántas veces aparece cada rango en la mano
% histcounts devuelve un vector con la frecuencia de cada número
42
conteos = histcounts(mano, 1:14); % Bins del 1 al 1
% Ordenamos los conteos para verificar la estructura
conteos_sorted = sort(conteos, 'descend');
% Un Full House SIEMPRE tiene un grupo de 3 y un grupo de 2.
% Al ordenar las frecuencias, los primeros elementos deben ser 3 y 2.
if conteos_sorted(1) == 3 && conteos_sorted(2) == 2
contador_full = contador_full + 1;
end
end
prob_simulada = contador_full / num_simulaciones;
fprintf('--- Resultado Monte Carlo ---\n');
fprintf('Full House obtenidos: %d\n', contador_full);
fprintf('Probabilidad simulada: %.5f\n', prob_simulada);
fprintf('Probabilidad teórica: 0.001441\n');
end
Resumen de Resultados
Al ejecutar el código exacto, se obtiene:
Probabilidad: \approx 0.001441
43
Frecuencia: Aproximadamente 1 vez cada 694 manos.
2. El Paradigma Frecuentista y la Simulación
Estocástica
2.1 La Ontología de la Frecuencia y la Objetividad Física
Cuando los sistemas se vuelven demasiado complejos para la enumeración
exhaustiva, o cuando los mecanismos subyacentes carecen de simetría evidente (como
una moneda doblada o la tasa de fallos de un servidor), el enfoque clásico colapsa.
Aquí emerge la probabilidad frecuentista. Autores como John Venn, Hans
Reichenbach y Richard von Mises redefinieron la probabilidad no como una razón
lógica, sino como una propiedad física objetiva que emerge de la repetición
prolongada de un experimento.1
En la interpretación frecuentista, la probabilidad de un evento A se define
asintóticamente como el límite de su frecuencia relativa f_n(A) cuando el número de
ensayos n tiende al infinito:
P(A) = \lim_{n \to \infty} \frac{n_A}{n}
Esta definición transforma la probabilidad en una magnitud empírica, medible
a posteriori. No "asumimos" que la probabilidad de cara es 0.5 por la forma de la
moneda; lo "descubrimos" lanzándola diez mil veces y observando la convergencia
del promedio. Esta visión es la base de la estadística inferencial tradicional, las pruebas
de hipótesis y los intervalos de confianza.4
2.2 La Ley de los Grandes Números (LLN) y la Convergencia
Computacional
La validez matemática del enfoque frecuentista descansa sobre la Ley de los
44
Grandes Números (LLN). En sus formas débil y fuerte, este teorema garantiza que,
bajo condiciones de independencia e idéntica distribución (i.i.d.), el promedio
empírico convergerá al valor esperado teórico.
Python es una herramienta excepcional para visualizar y demostrar la LLN,
actuando como un acelerador de tiempo que permite simular "el largo plazo" en
milisegundos. Mediante el uso de generadores de números pseudoaleatorios (PRNG),
podemos replicar experimentos estocásticos masivos.10
Simulación de Convergencia: El Experimento de Bernoulli
El siguiente análisis técnico en Python ilustra cómo la varianza de la frecuencia
relativa disminuye a medida que n aumenta, visualizando la "estabilización" del caos
aleatorio hacia una constante determinista. Utilizamos la biblioteca numpy por su
eficiencia en operaciones vectorizadas, esencial para simulaciones de gran escala.11
Python
import numpy as np
import matplotlib.pyplot as plt
def simulacion_ley_grandes_numeros(n_ensayos=10000, p_real=0.5):
"""
Simula n lanzamientos de una moneda y visualiza la convergencia
de la frecuencia relativa hacia la probabilidad teórica.
"""
# Configuración de la semilla para reproducibilidad científica
np.random.seed(42)
# Generación de ensayos (Bernoulli: 0 o 1)
# Vectorización: Generamos todos los ensayos simultáneamente en memoria
# Esto es órdenes de magnitud más rápido que un bucle 'for' nativo.
lanzamientos = np.random.binomial(n=1, p=p_real, size=n_ensayos)
45
# Cálculo de la suma acumulada (Cumsum)
# Pasos: [1, 0, 1, 1...] -> [1, 1, 2, 3...]
conteos_acumulados = np.cumsum(lanzamientos)
# Vector de número de ensayos [1, 2, 3,..., n]
n_vector = np.arange(1, n_ensayos + 1)
# Cálculo de la frecuencia relativa en cada paso t
frecuencia_relativa = conteos_acumulados / n_vector
# Visualización Técnica
plt.figure(figsize=(12, 6))
# Traza de la convergencia
plt.plot(n_vector, frecuencia_relativa, label='Frecuencia Empírica', color='#1f77b4',
linewidth=1)
# Línea de referencia teórica (Valor Esperado)
plt.axhline(p_real, color='red', linestyle='--', linewidth=2, label=f'Probabilidad Teórica
({p_real})')
# Escala logarítmica en X para apreciar la convergencia temprana y tardía
plt.xscale('log')
plt.title(f'Validación Empírica de la Ley de los Grandes Números (n={n_ensayos})',
fontsize=14)
plt.xlabel('Número de Ensayos (Escala Logarítmica)', fontsize=12)
plt.ylabel('Frecuencia Relativa Acumulada', fontsize=12)
plt.legend()
plt.grid(True, which="both", ls="-", alpha=0.2)
# Anotación de desviación final
error_final = abs(frecuencia_relativa[-1] - p_real)
plt.annotate(f'Error final: {error_final:.5f}', xy=(n_ensayos, frecuencia_relativa[-1]),
xytext=(n_ensayos*0.5, frecuencia_relativa[-1]+0.05),
arrowprops=dict(facecolor='black', shrink=0.05))
46
plt.show()
# Nota: Este código integra conceptos visuales y lógicos de [10, 11] y.
simulacion_ley_grandes_numeros()
Análisis de Resultados e Implicaciones:
Al ejecutar esta simulación, observamos un fenómeno crucial: para valores
pequeños de n (ej. n < 100), la línea azul oscila violentamente alrededor de 0.5. Es
perfectamente posible tener una racha inicial de caras que eleve la frecuencia a 0.7 o
0.8. Sin embargo, conforme n crece hacia 10^4 o 10^5, la amplitud de las oscilaciones
se amortigua. La línea se vuelve asintótica a la media teórica.
Este comportamiento valida el enfoque frecuentista: la probabilidad emerge del
caos. Python nos permite cuantificar qué tan rápido ocurre esta convergencia y
calcular márgenes de error empíricos, algo vital en aplicaciones como el Método de
Monte Carlo para integración numérica o valoración de opciones financieras.12
Eficiencia Computacional: numpy vs Bucles
Es imperativo destacar un aspecto técnico de la implementación. En la
simulación frecuentista, la velocidad es sinónimo de precisión, ya que mayor
velocidad permite mayores n. Los foros técnicos y la documentación sugieren que el
uso de numpy.random.randint o numpy.random.binomial (implementados en C) es
inmensamente superior a iterar con random.choice en bucles nativos de Python. Una
simulación de 100 millones de eventos que tardaría minutos en Python puro se ejecuta
en milisegundos con numpy, permitiendo validaciones frecuentistas de alta
precisión.13
47
3. Probabilidad Condicional y la Estructura de la
Dependencia
3.1 Definición y la Falacia de la Inversión
La probabilidad rara vez opera en el vacío. En el mundo real, los eventos están
interconectados; la ocurrencia de uno altera la plausibilidad del otro. La probabilidad
condicional es el formalismo que maneja estas dependencias, restringiendo el espacio
muestral original a un subconjunto donde un evento condicionante B ya ha ocurrido.
Matemáticamente, se define como:
P(A|B) = \frac{P(A \cap B)}{P(B)}, \quad \text{con } P(B) > 0
Esta fórmula, aparentemente simple, es la fuente de contraintuiciones
profundas, como la Falacia del Fiscal o la confusión entre P(A|B) y P(B|A) (la
probabilidad de tener cáncer dado un test positivo no es igual a la probabilidad de un
test positivo dado que se tiene cáncer). La independencia estocástica se define
precisamente cuando esta condicionalidad no tiene efecto: P(A|B) = P(A).14
3.2 Análisis de Datos Reales con pandas: Tablas de Contingencia
Mientras que el enfoque clásico usa conteos teóricos y el frecuentista usa
simulaciones, el análisis de probabilidad condicional en la ciencia de datos moderna
se basa en el filtrado de bases de datos observacionales. La biblioteca pandas de
Python es el estándar industrial para estas operaciones, utilizando estructuras
conocidas como "Tablas de Contingencia" o Crosstabs. Analicemos un ejemplo práctico
derivado de datos educativos y de salud (como se sugiere en los snippets), donde
evaluamos la relación entre la asistencia a clases y el rendimiento académico. 15
Python
48
import pandas as pd
import numpy as np
def analisis_condicional_pandas():
# Simulación de un DataFrame basado en datos reales de estudiantes
# Variables: 'Asistencia_Baja' (>=10 faltas), 'Nota_Alta' (>=80%)
data = {
'Asistencia_Baja': * 20,
'Nota_Alta': * 20
}
df = pd.DataFrame(data)
# Creación de la Tabla de Contingencia (Frecuencias Absolutas)
# margins=True añade los totales por fila y columna (All)
tabla_contingencia = pd.crosstab(df, df['Nota_Alta'], margins=True)
print("Tabla de Contingencia (Conteos Crudos):")
print(tabla_contingencia)
print("-" * 40)
# Cálculo de Probabilidades Condicionales: P(Nota | Asistencia)
# normalize='index' divide cada celda por la suma de su fila.
# Esto responde: "Dado un nivel de asistencia, ¿cómo se distribuyen las notas?"
prob_condicional_fila = pd.crosstab(df, df['Nota_Alta'], normalize='index')
print("Probabilidades Condicionales P(Nota | Asistencia):")
print(prob_condicional_fila)
print("-" * 40)
# Extracción de un insight específico
# P(Nota_Alta=1 | Asistencia_Baja=1)
p_exito_dado_faltas = prob_condicional_fila.loc
# Probabilidad Marginal (P(Nota_Alta=1) sin considerar asistencia)
p_exito_global = tabla_contingencia.loc['All', 1] / tabla_contingencia.loc['All', 'All']
49
print(f"Probabilidad de Nota Alta GLOBAL: {p_exito_global:.2%}")
print(f"Probabilidad de Nota Alta DADO Asistencia Baja: {p_exito_dado_faltas:.2%}")
if p_exito_dado_faltas < p_exito_global:
print("Insight: La baja asistencia afecta negativamente la probabilidad de éxito
(Dependencia).")
analisis_condicional_pandas()
Interpretación Técnica:
El uso de pd.crosstab con el argumento normalize es fundamental.
normalize='index' calcula P(B|A) (probabilidades fila).
normalize='columns' calcularía P(A|B) (probabilidades columna).
En el ejemplo anterior, la tabla resultante nos permite comparar directamente
P(\text{Éxito}) vs P(\text{Éxito}|\text{Faltas}). Si estos valores difieren
significativamente, hemos encontrado una dependencia estadística cuantificable. Este
es el principio básico de los algoritmos de clasificación Naive Bayes y de los árboles
de decisión: buscar las condiciones que maximizan o minimizan la probabilidad de
una clase objetivo.16
4. El Modelo Binomial como Puente Teórico-
Práctico
4.1 La Distribución Binomial
La distribución binomial actúa como el eslabón perdido que conecta la teoría
combinatoria clásica con la realidad frecuentista de los experimentos repetidos.
Modela el número de éxitos k en una secuencia fija de n ensayos de Bernoulli
independientes, donde cada ensayo tiene una probabilidad de éxito p constante.
50
La función de masa de probabilidad (PMF) encapsula la lógica combinatoria
(¿de cuántas formas puedo ordenar k éxitos?) y la lógica probabilística (¿cuál es la
probabilidad de esa cadena específica?):
P(X = k) = \binom{n}{k} p^k (1-p)^{n-k}
Donde \binom{n}{k} es el coeficiente binomial calculado
computacionalmente.
4.2 Visualización y Análisis con scipy.stats
Python, a través de su ecosistema científico scipy, permite manipular estas
distribuciones como objetos de primera clase. No solo podemos calcular
probabilidades puntuales, sino también probabilidades acumuladas (CDF), inversas
(PPF) y momentos estadísticos.19
Un caso de uso crítico es el control de calidad o el análisis de riesgos.
Supongamos un escenario de ventas en una tienda de museo (basado en el ejemplo de
21), donde la probabilidad de compra es p=0.8 y observamos n=10 clientes.
Python
from scipy.stats import binom
import matplotlib.pyplot as plt
import seaborn as sns
def analisis_distribucion_binomial():
# Parámetros del modelo
n = 10 # Número de ensayos (clientes)
p = 0.80 # Probabilidad de éxito (compra)
# Espacio muestral de éxitos posibles: 0 a 10
k_valores = range(n + 1)
# 1. Cálculo de la PMF (Probability Mass Function)
51
# P(X = k) para cada k
pmf_valores = binom.pmf(k_valores, n, p)
# 2. Cálculo de la CDF (Cumulative Distribution Function)
# P(X <= k) para un k específico, ej. k=8
k_corte = 8
prob_acumulada = binom.cdf(k_corte, n, p)
# Visualización Avanzada
plt.figure(figsize=(10, 6))
sns.set_style("whitegrid")
# Gráfico de barras para la PMF
# Coloreamos de rojo los valores incluidos en la CDF (k <= 8)
colores = ['#e74c3c' if k <= k_corte else '#2ecc71' for k in k_valores]
ax = sns.barplot(x=list(k_valores), y=pmf_valores, palette=colores,
edgecolor='black')
# Etiquetas y Títulos
plt.title(f'Distribución Binomial (n={n}, p={p})\nProbabilidad Acumulada P(X <=
{k_corte}) = {prob_acumulada:.4f}', fontsize=14)
plt.xlabel('Número de Éxitos (k)', fontsize=12)
plt.ylabel('Probabilidad P(X=k)', fontsize=12)
# Añadir valores sobre las barras
for i, v in enumerate(pmf_valores):
ax.text(i, v + 0.01, f"{v:.2f}", ha='center', fontsize=9)
# Leyenda personalizada
from matplotlib.patches import Patch
legend_elements =
plt.legend(handles=legend_elements)
plt.show()
analisis_distribucion_binomial()
52
Profundización en los Insights:
El gráfico generado por este código no es meramente estético; es una
herramienta de inferencia.
Las barras rojas representan la integral discreta (suma) hasta k=8. El valor
devuelto por binom.cdf nos permite responder preguntas de gestión de riesgo:
"¿Cuál es el riesgo de tener menos de 8 ventas?".
La asimetría de la distribución (sesgada hacia la derecha porque p=0.8 > 0.5) es
inmediatamente visible.
La función scipy.stats.binom maneja internamente la estabilidad numérica para
factoriales grandes, evitando desbordamientos que ocurrirían si intentáramos
calcular 100! manualmente en una calculadora estándar.22
5. La Revolución Bayesiana y la Probabilidad
Subjetiva
5.1 El Cambio de Paradigma: De la Frecuencia a la Creencia
Mientras que el frecuentista ve el parámetro p (ej. la probabilidad de que una
moneda salga cara) como una constante universal desconocida, el bayesiano lo trata
como una variable aleatoria que posee su propia distribución de probabilidad. Esta
distribución refleja nuestro "grado de creencia" sobre el valor de p.
La probabilidad subjetiva (o epistémica) sostiene que la probabilidad es una
medida de la incertidumbre personal dada una información incompleta. Bruno de
Finetti, uno de los padres del subjetivismo, argumentó famosamente que "la
probabilidad no existe" como entidad física, sino como herramienta mental.1 La piedra
angular de este enfoque es el Teorema de Bayes, interpretado como una regla de
aprendizaje diacrónico (a través del tiempo):
53
\text{Posterior} \propto \text{Likelihood} \times \text{Prior}
P(\theta | D) = \frac{P(D | \theta) P(\theta)}{P(D)}
Donde:
Prior P(\theta): Lo que sabíamos (o creíamos) antes de ver los datos.
Likelihood P(D | \theta): Qué tan bien explica cada posible valor de \theta los
datos observados D. (Aquí es donde entra la distribución Binomial como modelo
de verosimilitud).
Posterior P(\theta | D): Nuestra nueva creencia, una síntesis ponderada de la
historia y la evidencia actual.
5.2 Inferencia Bayesiana y Conjugación en Python
La potencia de Python en estadística bayesiana brilla cuando necesitamos
actualizar estas creencias. Existen dos formas de hacerlo: numéricamente
(discretizando el espacio o usando MCMC) y analíticamente (usando priores
conjugados).
El Caso de los Priores Conjugados: Modelo Beta-Binomial
Si elegimos una distribución Beta como nuestro Prior para una probabilidad
(que está acotada entre 0 y 1), y usamos una Likelihood Binomial, ocurre una "magia"
matemática: el Posterior es también una distribución Beta. Esto permite actualizaciones
instantáneas sin cálculo integral complejo.
Los hiperparámetros de la Beta, \alpha y \beta, pueden interpretarse como
"conteos virtuales" de éxitos y fracasos previos.
Nuevo \alpha_{post} = \alpha_{prior} + \text{Éxitos Observados}
Nuevo \beta_{post} = \beta_{prior} + \text{Fracasos Observados}
54
Ilustremos esto con el ejemplo de un jugador de béisbol o una prueba clínica,
adaptando los conceptos de los snippets 23 y.24
Python
import numpy as np
import scipy.stats as stats
import matplotlib.pyplot as plt
def inferencia_bayesiana_conjugada():
# 1. Definición del Prior (Creencia Inicial)
# Imaginemos que no sabemos mucho, pero esperamos una media de 0.25
# Beta(10, 30) -> media = 10/40 = 0.25, equivalente a haber visto 40 casos previos.
alpha_prior = 10
beta_prior = 30
# 2. Recolección de Datos (Likelihood)
# El jugador batea 50 veces y acierta 25 (un rendimiento excepcional de 0.500)
n_ensayos = 50
k_exitos = 25
k_fracasos = n_ensayos - k_exitos
# 3. Actualización Bayesiana (Conjugación)
alpha_post = alpha_prior + k_exitos
beta_post = beta_prior + k_fracasos
# 4. Generación de las distribuciones para visualizar
x = np.linspace(0, 1, 1000)
dist_prior = stats.beta.pdf(x, alpha_prior, beta_prior)
dist_post = stats.beta.pdf(x, alpha_post, beta_post)
# Visualización
plt.figure(figsize=(12, 6))
# Plot del Prior
plt.plot(x, dist_prior, label=f'Prior Beta({alpha_prior}, {beta_prior})\nCreencia inicial
55
(Media={alpha_prior/(alpha_prior+beta_prior):.2f})',
linestyle='--', color='gray')
plt.fill_between(x, 0, dist_prior, color='gray', alpha=0.1)
# Plot del Posterior
plt.plot(x, dist_post, label=f'Posterior Beta({alpha_post}, {beta_post})\nCreencia
Actualizada (Media={alpha_post/(alpha_post+beta_post):.2f})',
color='#d35400', linewidth=2.5)
plt.fill_between(x, 0, dist_post, color='#d35400', alpha=0.3)
# Línea de la evidencia pura (Frecuentista: 25/50 = 0.5)
plt.axvline(k_exitos/n_ensayos, color='blue', linestyle=':', label='Dato observado puro
(ML = 0.50)')
plt.title('Actualización Bayesiana: El compromiso entre Historia y Evidencia')
plt.xlabel('Parámetro p (Tasa de Éxito Real)')
plt.ylabel('Densidad de Probabilidad (Certeza)')
plt.xlim(0, 0.8) # Zoom en la zona relevante
plt.legend()
plt.show()
inferencia_bayesiana_conjugada()
Análisis Profundo:
La gráfica resultante cuenta una historia fascinante sobre la cognición humana
y artificial.
El Prior (gris) está centrado en 0.25.
Los datos (línea azul punteada) dicen 0.50.
El Posterior (naranja) no salta inmediatamente a 0.50. Se mueve a una posición
intermedia (aprox 0.38).
Interpretación: El modelo bayesiano es "escéptico". Aunque el jugador tuvo una
racha excelente, el peso de la creencia previa (la historia) "tira" de la estimación
56
hacia abajo. Solo con más y más datos, la curva naranja se separará del prior y
coincidirá con la frecuencia observada.
Esta propiedad de "regularización" es lo que hace a los métodos bayesianos tan
valiosos en IA para evitar el overfitting (sobreajuste) cuando hay pocos datos.
57
Capítulo 3.
Herramientas Estadísticas en el
Ecosistema Python: Un Análisis
Exhaustivo
1. El Cambio de Paradigma en la Computación
Estadística
La transformación del análisis estadístico contemporáneo ha estado marcada
por una migración fundamental desde entornos de interfaz gráfica y software
propietario monolítico como SAS y SPSS hacia ecosistemas de código abierto,
modulares y programáticos, dominados indiscutiblemente por Python. Este informe
analiza en profundidad la arquitectura, la interoperabilidad y los flujos de trabajo
avanzados que definen la integración de herramientas estadísticas en Python. A
diferencia de las soluciones "llave en mano", Python ofrece una federación de
bibliotecas especializadas que, cuando se orquestan correctamente, superan la
capacidad de los sistemas heredados en términos de flexibilidad, escalabilidad y
capacidad de integración con infraestructuras de ingeniería de datos modernas.1
La premisa central de este ecosistema no es la existencia de una única
herramienta que lo haga todo, sino la interoperabilidad de estructuras de datos en
memoria. La capacidad de Python para servir como lenguaje "pegamento" permite
que los datos fluyan sin fricción desde motores de bases de datos SQL y sistemas de
big data (Spark, Dask) hacia estructuras tabulares en memoria (Pandas), para luego
ser sometidos a rigurosas pruebas de inferencia (Statsmodels, Pingouin), visualizados
(Seaborn) y, si es necesario, validados mediante llamadas directas a motores externos
58
como R o SAS sin abandonar el entorno de ejecución de Python.3 Este informe
desglosa cada componente de esta cadena de valor, explorando no solo el "cómo"
técnico, sino las implicaciones metodológicas de seleccionar una herramienta sobre
otra en contextos de investigación clínica, econométrica y de ciencia de datos aplicada.
2. Fundamentos de la Estructura de Datos y
Manipulación Estadística
La base de cualquier análisis estadístico riguroso es la integridad y la
estructura de los datos. En el ecosistema Python, esta responsabilidad recae sobre una
simbiosis entre NumPy y Pandas. Mientras que NumPy proporciona el sustrato de
arreglos numéricos n-dimensionales de alto rendimiento, Pandas actúa como la capa
de abstracción semántica que permite el tratamiento de datos estadísticos
heterogéneos, replicando y ampliando la funcionalidad de los dataframes de R.1
2.1. Arquitectura del DataFrame y Tipificación Semántica
El objeto DataFrame de Pandas es la unidad fundamental de intercambio en el
análisis estadístico en Python. A diferencia de las matrices puramente numéricas, un
DataFrame alinea datos de diferentes tipos (enteros, flotantes, objetos, categorías,
fechas) bajo un índice común, permitiendo operaciones vectorizadas que preservan la
alineación de las observaciones. Esta capacidad es crítica para la estadística
descriptiva, donde la pérdida de alineación entre una variable independiente y una
dependiente invalidaría cualquier inferencia posterior.5
Un aspecto crucial para la integración estadística es el manejo de los tipos de
datos (dtypes). La introducción del tipo category en Pandas ha sido un avance
significativo para el modelado estadístico, optimizando el uso de memoria y
proporcionando una semántica clara para variables nominales y ordinales.
59
Herramientas como Statsmodels y Seaborn leen estos metadatos para determinar
automáticamente el comportamiento adecuado: Statsmodels generará variables
dummy (codificación one-hot) para columnas categóricas en sus fórmulas de
regresión, mientras que Seaborn utilizará paletas de colores discretas en lugar de
gradientes continuos para la visualización.7
2.2. Tratamiento de Valores Atípicos y Datos Faltantes
La robustez estadística depende del manejo de datos faltantes. La arquitectura
de Python difiere filosóficamente de sistemas como SAS en este aspecto. En Pandas y
NumPy, el valor NaN (Not a Number) es el estándar para datos faltantes en punto
flotante. Las funciones estadísticas descriptivas (mean, std, median) en Pandas están
diseñadas para propagar o ignorar estos valores según la configuración. Por defecto,
métodos como df.mean() excluyen los valores NaN del cálculo, reduciendo el
denominador (n) correspondientemente.9 Esto contrasta con el comportamiento
predeterminado de R, que a menudo devuelve NA si existe algún valor faltante,
forzando al analista a tomar una decisión explícita (na.rm=TRUE).
La detección de valores atípicos se facilita mediante la integración de métodos
de cuantiles. El método describe() acepta una lista personalizada de percentiles (por
ejemplo, percentiles=[.01,.05,.95,.99]), lo que permite a los analistas escanear
rápidamente las colas de la distribución sin necesidad de gráficos complejos.9
Además, funciones como clip() permiten la winsorización de datos (limitar valores
extremos a un umbral) de manera vectorizada antes de alimentar modelos sensibles a
valores atípicos como la regresión OLS.11
2.3. Agregación Avanzada: El Paradigma Split-Apply-Combine
La técnica más poderosa para el análisis descriptivo comparativo es el patrón
"Dividir-Aplicar-Combinar" (Split-Apply-Combine), implementado a través de
60
groupby(). Este método permite segmentar el conjunto de datos en subgrupos basados
en claves categóricas, aplicar una función estadística a cada subgrupo y recombinar
los resultados en una nueva estructura tabular.
La integración con diccionarios de funciones en el método .agg() permite una
flexibilidad expresiva superior a la de SQL o procedimientos estándar de SPSS. Un
analista puede, en una sola instrucción, solicitar la media y la desviación estándar para
variables continuas, mientras solicita conteos y frecuencias relativas para variables
categóricas, produciendo una tabla de resumen jerárquica lista para publicación o
análisis posterior (ver Tabla 4).10
Tabla 4: Características de Pyhon, R y SQL
Característica
SQL
Manejo de
Nulos
NULL, ignora
por defecto
Tipos
Categóricos
VARCHAR /
ENUM
Agregación
GROUP BY
61
Ventanas
Móviles
OVER
(PARTITION
BY...)
3. Inferencia Estadística y Modelado Explicativo: El
Rol de Statsmodels
Si Pandas es el motor de manipulación, Statsmodels es el motor de inferencia.
A diferencia de Scikit-Learn, cuyo objetivo principal es la predicción y la
generalización a datos no vistos (minimizando el error fuera de muestra), Statsmodels
se centra en el modelado explicativo, la estimación de parámetros y la prueba de
hipótesis clásica dentro de la muestra. Esta distinción es vital: en contextos científicos,
regulatorios o econométricos, a menudo es más importante entender la relación causal
y la incertidumbre de un coeficiente (su intervalo de confianza y valor p) que obtener
la máxima precisión predictiva "caja negra".2
3.1. Dicotomía de la API: Enfoque Matricial vs. Enfoque de
Fórmulas
Una barrera común para la integración efectiva de Statsmodels es la existencia
de dos APIs distintas, cada una diseñada para un paradigma diferente. La elección
incorrecta puede llevar a errores metodológicos graves, como la omisión involuntaria
del intercepto.
62
3.1.1. La API Estándar (statsmodels.api)
Importada canónicamente como sm, esta interfaz sigue el estilo de Scikit-Learn
y el álgebra lineal pura. Espera matrices separadas para la variable dependiente
(endógena, y) y las variables independientes (exógenas, X).
Manejo del Intercepto: Un punto crítico es que sm.OLS(y, X) no añade una
constante automáticamente. El modelo asume que la regresión debe pasar por el
origen (0,0) a menos que se especifique lo contrario. El analista debe integrar
explícitamente sm.add_constant(X) en el flujo de trabajo de preprocesamiento.
Omitir esto en datos no centrados sesga severamente los coeficientes y el R-
cuadrado.13
Caso de Uso: Ideal para pipelines de producción donde las matrices de diseño ya
están procesadas, o cuando se trabaja con datos de alta dimensionalidad (NumPy
arrays) donde no existen metadatos de columnas.
3.1.2. La API de Fórmulas (statsmodels.formula.api)
Importada como smf, utiliza la biblioteca Patsy para interpretar cadenas de
texto que describen el modelo, similar a la sintaxis de R (e.g., 'Outcome ~ Treatment +
Age + C(Hospital)').
Ventajas de Integración: Esta API automatiza tareas tediosas: añade el intercepto
por defecto, aplica transformaciones en línea (como np.log(Income)) y convierte
automáticamente variables categóricas en variables dummy.
Caso de Uso: Preferida para análisis exploratorio, investigación académica y
cuando se trabaja directamente con DataFrames de Pandas, ya que hace que el
código sea más legible y semántico.14
3.2. Regresión Lineal y Diagnósticos Exhaustivos
El objeto OLSResults devuelto por el ajuste del modelo es una mina de oro de
63
información estadística. Mientras que otras bibliotecas solo devuelven coeficientes,
Statsmodels proporciona un resumen (summary()) que incluye:
Estadísticos de Ajuste: R-cuadrado, R-cuadrado ajustado, F-statistic (y su
probabilidad).
Criterios de Información: AIC y BIC para la selección de modelos.
Diagnósticos de Residuos: Pruebas de Omnibus y Jarque-Bera para normalidad
de residuos, Durbin-Watson para autocorrelación y pruebas de
heterocedasticidad.15
La integración programática permite extraer estos valores individualmente
para generar informes personalizados. Por ejemplo, los p-values se pueden acceder
mediante el atributo .pvalues, devolviendo una Serie de Pandas indexada por nombre
de variable, lo que permite filtrar automáticamente características significativas
(model.pvalues[model.pvalues < 0.05]).17
3.3. ANOVA y Modelos Lineales Generalizados (GLM)
Statsmodels integra capacidades robustas para el Análisis de Varianza
(ANOVA). Utilizando la función anova_lm, se pueden descomponer la varianza de
modelos lineales ajustados para generar tablas ANOVA de Tipo I, II o III,
fundamentales para diseños experimentales balanceados y no balanceados.12
Para variables de respuesta no normales (conteos, binarias, asimétricas), el
módulo GLM permite especificar familias de distribuciones (Binomial, Poisson,
Gamma, Gaussiana Inversa) y funciones de enlace. Esto es esencial para la regresión
logística (donde se modelan log-odds) y el análisis de supervivencia básico,
permitiendo a los usuarios de Python replicar modelos que tradicionalmente
requerían software especializado como STATA.5
64
3.4. Análisis de Series Temporales y Econometría
Una fortaleza distintiva de Statsmodels frente a Scikit-Learn es su profundo
soporte para series temporales econométricas. Implementa modelos SARIMAX
completos (Seasonal AutoRegressive Integrated Moving Average with eXogenous
regressors), modelos de espacio de estados (State Space Models) y pruebas de raíz
unitaria (Dickey-Fuller aumentado). Estas herramientas se integran con los índices de
tiempo de Pandas para manejar frecuencias de datos (diario, mensual, trimestral) y
permiten descomponer series en tendencia, estacionalidad y ruido.1
4. Simplificación y Estadística Académica: El
Ascenso de Pingouin
Mientras Statsmodels ofrece una potencia exhaustiva, su verbosidad puede ser
excesiva para pruebas estadísticas estándar rápidas. Aquí es donde Pingouin ha
emergido como una capa de integración vital, diseñada para ofrecer una experiencia
de usuario simplificada y orientada a resultados tabulares consistentes, cubriendo el
vacío entre la simplicidad de SciPy y la complejidad de Statsmodels.21
4.1. Filosofía de Diseño: "Tidy Statistics"
La innovación clave de Pingouin es que casi todas sus funciones devuelven un
DataFrame de Pandas con una estructura consistente. En lugar de devolver objetos
opacos o tuplas de valores (como scipy.stats), una llamada a pg.ttest() devuelve una
fila con columnas explícitas para el valor T, el p-value, los grados de libertad, el
tamaño del efecto (Cohen's d), la potencia estadística y el factor de Bayes. Esta
estandarización permite a los investigadores iterar sobre múltiples variables, calcular
pruebas para cada una y concatenar los resultados en una única tabla maestra de
evidencias ("Evidence Table") con un mínimo de código.22
65
4.2. Cobertura de Pruebas Especializadas
Pingouin integra pruebas que históricamente eran difíciles de realizar en
Python sin escribir código personalizado extenso. Incluye:
ANOVA de Medidas Repetidas y Mixtas: Crucial para diseños experimentales
en psicología y medicina donde los mismos sujetos son medidos múltiples veces.
Pruebas Post-hoc: Correcciones automáticas (Bonferroni, Holm, FDR) para
comparaciones múltiples, una necesidad absoluta para evitar el "p-hacking" en
análisis exploratorios.23
Correlaciones Robustas: Más allá de Pearson/Spearman, ofrece correlaciones
parciales, semiparciales y correlaciones robustas a valores atípicos (Shepherd,
skipped), integrando métodos modernos que a menudo están ausentes en
paquetes básicos.21
Fiabilidad y Consistencia: Cálculo de Alpha de Cronbach y correlación
intraclase (ICC), herramientas estándar en psicometría.23
Esta biblioteca actúa como un complemento a Statsmodels, siendo preferida
para el análisis rápido de pruebas de hipótesis y la generación de tablas de resultados
para publicaciones académicas.
5. Visualización Estadística: Evidencia Gráfica
La visualización no es un paso posterior al análisis, sino una parte integral del
razonamiento estadístico. El ecosistema de Python estructura esto en capas, con
Matplotlib proporcionando el control granular y Seaborn ofreciendo la gramática de
gráficos estadísticos de alto nivel.
5.1. Seaborn: Visualización Orientada a Modelos
Seaborn se distingue por integrar la estimación estadística directamente en la
66
generación de gráficos. Funciones como lmplot o regplot no se limitan a dibujar
puntos; calculan internamente una regresión lineal (usando Statsmodels o NumPy
bajo el capó) y visualizan la línea de ajuste junto con un intervalo de confianza
translúcido (generalmente calculado mediante bootstrapping). Esto permite evaluar
visualmente la fuerza de una relación y la incertidumbre asociada en un solo paso.8
La biblioteca también maneja la complejidad de las variables categóricas
mediante el sistema de "facetas" (FacetGrid). Un analista puede visualizar la
interacción entre tres o cuatro variables simultáneamente mapeándolas a ejes x/y,
color (hue), forma (style) y columnas/filas de subgráficos. Por ejemplo, visualizar
cómo cambia la relación entre la dosis de un medicamento y la respuesta clínica (x, y)
en función del sexo del paciente (color) y el hospital (columna), todo con una sola línea
de código declarativo.25
5.2. Integración Orientada a Objetos con Matplotlib
Para informes profesionales, la integración de Seaborn dentro de figuras
complejas de Matplotlib es esencial. Dado que Seaborn se construye sobre Matplotlib,
sus funciones aceptan un argumento ax que permite "inyectar" el gráfico estadístico
en una ubicación específica de una cuadrícula de subgráficos (subplots).
Esto permite flujos de trabajo híbridos donde se combina la facilidad de
Seaborn para el análisis estadístico con la capacidad de anotación detallada de
Matplotlib. Un analista puede crear una figura con múltiples paneles, usar Seaborn
para llenar los paneles con diagramas de violín y mapas de calor, y luego usar la API
de objetos de Matplotlib para ajustar límites de ejes, añadir anotaciones de texto con
valores p específicos, o personalizar la tipografía para cumplir con estándares
editoriales estrictos.27
67
6. Interoperabilidad Transversal: El Puente con R
A pesar de la madurez de Python, el ecosistema de R sigue siendo insuperable
en ciertos nichos estadísticos (bioinformática avanzada, paquetes académicos de
vanguardia). La integración pragmática implica el uso de rpy2, una biblioteca que
permite incrustar R dentro de un proceso Python, permitiendo el acceso a CRAN sin
salir del entorno Python.1
6.1. Arquitectura de rpy2 y Conversión de Objetos
rpy2 opera ejecutando una biblioteca dinámica de R vinculada al proceso de
Python. El submódulo robjects actúa como el intermediario principal. La característica
más potente es la conversión automática (y a veces sin copia, utilizando buffers de
memoria compartida o Arrow) entre DataFrames de Pandas y DataFrames de R. Esto
significa que un analista puede realizar la limpieza y manipulación de datos en Pandas
(aprovechando su sintaxis superior) y pasar el objeto resultante directamente a una
función de R.3
6.2. Invocación de Funciones y Paquetes de R
Mediante rpy2.robjects.packages.importr, es posible importar paquetes de R
como si fueran módulos de Python. Esto permite, por ejemplo, utilizar la biblioteca
lme4 de R para ajustar modelos lineales de efectos mixtos complejos (que
históricamente han sido más robustos en R que en Python) utilizando datos
preparados en Python.
El flujo de trabajo permite incluso extraer los resultados complejos de R (listas,
objetos S3/S4) y convertirlos de nuevo a diccionarios o DataFrames de Python para su
reporte. En entornos interactivos como Jupyter, las "magic commands" (%%R)
permiten escribir bloques de código R nativo que aceptan variables de entrada de
68
Python (-i) y devuelven variables de salida (-o), facilitando una programación
políglota fluida donde se utiliza "la mejor herramienta para cada tarea".3
7. Integración con Sistemas Heredados: SAS y
SPSS
En sectores altamente regulados como la banca y la industria farmacéutica, el
código heredado en SAS y SPSS representa una inversión de décadas. Python ofrece
puentes robustos para interactuar con estos sistemas, permitiendo una modernización
gradual.
7.1. Orquestación de SAS con saspy
Desarrollada por el propio Instituto SAS, la biblioteca saspy permite a Python
controlar una sesión de SAS (local o remota). Funciona traduciendo objetos de Pandas
a conjuntos de datos de SAS y generando código SAS al vuelo para ejecutar
procedimientos (PROC). Esto permite a los analistas utilizar la potencia del motor
analítico de SAS (capaz de manejar datos en disco masivos) desde la comodidad de la
sintaxis de Python/Jupyter.4
El método submit() permite inyectar código SAS arbitrario y recuperar el log
y la lista de resultados (LST) directamente en Python. Esto es vital para flujos de
trabajo donde la validación regulatoria requiere el uso de procedimientos SAS
certificados, pero el análisis exploratorio y la visualización se prefieren en Python.34
7.2. Interacción Bidireccional con SPSS
1. Python dentro de SPSS: SPSS permite incrustar scripts de Python dentro de su
sintaxis (BEGIN PROGRAM PYTHON3). Esto se utiliza para automatizar tareas
repetitivas, manipular el diccionario de metadatos de SPSS y crear comandos de
extensión personalizados que añaden funcionalidad moderna a la interfaz de
69
SPSS.36
2. SPSS dentro de Python (Externo): La biblioteca pyreadstat es esencial para leer
archivos .sav y .zsav directamente en DataFrames de Pandas, preservando
etiquetas de valores y nombres de variables. Esto rompe la dependencia de tener
SPSS instalado para simplemente acceder a los datos. Para controlar el motor de
SPSS externamente, se pueden configurar scripts de Python que invocan el
procesador de estadísticas en modo silencioso, aunque esto requiere una gestión
cuidadosa de las rutas y licencias.38
8. Flujos de Trabajo Aplicados y Casos de Uso
La verdadera potencia de estas herramientas se revela en su aplicación
integrada a problemas complejos.
8.1. Análisis de Ensayos Clínicos y Bioestadística
En un entorno clínico, el flujo de trabajo típico comienza con la ingesta de datos
SAS (.sas7bdat) utilizando pd.read_sas o pyreadstat.
1. Tablas Demográficas: Se utiliza Pandas groupby y agg para generar la "Tabla 1"
(características basales), calculando medias para datos continuos y frecuencias
para categóricos.
2. Inferencia de Eficacia: Se emplea Statsmodels (smf.logit o smf.ols) para modelar
el resultado primario ajustado por covariables. La capacidad de definir fórmulas
(outcome ~ treatment + age + baseline) asegura la reproducibilidad.
3. Reporte de Riesgos: Se calculan Odds Ratios (OR) o Riesgos Relativos (RR)
exponenciando los coeficientes (np.exp(params)).
4. Meta-análisis: Python se utiliza cada vez más para sintetizar estudios,
calculando efectos fijos y aleatorios y generando gráficos de bosque (forest plots)
con Matplotlib/Seaborn, validando los resultados contra implementaciones de
70
referencia en R o STATA.41
8.2. Econometría y Series Temporales Financieras
En finanzas, la integración de Pandas y Statsmodels es crítica. Pandas maneja
la alineación temporal y el remuestreo de frecuencias (e.g., convertir datos de ticks a
velas de 5 minutos). Statsmodels se utiliza entonces para pruebas de estacionariedad
(ADF test) y ajuste de modelos ARIMA/GARCH. La integración permite realizar
pruebas de cointegración (Engle-Granger) entre múltiples activos para estrategias de
trading de pares, visualizando los residuos y la convergencia del spread con Seaborn.1
9. El Paisaje Futuro: Tendencias 2025
Mirando hacia el futuro, el ecosistema estadístico de Python continúa
evolucionando. Nuevas bibliotecas como Polars están desafiando a Pandas con un
rendimiento multihilo escrito en Rust, ideal para conjuntos de datos que exceden la
capacidad de un solo núcleo pero caben en memoria. Aunque el ecosistema de
herramientas estadísticas (Statsmodels, Seaborn) todavía está adaptándose para
soportar Polars nativamente, la interoperabilidad a través de Arrow promete un
futuro sin copias de datos.43
Además, la línea entre la estadística clásica y el aprendizaje automático se está
difuminando con herramientas de AutoML (PyCaret, Optuna) que integran pruebas
estadísticas preeliminares para la selección de características automática. Sin embargo,
para la inferencia causal y la investigación científica rigurosa, la combinación de
Pandas, Statsmodels y la interoperabilidad con R seguirá siendo el estándar de oro.2
Ya sea a través de la profundidad matemática de Statsmodels, la simplicidad
académica de Pingouin, o los puentes hacia R y SAS, Python ofrece a los profesionales
la capacidad de construir flujos de trabajo analíticos que son a la vez rigurosos,
71
reproducibles y escalables, definiendo el estándar moderno para la investigación
cuantitativa (ver Tabla 5).
Tabla 5: Comparativa Técnica de Bibliotecas Clave
Biblioteca
Interfaz de
Resultados
Statsmodels
Objeto
ResultsWrapper
complejo con
métodos de
resumen y
atributos
Pingouin
pandas.DataFra
me (Tidy format)
SciPy (Stats)
Tuplas o
escalares
(objetos simples)
Seaborn
Objetos Axes o
FacetGrid de
Matplotlib
72
rpy2
Objetos R
convertidos a
Python/Pandas
Saspy
Salida
HTML/Texto y
Pandas
DataFrames
PyReadStat
Pandas
DataFrame +
Metadatos
(diccionario)
73
Capítulo 4.
Informe Integral sobre Metodologías
Estadísticas Paramétricas y No
Paramétricas Asistidas por Software en
el Ecosistema Python
1. La Convergencia de la Teoría Estadística y la
Computación Moderna
La inferencia estadística, tradicionalmente considerada una rama de las
matemáticas aplicadas confinada a la derivación teórica y el cálculo manual laborioso,
ha experimentado una metamorfosis radical en el siglo XXI. La integración de
capacidades computacionales avanzadas con fundamentos probabilísticos ha dado
lugar a una nueva praxis en la ciencia de datos, donde la barrera entre la teoría y la
aplicación se ha disuelto. En este contexto, el lenguaje de programación Python ha
emergido no solo como una herramienta de scripting, sino como el lingua franca de la
investigación analítica moderna, desplazando gradualmente a entornos heredados
como SPSS, SAS e incluso desafiando la hegemonía académica de R en ciertos
sectores.1
Este reporte tiene como objetivo proporcionar un análisis exhaustivo, crítico y
técnicamente detallado sobre la implementación de métodos estadísticos
paramétricos y no paramétricos utilizando Python. A diferencia de los manuales
introductorios que se limitan a la sintaxis, este documento explora las implicaciones
metodológicas de elegir una librería sobre otra (por ejemplo, la precisión econométrica
de statsmodels versus la simplicidad bioestadística de pingouin), la robustez de los
74
algoritmos subyacentes y la interpretación profunda de los resultados en el contexto
de la investigación científica rigurosa.
El análisis se estructura en torno a la dicotomía fundamental de la estadística
inferencial: los métodos paramétricos, que basan sus inferencias en supuestos estrictos
sobre la distribución de la población subyacente 3, y los métodos no paramétricos, que
operan libres de tales restricciones distribucionales, ofreciendo robustez a costa de una
potencia estadística matizada.5 A través de esta exploración, se desentrañará cómo el
ecosistema de Python permite no solo ejecutar estas pruebas, sino validar sus
supuestos críticos normalidad y homocedasticidad y extender la interpretación
más allá del valor p, incorporando tamaños del efecto y potencia estadística como
estándares de evidencia.7
2. Arquitectura del Ecosistema Estadístico en
Python
Para el investigador o científico de datos, la elección de la herramienta en
Python no es trivial. El ecosistema no es monolítico; se compone de capas de
abstracción que sirven a propósitos epistemológicos distintos. Comprender esta
arquitectura es prerrequisito para un análisis válido.
2.1 SciPy: El Núcleo Matemático de Bajo Nivel
La biblioteca scipy, y específicamente su módulo scipy.stats, constituye la base
sobre la cual se construyen casi todas las demás herramientas estadísticas en Python.2
Su diseño es utilitario y enfocado en el rendimiento numérico.
Filosofía: SciPy opera bajo el paradigma de la eficiencia computacional. Sus
funciones, como ttest_ind o mannwhitneyu, están diseñadas para recibir arrays
75
de NumPy y devolver objetos de resultados mínimos (generalmente el estadístico
de prueba y el valor p).9
Limitaciones Metodológicas: Para el analista que requiere un reporte completo,
SciPy es insuficiente por solo. No calcula automáticamente intervalos de
confianza para todas las pruebas, ni tamaños del efecto, ni verifica los supuestos
dentro de la misma llamada de función. Requiere que el usuario construya
manualmente la infraestructura de validación.8
2.2 Statsmodels: El Rigor Econométrico
Si SciPy es el motor, statsmodels es el panel de control de ingeniería. Inspirada
fuertemente en la arquitectura de R, esta librería introduce el concepto de "modelo"
como objeto central.2
Enfoque en Modelado: A diferencia de SciPy, que ejecuta "pruebas", Statsmodels
ajusta modelos (OLS, GLM, Logit). Esto permite un diagnóstico mucho más rico.
El método .summary() de un objeto OLS en Statsmodels es famoso por
proporcionar no solo los coeficientes, sino una batería completa de pruebas de
diagnóstico sobre los residuos (Jarque-Bera para normalidad, Durbin-Watson
para autocorrelación, Condición Número para multicolinealidad).11
Aplicación: Es la herramienta de elección indiscutible para análisis de regresión,
series temporales y econometría, donde la estructura de los errores y la
especificación del modelo son tan importantes como los parámetros estimados.13
2.3 Pingouin: La Democratización de la Estadística Robusta
pingouin representa la "tercera ola" de bibliotecas estadísticas en Python.
Desarrollada por Raphael Vallat, aborda la necesidad de una interfaz "batteries-
included" para las ciencias del comportamiento y biomédicas.1
Innovación en el Flujo de Trabajo: Pingouin se distingue por devolver objetos
76
pandas.DataFrame ricos en información. Una simple llamada a pg.ttest no solo
devuelve el valor p, sino también el factor de Bayes (BF10), el tamaño del efecto
(d de Cohen), la potencia estadística (power) y los intervalos de confianza.8
Relevancia: Esta librería reduce el riesgo de error humano al automatizar
cálculos complejos (como la corrección de grados de libertad de Welch o el
cálculo de tamaños del efecto) que en SciPy tendrían que codificarse
manualmente (ver Tabla 6).15
Tabla 6: Comparativa de Capacidades
Característica
SciPy (scipy.stats)
Statsmodels
(statsmodels.api)
Pingouin (pingouin)
Enfoque Principal
Funciones
matemáticas básicas y
distribuciones
Modelado estadístico
y econometría
Pruebas estadísticas
simples y exhaustivas
Estructura de Salida
Tuplas o clases
simples
Clases complejas con
métodos de resumen
pandas.DataFrame
listo para exportar
Tamaño del Efecto
No nativo (requiere
cálculo manual)
Limitado
Nativo (Cohen's d,
Hedges' g, \eta^2,
etc.)
Diagnósticos
Pruebas individuales
disponibles
Integrados en el
resumen del modelo
Algunos integrados,
otros como funciones
separadas
Sintaxis
Funcional (arrays)
Orientada a objetos y
fórmulas (tipo R)
Funcional y métodos
de DataFrame
Factor de Bayes
No disponible
No disponible
Nativo en muchas
pruebas
77
Caso de Uso Ideal
Desarrollo de
algoritmos, pipelines
rápidos
Regresión, GLM,
Series Temporales
T-tests, ANOVA,
Correlación, Reportes
APA
3. La Fase Crítica: Verificación de Supuestos y
Diagnóstico de Datos
La validez de cualquier inferencia estadística, paramétrica o no paramétrica,
descansa sobre la satisfacción de sus supuestos axiomáticos. Ignorar esta fase es la
fuente más común de "p-hacking" involuntario y conclusiones erróneas. Python ofrece
un arsenal de herramientas para auditar la integridad de los datos antes de proceder
a la prueba de hipótesis.
3.1 El Supuesto de Normalidad: Matices y Verificación
Los métodos paramétricos, como la prueba T y el ANOVA, asumen que los
datos muestrales provienen de una población distribuida normalmente.3 Sin embargo,
la literatura moderna matiza esto: para los Modelos Lineales Generales (incluida la
regresión), el supuesto crítico recae sobre la normalidad de los residuos, no
necesariamente de las variables brutas.17
3.1.1 Pruebas de Hipótesis para Normalidad
Existen múltiples algoritmos para testar la hipótesis nula (H_0) de que una
muestra proviene de una distribución normal.
1. Prueba de Shapiro-Wilk (scipy.stats.shapiro): Se considera el estándar de oro
para muestras pequeñas a medianas (N < 50-100). Evalúa la correlación entre los
datos ordenados y los valores esperados bajo normalidad.17
Limitación: En muestras grandes ("Big Data"), Shapiro-Wilk se vuelve
78
excesivamente sensible, detectando desviaciones triviales de la normalidad
que no afectan la validez de las pruebas paramétricas debido al Teorema del
Límite Central.
2. Prueba de Jarque-Bera (scipy.stats.jarque_bera): Esta prueba examina si la
asimetría (skewness) y la curtosis de la muestra coinciden con las de una
distribución normal (S=0, K=3). El estadístico de prueba sigue asintóticamente
una distribución Chi-cuadrado con 2 grados de libertad.19
Contexto de Python: statsmodels incluye el resultado de Jarque-Bera
automáticamente en sus resúmenes de regresión (OLS.summary()), lo que
permite diagnosticar inmediatamente si los residuos del modelo violan el
supuesto de normalidad.11
3. Prueba de D'Agostino-Pearson (scipy.stats.normaltest): Combina las pruebas
de asimetría y curtosis en una única prueba ómnibus poderosa.17
3.1.2 Diagnóstico Visual (La Perspectiva Cualitativa)
Dada la sensibilidad de las pruebas numéricas al tamaño de la muestra, la
inspección visual es obligatoria.
Gráficos Q-Q (Quantile-Quantile): Comparan los cuantiles empíricos de los
datos contra los cuantiles teóricos de la distribución normal.
Implementación: statsmodels.api.qqplot y pingouin.qqplot generan estos
gráficos. Una desviación en forma de "S" o puntos alejándose de la línea roja
de 45 grados en los extremos (colas) indica violaciones de normalidad (colas
pesadas o asimetría).17
Interpretación: Si los puntos caen mayoritariamente sobre la línea, incluso si
Shapiro-Wilk da p < 0.05 en una muestra grande, el método paramétrico
suele ser seguro.
79
3.2 El Supuesto de Homocedasticidad (Homogeneidad de
Varianzas)
La igualdad de varianzas entre los grupos comparados es crucial para pruebas
como el ANOVA y la prueba T estándar. Si un grupo tiene mucha más varianza que
otro, la estimación del error estándar combinado será sesgada.
1. Prueba de Levene (scipy.stats.levene): Es la prueba más robusta y utilizada.
Evalúa si las varianzas son iguales calculando las desviaciones absolutas desde
la media (o más robustamente, desde la mediana).18 Es menos sensible a
desviaciones de la normalidad que la prueba de Bartlett.23
2. Prueba de Bartlett (scipy.stats.bartlett): Basada en una aproximación Chi-
cuadrado del logaritmo de las varianzas.
Advertencia Crítica: Bartlett es extremadamente sensible a la no normalidad.
Si sus datos no son perfectamente normales, una prueba de Bartlett
significativa podría estar detectando falta de normalidad en lugar de
heterocedasticidad real. Por ello, Levene es generalmente preferible en
aplicaciones prácticas en Python.23
Implicación Metodológica: Si se viola la homocedasticidad, no es necesario
abandonar el enfoque paramétrico. Se debe optar por variantes robustas como la t de
Welch o el ANOVA de Welch, implementadas en Pingouin (pg.welch_anova) y SciPy
(ttest_ind(equal_var=False)).10
4. Métodos Estadísticos Paramétricos: Análisis de
Medias
Los métodos paramétricos asumen que los parámetros de la población (media
\mu, desviación estándar \sigma) pueden estimarse adecuadamente y que la
80
distribución subyacente es conocida (generalmente Normal). Son los métodos más
potentes cuando se cumplen los supuestos.
4.1 La Prueba T de Student y sus Variantes
La prueba T es el mecanismo fundamental para comparar las medias de uno o
dos grupos.
4.1.1 Prueba T para Muestras Independientes
Utilizada para comparar dos grupos distintos (ej. Grupo Tratamiento vs.
Grupo Control).
Mecánica en Python:
scipy.stats.ttest_ind(a, b): Calcula la prueba asumiendo varianzas iguales.
pingouin.ttest(a, b): Por defecto, Pingouin verifica la igualdad de varianzas.
Si detecta heterocedasticidad, aplica automáticamente la corrección de
Welch, ajustando los grados de libertad.8
Interpretación Profunda: Más allá del valor p, Pingouin proporciona el Factor de
Bayes (BF10). Un BF10 = 10 implica que la hipótesis alternativa es 10 veces más
probable que la nula dados los datos. Esto ofrece una cuantificación de la
evidencia que el valor p (probabilidad de los datos dada la nula) no puede
ofrecer.8
4.1.2 Prueba T para Muestras Relacionadas (Pareadas)
Utilizada para diseños de medidas repetidas (ej. Pre-test vs. Post-test en los
mismos sujetos).
Mecánica: scipy.stats.ttest_rel o pingouin.ttest(paired=True).
Insight: Esta prueba es matemáticamente equivalente a realizar una prueba T de
una muestra sobre las diferencias entre los pares contra una media de 0. La
81
correlación entre las medidas repetidas aumenta la potencia estadística al reducir
la varianza del error.9
4.2 Análisis de Varianza (ANOVA)
Cuando la comparación se extiende a más de dos grupos, la prueba T acumula
error Tipo I. El ANOVA generaliza la comparación descomponiendo la varianza total
observada en componentes explicables (entre grupos) y error aleatorio (dentro de
grupos).
4.2.1 ANOVA de Una Vía (One-Way)
Implementación:
scipy.stats.f_oneway: Básica, devuelve F y p.
pingouin.anova(dv='y', between='x', data=df): Genera una tabla clásica de
ANOVA. Incluye el tamaño del efecto \eta^2 (eta-cuadrado parcial), esencial
para reportar qué proporción de la varianza total es explicada por el factor.8
4.2.2 ANOVA Factorial y la Suma de Cuadrados
En diseños con múltiples factores (ej. Efecto de 'Dieta' y 'Ejercicio' en 'Peso'), la
elección del tipo de Suma de Cuadrados (SS) es crítica si el diseño no está balanceado
(número desigual de sujetos por grupo).
Statsmodels (anova_lm): Permite especificar explícitamente typ=1, typ=2 o typ=3
para la suma de cuadrados. En ciencias sociales, el Tipo III es estándar (ajusta por
todos los demás efectos), mientras que el Tipo II es preferido si no hay interacción
significativa. Pingouin simplifica esto pero ofrece menos control granular que
Statsmodels sobre este aspecto específico.27
4.2.3 ANOVA de Medidas Repetidas y Mixto
82
Pingouin sobresale en la ejecución de ANOVAs complejos.
pg.rm_anova: Para diseños donde los mismos sujetos pasan por todas las
condiciones. Verifica automáticamente el supuesto de esfericidad (equivalente
multivariado de homocedasticidad) mediante la prueba de Mauchly y aplica
correcciones (Greenhouse-Geisser) si se viola.8
pg.mixed_anova: Para diseños que mezclan factores entre sujetos (ej. Grupo) y
factores intra-sujetos (ej. Tiempo).
5. Modelado Lineal: El Marco Unificador
Paramétrico
Es fundamental comprender que la prueba T y el ANOVA son casos especiales
del Modelo Lineal General (GLM). En Python, statsmodels permite explotar esta
relación para análisis más sofisticados.
5.1 Regresión por Mínimos Cuadrados Ordinarios (OLS)
La función statsmodels.api.OLS permite modelar variables continuas
dependientes en función de predictores continuos o categóricos.
Código y Flujo:
Python
import statsmodels.api as sm
X = sm.add_constant(data[['x1', 'x2']]) # Statsmodels no agrega intercepto por defecto
model = sm.OLS(data['y'], X)
results = model.fit()
print(results.summary())
Interpretación del Resumen: El summary() de Statsmodels es el reporte más
83
denso y rico disponible en Python.
Omnibus/Prob(Omnibus): Prueba de normalidad de los residuos.
Durbin-Watson: Evalúa la independencia de los errores (valor ideal ~2.0).
Valores < 1 o > 3 sugieren autocorrelación, invalidando los errores estándar.
Cond. No. (Número de Condición): Indica problemas de multicolinealidad
severa si es muy alto (>30), sugiriendo que los predictores son redundantes.11
5.2 Regresión con Pingouin
Para usuarios que prefieren la simplicidad, pg.linear_regression entrega un
DataFrame con coeficientes, errores estándar, valores T, p-valores e intervalos de
confianza del 95%. Adicionalmente, calcula los VIF (Factores de Inflación de Varianza)
automáticamente en ciertas configuraciones, facilitando el diagnóstico de colinealidad
sin código extra.29
6. Métodos Estadísticos No Paramétricos: Robustez
sobre Potencia
Cuando los datos violan flagrantemente los supuestos de normalidad, poseen
valores atípicos irreducibles, o son de naturaleza ordinal (escalas Likert), los métodos
paramétricos pierden fiabilidad. Los métodos no paramétricos, a menudo basados en
rangos, ofrecen una alternativa robusta.
6.1 Lógica de Rangos y Pérdida de Información
Estos métodos transforman los valores originales en su posición ordenada (1º,
2º, ...). Esto elimina la influencia de la magnitud absoluta de los datos atípicos. Sin
embargo, al descartar la distancia entre valores, se pierde información, lo que resulta
teóricamente en una menor potencia estadística si los datos fueran realmente
84
normales.5
6.2 Pruebas de Comparación de Grupos (Equivalentes No
Paramétricos)
6.2.1 Prueba U de Mann-Whitney (vs. T-test Independiente)
Evalúa si una distribución domina estocásticamente a la otra. A menudo se
interpreta como una prueba de medianas, aunque esto solo es estrictamente cierto si
las distribuciones tienen la misma forma.
Implementación: scipy.stats.mannwhitneyu o pg.mwu.
Valor Agregado: Pingouin calcula el CLES (Common Language Effect Size), que
se interpreta como "la probabilidad de que un individuo seleccionado al azar del
grupo A tenga un valor mayor que uno del grupo B".31 Esta métrica es
infinitamente más comunicable a audiencias no técnicas que el estadístico U.
6.2.2 Prueba de Rangos con Signo de Wilcoxon (vs. T-test Pareado)
Utilizada para muestras relacionadas. Calcula las diferencias, las clasifica por
magnitud absoluta, y asigna el signo original.
Implementación: pg.wilcoxon(x, y) o scipy.stats.wilcoxon. Es crucial para
analizar efectos de tratamientos en muestras pequeñas clínicas donde la
normalidad no puede asumirse.9
6.2.3 Kruskal-Wallis H (vs. ANOVA One-Way)
Es una extensión de Mann-Whitney para más de dos grupos. Contrasta si las
muestras provienen de la misma distribución.
Implementación: pg.kruskal o scipy.stats.kruskal.
Limitación: Como prueba ómnibus, solo indica que hay una diferencia, no dónde.
85
Requiere pruebas post-hoc específicas.32
6.2.4 Prueba de Friedman (vs. ANOVA Medidas Repetidas)
Utilizada para detectar diferencias en tratamientos a través de múltiples
intentos de prueba en los mismos sujetos (diseño de bloques completos aleatorizados).
Implementación: pg.friedman. Pingouin reporta el estadístico Q y el p-valor,
junto con el W de Kendall como tamaño del efecto.34
7. Análisis Post-hoc y Correcciones por
Comparaciones Múltiples
Un error metodológico grave es ejecutar múltiples pruebas T o Mann-Whitney
después de un ANOVA o Kruskal-Wallis significativo sin ajustar el nivel de
significancia (\alpha). Esto infla el Error Tipo I (falsos positivos).
7.1 Post-hoc Paramétrico: Tukey HSD
La prueba de Tukey (Honest Significant Difference) es el estándar para
comparar todos los pares de medias tras un ANOVA.
Herramienta: pg.pairwise_tukey o
statsmodels.stats.multicomp.pairwise_tukeyhsd.
Salida: Devuelve la diferencia media, el intervalo de confianza y el p-valor
ajustado para cada par de grupos. Controla rigurosamente la tasa de error
familiar (FWER).36
7.2 Post-hoc No Paramétrico: Prueba de Dunn
Tras un Kruskal-Wallis significativo, la prueba adecuada es la de Dunn, no
múltiples Mann-Whitney.
86
La Laguna en Pingouin: Pingouin integra muchas pruebas, pero para Dunn es
preferible utilizar la librería especializada scikit-posthocs.
Implementación con Scikit-posthocs:
Python
import scikit_posthocs as sp
# Post-hoc de Dunn con corrección de Holm
sp.posthoc_dunn(df, val_col='score', group_col='group', p_adjust='holm')
La corrección de 'holm' es generalmente preferida sobre 'bonferroni' por ser
menos conservadora pero igualmente válida.37
7.3 Correcciones de P-valor en Pingouin
Para pruebas pareadas generales, pg.pairwise_tests permite especificar
métodos de corrección como padjust='bonf' (Bonferroni) o padjust='fdr_bh'
(Benjamini-Hochberg, que controla la tasa de falsos descubrimientos en lugar del error
familiar, ideal para estudios con cientos de comparaciones como en genómica).40
8. Análisis de Asociación: Correlación y
Contingencia
8.1 Correlación Bivariada
La relación entre variables cuantitativas varía según los supuestos
distribucionales.
Pearson (Paramétrica): pg.corr(x, y, method='pearson'). Asume linealidad y
normalidad bivariada.
Spearman (No Paramétrica): pg.corr(method='spearman'). Evalúa relaciones
monótonas usando rangos. Es robusta a valores atípicos.41
87
Kendall (No Paramétrica): method='kendall'. Preferible a Spearman en muestras
pequeñas o cuando hay muchos valores empatados (ties).42
Correlación Robusta (Biweight Midcorrelation): Pingouin ofrece
method='bicor', una correlación basada en medianas ponderadas que es
altamente resistente a datos saturados sin sacrificar tanta potencia como
Spearman en datos normales.42
8.2 Pruebas de Independencia (Chi-Cuadrado)
Para variables categóricas, la prueba \chi^2 de independencia es fundamental.
Implementación: pg.chi2_independence(data, x, y) supera a
scipy.stats.chi2_contingency al devolver un DataFrame formateado que incluye:
Valores observados y esperados.
Estadístico Chi-cuadrado y p-valor.
V de Cramér: Un tamaño del efecto estandarizado (0 a 1) para tablas de
contingencia, esencial para interpretar la fuerza de la asociación más allá de
su significancia.8
9. Más Allá del Valor P: Tamaños del Efecto y
Potencia
La estadística moderna exige reportar la magnitud del efecto. Un p-valor de
0.0001 en una muestra de 100,000 datos puede corresponder a una diferencia trivial
sin valor práctico.
9.1 Métricas de Tamaño del Efecto
Python, a través de Pingouin, automatiza el cálculo de estas métricas, que
anteriormente requerían funciones ad-hoc.
88
d de Cohen: Diferencia de medias estandarizada. Fundamental en pruebas T.
g de Hedges: Corrección de la d de Cohen para muestras pequeñas (N < 20).
Pingouin la utiliza por defecto para evitar sobreestimar el efecto.44
Rank-Biserial Correlation: El tamaño del efecto natural para la prueba de Mann-
Whitney y Wilcoxon.
\eta^2 (Eta-cuadrado): Proporción de varianza explicada en ANOVA.
9.2 Potencia Estadística (Power Analysis)
La potencia es la probabilidad de rechazar H_0 cuando es falsa (1 - \beta).
Pingouin incluye funciones como pg.power_ttest para calcular la potencia a posteriori
o determinar el tamaño de muestra necesario a priori para detectar un efecto
específico.7 Esto permite al investigador decir: "Mi estudio tenía un 80% de
probabilidad de detectar este efecto", validando los resultados negativos.
10. Recomendaciones para el Flujo de Trabajo
El análisis de métodos estadísticos paramétricos y no paramétricos en Python
revela un ecosistema maduro y estratificado. La transición desde herramientas
tradicionales hacia Python no solo es viable, sino metodológicamente ventajosa
debido a la transparencia del código y la riqueza de las bibliotecas disponibles.
1. Exploración sobre Asunción: Nunca confíe ciegamente en pruebas de
normalidad numéricas (como Shapiro-Wilk) en grandes conjuntos de datos.
Priorice la inspección visual (QQ-plots en Statsmodels/Pingouin) y el
conocimiento del dominio.
2. La Jerarquía de Herramientas:
Utilice Pingouin para el 90% de los análisis de comparación de grupos y
correlaciones estándar. Su salida detallada y manejo de efectos/potencia
fomenta mejores prácticas científicas.
89
Reserve Statsmodels para modelado de regresión serio y análisis
econométrico donde el diagnóstico de residuos es central.
Integre Scikit-posthocs para cerrar la brecha en el análisis no paramétrico
post-hoc (Dunn).
3. Transparencia Inferencial: Aproveche la capacidad de Python para reportar
intervalos de confianza y tamaños del efecto junto a los valores p. La
reproducibilidad no solo implica compartir el código, sino utilizar métricas que
comuniquen la incertidumbre y la magnitud real de los hallazgos.
Python ha democratizado el acceso a una estadística rigurosa, permitiendo a
los investigadores navegar con fluidez entre paradigmas paramétricos y no
paramétricos, asegurando que la elección del método se base en la naturaleza de los
datos y no en las limitaciones del software.
90
Conclusión
A través de la sistematización, hemos recorrido el vasto paisaje de la inferencia
estadística, arrumbando desde la rigurosidad de los métodos paramétricos hasta la
flexibilidad y robustez de los enfoques no paramétricos. Sin embargo, más allá de las
fórmulas matemáticas y los teoremas fundamentales, el verdadero protagonista de
este viaje ha sido la aplicación práctica asistida por software.
La dicotomía entre estadística paramétrica y no paramétrica no debe verse
como una competencia, sino como una caja de herramientas complementaria. Hemos
demostrado que, si bien las pruebas paramétricas (como la prueba t o ANOVA)
ofrecen una mayor potencia estadística cuando se cumplen los supuestos de
normalidad y homocedasticidad, los métodos no paramétricos (como U de Mann-
Whitney o Kruskal-Wallis) son salvavidas indispensables ante datos asimétricos,
ordinales o con valores atípicos severos. La responsabilidad del investigador no reside
en preferir un método sobre otro por costumbre, sino en diagnosticar la naturaleza de
sus datos para elegir la prueba más honesta y rigurosa.
La integración de Python en este proceso a través de librerías como SciPy,
Statsmodels, Pandas y Seaborn ha transformado la manera en que interactuamos
con la estadística. Hemos visto cómo el lenguaje de programación nos permite:
Automatizar la verificación de supuestos: Pasando de cálculos manuales
tediosos a pruebas de Shapiro-Wilk o Levene en una sola línea de código.
Visualizar para comprender: Donde los gráficos de cajas, histogramas y
diagramas de dispersión dejan de ser adornos para convertirse en
herramientas diagnósticas críticas.
91
Garantizar la reproducibilidad: Al documentar cada paso del análisis en scripts
o notebooks, aseguramos que nuestros resultados sean transparentes y
verificables por la comunidad científica.
En sí, la lección más valiosa de este texto es el cambio de enfoque: al delegar la
complejidad aritmética en el ordenador, el investigador libera recursos cognitivos
para lo verdaderamente importante: el diseño experimental y la interpretación de
resultados. Python calcula el p-valor en milisegundos, pero es el analista quien debe
decidir, con criterio científico, si ese valor tiene significancia práctica en el contexto de
su investigación.
Este libro ha buscado ser un puente entre la teoría abstracta y la solución de
problemas reales. Esperamos que las herramientas y códigos aquí presentados sirvan
no solo para resolver las preguntas planteadas en estos capítulos, sino como base
sólida para que el lector afronte los desafíos analíticos de sus futuras investigaciones
con confianza, rigor y eficiencia.
La estadística es, en esencia, la gramática de la ciencia. Sin embargo, en las
últimas décadas, la práctica estadística ha sufrido una transformación radical: ha
dejado de ser una disciplina puramente aritmética para convertirse en una ciencia
computacional. Durante años, hemos observado cómo muchos investigadores se
enfrentan a un dilema: dominan la teoría pero tropiezan en la implementación, o bien,
ejecutan código en software comercial sin comprender los supuestos subyacentes de
las pruebas que aplican.
Por lo que desmitificaremos su ejecución utilizando Python, lenguaje que por
su ecosistema de código abierto y su capacidad para garantizar la reproducibilidad de
la investigación, un estándar de oro en la ciencia contemporánea. En conclusión, el
enfoque clásico en Python, por tanto, actúa como un puente entre la teoría de
92
conjuntos y la algoritmia, permitiendo verificar identidades combinatorias y resolver
problemas de probabilidad discreta con precisión absoluta, siempre que los recursos
computacionales lo permitan
93
Bibliografía
1. Hopkins, S., Dettori, J. R., & Chapman, J. R. (2018). Parametric and
Nonparametric Tests in Spine Research: Why Do They Matter?. Global
spine journal, 8(6), 652654. https://doi.org/10.1177/2192568218782679
2. Du, J., Yu, Y., Zhang, M., Wu, Z., Ryan, A. M., & Mukherjee, B. (2025).
Outcome adaptive propensity score methods for handling censoring and
high-dimensionality: application to insurance claims. Statistical Methods
in Medical Research, 34(5), 847-866.
https://doi.org/10.1177/09622802241306856
3. Kitchen C. M. (2009). Nonparametric vs parametric tests of location in
biomedical research. American journal of ophthalmology, 147(4), 571572.
https://doi.org/10.1016/j.ajo.2008.06.031
4. Hoeffding, W. (1968). Some Recent Developments in Nonparametric
Statistics. Revue de l’Institut International de Statistique / Review of the
International Statistical Institute, 36(2), 176183.
https://doi.org/10.2307/1401605
5. Mircioiu, C., & Atkinson, J. (2017). A Comparison of Parametric and Non-
Parametric Methods Applied to a Likert Scale. Pharmacy, 5(2), 26.
https://doi.org/10.3390/pharmacy5020026
6. Kim H. Y. (2014). Statistical notes for clinical researchers: Nonparametric
statistical methods: 1. Nonparametric methods for comparing two
groups. Restorative dentistry & endodontics, 39(3), 235239.
https://doi.org/10.5395/rde.2014.39.3.235
7. Chicco, D., Sichenze, A., & Jurman, G. (2025). A simple guide to the use
94
of Student's t-test, Mann-Whitney U test, Chi-squared test, and Kruskal-
Wallis test in biostatistics. BioData mining, 18(1), 56.
https://doi.org/10.1186/s13040-025-00465-6
8. Yanai, K., Hirai, K., Kaneko, S., Mutsuyoshi, Y., Kitano, T., Miyazawa,
H., … & Morishita, Y. (2023). The efficacy and safety of dotinurad on uric
acid and renal function in patients with hyperuricemia and advanced
chronic kidney disease: a single center, retrospective analysis. Drug
Design, Development and Therapy, Volume 17, 3233-3248.
https://doi.org/10.2147/dddt.s416025
9. Mayorga Ponce , R. B., Graciano Ventura, D. C. ., Martínez Hernández ,
A. ., Moctezuma Jiménez, P. M., Pérez Galindo , B. ., & Roldan Carpio ,
A. (2022). Cuadro comparativo de Análisis Paramétrico y No
Paramétrico. Educación Y Salud Boletín Científico Instituto De Ciencias De La
Salud Universidad Autónoma Del Estado De Hidalgo, 10(20), 9093.
https://doi.org/10.29057/icsa.v10i20.9143
10. Jung S. H. (2014). Stratified Fisher's exact test and its sample size
calculation. Biometrical journal. Biometrische Zeitschrift, 56(1), 129140.
https://doi.org/10.1002/bimj.201300048
11. Cooksey R. W. (2020). Descriptive Statistics for Summarising
Data. Illustrating Statistical Procedures: Finding Meaning in Quantitative
Data , 61139. https://doi.org/10.1007/978-981-15-2537-7_5
12. Nandy, S. (2014). A quantitative comparison of the financial returns of
index etfs and matched index mutual funds. International Journal of
Business and Management, 9(7). https://doi.org/10.5539/ijbm.v9n7p10
13. Mircioiu, C., & Atkinson, J. (2017). A Comparison of Parametric and Non-
95
Parametric Methods Applied to a Likert Scale. Pharmacy (Basel,
Switzerland), 5(2), 26. https://doi.org/10.3390/pharmacy5020026
14. Sheskin, D.J. (2025). Parametric Versus Nonparametric Tests. In: Lovric,
M. (eds) International Encyclopedia of Statistical Science. Springer,
Berlin, Heidelberg. https://doi.org/10.1007/978-3-662-69359-9_463
15. Mabizela, S. (2025). Navigating parametric and non-parametric statistical
analyses: A practical guide in health sciences research. WJCM, 7(1), 41-
44. https://doi.org/10.18772/26180197.2025.v7n1a9
16. Tomasiewicz, A., Targowski, T., Makuch, S., Polański, J., & Tański, W.
(2025). The Relationship Between Bioelectrical Impedance Analysis
Parameters and Laboratory Biomarkers in an Elderly Polish Cohort: A
Cross-Sectional Study. Nutrients, 17(24), 3843.
https://doi.org/10.3390/nu17243843
17. Martin, P. (2021). assumptions and transformations. In Assumptions and
Transformations (Vol. 0, pp. -). SAGE Publications Ltd,
https://doi.org/10.4135/9781529682731.n3
18. Knief, U., & Forstmeier, W. (2021). Violating the normality assumption
may be the lesser of two evils. Behavior research methods, 53(6), 25762590.
https://doi.org/10.3758/s13428-021-01587-5
19. Mishra, P., Singh, U., Pandey, C. M., Mishra, P., & Pandey, G. (2019).
Application of student's t-test, analysis of variance, and
covariance. Annals of cardiac anaesthesia, 22(4), 407411.
https://doi.org/10.4103/aca.ACA_94_19
20. Kim, T. K., & Park, J. H. (2019). More about the basic assumptions of t-
test: normality and sample size. Korean journal of anesthesiology, 72(4),
96
331335. https://doi.org/10.4097/kja.d.18.00292
21. Ghasemi, A., & Zahediasl, S. (2012). Normality tests for statistical
analysis: a guide for non-statisticians. International journal of endocrinology
and metabolism, 10(2), 486489. https://doi.org/10.5812/ijem.3505
22. Watkins J. C. (2010). On a calculus-based statistics course for life science
students. CBE life sciences education, 9(3), 298310.
https://doi.org/10.1187/cbe.10-03-0035
23. Skinner J. (2018). Statistics for Immunologists. Current protocols in
immunology, 122(1), 54. https://doi.org/10.1002/cpim.54
24. Grech, V., & Calleja, N. (2018). WASP (Write a Scientific Paper):
Parametric vs. non-parametric tests. Early Human Development, 123, 48-
49. https://doi.org/10.1016/j.earlhumdev.2018.04.014
25. Ghasemi, A., & Zahediasl, S. (2012). Normality tests for statistical
analysis: a guide for non-statisticians. International journal of endocrinology
and metabolism, 10(2), 486489. https://doi.org/10.5812/ijem.3505
26. Shapiro, S. S., & Wilk, M. B. (1965). An Analysis of Variance Test for
Normality (Complete Samples). Biometrika, 52(3/4), 591611.
https://doi.org/10.2307/2333709
27. Arnastauskaitė, J., Ruzgas, T., & Bražėnas, M. (2021). An Exhaustive
Power Comparison of Normality Tests. Mathematics, 9(7), 788.
https://doi.org/10.3390/math9070788
28. Marik, P.E. (2010). Handbook of Evidence-Based Critical Care. New York:
Springer. https://doi.org/10.1007/978-1-4419-5923-2
29. Nahm F. S. (2016). Nonparametric statistical tests for the continuous data:
the basic concept and the practical use. Korean journal of
97
anesthesiology, 69(1), 814. https://doi.org/10.4097/kjae.2016.69.1.8
30. Delacre, M., Lakens, D. and Leys, C. (2017) Why Psychologists Should by
Default Use Welch’s T-Test Instead of Student’s T-Test. International
Review of Social Psychology, 30, 92-101.
https://doi.org/10.31219/osf.io/sbp6k
31. Curtis, D. (2024). Welch’s t test is more sensitive to real world violations
of distributional assumptions than student’s t test but logistic regression
is more robust than either. Stat Papers, 65, 39813989.
https://doi.org/10.1007/s00362-024-01531-7
32. Ozsarac, V., Monteiro, R., & Calvi, G. M. (2023). Probabilistic seismic
assessment of reinforced concrete bridges using simulated
records. Structure and Infrastructure Engineering, 19(4), 554574.
https://doi.org/10.1080/15732479.2021.1956551
33. Jamshidian, M., & Jalal, S. (2010). Tests of homoscedasticity, normality,
and missing completely at random for incomplete multivariate
data. Psychometrika, 75(4), 649674. https://doi.org/10.1007/s11336-010-
9175-3
34. Zhou, Y., Zhu, Y., & Wong, W. K. (2023). Statistical tests for homogeneity
of variance for clinical trials and recommendations. Contemporary clinical
trials communications, 33, 101119.
https://doi.org/10.1016/j.conctc.2023.101119
35. Knief, U., & Forstmeier, W. (2021). Violating the normality assumption
may be the lesser of two evils. Behavior research methods, 53(6), 25762590.
https://doi.org/10.3758/s13428-021-01587-5
36. Fay, M. P., & Proschan, M. A. (2010). Wilcoxon-Mann-Whitney or t-test?
98
On assumptions for hypothesis tests and multiple interpretations of
decision rules. Statistics surveys, 4, 139. https://doi.org/10.1214/09-SS051
37. Avella-Medina, M. (2020). The Role of Robust Statistics in Private Data
Analysis. CHANCE, 33(4), 3742.
https://doi.org/10.1080/09332480.2020.1847958
38. He, X., Simpson, D. G., & Wang, G. (2000). Breakdown Points of t-Type
Regression Estimators. Biometrika, 87(3), 675687.
http://www.jstor.org/stable/2673638
39. Miller, R. G. (1970). Sequential Signed-Rank Test. Journal of the American
Statistical Association, 65(332), 15541561. https://doi.org/10.2307/2284336
40. Kim H. Y. (2014). Statistical notes for clinical researchers: Nonparametric
statistical methods: 2. Nonparametric methods for comparing three or
more groups and repeated measures. Restorative dentistry &
endodontics, 39(4), 329332. https://doi.org/10.5395/rde.2014.39.4.329
41. White, C. (1952). The use of ranks in a test of significance for comparing
two treatments. Biometrics, 8, 334
42. Zhou, Y., Zhu, Y., & Wong, W. K. (2023). Statistical tests for homogeneity
of variance for clinical trials and recommendations. Contemporary clinical
trials communications, 33, 101119.
https://doi.org/10.1016/j.conctc.2023.101119
43. Pratt, J. W. (1959). Remarks on Zeros and Ties in the Wilcoxon Signed
Rank Procedures. Journal of the American Statistical Association,
54(287), 655667. https://doi.org/10.2307/2282543
44. Nahm F. S. (2016). Nonparametric statistical tests for the continuous data:
the basic concept and the practical use. Korean journal of
99
anesthesiology, 69(1), 814. https://doi.org/10.4097/kjae.2016.69.1.8
45. Schüürhuis, S., Konietschke, F., & Brunner, E. (2025). A New Approach
to the Nonparametric Behrens-Fisher Problem With Compatible
Confidence Intervals. Biometrical journal. Biometrische Zeitschrift, 67(6),
e70096. https://doi.org/10.1002/bimj.70096
46. Fagerland, M.W., and L. Sandvik. 2009. The Wilcoxon-Mann-Whitney
test under scrutiny. Statistics in Medicine, 28, 1487-1497
47. Lee, S., & Lee, D. K. (2018). What is the proper way to apply the multiple
comparison test?. Korean journal of anesthesiology, 71(5), 353360.
https://doi.org/10.4097/kja.d.18.00242
48. Berrar, D. (2017). Confidence curves: an alternative to null hypothesis
significance testing for the comparison of classifiers. Mach Learn, 106,
911949. https://doi.org/10.1007/s10994-016-5612-6
49. Jane Ling, M. Y., Ahmad, N., & Aizuddin, A. N. (2023). Risk perception
of non-communicable diseases: A systematic review on its assessment
and associated factors. PloS one, 18(6), e0286518.
https://doi.org/10.1371/journal.pone.0286518
50. He, F., Mazumdar, S., Tang, G., Bhatia, T., Anderson, S. J., Dew, M. A.,
Krafty, R., Nimgaonkar, V., Deshpande, S., Hall, M., & Reynolds, C. F.,
3rd (2017). Nonparametric Manova approaches for non-normal
multivariate outcomes with missing values. Communications in statistics:
theory and methods, 46(14), 71887200.
https://doi.org/10.1080/03610926.2016.1146767
51. Sipos, L., Gere, A., Kókai, Z., Nyitrai, Á., Kovács, S., Urbin, Á., Samu, K.,
& Wenzel, K. (2021). Eye-Tracker Analysis of the Contrast Sensitivity of
100
Anomalous and Normal Trichromats: A Loglinear Examination with
Landolt-C Figures. Applied Sciences, 11(7), 3200.
https://doi.org/10.3390/app11073200
52. Jiang, J., Ge, H., Du, L., Gomez, M. A., Gong, B., & Cui, Y. (2022). Impact
of Match Type and Match Halves on Referees' Physical Performance and
Decision-Making Distance in Chinese Football Super League. Frontiers in
psychology, 13, 864957. https://doi.org/10.3389/fpsyg.2022.864957
53. Nollet, M. (2021). Models of depression: unpredictable chronic mild
stress in mice. Current Protocols, 1(8). https://doi.org/10.1002/cpz1.208
54. Kao, L. S., & Green, C. E. (2008). Analysis of variance: is there a difference
in means and what does it mean?. The Journal of surgical research, 144(1),
158170. https://doi.org/10.1016/j.jss.2007.02.053
55. Cangür, Ş., Sungur, M. A., & Ankaralı, H. (2018). The Methods Used in
Nonparametric Covariance Analysis. Duzce Medical Journal, 20(1), 1-6.
https://doi.org/10.18678/dtfd.424774
56. University Of Cambridge (2009). Questions on categorical data análisis.
https://imaging.mrc-cbu.cam.ac.uk/statswiki/FAQ/cdaFAQ
57. Nemes, S. (2023). Asymptotic Relative Efficiency of Parametric and
Nonparametric Survival Estimators. Stats, 6(4), 1147-1159.
https://doi.org/10.3390/stats6040072
58. Zee, J., & Xie, S. X. (2015). Nonparametric discrete survival function
estimation with uncertain endpoints using an internal validation
subsample. Biometrics, 71(3), 772781. https://doi.org/10.1111/biom.12316
59. García-Pérez, M. A., & Núñez-Antón, V. (2020). Asymptotic versus exact
methods in the analysis of contingency tables: Evidence-based practical
101
recommendations. Statistical methods in medical research, 29(9), 25692582.
https://doi.org/10.1177/0962280220902480
60. Kerby, D. S. (2014). The Simple Difference Formula: An Approach to
Teaching Nonparametric Correlation1. Comprehensive Psychology, 3.
https://doi.org/10.2466/11.IT.3.1
61. Metsämuuronen, J. (2026). Five New Nonparametric Estimators of
Common Language Effect Size. The Journal of Experimental
Education, 94(1), 170204. https://doi.org/10.1080/00220973.2025.2459411
62. In, J., & Lee, D. K. (2024). Alternatives to the P value: connotations of
significance. Korean journal of anesthesiology, 77(3), 316325.
https://doi.org/10.4097/kja.23630
63. Hazra A. (2017). Using the confidence interval confidently. Journal of
thoracic disease, 9(10), 41254130. https://doi.org/10.21037/jtd.2017.09.14
64. University Of Canterbury. (2025). APA style 7th edition. The American
Psychological Association (APA) style is widely used at UC.
https://www.canterbury.ac.nz/study/study-support-info/citations-and-
referencing/apa-style
102
De esta edición de “Métodos estadísticos paramétricos y no paramétricos
asistidos con Python y Matlab”, se terminó de editar en la ciudad de
Colonia del Sacramento en la República Oriental del Uruguay el 17 de
octubre de 2025
103