Hay mil motivos para criticar una regresión «trucha», pero una R² baja no es uno de ellos

Todo esto arranca con el tuit:

Esa gráfica, extraída de un documento de la OCDE, creo, fue uno de los argumentos esgrimidos por JR Rallo para defender cierta postura que no viene al caso. Lo relevante para estas páginas es que fue contestado y protestado por muchos —de algunos de los cuales, dada su autoproclamada condición de divulgadores científicos, cabría esperar más— en términos exclusivamente de lo pequeño de la R².

Hay mil argumentos para criticar una regresión de ese estilo y mi favorita es 10k regresiones truchas para que cada cual elija la que más le cuadre, en estas mismas páginas. Pero no, la R² no es argumento de nada. La R² está relacionada con el error irreductible, la cantidad de ruido presente en los datos como pone en evidencia el ejemplo que desarrollo a continuación.

En primer lugar, genero varios conjuntos de datos con la misma estructura probabilística pero haciendo variar (crecer) el error irreductible, es decir, la \sigma del error normal:

n <- 3000
x <- rnorm(n)

foo <- function(sigma){
  y <- 4 - .2 * x + rnorm(n, 0, sigma)
  modelo <- lm(y ~ x)
  datos <- data.frame(
    x = x, 
    y = y, sigma = sigma, 
    r.squared = summary(modelo)$r.squared)
}

res <- do.call(
  rbind, 
  lapply(seq(0, 2, length.out = 20), foo))

Los datos tienen este aspecto:

library(ggplot2)
ggplot(res, aes(x = x, y = y)) + geom_point(alpha = .2) +
  geom_smooth(method = "lm", col = "red") +
  facet_wrap(~sigma)

El ajuste es siempre el mismo y es —queda propuesto como ejercicio para el lector— perfectamente compatible con la formulación original del modelo. Sin embargo:

r.squared <- unique(res[, c("sigma", "r.squared")])

plot(r.squared$sigma, 
     r.squared$r.squared, 
     type = "l", 
     xlab = "sigma", 
     ylab = "r squared", 
     main = "r cuadrado según el error\nirreductible del modelo")

¡Oh! La R² se desploma.

En fin…

2 comentarios sobre “Hay mil motivos para criticar una regresión «trucha», pero una R² baja no es uno de ellos

  1. Jose Luis Cañadas Reche 16 febrero, 2021 19:20

    Yo seguiré empeñado en llamarlo error irreducible (ya sé que son sinónimos)
    Buena entrada

  2. Jordi 16 febrero, 2021 22:21

    Pues es para analizar que ocurre haciendo resampling con muestras mas pequeñas en el dataset original. ?

Comenta

Your email address will not be published.

Puedes usar estas etiquetas y atributos de HTML: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>

Este sitio usa Akismet para reducir el spam. Aprende cómo se procesan los datos de tus comentarios.