Estadística Aplicada en Python: Herramientas y Casos Prácticos


«`html





Estadística Aplicada en Python: Herramientas y Casos Prácticos

Introducción

En la era del Big Data, la estadística se ha convertido en una herramienta indispensable para extraer conocimiento valioso de grandes volúmenes de información. Python, gracias a su ecosistema de bibliotecas especializadas, se ha posicionado como el lenguaje preferido para el análisis estadístico. En este artículo exploraremos cómo aplicar técnicas estadísticas en Python, desde conceptos básicos hasta casos prácticos avanzados. Si deseas reforzar tus conocimientos en aritmética antes de continuar, te recomendamos visitar esta introducción.

Bibliotecas Esenciales para Estadística en Python

Python ofrece varias bibliotecas poderosas para el análisis estadístico:

  • NumPy: Proporciona estructuras de datos eficientes para operaciones numéricas.
  • SciPy: Contiene implementaciones de distribuciones estadísticas y tests.
  • Pandas: Ideal para manipulación y análisis de datos estructurados.
  • StatsModels: Ofrece modelos estadísticos avanzados.
  • Matplotlib/Seaborn: Para visualización de datos.

Ejemplo: Cálculo de Estadísticas Descriptivas

import numpy as np
data = np.array([23, 45, 67, 32, 12, 89, 45, 32])
print(f"Media: {np.mean(data)}")
print(f"Desviación estándar: {np.std(data)}")
print(f"Mediana: {np.median(data)}")

Distribuciones de Probabilidad

Python permite trabajar con diversas distribuciones de probabilidad:

Teorema del Límite Central

Dada una población con media $\mu$ y varianza $\sigma^2$, la distribución de las medias muestrales se aproxima a una normal $N(\mu, \sigma^2/n)$ cuando $n \to \infty$.

Demostración:

Sea $X_1, X_2, …, X_n$ una muestra aleatoria. Por propiedades de esperanza y varianza:

$$E\left(\frac{1}{n}\sum X_i\right) = \mu$$

$$Var\left(\frac{1}{n}\sum X_i\right) = \frac{\sigma^2}{n}$$

El resultado sigue del Teorema de Lévy-Lindeberg.

Ejemplo: Simulación del Teorema del Límite Central

import numpy as np
import matplotlib.pyplot as plt

# Simular 1000 muestras de tamaño 30 de una distribución exponencial
means = [np.mean(np.random.exponential(scale=1, size=30)) for _ in range(1000)]

plt.hist(means, bins=30, density=True)
plt.title('Distribución de Medias Muestrales')
plt.show()

Pruebas de Hipótesis

Las pruebas de hipótesis nos permiten tomar decisiones sobre parámetros poblacionales:

Teorema de Neyman-Pearson

Para contrastar $H_0: \theta = \theta_0$ vs $H_1: \theta = \theta_1$, la prueba más potente rechaza $H_0$ cuando el cociente de verosimilitudes $\frac{L(\theta_1)}{L(\theta_0)} > k$, donde $k$ se elige para controlar el nivel de significancia.

Ejercicio Resuelto: Prueba t para una muestra

Problema: Un fabricante afirma que sus bombillas duran 1000 horas. Una muestra de 20 bombillas tiene media 980h con desviación 50h. ¿Contradice esto la afirmación del fabricante? (α=0.05)

Solución:

  1. Hipótesis: $H_0: \mu = 1000$ vs $H_1: \mu \neq 1000$
  2. Estadístico: $t = \frac{\bar{x} – \mu_0}{s/\sqrt{n}} = \frac{980-1000}{50/\sqrt{20}} = -1.789$
  3. Valor crítico: $t_{0.025,19} = \pm 2.093$
  4. Decisión: No rechazar $H_0$ (|t| < valor crítico)

Implementación en Python:

from scipy import stats
stats.ttest_1samp([980]*20, popmean=1000)

Regresión Lineal

La regresión lineal modela la relación entre variables:

Teorema de Gauss-Markov

Bajo los supuestos clásicos (linealidad, exogeneidad, homocedasticidad y no autocorrelación), los estimadores MCO son MELI (mejores estimadores lineales insesgados).

Demostración:

Sea $\hat{\beta} = (X’X)^{-1}X’y$ el estimador MCO. Es lineal en y, insesgado ($E(\hat{\beta}) = \beta$), y tiene varianza mínima entre todos los estimadores lineales insesgados.

Ejemplo: Regresión Lineal Simple

import statsmodels.api as sm
import numpy as np

# Datos
X = np.array([1, 2, 3, 4, 5])
y = np.array([2, 4, 5, 4, 5])

# Añadir constante
X = sm.add_constant(X)

# Ajustar modelo
model = sm.OLS(y, X).fit()
print(model.summary())

Análisis de Varianza (ANOVA)

ANOVA compara medias entre grupos:

Ejercicio Resuelto: ANOVA de un factor

Problema: Comparar el rendimiento de tres métodos de enseñanza con los siguientes resultados:

Método A: 78, 85, 92

Método B: 65, 70, 68

Método C: 80, 82, 85

Solución:

  1. Hipótesis: $H_0: \mu_A = \mu_B = \mu_C$ vs $H_1$: Al menos una media difiere
  2. Calcular suma de cuadrados entre grupos (SSB) y dentro de grupos (SSW)
  3. Estadístico F: $F = \frac{SSB/(k-1)}{SSW/(N-k)}$
  4. Comparar con $F_{2,6,0.05} = 5.14$

Implementación en Python:

from scipy import stats
stats.f_oneway([78,85,92], [65,70,68], [80,82,85])

Aplicaciones Prácticas

La estadística en Python tiene numerosas aplicaciones:

  • Finanzas: Modelado de riesgos, análisis de series temporales
  • Medicina: Ensayos clínicos, análisis epidemiológico
  • Marketing: Segmentación de clientes, análisis de campañas
  • Deportes: Análisis de rendimiento, scouting de jugadores

Para profundizar en conceptos matemáticos fundamentales, consulta nuestro artículo sobre fundamentos de probabilidad.

Conclusión

En este artículo hemos explorado las principales herramientas estadísticas disponibles en Python, desde estadística descriptiva hasta modelos avanzados como regresión lineal y ANOVA. Hemos demostrado teoremas fundamentales y resuelto ejercicios prácticos que ilustran la aplicación de estos conceptos. Python, con su rico ecosistema de bibliotecas, se consolida como una plataforma ideal para el análisis estadístico moderno, permitiendo implementar desde técnicas básicas hasta modelos complejos de manera eficiente.

Ejercicios Adicionales

Ejercicio 1: Intervalo de Confianza

Una muestra de 50 estudiantes tiene un promedio de altura de 170cm con desviación estándar de 8cm. Construye un intervalo de confianza del 95% para la altura media poblacional.

Solución:

$$IC = \bar{x} \pm z_{\alpha/2}\frac{s}{\sqrt{n}} = 170 \pm 1.96\frac{8}{\sqrt{50}} = [167.78, 172.22]$$

Ejercicio 2: Prueba de Proporciones

En una encuesta, 120 de 400 personas apoyan una medida. ¿Hay evidencia suficiente (α=0.05) para afirmar que menos del 35% de la población apoya la medida?

Solución:

$$z = \frac{\hat{p}-p_0}{\sqrt{p_0(1-p_0)/n}} = \frac{0.3-0.35}{\sqrt{0.35*0.65/400}} = -2.09$$

Valor crítico: -1.645 (rechazamos H₀, hay evidencia)

Ejercicio 3: Correlación

Calcula el coeficiente de correlación entre horas de estudio (X) y calificación (Y):

X: 2,4,6,8,10

Y: 65,80,85,90,95

Solución:

import numpy as np
np.corrcoef([2,4,6,8,10], [65,80,85,90,95])[0,1]  # Resultado: 0.981



«`

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *