La función lm() en R: regresión lineal en una línea
lm() ajusta un modelo lineal: busca la recta que mejor explica una variable a partir de otra. Es la función con la que se empieza en modelado, y con una línea ya tienes resultado.
Ejemplo simple
modelo <- lm(Petal.Length ~ Sepal.Length, data = iris)
modelo
La clave está en la fórmula: y ~ x se lee como "y explicada por x". A la izquierda lo que quieres predecir, a la derecha con qué.
Eso te devuelve los coeficientes: la ordenada en el origen y la pendiente. La pendiente es lo interesante → cuánto cambia la variable de la izquierda por cada unidad que sube la de la derecha.
Leer los resultados
El objeto en bruto dice poco. Lo que se mira es el resumen con summary():
summary(modelo)
De todo lo que aparece, quédate con tres cosas:
- Estimate → el valor de cada coeficiente.
- Pr(>|t|) → el p-valor. Si es pequeño (por convención, menor que 0,05), esa variable aporta algo al modelo.
- R-squared → qué proporción de la variabilidad explica el modelo, de 0 a 1. Un 0,76 significa que explica el 76 %.
Los asteriscos junto a los p-valores son un atajo visual: cuantos más, más significativo.
Ejemplo algo más completo: varias variables y predicción
Para añadir más variables explicativas, se suman en la fórmula:
modelo2 <- lm(Petal.Length ~ Sepal.Length + Sepal.Width + Species,
data = iris)
summary(modelo2)
R se apaña solo con las variables categóricas como Species: las convierte internamente en variables indicadoras y toma una categoría como referencia.
Para predecir con datos nuevos:
nuevos <- data.frame(
Sepal.Length = c(5.5, 6.2),
Sepal.Width = c(3.1, 2.9),
Species = factor(c("setosa", "virginica"), levels = levels(iris$Species))
)
predict(modelo2, newdata = nuevos)
Ojo con los factores: los niveles de Species en los datos nuevos tienen que coincidir con los del modelo, por eso el levels =.
Y antes de fiarte de un modelo, mírale los gráficos de diagnóstico:
par(mfrow = c(2, 2))
plot(modelo)
par(mfrow = c(1, 1))
Con plot() obtienes cuatro gráficos que revelan si los residuos se comportan como deberían. Si ves una forma clara —una curva, un embudo—, es que la relación no es tan lineal como asumiste.