La idea: la recta de mínimos cuadrados
La regresión lineal ajusta una línea recta a través de una nube de puntos: y = intercepto + pendiente × x. De entre todas las rectas posibles, lm() elige la que minimiza la suma de los residuos al cuadrado - siendo un residuo la distancia vertical entre un punto y la recta. Elevar al cuadrado hace que los fallos grandes cuenten de forma desproporcionada, y por eso un único valor atípico salvaje puede inclinar todo el ajuste.
Donde la correlación te da un solo número sin unidades para "cuán estrechamente se mueven juntas", la regresión te da una ecuación - con unidades, una pendiente que puedes interpretar y la maquinaria para predecir.
Lee la fórmula como "modela mpg en función de wt". Los dos coeficientes son la recta ajustada: mpg ≈ 37.3 − 5.3 × peso. La pendiente tiene unidades reales - cada 1000 lbs adicionales de coche (wt está en unidades de 1000 lbs) cuestan unas 5.3 millas por galón. El intercepto (37.3 mpg con peso cero) es solo donde la recta cruza el cero; ningún coche pesa nada, así que no lo sobreinterpretes.
El recorrido por summary()
summary(fit) es la salida que todo curso de estadística te pide interpretar. Ejecútalo y luego tómalo bloque a bloque:
Call - repite el modelo que ajustaste. Trivial ahora, un salvavidas cuando estás haciendo malabares con seis objetos de modelo.
Residuals - el resumen de cinco números de los sobrantes (real − predicho). Quieres la mediana cerca de 0 y una simetría aproximada entre Min/Max y 1Q/3Q; una asimetría fuerte insinúa que al modelo de línea recta se le está escapando algo.
Coefficients - el corazón de la salida, una fila por término:
- Estimate - el valor ajustado. Para
wt, −5.34: cada 1000 lbs adicionales se asocian con unas 5.3 mpg menos. Traduce siempre la pendiente a una frase con unidades; esa frase es todo el contenido práctico del modelo. - Std. Error - cuánto oscilaría la estimación entre muestras repetidas. Las estimaciones a un par de errores estándar de cero son endebles.
- t value - Estimate ÷ Std. Error: a cuántos errores estándar de cero se sitúa el coeficiente (−9.56 aquí).
- Pr(>|t|) - el valor p para "¿podría este coeficiente ser realmente cero?". Para
wtes aproximadamente 1.3e-10: si el peso realmente no tuviera relación lineal con las mpg, una pendiente así de pronunciada prácticamente nunca aparecería en una muestra de 32. Valor p pequeño = evidencia de que la asociación existe - no prueba de que el modelo sea correcto, ni una medida de importancia (un efecto minúsculo estimado con precisión también recibe un valor p minúsculo). - Signif. codes / estrellas - una abreviatura visual de la columna de valores p. Cómoda; no añade información.
Residual standard error: 3.05 on 30 degrees of freedom - el tamaño típico de un fallo de predicción, en las unidades propias de la respuesta: las predicciones suelen desviarse unas 3 mpg. Júzgalo contra la escala de mpg (que va aproximadamente de 10 a 34).
Multiple R-squared: 0.75 - el peso explica alrededor del 75% de la varianza de mpg. Adjusted R-squared (0.74) lo recalcula con una penalización por predictor, porque la versión bruta solo puede aumentar al añadir variables - incluso ruido aleatorio. Al comparar modelos con distinto número de predictores, el ajustado es el honesto. Y resiste el reflejo de "buen modelo = R² alto": un efecto genuinamente útil puede vivir en un modelo de R² bajo (resultado ruidoso, uno entre muchos factores), mientras que un R² alto puede venir de un sobreajuste o de una variable filtrada.
F-statistic: 91.4 ... p-value: 1.29e-10 - el contraste del modelo completo: ¿este modelo supera a "predecir la media para todos"? Con un predictor duplica el test t de la pendiente (fíjate en que 9.56² ≈ 91.4); con varios predictores se convierte en el contraste conjunto de que al menos un coeficiente es distinto de cero. Su maquinaria es la misma descomposición de la varianza que el ANOVA.
Regresión múltiple: manteniendo los demás constantes
Añade predictores con +:
La interpretación cambia en un aspecto crucial. Cada Estimate es ahora el efecto de ese predictor manteniendo los demás constantes: el coeficiente de wt (aproximadamente −3.9, frente a −5.3) es el coste en mpg del peso extra comparando coches con la misma potencia. El −5.3 de la regresión simple incluía en silencio el hecho de que los coches más pesados también tienden a ser más potentes; la regresión múltiple lo desagrega. Por eso los coeficientes cambian cuando añades variables - si el nuevo predictor correlaciona con uno antiguo, la descripción del trabajo del antiguo cambia. El R cuadrado sube hasta aproximadamente 0.83, y aquí la versión ajustada es la comparación justa frente al modelo de un solo predictor.
Predicciones: predict()
El modelo ajustado es una función; predict() la evalúa. Construye un data frame newdata cuyos nombres de columna coincidan exactamente con los predictores:
Los dos tipos de intervalo responden a preguntas distintas, y confundirlos es un error clásico de examen:
interval = "confidence"- incertidumbre sobre el promedio: "para todos los coches que pesan 2500 lbs, ¿dónde está la media de mpg?". Estrecho, y se encoge a medida que crecen los datos.interval = "prediction"- el rango donde es probable que caiga un coche nuevo individual de ese peso. Mucho más ancho, porque un coche concreto lleva su propia dispersión alrededor de la recta - una dispersión que ninguna cantidad de datos promedia.
Reportar un intervalo de confianza cuando la pregunta trata de una observación nueva exagera drásticamente tu precisión.
Diagnósticos y la trampa de la extrapolación
summary() te dice qué estima el modelo; los gráficos de residuos te dicen si debes creerle. En una sesión interactiva:
par(mfrow = c(2, 2))
plot(fit) # four diagnostic plots
Qué buscar: Residuals vs Fitted debería ser una nube sin forma - una curva significa que la relación no es recta; un embudo (dispersión que crece con los valores ajustados) significa varianza no constante, y tus errores estándar están mal. En el gráfico Q-Q los puntos deberían pegarse a la línea - colas pesadas significan que los valores atípicos están distorsionando el ajuste. Scale-Location es de nuevo la comprobación del embudo. Residuals vs Leverage señala los puntos influyentes - observaciones que, por sí solas, arrastran los coeficientes (en mtcars, los coches exóticos como el Chrysler Imperial suelen aparecer aquí). Un diagrama de dispersión rápido de los datos en bruto antes de ajustar detecta la mayor parte de esto a tiempo.
Por último, la trampa que ningún diagnóstico detecta: la extrapolación. El modelo aprendió de coches que pesan aproximadamente entre 1500 y 5400 lbs. Dale a predict() un wt de 8 y devolverá alegremente unas mpg negativas - las matemáticas extienden la recta hasta el infinito, pero la evidencia se detiene en el borde de los datos. Predice solo dentro (o cerca) del rango sobre el que ajustaste.
Lo que te llevas
fit <- lm(y ~ x, data = df)ajusta la recta de mínimos cuadrados;coef(fit)es la ecuación,summary(fit)el informe completo.- Lee los Estimates como frases con unidades;
Pr(>|t|)pregunta "¿podría esto ser cero?", no "¿importa esto?". - El error estándar residual es el fallo típico en unidades reales; el R cuadrado ajustado es el número justo para comparar modelos.
- En regresión múltiple cada coeficiente significa "manteniendo los demás constantes" - y los coeficientes cambian cuando se incorporan predictores correlacionados.
predict(fit, newdata, interval = ...): "confidence" para la media, "prediction" para un caso nuevo - el ancho.- Revisa
plot(fit)en busca de curvas, embudos y puntos influyentes; nunca te fíes de predicciones fuera del rango de los datos.
A continuación: cuando el resultado es un sí/no en lugar de un número - regresión logística con glm().
Preguntas frecuentes
¿Cómo se hace una regresión lineal en R?
Con lm() y una fórmula: fit <- lm(mpg ~ wt, data = mtcars) regresa mpg sobre el peso. Después summary(fit) imprime los coeficientes, sus valores p, el R cuadrado y el estadístico F. Añade más predictores con +: lm(mpg ~ wt + hp, data = mtcars).
¿Cómo se interpreta la salida de summary de lm en R?
En el bloque Coefficients, cada Estimate es el cambio esperado en la respuesta por cada aumento de una unidad en ese predictor (manteniendo los demás fijos); Pr(>|t|) contrasta si ese coeficiente podría plausiblemente ser cero. Multiple R-squared es la proporción de varianza explicada. El estadístico F del final contrasta el modelo en su conjunto frente a un modelo de solo intercepto.
¿Cuál es la diferencia entre el R cuadrado múltiple y el ajustado?
Multiple R-squared es la proporción bruta de varianza explicada, y solo puede subir cuando añades predictores - incluso inútiles. Adjusted R-squared cobra una penalización por predictor, así que solo sube cuando una variable nueva se gana su sitio. Compara modelos usando la versión ajustada.
¿Cómo se predicen valores nuevos a partir de una regresión en R?
Construye un data frame cuyos nombres de columna coincidan con los predictores y luego llama a predict(fit, newdata = ...). Añade interval = "confidence" para la incertidumbre sobre la respuesta promedio, o interval = "prediction" para el rango (mucho más ancho) donde es probable que caiga una observación nueva individual.