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}. \]

  1. Insesgamiento: \(E[\hat{\beta}\mid X]=\beta\).
  2. Varianza: \(Var[\hat{\beta}\mid X]=\sigma^{2}(X'X)^{-1}\).
  3. Teorema de Gauss–Markov: \(\hat{\beta}\) es ELIO dentro de estimadores lineales insesgados.
  4. \(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_x1

Interpretació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:

knitr::include_graphics("figs/t_density_vs_normal.png")

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

  1. Explique la diferencia entre insesgamiento (finito muestral) y consistencia (asintótica). Dé un ejemplo donde un estimador sea sesgado pero consistente.
  2. 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?
  3. Derive la varianza asintótica de \(\hat\beta\) y explique cómo se estima con datos. ¿Cuándo usarías una versión robusta?
  4. 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.
  5. 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) {-}

Stata

* Estimación y matriz robusta
reg y x1 x2, vce(robust)

* Wald para R*beta = r (ejemplo: beta_x1 = 0 y beta_x2 = -0.7)
test (x1 = 0) (x2 = -0.7)

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.