Capítulo 5

Estadística Muestral

MGF, desigualdades de probabilidad, ley de grandes números y el teorema central del límite — las herramientas que justifican casi todo lo que hacemos en data science.

5.1 Función Generadora de Momentos

Una función para gobernarlos a todos

La MGF es una función que encapsula todos los momentos de una distribución:

MX(t)=E[etX]={xetxpX(x)discretaetxfX(x)dxcontinuaM_X(t) = \mathbb{E}[e^{tX}] = \begin{cases} \sum_x e^{tx} p_X(x) & \text{discreta} \\ \int_{-\infty}^\infty e^{tx} f_X(x) \, dx & \text{continua} \end{cases}

Los momentos se obtienen derivando la MGF en t=0t = 0:

E[Xk]=MX(k)(0)\mathbb{E}[X^k] = M_X^{(k)}(0)

MGF de distribuciones comunes

  • Bernoulli(p): M(t)=1p+petM(t) = 1 - p + p e^t
  • Binomial(n, p): M(t)=(1p+pet)nM(t) = (1 - p + p e^t)^n
  • Poisson(λ): M(t)=eλ(et1)M(t) = e^{\lambda(e^t - 1)}
  • Gaussiana(μ, σ²): M(t)=eμt+σ2t2/2M(t) = e^{\mu t + \sigma^2 t^2 / 2}
  • Exponencial(λ): M(t)=λ/(λt),  t<λM(t) = \lambda / (\lambda - t), \; t < \lambda

Suma de variables independientes

Si X e Y son independientes, la MGF de la suma es el producto:

MX+Y(t)=MX(t)MY(t)M_{X+Y}(t) = M_X(t) \cdot M_Y(t)

Esto simplifica enormemente encontrar la distribución de sumas.

python
import numpy as np
from scipy import stats

# Verificar momentos con MGF
# Para Poisson(λ): E[X] = λ, E[X²] = λ + λ²
lam = 3.0
X = stats.poisson(lam)
print(f"E[X] = {X.mean():.2f}  (teórico: {lam})")
print(f"E[X²] = {X.moment(2):.2f}  (teórico: {lam + lam**2})")

# Suma de Poisson: si X~Pois(λ1), Y~Pois(λ2) → X+Y~Pois(λ1+λ2)
Y = stats.poisson(2.0)
# Simular la suma
muestras = X.rvs(10000) + Y.rvs(10000)
print(f"Media suma: {muestras.mean():.2f}  (teórico: 5.0)")

5.2 Desigualdades de Probabilidad

Cotas cuando no conocemos la distribución exacta

Markov

P(Xa)E[X]aP(X \ge a) \le \frac{\mathbb{E}[X]}{a}

Para X ≥ 0 y a > 0. Cota débil pero solo requiere E[X].

Chebyshev

P(Xμkσ)1k2P(|X - \mu| \ge k\sigma) \le \frac{1}{k^2}

Usa media y varianza. Válida para cualquier distribución.

Chernoff

P(Xa)mint>0etaMX(t)P(X \ge a) \le \min_{t > 0} e^{-ta} M_X(t)

Cota exponencial, mucho más ajustada. Requiere la MGF.

Cauchy-Schwarz

E[XY]E[X2]E[Y2]|\mathbb{E}[XY]| \le \sqrt{\mathbb{E}[X^2] \cdot \mathbb{E}[Y^2]}

Jensen

E[g(X)]g(E[X])\mathbb{E}[g(X)] \ge g(\mathbb{E}[X])

para g convexa.

Hoeffding

P(Xˉμϵ)e2nϵ2/(ba)2P(\bar{X} - \mu \ge \epsilon) \le e^{-2n\epsilon^2/(b-a)^2}

Para variables acotadas en [a, b].

Unión (Boole)

P(iAi)iP(Ai)P(\cup_i A_i) \le \sum_i P(A_i)
python
# Comparación de cotas: Binomial(n=100, p=0.5)
# P(|X - np| >= 20) = P(|X - 50| >= 20)
import numpy as np
from scipy import stats

n, p = 100, 0.5
X = stats.binom(n, p)
prob_real = 1 - X.cdf(70) + X.cdf(29)
print(f"Probabilidad real: {prob_real:.6f}")

# Markov: P(X >= 70)
media = n * p
print(f"Cota Markov: {media/70:.6f}")

# Chebyshev: P(|X - 50| >= 20)
var = n * p * (1 - p)
k = 20 / np.sqrt(var)
print(f"Cota Chebyshev: {1/k**2:.6f}")

# Chernoff: cota exponencial para Binomial
epsilon = 0.2  # 20% de desviación
cota = np.exp(-2 * n * epsilon**2)
print(f"Cota Hoeffding: {cota:.6f}")

5.3 Ley de Grandes Números

La media muestral converge a la media poblacional

Ley Débil (WLLN): Xˉnpμ\bar{X}_n \xrightarrow{p} \mu. La media muestral converge en probabilidad a la media poblacional.

Ley Fuerte (SLLN): Xˉna.s.μ\bar{X}_n \xrightarrow{a.s.} \mu. Convergencia casi segura — un resultado más fuerte.

Xˉn=1ni=1nXi    μcuando n\bar{X}_n = \frac{1}{n} \sum_{i=1}^n X_i \;\to\; \mu \quad \text{cuando } n \to \infty

Convergencia en probabilidad

limnP(Xˉnμ>ϵ)=0\lim_{n \to \infty} P(|\bar{X}_n - \mu| > \epsilon) = 0

¿Por qué importa?

Justifica usar la media muestral como estimador de la media poblacional. Es la base de la estadística inferencial: con suficientes datos, el promedio de la muestra se acerca al valor real.

5.4 Teorema Central del Límite

El resultado más importante de la estadística

El CLT dice que la suma (o media) de muchas variables independientes e idénticamente distribuidas tiende a una distribución Gaussiana, sin importar la distribución original:

Xˉnμσ/ndN(0,1)\frac{\bar{X}_n - \mu}{\sigma / \sqrt{n}} \xrightarrow{d} N(0, 1)

Simulación interactiva

Selecciona una distribución y aumenta n para ver cómo la media muestral se vuelve aproximadamente normal (curva amarilla).

078155233310Media muestral X̄— Normal aprox.
Media poblacional μ = 2.500Error estándar σ/√n = 0.6455Media muestral empírica = 2.496
python
# CLT en acción: Bernoulli(p=0.3), n=50
import numpy as np
import matplotlib.pyplot as plt

p, n, N = 0.3, 50, 10000
medias = [np.random.binomial(n, p) / n for _ in range(N)]

# Teórico: media=p, var=p(1-p)/n
mu = p
se = np.sqrt(p * (1 - p) / n)

plt.hist(medias, bins=40, density=True, alpha=0.6)
xs = np.linspace(mu - 4*se, mu + 4*se, 200)
plt.plot(xs, 1/(se*np.sqrt(2*np.pi)) * np.exp(-(xs-mu)**2/(2*se**2)))
plt.title(f"CLT: Bernoulli(p={p}), n={n}")
plt.show()