Distribución t de Student#
Es una distribución con forma de campana, un poco más delgada y con colas más gruesas que la distribución normal.
Fue obtenida al considerar la siguiente pregunta: ¿Cuál es la distribución muestral de la media de una muestra obtenida de una población grande?.
Esta distribución es ampliamente usada como referencia para muestras de medias, diferencia entre dos medias muestrales, parámetros de modelos de regresión, etc.
La distribución t de Student se obtiene al considerar un modelo que represente la forma de la curva indicada por los histogramas que aparecen abajo. En el algoritmo que se presenta a continuación, el objetivo es estandarizar los valores de las medias.
Sea una muestra x_1, \ldots, x_n obtenida de una población continua normalmente distribuida con media \mu.
La media muestral se obtiene como:
\bar{x} = \frac{x_1 + \cdots + x_n}{n}
La varianza muestral se obtiene como:
s^2 = \frac{1}{n-1} \sum_{i=1}^n (x_i - \bar{x})^2
El valor-t se define como:
t=\frac{\bar{x}-\mu}{s / \sqrt{n}}
[19]:
import matplotlib.pyplot as plt
import numpy as np
import pandas as pd
from scipy.stats import norm
plt.figure(figsize=(12, 8))
z = np.linspace(-5, 5, 100)
# Generación de una muestra de 10000 numeros aleatorios normales N(1, 1.5^2)
sample_data = pd.Series(np.random.normal(loc=1, scale=1.5, size=10000))
for i, n in enumerate([2, 3, 5, 10, 30, 100]):
sample = [sample_data.sample(n) for _ in range(10000)]
xbar = [x.mean() for x in sample]
s2 = [x.var() for x in sample]
t = [
(x_mean - 1.0) / (np.sqrt(s) / np.sqrt(n))
for x_mean, s in zip(xbar, s2)
if s > 0.1
]
plt.subplot(2, 3, i + 1)
plt.hist(t, density=True, alpha=0.5, bins=20, rwidth=0.9)
plt.plot(z, norm.pdf(z, loc=0, scale=1), color="tab:blue", lw=4)
plt.title("n = " + str(n))
plt.xlim(-7, 7)
![../_images/01_estadistica_inferencial_11_distribucion_t_de_student_10_0.png](../_images/01_estadistica_inferencial_11_distribucion_t_de_student_10_0.png)