La regresión lineal múltiple es una técnica estadística que permite explicar el comportamiento de una variable respuesta utilizando dos o más variables independientes.
A diferencia de la regresión lineal simple, donde existe una sola variable explicativa, la regresión múltiple permite analizar simultáneamente el efecto de varios factores.
Su forma general es:
\[ Y=\beta_0+\beta_1X_1+\beta_2X_2+\cdots+\beta_kX_k+\varepsilon \]
Donde:
Determinar cuáles variables explicativas influyen significativamente sobre las ventas de una empresa.
Supongamos que una empresa desea estudiar el efecto de:
sobre las ventas mensuales.
ventas <- c(120,135,140,150,155,160,170,175,180,190)
publicidad <- c(10,12,14,15,16,18,20,22,24,25)
precio <- c(25,24,24,23,22,22,21,20,20,19)
vendedores <- c(3,3,4,4,5,5,6,6,7,7)
datos <- data.frame(
ventas,
publicidad,
precio,
vendedores
)
datos
## ventas publicidad precio vendedores
## 1 120 10 25 3
## 2 135 12 24 3
## 3 140 14 24 4
## 4 150 15 23 4
## 5 155 16 22 5
## 6 160 18 22 5
## 7 170 20 21 6
## 8 175 22 20 6
## 9 180 24 20 7
## 10 190 25 19 7
summary(datos)
## ventas publicidad precio vendedores
## Min. :120.0 Min. :10.00 Min. :19.00 Min. :3
## 1st Qu.:142.5 1st Qu.:14.25 1st Qu.:20.25 1st Qu.:4
## Median :157.5 Median :17.00 Median :22.00 Median :5
## Mean :157.5 Mean :17.60 Mean :22.00 Mean :5
## 3rd Qu.:173.8 3rd Qu.:21.50 3rd Qu.:23.75 3rd Qu.:6
## Max. :190.0 Max. :25.00 Max. :25.00 Max. :7
pairs(datos,
main = "Matriz de Dispersión")
La matriz permite observar relaciones preliminares entre las variables.
modelo <- lm(
ventas ~ publicidad + precio + vendedores,
data = datos
)
modelo
##
## Call:
## lm(formula = ventas ~ publicidad + precio + vendedores, data = datos)
##
## Coefficients:
## (Intercept) publicidad precio vendedores
## 250.011 2.313 -5.815 -1.057
summary(modelo)
##
## Call:
## lm(formula = ventas ~ publicidad + precio + vendedores, data = datos)
##
## Residuals:
## Min 1Q Median 3Q Max
## -4.5925 -1.3711 0.6278 1.5308 3.2709
##
## Coefficients:
## Estimate Std. Error t value Pr(>|t|)
## (Intercept) 250.011 82.684 3.024 0.0233 *
## publicidad 2.313 1.508 1.533 0.1761
## precio -5.815 2.867 -2.028 0.0889 .
## vendedores -1.057 3.711 -0.285 0.7853
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## Residual standard error: 3.064 on 6 degrees of freedom
## Multiple R-squared: 0.9869, Adjusted R-squared: 0.9804
## F-statistic: 151.1 on 3 and 6 DF, p-value: 4.852e-06
En el resultado aparecen varios elementos importantes:
Cada coeficiente representa el cambio esperado en las ventas cuando la variable aumenta una unidad y las demás permanecen constantes.
Se utiliza para realizar una prueba de hipótesis sobre cada coeficiente.
Permite determinar si una variable es significativa.
Mide qué porcentaje de la variabilidad de las ventas es explicado por el modelo.
Para cada coeficiente se plantea:
\[ H_0:\beta_i=0 \]
La variable no tiene efecto significativo.
\[ H_1:\beta_i\neq0 \]
La variable sí tiene efecto significativo.
Se utilizará:
\[ \alpha=0.05 \]
Regla de decisión:
coeficientes <- summary(modelo)$coefficients
coeficientes
## Estimate Std. Error t value Pr(>|t|)
## (Intercept) 250.011013 82.683572 3.0237084 0.02328567
## publicidad 2.312775 1.508248 1.5334187 0.17606546
## precio -5.814978 2.867114 -2.0281644 0.08888948
## vendedores -1.057269 3.711192 -0.2848865 0.78530884
pvalores <- coeficientes[,4]
tabla_significancia <- data.frame(
Variable = rownames(coeficientes),
Valor_p = round(pvalores,5),
Significativa = ifelse(
pvalores < 0.05,
"Sí",
"No"
)
)
tabla_significancia
## Variable Valor_p Significativa
## (Intercept) (Intercept) 0.02329 Sí
## publicidad publicidad 0.17607 No
## precio precio 0.08889 No
## vendedores vendedores 0.78531 No
significativas <- tabla_significancia[
tabla_significancia$Significativa=="Sí",
]
significativas
## Variable Valor_p Significativa
## (Intercept) (Intercept) 0.02329 Sí
r2 <- summary(modelo)$r.squared
r2
## [1] 0.9869374
Interpretación:
## El modelo explica aproximadamente 98.69 % de la variabilidad observada en las ventas.
Supongamos:
nuevo <- data.frame(
publicidad = 30,
precio = 18,
vendedores = 8
)
predict(modelo,nuevo)
## 1
## 206.2665
predicciones <- predict(modelo)
plot(
ventas,
predicciones,
pch=19,
main="Ventas Observadas vs Predichas",
xlab="Ventas Observadas",
ylab="Ventas Predichas"
)
abline(0,1,
col="red",
lwd=3)
Mientras más cerca estén los puntos de la línea roja, mejor es el ajuste.
residuos <- residuals(modelo)
plot(
fitted(modelo),
residuos,
pch=19,
main="Residuos vs Valores Ajustados",
xlab="Valores Ajustados",
ylab="Residuos"
)
abline(
h=0,
col="red",
lwd=3
)
## Las variables que presentan evidencia estadística de influencia sobre las ventas son: (Intercept) . Esto se determinó mediante pruebas de hipótesis individuales utilizando un nivel de significancia de 0.05.
La regresión lineal múltiple permite analizar simultáneamente el efecto de varias variables independientes sobre una variable respuesta.
Las pruebas de hipótesis sobre los coeficientes permiten identificar cuáles variables contribuyen significativamente al modelo.
El criterio utilizado es el valor-p:
Esta metodología es ampliamente utilizada en Ingeniería Industrial, Control de Calidad, Finanzas, Mercadotecnia y Ciencia de Datos para la toma de decisiones basadas en evidencia estadística.