5. Inferencia por aleatorización y bootstrap para la regresión¶
Un entrenador de fútbol americano quiere saber qué hace que un pateador patee lejos. Mide a trece pateadores universitarios en una serie de pruebas físicas: la fuerza de la pierna derecha y de la izquierda (en libras, en una máquina de prensa de piernas), la flexibilidad del tendón de la corva, una puntuación general de fuerza de piernas y el tiempo de suspensión. Para cada pateador también registra la distancia promedio de diez punts, en pies. La pregunta es fácil de plantear y difícil de responder con tan pocos pateadores: ¿una pierna más fuerte realmente compra más distancia, o el patrón que él observa podría ser una casualidad de trece atletas?
La Figure 1 grafica la distancia del punt contra la fuerza de la pierna derecha. La tendencia sube, y la recta ajustada trepa cerca de nueve décimas de pie por cada libra adicional de fuerza. Eso parece un efecto real. Pero trece puntos no son muchos. Las herramientas de inferencia del Capítulo 3, la prueba y su intervalo de confianza para la pendiente, descansan todas sobre una cadena de supuestos. O los errores son normales, o la muestra es lo bastante grande para que la aproximación normal nos salve. Con trece pateadores, ninguno de los dos está garantizado, y no hay forma de verificar la normalidad a partir de trece residuos con ninguna confianza.

Figure 1:Los trece pateadores, con la recta de mínimos cuadrados. La distancia sube con la fuerza de la pierna derecha a razón de unos 0.9 pies por libra, pero trece puntos hacen justo preguntarse si la pendiente es real o un accidente de una muestra pequeña.
Este capítulo responde la pregunta de otra manera. En lugar de suponer una forma para los errores, usa la computadora para mezclar y remuestrear los datos miles de veces y observa qué pasa. Dos ideas hacen el trabajo. Una prueba de permutación (Definición 5.1) rompe el vínculo entre predictor y respuesta mediante la mezcla, y luego pregunta con qué frecuencia el puro azar produce una pendiente tan pronunciada como la que se observó. El bootstrap (Definición 5.4) remuestrea los datos con reemplazo para ver cuánto rebotaría la pendiente si se pudiera recoger el estudio otra vez. Ambos reemplazan un supuesto frágil por un cálculo que siempre se puede ejecutar. Al final podrás construir cada uno desde cero, leer su salida y decir cuándo concuerda con las pruebas clásicas y y cuándo no.
5.1 Cuando la inferencia de teoría normal está sobre hielo delgado¶
Intuición¶
Cada prueba del Capítulo 3 venía con letra pequeña. Sus fórmulas dan respuestas exactas solo cuando los errores siguen una campana normal, o cuando la muestra es lo bastante grande para hacer sus veces. Con trece pateadores no tenemos ninguna de las dos, y esta sección muestra que ni siquiera podemos verificar la letra pequeña. Aquí está esa letra pequeña escrita en símbolos.
El Capítulo 3 construyó un intervalo de confianza para la pendiente como y probó con la razón , comparándola con una distribución con grados de libertad. Esa maquinaria es exacta solo cuando los errores son normales. Cuando no son normales, la razón sigue siendo aproximadamente -distribuida si la muestra es grande, porque una versión del teorema central del límite suaviza la estimación hacia la normalidad. El detalle está en la palabra grande. Con trece pateadores no hay rescate de muestra grande, y no hay forma de confirmar que los errores sean normales.
Podrías pensar que solo hay que verificar: ajusta la recta, grafica los trece residuos en un gráfico cuantil-cuantil normal, y observa si caen sobre una recta. El problema es que trece puntos son muy pocos para distinguir lo normal de lo no normal. La Figure 2 lo hace concreto. El panel superior izquierdo son los residuos reales del punting; los otros cinco son muestras genuinamente normales del mismo tamaño, generadas por la computadora. Cada una de ellas se dobla y serpentea alejándose de la recta. Si datos que se saben normales se ven tan torcidos con , entonces un gráfico torcido de datos reales no te dice casi nada. El supuesto de normalidad sencillamente no es verificable aquí.

Figure 2:Con n = 13, incluso datos que son genuinamente normales (los cinco paneles azules) producen un gráfico cuantil doblado y serpenteante. Así que el gráfico torcido de los residuos reales (arriba a la izquierda) no es evidencia contra la normalidad: trece puntos no pueden distinguir uno del otro. Por eso queremos una inferencia que no dependa de una verificación de normalidad.
La salida es dejar de suponer una distribución y empezar a generar una. Si podemos construir la distribución de la pendiente bajo algún mecanismo de azar claramente enunciado, usando solo los datos en mano, entonces podemos medir cuán sorprendente es la pendiente observada sin escribir jamás una densidad normal. Eso es lo que hace el resto del capítulo.
5.2 La prueba de permutación para la pendiente¶
Intuición¶
Aquí está la pregunta que hace una prueba de hipótesis, en palabras llanas: si la fuerza de la pierna no tuviera nada que ver con la distancia del punt, ¿con qué frecuencia el azar nos entregaría una pendiente tan pronunciada como 0.902? Para responderla necesitamos ver pendientes producidas por “nada sucediendo”. Las podemos fabricar. Mantén los trece valores de fuerza exactamente donde están, toma las trece distancias, y mézclalas de modo que cada distancia quede reasignada a un pateador al azar. Mezclar destruye cualquier vínculo real entre fuerza y distancia manteniendo intactas ambas columnas de números. Ajusta una recta a los datos mezclados y registra su pendiente. Esa pendiente es una muestra de “cómo se ve una pendiente cuando no hay asociación”.
La Figure 3 muestra una mezcla. A la izquierda, los datos reales suben. A la derecha, las mismas distancias reasignadas a fuerzas al azar dan una recta casi plana. Haz la mezcla miles de veces y obtienes miles de pendientes de no asociación: su histograma es la distribución nula de la pendiente, construida enteramente a partir de tus propios datos, sin fórmula y sin supuesto de normalidad.

Figure 3:Mezclar las distancias contra las fuerzas fijas rompe el vínculo entre ambas, de modo que un ajuste remezclado tiene una pendiente cercana a cero. Repetir la mezcla miles de veces muestra qué pendientes puede producir el azar por sí solo.
Fórmula¶
La prueba de permutación para la pendiente trabaja con estas piezas. Sean los datos pares para , y sea la pendiente de mínimos cuadrados observada
En palabras: la pendiente es el producto cruzado de las desviaciones de y dividido entre la dispersión de , exactamente como en 2.2 Mínimos cuadrados desde los primeros principios. La hipótesis nula es
y la alternativa es que sí están relacionadas (). Una permutación es una remezcla de los valores de respuesta que empareja con . Para cada permutación calcula la pendiente remezclada . El valor p de permutación de dos colas es la fracción de permutaciones cuya pendiente está al menos tan lejos de cero como la observada:
En palabras: el valor p es con qué frecuencia una remezcla supera o empata a la pendiente real en tamaño, más uno por los datos reales mismos, dividido entre el número de intentos más uno. Hay permutaciones posibles, demasiadas para enumerar ( supera los seis mil millones), así que extraemos de ellas al azar y usamos esas. El +1 adicional arriba y abajo cuenta el arreglo observado como una de las posibilidades, lo cual explicamos y justificamos a continuación.
Derivación (por qué la prueba de permutación es válida)¶
Demostración. Supón que se cumple en el sentido fuerte de que los valores de respuesta se adjuntaron a los valores del predictor sin tenerlos en cuenta en absoluto. Entonces el emparejamiento particular que observamos es solo una de las maneras igualmente probables de emparejar la colección fija de valores con los valores fijos . Cualquier estadístico calculado sobre un emparejamiento al azar, aquí la pendiente , tiene por tanto una distribución completamente conocida bajo : asigna probabilidad a cada uno de los arreglos. Esta es la distribución de permutación, y no necesita ningún supuesto sobre la forma de los errores. La normalidad nunca aparece.
Nuestra pendiente observada es el valor de un arreglo particular, así que bajo es una extracción de esa distribución de permutación. El valor p exacto de dos colas es la probabilidad nula de una pendiente al menos tan extrema en tamaño,
que cuenta arreglos, incluyendo el observado (satisface con igualdad). Cuando es demasiado grande para enumerar, estimamos extrayendo permutaciones al azar. Escribiendo para el número de esas extracciones con , el estimador
añade el arreglo observado tanto al conteo como al total. Este +1 no es un truco. Mantiene honesta la prueba: los datos observados son ellos mismos un arreglo válido bajo , así que pertenecen al conjunto de referencia, e incluirlos garantiza que nunca pueda ser exactamente cero. Una prueba que pudiera reportar rechazaría con certeza sobre evidencia finita, lo cual nunca se justifica. Con el +1, el valor p más pequeño posible es , y se puede demostrar que la prueba resultante nunca rechaza una nula verdadera más a menudo que su nivel declarado.
Una consecuencia pulcra: como y los no cambian cuando mezclamos , la pendiente remezclada es simplemente , una constante positiva fija por el producto cruzado remezclado . Así que permutar la pendiente es la misma prueba que permutar la correlación muestral, o permutar mismo. Cualquiera que sea la versión monótona de “asociación” que prefieras, la prueba de permutación da el mismo valor p.
R¶
La prueba de permutación es un ciclo corto. Lee los datos, escribe una función de pendiente de una línea, calcula la pendiente observada, luego mezcla y reajusta veces. No se necesita ningún paquete más allá de R base.
punting <- read.csv("data/punting.csv")
dim(punting)
fit <- lm(Distance ~ RStr, data = punting)
round(summary(fit)$coefficients, 5)[1] 13 7
Estimate Std. Error t value Pr(>|t|)
(Intercept) 15.00896 31.35922 0.47861 0.64159
RStr 0.90204 0.21003 4.29474 0.00127El ajuste clásico da una pendiente de 0.902 pies por libra con un valor p de la prueba de 0.00127. Aférrate a ese número; la prueba de permutación producirá su propio valor p para compararlo con él. Ahora las piezas hechas desde cero.
slope <- function(x, y) {
sum((x - mean(x)) * (y - mean(y))) / sum((x - mean(x))^2)
}
x <- punting$RStr
y <- punting$Distance
b1_obs <- slope(x, y)
b1_obs[1] 0.9020383set.seed(4210)
B <- 5000
perm_slopes <- numeric(B)
for (i in 1:B) {
y_shuffled <- sample(y) # shuffle distances, keep strengths fixed
perm_slopes[i] <- slope(x, y_shuffled)
}
count_extreme <- sum(abs(perm_slopes) >= abs(b1_obs))
p_perm <- (count_extreme + 1) / (B + 1)
c(count_extreme = count_extreme, p_permutation = p_perm)count_extreme p_permutation
4.0000000 0.0009998 De 5000 remezclas, solo 4 produjeron una pendiente tan pronunciada como la real, así que el valor p de permutación es .
Python¶
El mismo ciclo en Python con NumPy. rng.permutation hace la mezcla; todo lo demás es un puñado de
operaciones sobre arreglos.
import numpy as np
import pandas as pd
import statsmodels.formula.api as smf
punting = pd.read_csv("data/punting.csv")
print(punting.shape)
fit = smf.ols("Distance ~ RStr", data=punting).fit()
print(fit.summary().tables[1])(13, 7)
==============================================================================
coef std err t P>|t| [0.025 0.975]
------------------------------------------------------------------------------
Intercept 15.0090 31.359 0.479 0.642 -54.012 84.030
RStr 0.9020 0.210 4.295 0.001 0.440 1.364
==============================================================================def slope(x, y):
x = np.asarray(x, float)
y = np.asarray(y, float)
return np.sum((x - x.mean()) * (y - y.mean())) / np.sum((x - x.mean()) ** 2)
x = punting["RStr"].to_numpy()
y = punting["Distance"].to_numpy()
b1_obs = slope(x, y)
print(b1_obs)0.9020382716049381rng = np.random.default_rng(4210)
B = 5000
perm_slopes = np.empty(B)
for i in range(B):
y_shuffled = rng.permutation(y) # shuffle distances, keep strengths fixed
perm_slopes[i] = slope(x, y_shuffled)
count_extreme = int(np.sum(np.abs(perm_slopes) >= abs(b1_obs)))
p_perm = (count_extreme + 1) / (B + 1)
print("count_extreme =", count_extreme, " p_permutation =", p_perm)count_extreme = 5 p_permutation = 0.0011997600479904018R y Python usan generadores de números aleatorios distintos, así que extraen mezclas distintas: R encontró 4 pendientes extremas y Python encontró 5, dando valores p de permutación de alrededor de 0.0010 y 0.0012. Los dos discrepan solo en el tercer decimal, que es ruido de Monte Carlo, y ambos apuntan a la misma conclusión clara.
La prueba de permutación se vuelve más creíble cuando tú mismo ves al azar producir unos cientos de pendientes y dónde cae 0.902 entre ellas, así que baraja antes de seguir.
Baraja las trece distancias de punt contra las fuerzas fijas, reajusta cada vez y observa cómo se construye la distribución nula de no asociación de la pendiente debajo del 0.902 observado.
Qué notar. Cada barajada conserva las mismas trece fuerzas y las mismas trece distancias, así que lo único que cambió es qué distancia acompañó a cuál pateador. Prueba esto. Presiona Correr 1000 tres veces, lee en el indicador, y luego calcula a mano y compáralo con el valor p que reporta el widget (5.2 La prueba de permutación para la pendiente).
5.3 Permutación sobre Toluca, y cómo se compara con la prueba t¶
El ejemplo del punting terminó en un cuasiempate entre los valores p de la permutación y de la prueba . Para ver los dos métodos en un caso donde la señal es abrumadora, regresa a los datos de la Toluca Company de los Capítulos 2 y 3: las horas de trabajo para producir una pieza contra el tamaño de lote, con la pendiente de mínimos cuadrados horas por unidad (2.2 Mínimos cuadrados desde los primeros principios). El Capítulo 3 probó esa pendiente con una prueba y encontró un valor p de alrededor de (3.7 La prueba F y su equivalencia con la prueba t, donde las pruebas y coinciden para una sola pendiente). Ahora corremos la prueba de permutación sobre la misma pendiente y comparamos.
toluca <- read.csv("data/toluca.csv")
xt <- toluca$lotsize
yt <- toluca$hours
b1_toluca <- slope(xt, yt)
p_t <- summary(lm(hours ~ lotsize, data = toluca))$coefficients["lotsize", "Pr(>|t|)"]
set.seed(4210)
perm_toluca <- numeric(B)
for (i in 1:B) perm_toluca[i] <- slope(xt, sample(yt))
c(b1_toluca = b1_toluca,
perm_count = sum(abs(perm_toluca) >= abs(b1_toluca)),
max_perm_slope = max(abs(perm_toluca)),
t_test_p_value = p_t) b1_toluca perm_count max_perm_slope t_test_p_value
3.570202e+00 0.000000e+00 2.767172e+00 4.448828e-10 toluca = pd.read_csv("data/toluca.csv")
xt = toluca["lotsize"].to_numpy()
yt = toluca["hours"].to_numpy()
b1_toluca = slope(xt, yt)
p_t = smf.ols("hours ~ lotsize", data=toluca).fit().pvalues["lotsize"]
rng = np.random.default_rng(4210)
perm_toluca = np.array([slope(xt, rng.permutation(yt)) for _ in range(B)])
print("b1_toluca =", b1_toluca)
print("perm_count =", int(np.sum(np.abs(perm_toluca) >= abs(b1_toluca))))
print("max_perm_slope =", np.max(np.abs(perm_toluca)))
print("t_test_p_value =", p_t)b1_toluca = 3.57020202020202
perm_count = 0
max_perm_slope = 2.7454545454545456
t_test_p_value = 4.4488275871889375e-10El piso plantea una pregunta justa: ¿cuántas remezclas son suficientes? Como es una estimación de Monte Carlo, tambalea de corrida a corrida cuando es pequeño y se asienta a medida que crece. La Figure 7 sigue el valor p corriente del punting contra el número de remezclas usadas, para tres semillas aleatorias distintas. Pasadas unas pocas miles de remezclas, las tres líneas casi han dejado de moverse, razón por la cual este capítulo usa . Si necesitaras resolver un valor p cerca de un corte preciso, correrías más.

Figure 7:El valor p de permutación corriente del punting para tres semillas aleatorias. Cada estimación es ruidosa durante las primeras cientos de remezclas y se asienta cerca de 0.001 hacia unas pocas miles, la razón por la que B = 5000 es un valor por defecto razonable.
5.4 El bootstrap para la regresión¶
Intuición¶
Una prueba de permutación responde “¿hay un efecto?”. No te dice cuán grande es el efecto ni cuán precisa es tu estimación de él. Para eso queremos la distribución muestral de : la dispersión de pendientes que verías si pudieras repetir todo el estudio muchas veces. No podemos repetir el estudio. El bootstrap finge la repetición usando la única muestra que tenemos, remuestreándola con reemplazo. La idea, debida a Bradley Efron, es que la muestra es nuestra mejor imagen de la población, así que extraer nuevas muestras de la muestra imita extraer nuevas muestras de la población.
Hay dos maneras naturales de remuestrear una regresión, y responden preguntas ligeramente distintas. La Figure 8 muestra ambas. El remuestreo de casos extrae filas enteras con reemplazo, así que un pateador dado puede aparecer dos veces o ninguna, y el conjunto de valores de fuerza cambia de remuestra a remuestra. Esto trata a los pateadores como una muestra al azar de una población de pateadores. El remuestreo de residuos mantiene fijas las fuerzas y la recta ajustada, y luego construye una nueva respuesta sumando residuos remuestreados con reemplazo sobre los valores ajustados. Esto trata los valores de fuerza como fijos por diseño y pone toda la aleatoriedad en los errores, ajustándose más literalmente al modelo de regresión del Capítulo 2.

Figure 8:Los dos bootstraps para la regresión. El remuestreo de casos (izquierda) reextrae filas enteras, así que cuáles valores x aparecen cambia cada vez. El remuestreo de residuos (derecha) mantiene fijos los valores x y la recta ajustada y reasigna residuos remezclados, poniendo toda la aleatoriedad en los errores.
Fórmula¶
Ambos bootstraps repiten un ciclo de remuestrear y reajustar veces y juntan las pendientes. El algoritmo de remuestreo de casos es:
En palabras: reconstruye un conjunto de datos extrayendo filas al azar con repeticiones permitidas, y reajusta. El algoritmo de remuestreo de residuos fija y el ajuste observado con residuos :
donde es un residuo extraído al azar con reemplazo de . En palabras: mantén la recta y las fuerzas, luego menea cada punto ajustado hacia arriba o hacia abajo por un residuo tomado prestado de algún lugar de los datos. El error estándar bootstrap de la pendiente es la desviación estándar de las pendientes juntadas,
la dispersión ordinaria de las pendientes remuestreadas. Estima cuánto variaría a través de estudios repetidos.
R¶
El remuestreo de casos es un ciclo que remuestrea índices de filas. Reutilizamos la función slope de
antes.
set.seed(4210)
n <- nrow(punting)
boot_case <- numeric(B)
for (i in 1:B) {
idx <- sample(n, n, replace = TRUE) # resample whole rows
boot_case[i] <- slope(x[idx], y[idx])
}
c(boot_mean = mean(boot_case), boot_SE = sd(boot_case))boot_mean boot_SE
0.9045003 0.2485204 El remuestreo de residuos mantiene x fija y reconstruye y a partir de los valores ajustados más
residuos remuestreados.
b0_obs <- mean(y) - b1_obs * mean(x)
fitted_vals <- b0_obs + b1_obs * x
resid_obs <- y - fitted_vals
set.seed(4210)
boot_resid <- numeric(B)
for (i in 1:B) {
y_star <- fitted_vals + sample(resid_obs, n, replace = TRUE)
boot_resid[i] <- slope(x, y_star)
}
c(boot_mean = mean(boot_resid), boot_SE = sd(boot_resid))boot_mean boot_SE
0.9020770 0.1976297 Python¶
rng = np.random.default_rng(4210)
n = len(punting)
boot_case = np.empty(B)
for i in range(B):
idx = rng.integers(0, n, n) # resample whole rows
boot_case[i] = slope(x[idx], y[idx])
print("boot_mean =", boot_case.mean(), " boot_SE =", boot_case.std(ddof=1))boot_mean = 0.9099216280489136 boot_SE = 0.24681912512413196b0_obs = y.mean() - b1_obs * x.mean()
fitted_vals = b0_obs + b1_obs * x
resid_obs = y - fitted_vals
rng = np.random.default_rng(4210)
boot_resid = np.empty(B)
for i in range(B):
y_star = fitted_vals + rng.choice(resid_obs, n, replace=True)
boot_resid[i] = slope(x, y_star)
print("boot_mean =", boot_resid.mean(), " boot_SE =", boot_resid.std(ddof=1))boot_mean = 0.9009502801536351 boot_SE = 0.1951940681246211El bootstrap de casos son cuatro líneas de código, pero la imagen de pateadores que aparecen dos veces y otros que desaparecen es lo que hace que el error estándar deje de ser una fórmula, así que extrae unos cuantos remuestreos a mano.
Remuestrea los trece pateadores con reemplazo, reajusta y observa cómo la distribución bootstrap de la pendiente se construye alrededor del 0.902 observado y no alrededor de cero.
Qué notar. Pon este histograma junto al de permutación: el montón nulo se sienta en cero porque barajar destruyó el efecto, mientras que el montón bootstrap se sienta en porque remuestrear lo conserva. Prueba esto. Corre 1000 tres veces y compara el error estándar bootstrap contra el 0.210 de la fórmula, y luego explica la diferencia con el conjunto cambiante de fuerzas (5.4 El bootstrap para la regresión).
5.5 Intervalos de confianza bootstrap¶
Intuición¶
Un error estándar es un solo número para la dispersión. Un intervalo de confianza es un rango que debería contener la pendiente verdadera con, digamos, de confianza. La distribución bootstrap de la pendiente ya contiene la información; solo tenemos que leer un intervalo de ella. Dos recetas simples hacen esto sin suponer que la distribución es normal (ambas se recogen en la Definición 5.7). El intervalo de percentiles toma el central de las pendientes bootstrap directamente. El intervalo básico (también llamado intervalo de reflexión) corrige un sesgo sutil reflejando los percentiles alrededor de la pendiente observada. Cuando la distribución bootstrap es simétrica casi coinciden; cuando es asimétrica se separan, y el intervalo básico suele ser el mejor comportado de los dos.
Fórmula¶
Sean y los percentiles inferior y superior de las pendientes bootstrap, para un intervalo del (así para el ). Los dos intervalos son
En palabras: el intervalo de percentiles son simplemente los percentiles 2.5 y 97.5 de las pendientes remuestreadas; el intervalo básico refleja esos dos percentiles a través del doble de la pendiente observada. Nota que el intervalo básico intercambia los papeles de los dos percentiles, porque reflejar convierte la cola superior en el extremo inferior.
Ese intercambio es más fácil de ver que de decir. La Figure 11 lo dibuja. Piensa en la pendiente observada como un espejo parado en el medio. El intervalo de percentiles queda arriba; para obtener el intervalo básico reflejas cada extremo a través del espejo, de modo que el punto que estaba muy a la derecha aterriza muy a la izquierda y viceversa. La aritmética es exactamente “reflejar a través de ”: mide qué tan lejos queda de y da un paso de la misma distancia al otro lado.

Figure 11:El intervalo básico es el intervalo de percentiles reflejado a través de la pendiente observada b1. Reflejar intercambia las colas: el percentil del extremo derecho se vuelve el extremo izquierdo y el percentil del extremo izquierdo se vuelve el extremo derecho. En una distribución sesgada como esta los dos intervalos quedan en lugares distintos; en una simétrica aterrizan uno sobre el otro.
Derivación (el intervalo básico bootstrap)¶
Demostración. El principio bootstrap dice que la variación de la pendiente remuestreada alrededor de la pendiente observada imita la variación de la pendiente observada alrededor de la pendiente verdadera. Escribe esto como: la distribución de aproxima la distribución de . Sean y los percentiles de , así que por definición
Resta en todo para centrar en la pendiente observada:
Ahora usa el principio bootstrap para reemplazar por , que tiene aproximadamente la misma distribución:
Despeja las desigualdades para . Restando y negando (lo cual invierte las direcciones de las desigualdades e intercambia los extremos) da
Ese corchete es el intervalo básico. El intervalo de percentiles es lo que obtienes si te saltas el paso de pivoteo y lees los percentiles bootstrap como si fueran percentiles de directamente. Los dos concuerdan exactamente cuando la distribución bootstrap es simétrica alrededor de , porque entonces reflejar los percentiles a través de los aterriza de vuelta sobre sí mismos.
R¶
perc_ci <- quantile(boot_case, c(0.025, 0.975))
basic_ci <- c(2 * b1_obs - perc_ci[[2]], 2 * b1_obs - perc_ci[[1]])
t_ci <- confint(fit)["RStr", ]
round(c(perc_lo = perc_ci[[1]], perc_hi = perc_ci[[2]]), 4)
round(c(basic_lo = basic_ci[1], basic_hi = basic_ci[2]), 4)
round(c(t_lo = t_ci[[1]], t_hi = t_ci[[2]]), 4)perc_lo perc_hi
0.4158 1.3883
basic_lo basic_hi
0.4158 1.3883
t_lo t_hi
0.4398 1.3643 Python¶
perc_ci = np.quantile(boot_case, [0.025, 0.975])
basic_ci = np.array([2 * b1_obs - perc_ci[1], 2 * b1_obs - perc_ci[0]])
t_ci = fit.conf_int().loc["RStr"].to_numpy()
print("percentile", np.round(perc_ci, 4))
print("basic ", np.round(basic_ci, 4))
print("classical ", np.round(t_ci, 4))percentile [0.413 1.3824]
basic [0.4216 1.3911]
classical [0.4398 1.3643]Figure 11 es una fotografía fija de la reflexión. El widget de abajo es la misma imagen con una manija: puedes sesgar tú mismo la distribución bootstrap y ver cómo los dos intervalos se separan.
Mueve a un pateador para sesgar la distribución bootstrap de casos de la pendiente, y observa cómo se separan el intervalo de percentiles y su reflexión a través de b1, el intervalo básico.
Qué notar. Las dos barras coinciden solo mientras el montón bootstrap es simétrico respecto al espejo en ; el sesgo es justo lo que las separa. Prueba esto. Arrastra al pateador más fuerte hasta 100 pies y luego verifica los extremos reportados contra y con una calculadora (5.5 Intervalos de confianza bootstrap).
5.6 Cuando la inferencia computacional y la clásica concuerdan¶
Ya conociste cada herramienta del capítulo. Antes de comparar sus respuestas, ayuda verlas en una sola página. La Figure 14 es un mapa: parte de tu pendiente ajustada y pregunta qué quieres saber, y luego te lleva al método correcto. La primera bifurcación es la grande. Si quieres saber si existe un efecto en absoluto, corres una prueba de permutación y reportas un valor p. Si quieres saber cuán precisa es tu estimación, corres un bootstrap y reportas un error estándar o un intervalo de confianza. El bootstrap luego se bifurca de nuevo según cómo se recogieron los datos: remuestreo de casos para sujetos muestreados al azar, remuestreo de residuos para un diseño con valores del predictor fijos.

Figure 14:El capítulo en una página. La primera pregunta, detectar un efecto o medir su precisión, elige entre la prueba de permutación y el bootstrap; el bootstrap luego se divide según cómo surgieron los datos.
Ya has visto tres veredictos sobre la pendiente del punting (permutación, bootstrap, clásico) que apuntaron todos en la misma dirección, y una pendiente de Toluca donde concordaron hasta el piso de resolución de la prueba de permutación. Ese es el caso común: cuando los supuestos clásicos se cumplen aproximadamente, las respuestas computacional y clásica coinciden, y la concordancia es en sí misma evidencia de que el valor p clásico se puede confiar. Los métodos se ganan su lugar cuando los supuestos son inestables, porque entonces la respuesta por remuestreo no depende de esos supuestos.
Para ver la concordancia directamente, compara los errores estándar bootstrap y clásico sobre la pendiente de Toluca, donde y los datos son limpios.
set.seed(4210)
boot_toluca <- numeric(B)
nt <- length(xt)
for (i in 1:B) {
idx <- sample(nt, nt, replace = TRUE)
boot_toluca[i] <- slope(xt[idx], yt[idx])
}
classical_se <- summary(lm(hours ~ lotsize, data = toluca))$coefficients["lotsize", "Std. Error"]
c(bootstrap_SE = sd(boot_toluca), classical_SE = classical_se)bootstrap_SE classical_SE
0.3765516 0.3469722 rng = np.random.default_rng(4210)
nt = len(xt)
boot_toluca = np.empty(B)
for i in range(B):
idx = rng.integers(0, nt, nt)
boot_toluca[i] = slope(xt[idx], yt[idx])
classical_se = smf.ols("hours ~ lotsize", data=toluca).fit().bse["lotsize"]
print("bootstrap_SE =", boot_toluca.std(ddof=1), " classical_SE =", classical_se)bootstrap_SE = 0.36568568108182364 classical_SE = 0.3469721568487608Una lectura errónea a evitar: un estudiante ve el error estándar bootstrap 0.377 junto al clásico 0.347 y concluye “el bootstrap está mal, porque no coincide con la fórmula”. Eso lo entiende al revés. Ninguno de los dos números es la verdad; ambos estiman la misma desviación estándar desconocida de , y difieren solo por ruido muestral y por la pequeña variabilidad extra que el remuestreo de casos incluye a propósito. La lectura correcta es que concuerdan lo bastante bien como para reforzarse mutuamente. Solo te preocuparías si discreparan por mucho, lo cual sería una señal de que los supuestos clásicos están fallando y el bootstrap te está diciendo algo que la fórmula no puede.
5.7 Resumen del capítulo¶
Ahora puedes hacer inferencia para una pendiente de regresión sin apoyarte en el supuesto de errores normales. Cuando una muestra pequeña pone las pruebas y sobre hielo delgado y trece residuos no pueden confirmar la normalidad, reemplazas el supuesto no verificable por un cálculo. Una prueba de permutación mezcla la respuesta contra el predictor fijo para construir la nula de no asociación de la pendiente y reporta ; sobre los datos del punting dio , coincidiendo con el clásico 0.00127. Un bootstrap remuestrea los datos con reemplazo para medir la precisión: el remuestreo de casos y el de residuos dieron errores estándar de la pendiente de alrededor de 0.249 y 0.198, e intervalos de percentiles y básico cerca de , todos consistentes con el clásico . La lección recurrente es que cuando las respuestas computacional y clásica concuerdan la concordancia genera confianza, y cuando divergen marcadamente esa divergencia es una advertencia sobre los supuestos.
Resultados clave de un vistazo.
| Resultado | Enunciado o fórmula | Válido cuando |
|---|---|---|
| Prueba de permutación (Definición 5.1) | Mezcla contra fijo, reajusta, junta pendientes | Nula de no asociación; cualquier distribución del error |
| Valor p de permutación (Definición 5.2) | de remezclas al menos tan extremas | |
| Validez del valor p de permutación (Teorema 5.3) | ; piso | Bajo la nula de no asociación |
| Bootstrap (Definición 5.4) | Remuestrea con reemplazo, recalcula, toma la dispersión | La muestra hace las veces de la población |
| Remuestreo de casos vs de residuos (Definición 5.5) | Filas con reemplazo, o | Sujetos al azar, o predictor de diseño fijo |
| Error estándar bootstrap (Definición 5.6) | remuestras del modelo ajustado | |
| Intervalos de percentiles / básico (Definición 5.7) | / | Leídos de la distribución bootstrap |
| Intervalo básico por pivoteo (Teorema 5.8) | Refleja percentiles a través de ; igual al de percentiles si es simétrico | El principio bootstrap se cumple |
Términos clave. Prueba de permutación, distribución de permutación, valor p de permutación, corrección de más uno, bootstrap, remuestreo de casos, remuestreo de residuos, error estándar bootstrap, intervalo de percentiles, intervalo básico bootstrap, intercambiabilidad.
Ahora deberías poder.
Explicar por qué la inferencia y de teoría normal para una pendiente puede fallar, y por qué una muestra pequeña empeora el riesgo y vuelve no verificable la normalidad.
Enunciar la nula de no asociación y describir la lógica exacta de una prueba de permutación para la pendiente.
Implementar la prueba de permutación desde cero en R y Python y calcular un valor p de permutación.
Justificar la corrección de más uno y el piso de resolución , y compararla con el valor p de la prueba clásica.
Distinguir el remuestreo de casos del remuestreo de residuos y programar cada uno.
Construir e interpretar intervalos de confianza bootstrap de percentiles y básico para la pendiente.
Decidir cuándo la inferencia computacional y la clásica concuerdan, y qué reportar cuando discrepan.
Dónde encaja esto. En la columna del flujo de trabajo de El flujo de trabajo del modelado, este capítulo vive en USAR: es inferencia, convirtiendo una pendiente ajustada en una afirmación defendible sobre el mundo. También es un discreto VERIFICAR, porque comparar las respuestas computacional y clásica audita los supuestos detrás de las clásicas. El Capítulo 3 dio la inferencia clásica y que supone errores normales; este capítulo dio la inferencia por remuestreo que no lo hace, y mostró que las dos concuerdan cuando los supuestos se cumplen. El bootstrap regresa más adelante como herramienta de trabajo: el Capítulo 9 recurre a él cuando los diagnósticos dicen que la normalidad ha fallado, y el Capítulo 12 usa la misma mentalidad de remuestrear y reajustar para validar modelos sobre datos con los que no fueron ajustados (12.4 Validación: entrenar, probar y validar cruzadamente). El hábito que construiste aquí, generar la distribución en lugar de suponerla, es uno que usarás por el resto del libro.
5.8 Preguntas frecuentes¶
P1. ¿Es una prueba de permutación lo mismo que un bootstrap? No, aunque ambos remuestrean. Una prueba de permutación mezcla sin reemplazo para romper el vínculo entre y , construyendo la distribución de un estadístico bajo la hipótesis nula de no asociación; responde “¿hay un efecto?”. El bootstrap remuestrea con reemplazo para imitar el muestreo repetido de la población, construyendo la distribución de la estimación misma; responde “¿cuán precisa es el efecto?”. Usa una prueba de permutación para un valor p, un bootstrap para un error estándar o intervalo de confianza.
P2. ¿Por qué mezclar sin reemplazo para la prueba de permutación pero con reemplazo para el bootstrap? La prueba de permutación necesita que cada remezcla sea un reordenamiento genuino de los mismos valores, de modo que represente uno de los emparejamientos igualmente probables bajo la nula; el muestreo sin reemplazo (una mezcla) hace exactamente eso. El bootstrap necesita que cada remuestra se vea como una extracción fresca de la población, y las muestras repetidas reales pueden contener repeticiones y omisiones, así que muestrea con reemplazo.
P3. ¿Cuántas remezclas o remuestras necesito? Las suficientes para que la respuesta deje de moverse. Para un valor p que comparas con 0.05, unas pocas miles de remezclas suele bastar; cerca de un corte preciso, usa más, porque el piso de Monte Carlo es y el ruido encoge como . Para un error estándar bootstrap, 1000 a 2000 remuestras a menudo bastan; para los percentiles de cola de un intervalo de confianza, usa 5000 o más, ya que los cuantiles extremos son más ruidosos que el centro.
P4. Mi valor p de permutación es 0. ¿Reporto ? Nunca reportes exactamente cero. Si ninguna remezcla de superó tu estadístico, la corrección de más uno da , y reportas “menor que” eso: para , reporta . Reportar afirmaría certeza infinita a partir de datos finitos.
P5. ¿Cuál bootstrap debo usar, de casos o de residuos? Ajusta el remuestreo a cómo surgieron los datos. Si los valores del predictor fueron fijados por diseño (un experimento planeado con dosis establecidas, o los tamaños de lote de Toluca elegidos por los programadores), el remuestreo de residuos ajusta el modelo literalmente. Si las filas son una muestra al azar de una población y el predictor es simplemente otra variable medida (los pateadores), el remuestreo de casos es más honesto. También es el valor por defecto más seguro cuando no estás seguro, porque captura la variabilidad en el predictor y no supone varianza del error constante.
P6. El bootstrap y la prueba dieron intervalos ligeramente distintos. ¿Cuál es el correcto? Ninguno es “el correcto” en un sentido absoluto; ambos estiman la misma incertidumbre verdadera. Cuando están cercanos, como en los ejemplos del punting y de Toluca, confía en cualquiera y nota la concordancia. Cuando difieren por mucho, la discrepancia es información: suele significar que un supuesto clásico (normalidad, varianza constante, sin puntos influyentes) está fallando, y el bootstrap libre de supuestos es el reporte más seguro mientras investigas.
P7. ¿Funcionan estos métodos para la regresión múltiple? Sí. El bootstrap se generaliza directamente: remuestrea por casos filas enteras, o remuestrea por residuos alrededor de la superficie ajustada, y junta el coeficiente que te importe. La permutación es más sutil con varios predictores, porque mezclar un predictor manteniendo fijos los otros requiere cuidado sobre qué nula estás probando, pero la idea central se traslada. Este capítulo se ciñe a la regresión simple para que la lógica quede visible; el código de remuestreo cambia poco cuando añades predictores.
5.9 Problemas de práctica¶
(A) En una oración cada uno, enuncia qué pregunta responde una prueba de permutación y qué pregunta responde un bootstrap, y di cuál remuestrea con reemplazo.
(A) Explica por qué trece residuos no pueden confirmar ni descartar errores normales, refiriéndote a la Figure 2.
(A) Enuncia las hipótesis nula y alternativa de la prueba de permutación para una pendiente, en palabras y en símbolos.
(A) ¿Por qué el valor p de permutación usa la corrección de más uno en lugar de ? ¿Qué sale mal si una prueba puede reportar exactamente cero?
(A) Una prueba de permutación con remezclas encuentra . ¿Qué valor p reportas, y cuál es el valor p más pequeño que esta corrida podría dar jamás?
(A) Describe en palabras la diferencia entre el remuestreo de casos y el remuestreo de residuos, y da una historia de recolección de datos que se ajuste a cada uno.
(A) El intervalo de percentiles para una pendiente es y la pendiente observada es . Sin computadora, halla el intervalo básico.
(A) Una compañera reporta un valor p de permutación de 0 para una pendiente. Reescribe su conclusión para que sea defendible, suponiendo que usó remezclas.
(A) Explica por qué mezclar contra fijo, mezclar contra fijo, y mezclar ambos dan la misma prueba de permutación.
(B) Muestra que cuando permutas la respuesta, la pendiente remezclada es una constante positiva fija por el producto cruzado remezclado , y concluye que la prueba de permutación sobre la pendiente es idéntica a la prueba de permutación sobre la correlación muestral.
(B) Deriva el intervalo básico bootstrap (Teorema 5.8) a partir del principio bootstrap de que tiene aproximadamente la misma distribución que . Muestra cada paso del álgebra que invierte los extremos.
(B) Demuestra que los intervalos de percentiles y básico coinciden exactamente cuando la distribución bootstrap de es simétrica alrededor de .
(B) El valor p exacto de permutación de dos colas cuenta arreglos con de un total de . Explica por qué el arreglo observado siempre se cuenta, y usa esto para argumentar que el valor p exacto es al menos .
(B) Un estadístico tiene una distribución de permutación que asigna probabilidad a cada arreglo. Explica por qué, bajo la nula, la variable aleatoria (calculada de la enumeración completa) satisface para cualquier corte que sea múltiplo de , de modo que la prueba controla su tasa de error (Teorema 5.3).
(B) El error estándar de Monte Carlo de una estimación del error estándar bootstrap encoge como . Explica cualitativamente por qué duplicar la exactitud de un extremo de intervalo de confianza de cola cuesta cuatro veces las remuestras.
(B) Explica por qué el error estándar del bootstrap de casos puede exceder el error estándar de la fórmula clásica incluso cuando el modelo es correcto, nombrando la fuente extra de variación que el remuestreo de casos incluye y que el bootstrap de residuos y la fórmula clásica mantienen fija.
(C) Reproduce la prueba de permutación del punting en R o Python con
set.seed(4210)/default_rng(4210)y . Reporta el conteo de remezclas extremas y el valor p de permutación, y compáralo con el valor p de la prueba clásica 0.00127.(C) Repite la prueba de permutación del punting con el predictor
LStr(fuerza de la pierna izquierda) en lugar deRStr. Reporta la pendiente observada, el valor p de permutación, y si tu conclusión cambia.(C) Corre la prueba de permutación de Toluca con . Reporta la pendiente remezclada más grande en tamaño y explica por qué el valor p de permutación no puede bajar de aquí.
(C) Calcula los errores estándar del bootstrap de casos y de residuos de la pendiente del punting con . Reporta ambos y explica cuál es mayor y por qué.
(C) Calcula intervalos de percentiles y básico del para la pendiente del punting a partir del bootstrap de casos, y ponlos junto al intervalo clásico . Comenta la concordancia.
(C) Usando los datos de
puntingy el predictorOStr(fuerza general de piernas), construye un intervalo bootstrap de percentiles del para la pendiente (usa los percentiles 5 y 95). Reporta el intervalo e interprétalo en las unidades del problema.(C) Aplica el bootstrap a la pendiente de Toluca 5000 veces por remuestreo de casos y compara el error estándar bootstrap con el clásico 0.347. Enuncia la diferencia porcentual y si los dos concuerdan.
(C) Escribe una prueba de permutación para la pendiente del punting pero usa la correlación muestral como estadístico en lugar de la pendiente. Confirma que el valor p coincide con la prueba basada en la pendiente (problema 17), ilustrando la identidad del problema 10.
(C) Aumenta la prueba de permutación del punting a remezclas. ¿Cambia materialmente la estimación del valor p respecto al valor con ? Reporta ambos y comenta el ruido de Monte Carlo.
(C) Haz un gráfico cuantil-cuantil normal de los residuos del punting en R o Python, luego genera tres muestras normales de tamaño 13 y grafica sus gráficos cuantiles. Describe cuán difícil es distinguir los residuos reales de las muestras normales, conectando con la Figure 2.
(C) Para la pendiente del punting, calcula un error estándar bootstrap y forma el intervalo (un intervalo bootstrap de aproximación normal). Compáralo con el intervalo de percentiles y explica cuándo discreparían los dos.
(B) Un analista usa una mezcla emparejada: reordena las filas de los datos pero mantiene cada par junto, y luego reajusta. Muestra que cada tal “permutación” da exactamente la pendiente observada, y explica por qué esto no prueba nada.
5.10 Práctica de examen¶
Estas cinco preguntas se ajustan al estilo de los exámenes del curso: cada una te pide explicar, evaluar o interpretar en oraciones completas, no solo calcular un número. Escribe tu propia respuesta antes de abrir la respuesta modelo. Un número correcto sin razonamiento ganaría poco crédito en el examen real, y una explicación clara con un pequeño desliz aritmético ganaría la mayor parte.
PE 5.1 (explica por qué). El capítulo llama a la prueba clásica para la pendiente del punting “sobre hielo delgado” con , y sin embargo corre la prueba de permutación sobre esos mismos trece pateadores sin disculparse. Explica, en oraciones completas, exactamente cuál supuesto necesita la prueba que la de permutación no, y por qué tener solo trece pateadores hace que esa diferencia importe aquí en lugar de ser un tecnicismo.
Respuesta modelo
La prueba clásica trata la razón como exactamente -distribuida con grados de libertad, y esa distribución es exacta solo cuando los errores son normales. Cuando los errores no son normales, el resultado vale solo como aproximación, y solo cuando la muestra es lo bastante grande para que un efecto de límite central suavice la estimación de la pendiente hacia la normalidad. Con trece pateadores no hay rescate de muestra grande, y trece residuos no pueden distinguir una distribución normal de una no normal (Figure 2), así que la única premisa sobre la que se apoya la prueba es precisamente la que no se puede verificar. Eso es lo que significa “hielo delgado”: no que la prueba se sepa incorrecta, sino que su red de seguridad es no verificable.
La prueba de permutación no necesita ningún supuesto distribucional en absoluto. Bajo la nula de no asociación, las trece distancias se adjuntan a las trece fuerzas sin tenerlas en cuenta, así que la pendiente observada es literalmente uno de los emparejamientos igualmente probables, y remezclar genera esa distribución de referencia exactamente a partir de los datos en mano. La normalidad nunca entra al argumento, así que la muestra pequeña que socava la prueba no socava la de permutación. El único precio que la prueba de permutación paga por un pequeño es un conjunto de referencia más grueso (menos emparejamientos genuinamente distintos), no un supuesto roto.
Una respuesta débil solo dice “las pruebas de permutación no suponen normalidad” sin explicar que el requisito de normalidad de la prueba es exactamente el no verificable con , y sin notar que la distribución de referencia de permutación proviene de los emparejamientos igualmente probables bajo la nula.
PE 5.2 (interpreta una salida y una figura en contexto). Una prueba física distinta, el tiempo de
suspensión (los segundos que el balón permanece en el aire), se usa para predecir la distancia del punt
con el modelo Distance ~ Hang. El ajuste clásico y una prueba de permutación con (semilla
4210) dan:
Distance ~ Hang
Estimate Std. Error t value Pr(>|t|)
(Intercept) -22.32579 36.30608 -0.61493 0.55111
Hang 43.50138 9.19420 4.73139 0.00062
permutation test: 2 of 5000 reshuffles as extreme, p_perm = (2+1)/(5000+1) = 0.0006
Figure 15:La distribución nula de permutación de la pendiente del tiempo de suspensión. Las pendientes remezcladas se agrupan alrededor de cero; la pendiente observada 43.5 queda fuera del borde derecho, superada por solo dos de 5000 remezclas, así que el valor p de permutación de dos colas es de alrededor de 0.0006.
Interpreta esta salida y figura en contexto. Enuncia qué significa la pendiente 43.5 en las unidades del problema, qué dicen los dos valores p y si concuerdan, y da una oración de precaución sobre lo que este análisis no establece.
Respuesta modelo
La pendiente dice que entre estos trece pateadores, cada segundo adicional de tiempo de suspensión va con alrededor de 43.5 pies más de distancia promedio del punt. El intercepto -22.3 pies no es interpretable por sí solo, porque un tiempo de suspensión de cero está muy fuera del rango de los datos y significaría que el balón nunca salió del pie. Ambos valores p son diminutos y esencialmente idénticos: la prueba clásica da 0.00062 y la prueba de permutación da . La figura muestra por qué concuerdan, porque la pendiente observada 43.5 queda fuera del borde derecho lejano de la nula remezclada, superada por solo dos de cinco mil mezclas. Así que una pendiente tan pronunciada casi nunca surge cuando el tiempo de suspensión y la distancia no están relacionados, y tenemos evidencia fuerte de que los dos están asociados, una conclusión que no se apoya en errores normales porque la prueba de permutación libre de supuestos aterriza en el mismo lugar que la prueba .
La precaución: esta es una asociación observacional medida dentro de trece pateadores, no un efecto causal. No muestra que un pateador podría alargar una patada manteniendo deliberadamente el balón más tiempo en el aire, porque el tiempo de suspensión y la distancia son ambos consecuencia de la misma fuerza de pierna y técnica, y con solo trece puntos la estimación 43.5 es ella misma imprecisa.
Una respuesta débil lee el valor p como “significativo” pero no interpreta la pendiente en las unidades del problema, no nota que los dos métodos concuerdan y por qué esa concordancia importa, o se desliza hacia una afirmación causal.
PE 5.3 (un estudiante afirma algo, evalúalo). Un estudiante corre la prueba de permutación del
punting (Distance ~ RStr, ) dos veces, una con set.seed(4210) y otra con
set.seed(2026), y obtiene:
seed 4210: M = 4 extreme reshuffles, p_perm = 0.00100
seed 2026: M = 8 extreme reshuffles, p_perm = 0.00180El estudiante concluye: “La prueba de permutación no es confiable, porque da una respuesta distinta cada vez que la corro. Debería simplemente reportar el valor p de la prueba clásica de 0.00127, que es exacto y reproducible.” Evalúa el razonamiento del estudiante. Di qué está bien y qué está mal en cada mitad de la afirmación.
Respuesta modelo
El estudiante tiene mitad de razón y mitad no. Es cierto que un valor p de permutación de Monte Carlo tambalea de corrida a corrida, porque estima el verdadero valor p de permutación a partir de una muestra aleatoria finita de remezclas. Los valores 0.00100 y 0.00180 son dos de esas estimaciones, y la brecha entre ellas es ruido de Monte Carlo ordinario, que encoge como y casi desaparecería si el estudiante corriera muchas más remezclas o enumerara los emparejamientos. Pero “distinto cada vez” no es lo mismo que “no confiable”. Ambas corridas ubican el valor p cerca de 0.001, ambas están muy por debajo de cualquier corte usual, y ambas llevan exactamente a la misma decisión, así que la conclusión no está en duda. La preocupación por la reproducibilidad también ya está resuelta al fijar la semilla, cosa que el estudiante hizo.
La segunda mitad de la afirmación es donde falla el razonamiento. El clásico 0.00127 es “exacto” solo si su supuesto de normalidad se cumple, y la razón entera por la que el capítulo usa los datos del punting es que trece residuos no pueden confirmar la normalidad. Así que ese número no es más confiable que el valor p de permutación, solo se ve más preciso. El reporte honesto es el valor p de permutación (alrededor de 0.001) junto con la nota de que concuerda con la prueba , o una corrida de permutación con un mayor si se quiere una cifra más precisa.
Una respuesta débil solo dice “es aleatorio, así que está bien” sin nombrar el error de Monte Carlo, la tasa , o el hecho de que ambas corridas dan la misma decisión, y no cuestiona la afirmación falsa de que el valor p de la prueba es exacto aquí.
PE 5.4 (un estudiante afirma algo, evalúalo). El ejemplo de RStr del capítulo encontró el error
estándar del bootstrap de casos (0.249) mayor que el del bootstrap de residuos (0.198), y explicó
que el remuestreo de casos “añade una fuente más de variabilidad”. Un estudiante lo convierte en regla:
“El remuestreo de casos siempre da un error estándar mayor que el remuestreo de residuos, porque también
deja variar los valores del predictor.” Para probar la regla reajustan la distancia del punt sobre la
fuerza general de piernas (OStr) con y obtienen:
Distance ~ OStr
classical formula standard error = 0.0991
case-resampling bootstrap SE = 0.0889
residual-resampling bootstrap SE = 0.0910Evalúa la regla del estudiante a la luz de esta salida.
Respuesta modelo
La regla es falsa tal como se enuncia, y esta salida es un contraejemplo limpio. Aquí el error estándar
del bootstrap de casos (0.089) es en realidad menor que el del bootstrap de residuos (0.091), lo
opuesto al patrón de RStr. La explicación del capítulo describía una tendencia, no una garantía. El
remuestreo de casos y el de residuos estiman la misma variabilidad muestral subyacente de la pendiente
por dos mecanismos distintos, y cuál sale mayor en un conjunto de datos dado depende de los residuos
particulares y de los puntos de alto apalancamiento que casualmente se remuestrean, más el ruido de
Monte Carlo ordinario. Con solo trece puntos, estos accidentes fácilmente ahogan el argumento de la
“fuente extra de variación”.
La lectura sólida es que los tres errores estándar (0.089, 0.091 y 0.099) concuerdan todos dentro de alrededor de un diez por ciento y cuentan la misma historia sobre una pendiente de 0.43, así que la elección entre los dos bootstraps debe hacerse por la historia de recolección de datos (remuestreo de casos cuando los pateadores son una muestra al azar de una población, remuestreo de residuos cuando las fuerzas se tratan como fijas por diseño), no por cuál produce el número más grande.
Una respuesta débil simplemente declara la regla correcta o incorrecta sin usar los números impresos para mostrar que el de casos es menor que el de residuos aquí, o sin explicar que el efecto de “variación extra” es solo una tendencia que el ruido de muestra pequeña puede invertir.
PE 5.5 (qué cambiaría si). Para la pendiente del punting Distance ~ RStr (observada
), responde cada parte en oraciones completas.
(a) El capítulo usa remezclas y reporta . ¿Qué cambiaría sobre el número que podrías reportar honestamente si volvieras a correr la prueba de permutación con solo remezclas y de nuevo no encontraras ninguna remezcla que superara la pendiente observada?
(b) El capítulo remuestrea por casos a los pateadores porque se tratan como una muestra de una población mayor de pateadores. ¿Qué cambiaría sobre cuál bootstrap es la elección honesta si en cambio estos trece fueran el grupo entero que te importa, digamos la plantilla completa de un equipo, y solo quisieras describir la recta dentro de ese grupo fijo?
Respuesta modelo
(a) Con y , el valor p de permutación sería , así que el número más pequeño que podrías reportar honestamente aproximadamente se duplica respecto al piso de de . Menos remezclas suben el piso de resolución , así que pierdes la capacidad de resolver valores p muy pequeños y tu estimación es más ruidosa de corrida a corrida, aunque la conclusión cualitativa (evidencia fuerte, p muy por debajo de 0.05) no cambia. Para reportar algo más pequeño tendrías que correr más remezclas.
(b) Si los trece pateadores son el grupo entero y solo quieres la recta dentro de ese conjunto fijo, el argumento a favor del remuestreo de casos se debilita. El remuestreo de casos imita la aleatoriedad de extraer sujetos de una población, y no queda tal aleatoriedad una vez que ya tienes a todos. La variabilidad que vale la pena modelar es entonces la dispersión de las distancias alrededor de la recta, que es exactamente lo que captura el remuestreo de residuos al mantener fijas las fuerzas y reasignar residuos remuestreados, así que el remuestreo de residuos (o la visión clásica de diseño fijo) se vuelve la elección más honesta. En el extremo donde el ajuste se trata como una descripción pura de un grupo finito fijo, la inferencia sobre una población más amplia posiblemente ni siquiera sea la pregunta correcta que plantear.
Una respuesta débil a (a) omite que es el piso lo que cambia (alrededor de 0.002 frente a 0.0002) en lugar de la decisión; una respuesta débil a (b) solo repite “usa el remuestreo de casos” sin reconocer que quitar la aleatoriedad del muestreo de sujetos quita la razón misma para preferirlo.
Juego del capítulo¶
Chapter summary (in English)
This chapter presents resampling inference for a regression slope, useful when the sample is small and the normal-error assumption cannot be trusted. The motivating example is the punting data: thirteen punters, with punt distance against right-leg strength. The Chapter 3 test rests on assumptions that cannot be checked, because thirteen residuals do not distinguish normal from non-normal.
The permutation test answers whether an association exists. The response is shuffled against the fixed predictor many times, breaking any link, and the slope is computed on each shuffle. The permutation p-value is , where counts shuffles with a slope as extreme as the observed one. For the punters, with , the result was , close to the test’s 0.00127. For Toluca, no shuffle reached the real slope 3.5702, so . The plus-one correction prevents ever reporting a p-value of exactly zero.
The bootstrap measures the precision of the estimate. Case resampling draws whole rows with replacement; residual resampling holds the predictors and the fitted line fixed and reassigns residuals with replacement. The standard deviation of the resampled slopes is the bootstrap standard error. From it two intervals are read: the percentile interval and the basic interval, which reflects the percentiles through . For the punters, both gave near , a bit wider than the classical interval .
The closing lesson: when the classical assumptions hold, the computational and classical methods agree, which justifies trusting the test. When they differ sharply, it is a sign that some assumption is failing, and the bootstrap, which does not need it, is the safer report.