9 Propiedades asintóticas de MCO y pruebas de hipótesis
9.1 🎯 Objetivo y motivación {-}
En este capítulo pasamos de las propiedades en muestras finitas del estimador de Mínimos Cuadrados Ordinarios (MCO) a sus propiedades asintóticas (cuando \(n\to\infty\)). Verás por qué la consistencia y la normalidad asintótica permiten hacer inferencia incluso sin normalidad exacta de los errores, y cómo construir pruebas \(t\), estadísticos \(F\) y el test de Wald en grandes muestras.
9.2 📚 Repaso: modelo clásico y resultados en muestras finitas {-}
9.2.1 Supuestos del MCRL (versión matricial) {-}
\[ y = X\beta + \epsilon, \qquad X\in\mathbb{R}^{n\times K},\; y\in\mathbb{R}^{n\times 1} \]
- A1. Lineal en los parámetros: \(y = X\beta + \epsilon\).
- A2. Exogeneidad estricta: \(E(\epsilon_i\mid X)=0\).
- A3. Colinealidad imperfecta: \(\mathrm{rango}(X)=K\).
- A4. Perturbaciones esféricas: \(Var(\epsilon\mid X)=\sigma^2 I_n\).
- A5. (Para resultados exactos clásicos) Regresores no estocásticos.
- A6. (Para inferencia exacta \(t,F\)) Normalidad: \(\epsilon\mid X\sim \mathcal{N}(0,\sigma^2 I_n)\).
Estimadores y propiedades (finito muestral)
\[ \hat{\beta}=(X'X)^{-1}X'y=\beta+(X'X)^{-1}X'\epsilon, \qquad \hat{\sigma}^{2}=\frac{\hat{\epsilon}'\hat{\epsilon}}{n-K}. \]
- Insesgamiento: \(E[\hat{\beta}\mid X]=\beta\).
- Varianza: \(Var[\hat{\beta}\mid X]=\sigma^{2}(X'X)^{-1}\).
- Teorema de Gauss–Markov: \(\hat{\beta}\) es ELIO dentro de estimadores lineales insesgados.
- \(E[\hat{\sigma}^{2}]=\sigma^{2}\).
Bajo A6, además:
- \(\hat{\beta}\mid X \sim \mathcal{N}(\beta,\sigma^{2}(X'X)^{-1})\).
- \((n-K)\hat{\sigma}^{2}/\sigma^{2}=\hat{\epsilon}'\hat{\epsilon}/\sigma^{2}\sim \chi^{2}_{(n-K)}\).
- Prueba \(t\) exacta para \(\beta_k\) y prueba \(F\) exacta para \(R\beta=r\).
⚖️ Consistencia de MCO
Sea \(Q=E(x_ix_i')\) con \(Q\) definida positiva. Usando
\[ \hat{\beta}=\beta+\underbrace{\left(\tfrac{1}{n}X'X\right)^{-1}}_{\to_p\, Q^{-1}}\underbrace{\left(\tfrac{1}{n}X'\epsilon\right)}_{\to_p\, 0}, \]
y la Ley Débil de los Grandes Números,
\[ plim\left(\tfrac{1}{n}X'X\right)=Q,\qquad plim\left(\tfrac{1}{n}X'\epsilon\right)=0, \]
obtenemos
\[ plim(\hat{\beta})=\beta. \]
Proof. Demostración (borrador formal). Bajo A2, \(E(x_i\epsilon_i)=0\). Si \(\{(x_i,\epsilon_i)\}\) es i.i.d. con \(E\|x_ix_i'\|<\infty\), entonces por la LDGN \(\tfrac{1}{n}X'X\to_p Q\) y \(\tfrac{1}{n}X'\epsilon\to_p 0\). Por continuidad de la inversión de matrices en el entorno de \(Q\), \(\left(\tfrac{1}{n}X'X\right)^{-1}\to_p Q^{-1}\). Aplicando Slutsky: \(\hat\beta=\beta+\left(\tfrac{1}{n}X'X\right)^{-1}\left(\tfrac{1}{n}X'\epsilon\right)\to_p \beta\).
Consistencia de \(\hat{\sigma}^2\)
\[ \hat{\sigma}^{2}=\frac{\hat{\epsilon}'\hat{\epsilon}}{n-K},\qquad plim(\hat{\sigma}^{2})=\sigma^{2}. \]
Proof. Usa \(\hat{\epsilon}_i=\epsilon_i-x_i(\hat{\beta}-\beta)\). Expandiendo \(\hat{\epsilon}_i^2\) y promediando: \(\tfrac{1}{n}\sum\hat{\epsilon}_i^2=\tfrac{1}{n}\sum\epsilon_i^2 - 2(\hat\beta-\beta)'\left[\tfrac{1}{n}\sum x_i\epsilon_i\right] + (\hat\beta-\beta)'\left[\tfrac{1}{n}\sum x_ix_i'\right](\hat\beta-\beta)\). Por consistencia de \(\hat\beta\) y LDGN, el segundo y tercer término \(\to_p 0\); el primero \(\to_p E(\epsilon_i^2)=\sigma^2\). Ajustando por \(\tfrac{n}{n-K}\to 1\), se obtiene el resultado.
9.3 🔔 Normalidad asintótica de MCO {-}
\[ \sqrt{n}\left(\hat{\beta}-\beta\right) = \left(\tfrac{1}{n}X'X\right)^{-1}\left(\tfrac{1}{\sqrt{n}}X'\epsilon\right) \;\;\underset{d}{\longrightarrow}\;\; \mathcal{N}\!\left(0,\; \sigma^{2}Q^{-1}\right), \]
bajo condiciones regulares (i.i.d., momentos finitos, exogeneidad). En práctica:
\[ \widehat{Avar}(\hat{\beta})=\hat{\sigma}^{2}(X'X)^{-1}. \]
Proof. Por TCL de Lindeberg–Levy, \(\tfrac{1}{\sqrt{n}}X'\epsilon \Rightarrow \mathcal{N}(0,\sigma^2 Q)\). Por Slutsky y \(\left(\tfrac{1}{n}X'X\right)^{-1}\to_p Q^{-1}\), sigue \(\sqrt{n}(\hat\beta-\beta)\Rightarrow \mathcal{N}(0,\sigma^{2}Q^{-1})\).
9.4 🧪 Pruebas de hipótesis en grandes muestras {-}
9.4.1 Prueba tipo-\(t\) asintótica para un coeficiente {-}
Para \(H_0:\beta_k=\beta_{k}^0\),
\[ t_k \equiv \frac{\hat{\beta}_k-\beta_k^0}{\sqrt{\widehat{Avar}(\hat{\beta}_k)}} = \frac{\hat{\beta}_k-\beta_k^0}{\sqrt{\hat{\sigma}^2[(X'X)^{-1}]_{kk}}} \;\;\overset{a}{\sim}\;\; \mathcal{N}(0,1). \]
Regla de decisión: Rechazar \(H_0\) si \(|t_k|\ge z_{\alpha/2}\).
9.4.2 Prueba múltiple (Wald) para \(R\beta=r\) {-}
Para \(\#r\) restricciones lineales \(H_0:R\beta=r\),
\[ W \equiv n\,(R\hat{\beta}-r)'\left[R\,\widehat{Avar}(\hat{\beta})\,R'\right]^{-1}(R\hat{\beta}-r) \;\;\overset{a}{\sim}\;\; \chi^{2}_{(\#r)}. \]
Regla de decisión: Rechazar \(H_0\) si \(W\ge \chi^{2}_{(\#r,\;1-\alpha)}\).
💡 Cuando se mantiene A6 (normalidad), el análogo finito-muestral es el estadístico \(F\) exacto. Sin A6, Wald es el camino natural en grandes muestras.
9.4.3 📐 Intuición geométrica (rápida) {-}
- Consistencia: el promedio de “productos” \(x_i\epsilon_i\) se diluye al promediar, por lo que el término de error en \(\hat\beta\) desaparece al crecer \(n\).
- Normalidad asintótica: la suma de “pequeños choques” \(x_i\epsilon_i\) escalada por \(\sqrt{n}\) se aproxima a Normal (TCL), y al “deshacer” la proyección con \((X'X)^{-1}\) obtenemos una Normal en el espacio de parámetros.
9.5 🧪 Ejemplos prácticos (simulación) {-}
Idea: generar datos con errores no normales (p.ej., t-Student con 3 g.l.), estimar MCO y verificar que los \(t\) se acercan a \(\mathcal{N}(0,1)\) cuando \(n\) crece.
Stata
clear all
set seed 12345
set obs 5000 // cambia a 500, 2000, 5000 para ver el efecto del tamaño muestral
// Datos simulados
gen x1 = rnormal()
gen x2 = rnormal()
gen u = rt(3) // errores con colas pesadas (no normales)
scalar b0 = 1
scalar b1 = 0.5
scalar b2 = -0.7
gen y = b0 + b1*x1 + b2*x2 + u
// Estimación MCO
reg y x1 x2
// Guardar t de x1 para “chequeo” repetido (bootstrap de Monte Carlo rápido)
tempname mem
postfile `mem' t_x1 using tvals.dta, replace
forvalues r=1/1000 {
preserve
bsample
reg y x1 x2
post `mem' (_b[x1]/_se[x1])
restore
}
postclose `mem'
// Distribución aproximada de t (debería tender a N(0,1))
use tvals.dta, clear
sum t_x1
kdensity t_x1Interpretación: con \(n\) grande, la distribución empírica de \(t\) para \(x_1\) se acerca a \(\mathcal{N}(0,1)\) pese a que \(u\) no es normal.
R
set.seed(12345)
n <- 5000 # prueba con 500, 2000, 5000
x1 <- rnorm(n)
x2 <- rnorm(n)
u <- rt(n, df = 3) # no normal
b0 <- 1; b1 <- 0.5; b2 <- -0.7
y <- b0 + b1*x1 + b2*x2 + u
fit <- lm(y ~ x1 + x2)
summary(fit)
# Monte Carlo para t de x1
R <- 1000
tvals <- numeric(R)
for (r in 1:R) {
idx <- sample.int(n, n, replace = TRUE)
fitb <- lm(y[idx] ~ x1[idx] + x2[idx])
s <- summary(fitb)$coefficients
tvals[r] <- s["x1","t value"]
}
mean(tvals); sd(tvals)
hist(tvals, breaks = 40, main = "t de x1 (bootstrap)", xlab = "t")Interpretación: la media de los \(t\) se acerca a 0 y su desviación estándar a 1 a medida que \(n\) crece.
Python
import numpy as np
import statsmodels.api as sm
np.random.seed(12345)
n = 5000 # prueba con 500, 2000, 5000
x1 = np.random.normal(size=n)
x2 = np.random.normal(size=n)
u = np.random.standard_t(df=3, size=n) # no normal
b0, b1, b2 = 1.0, 0.5, -0.7
y = b0 + b1*x1 + b2*x2 + u
X = np.column_stack([x1, x2])
X = sm.add_constant(X)
model = sm.OLS(y, X).fit()
print(model.summary())
# Monte Carlo rápido para t de x1 (bootstrap)
R = 1000
tvals = []
for r in range(R):
idx = np.random.randint(0, n, n)
mb = sm.OLS(y[idx], X[idx,:]).fit()
tvals.append(mb.tvalues[1]) # índice 1 corresponde a x1
tvals = np.array(tvals)
print(tvals.mean(), tvals.std())Interpretación: aun con colas pesadas, el TCL “salva” la inferencia: \(t\) es aproximadamente normal para \(n\) grande.
🖼️ Visualizaciones sugeridas
- Figura 1. Densidad de \(t\) simulados vs. \(\mathcal{N}(0,1)\) (código anterior).
- Figura 2. Q-Q plot de \(t\) simulados contra cuantiles normales.
En R Markdown puedes crear las figuras con ggplot2 o incluir imágenes pre-generadas con:
9.6 🧩 Notas prácticas de inferencia {-}
- Sin normalidad exacta (sin A6), usa errores robustos y Wald en grandes muestras.
- Muestras pequeñas con colas pesadas: los niveles de significancia efectivos pueden distorsionarse; considera transformaciones, robustez, o métodos re-muestreo (bootstrap con cuidado).
- Si hay heterocedasticidad o correlación en errores, reemplaza \(\hat{\sigma}^2 (X'X)^{-1}\) por una matriz robusta (White, HC; Newey–West, etc.).
🔎 Demostraciones formales (resumen)
Theorem 9.1 Teorema (Consistencia de MCO). Bajo A1–A3, A2 (exogeneidad estricta), y condiciones de regularidad (momentos finitos y LLN aplicable), se cumple \(plim(\hat{\beta})=\beta\).
Proof. Ver demostración en la sección de consistencia: descomposición en dos términos y uso de LLN + continuidad de la inversión + Slutsky.
Theorem 9.2 Teorema (Normalidad asintótica de MCO). Si, además, el TCL aplica a \(\tfrac{1}{\sqrt{n}}X'\epsilon\), entonces \(\sqrt{n}(\hat{\beta}-\beta)\Rightarrow \mathcal{N}(0,\sigma^2 Q^{-1})\).
Proof. Aplicación directa de TCL + Slutsky. La varianza asintótica se estima consistentemente con \(\hat{\sigma}^2(X'X)^{-1}\).
✅ Conclusiones clave
- Consistencia: \(\hat\beta\to_p \beta\) sin requerir normalidad.
- Normalidad asintótica: habilita pruebas \(t\) y Wald aun con errores no normales.
- Práctica aplicada: usa matrices de varianzas robustas cuando haya heterocedasticidad/autocorrelación.
📘 Preguntas de repaso
- Explique la diferencia entre insesgamiento (finito muestral) y consistencia (asintótica). Dé un ejemplo donde un estimador sea sesgado pero consistente.
- Muestre que si \(plim\big(\tfrac{1}{n}X'X\big)=Q\) y \(plim\big(\tfrac{1}{n}X'\epsilon\big)=0\), entonces \(plim(\hat\beta)=\beta\). ¿Qué condiciones hacen plausible cada límite?
- Derive la varianza asintótica de \(\hat\beta\) y explique cómo se estima con datos. ¿Cuándo usarías una versión robusta?
- Para \(H_0:\beta_k=\beta_k^0\), escriba el estadístico \(t\) asintótico, su distribución límite y la regla de decisión.
- Para restricciones múltiples \(R\beta=r\), derive el Wald y muestre que \(W\Rightarrow \chi^2_{\#r}\). ¿Cómo relacionar esto con un \(F\) en grandes muestras?
9.7 🧰 Código mínimo reproducible (MCO + Wald) {-}
R
library(sandwich); library(lmtest)
fit <- lm(y ~ x1 + x2)
coeftest(fit, vcov = vcovHC(fit, type = "HC1")) # t robustos
# Wald: H0: beta_x1 = 0, beta_x2 = -0.7
R <- rbind(c(0,1,0), c(0,0,1))
r <- c(0, -0.7)
b <- coef(fit); V <- vcovHC(fit, type = "HC1")
W <- t(R%*%b - r) %*% solve(R%*%V%*%t(R)) %*% (R%*%b - r)
pval <- 1 - pchisq(W, df = 2)
c(Wald = W[1,1], df = 2, p.value = pval)Python
import numpy as np, statsmodels.api as sm
y = y # define tus datos
X = sm.add_constant(np.column_stack([x1, x2]))
fit = sm.OLS(y, X).fit(cov_type='HC1') # robusto
print(fit.summary())
# Wald: H0: beta_x1 = 0, beta_x2 = -0.7
R = np.array([[0,1,0],[0,0,1]])
r = np.array([0, -0.7])
b = fit.params.values
V = fit.cov_params().values
W = (R@b - r).T @ np.linalg.inv(R@V@R.T) @ (R@b - r)
from scipy.stats import chi2
pval = 1 - chi2.cdf(W, df=2)
print({"Wald": float(W), "df": 2, "p.value": float(pval)})Mensaje clave: Aun sin normalidad exacta, la consistencia y la normalidad asintótica permiten inferencia válida en grandes muestras. En aplicaciones, usa errores robustos y el test de Wald para restricciones múltiples.