Código
library(ggplot2)
library(ggplot2)
Los métodos de los mínimos cuadrados son técnicas estadísticas utilizadas para ajustar una curva a un conjunto de datos minimizando la suma de los cuadrados de los errores. Este documento explica los conceptos clave de estos métodos utilizando un ejemplo real de ventas mensuales y ajustando un modelo de regresión lineal y polinómico.
Comprender el concepto de mínimos cuadrados
Aplicar el método de mínimos cuadrados
Realizar ajustes lineales y polinómicos
Interpretar los resultados del ajuste.
Aplicar los métodos a series de tiempo.
Desarrollar habilidades en el uso de herramientas estadísticas (R
)
En situaciones prácticas, como las ventas de productos, buscamos una relación entre el tiempo y las ventas para prever el comportamiento futuro. Para eso, es común usar un ajuste lineal o polinómico para modelar la relación entre las variables.
Supongamos que tenemos los siguientes datos de ventas mensuales de un producto:
Mes | Ventas (en unidades) |
---|---|
Enero | 150 |
Febrero | 180 |
Marzo | 200 |
Abril | 210 |
Mayo | 220 |
Junio | 250 |
Julio | 300 |
Agosto | 350 |
Septiembre | 400 |
Octubre | 420 |
Podemos ajustar una recta de mínimos cuadrados para modelar las ventas en función del mes.
# Datos
<- c(1, 2, 3, 4, 5, 6, 7, 8, 9, 10) # Meses del año
meses <- c(150, 180, 200, 210, 220, 250, 300, 350, 400, 420) # Ventas en unidades
ventas
# Graficar
<- data.frame(meses,ventas)
data ggplot(data,aes(x=meses,y=ventas))+
geom_point(colour="blue",size = 1)
# Ajuste de mínimos cuadrados (regresión lineal)
<- lm(ventas ~ meses)
modelo_lineal
# Resultados del ajuste
summary(modelo_lineal)
Call:
lm(formula = ventas ~ meses)
Residuals:
Min 1Q Median 3Q Max
-33.21 -13.32 7.00 17.64 25.52
Coefficients:
Estimate Std. Error t value Pr(>|t|)
(Intercept) 100.667 15.643 6.435 0.000201 ***
meses 30.424 2.521 12.068 2.05e-06 ***
---
Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
Residual standard error: 22.9 on 8 degrees of freedom
Multiple R-squared: 0.9479, Adjusted R-squared: 0.9414
F-statistic: 145.6 on 1 and 8 DF, p-value: 2.054e-06
# crear el la base de datos
<- data.frame(meses,ventas)
data
# Graficar los datos y la recta de ajuste
ggplot(data, aes(x=meses, y=ventas))+
geom_point(colour = "blue")+
geom_smooth(method = "lm", se = F,linewidth = .5,colour = "red")+
labs(
title = "Ajuste Lineal de Ventas",
x = "Meses",
y = "Ventas",
caption = "Elaboración propia"
)
Este código realiza un ajuste lineal a los datos de ventas y muestra el modelo ajustado. El gráfico resultante permite visualizar cómo la recta de regresión se ajusta a los datos históricos.
El método de mínimos cuadrados busca minimizar la suma de los residuos al cuadrado, es decir:
\[ S(a, b) = \sum_{i=1}^n (y_i - (a + bt_i))^2 \]
Donde \(y_i\) son los valores observados, \(t_i\) son los valores de la variable independiente (en este caso, los meses), y \(a\) y \(b\) son los parámetros del modelo lineal.
# Calcular los valores predichos y los residuos
<- predict(modelo_lineal)
predicciones <- ventas - predicciones
residuos
# Graficar los datos, la recta de regresión y los residuos
ggplot(data, aes(x=meses, y=ventas)) +
geom_point(color="blue", size=3) + # Puntos de los datos
geom_smooth(method="lm", formula=y ~ x, color="red", se=FALSE, linetype="solid", size=1) + # Recta de regresión lineal
labs(title="Ajuste Lineal de Ventas con Errores", x="Meses", y="Ventas (unidades)") +
theme_minimal() +
# Agregar los residuos como líneas verticales
geom_segment(aes(x=meses, xend=meses, y=ventas, yend=predicciones), color="orange", size=1)
# Función para calcular la suma de los cuadrados de los errores
<- function(a, b, t, y) {
suma_cuadrados sum((y - (a + b * t))^2)
}
# Calcular la suma de los cuadrados para el modelo ajustado
suma_cuadrados(modelo_lineal$coefficients[1], modelo_lineal$coefficients[2], meses, ventas)
[1] 4195.152
Este código calcula la suma de los cuadrados de los errores para el modelo ajustado y ayuda a evaluar la calidad del ajuste.
Si los datos no siguen una relación estrictamente lineal, es posible que un modelo polinómico de segundo grado (curva) sea más adecuado. Ajustemos un polinomio de segundo grado para las ventas mensuales.
# Ajuste de regresión polinómica de segundo grado
<- lm(ventas ~ poly(meses, 2))
modelo_polinomico
# Resultados del ajuste polinómico
summary(modelo_polinomico)
Call:
lm(formula = ventas ~ poly(meses, 2))
Residuals:
Min 1Q Median 3Q Max
-14.424 -12.136 1.091 10.250 16.121
Coefficients:
Estimate Std. Error t value Pr(>|t|)
(Intercept) 268.000 4.281 62.599 6.97e-11 ***
poly(meses, 2)1 276.342 13.538 20.412 1.70e-07 ***
poly(meses, 2)2 53.964 13.538 3.986 0.00528 **
---
Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
Residual standard error: 13.54 on 7 degrees of freedom
Multiple R-squared: 0.9841, Adjusted R-squared: 0.9795
F-statistic: 216.3 on 2 and 7 DF, p-value: 5.098e-07
# Crear el data.frame para ggplot
<- data.frame(meses, ventas)
datos
# Graficar los datos y la curva de ajuste polinómico
ggplot(datos, aes(x=meses, y=ventas)) +
geom_point(color="blue", size=1) + # Puntos de los datos
geom_smooth(method="lm", formula=y ~ poly(x, 2), color="green", se=FALSE, lwd=.5) + # Curva de ajuste
labs(title="Ajuste Polinómico de Ventas", x="Meses", y="Ventas (unidades)") +
theme_minimal()
Este código ajusta un modelo polinómico de segundo grado a los datos de ventas y muestra cómo se ajusta la curva a los datos.
Las series de tiempo son útiles cuando los datos son observaciones tomadas a intervalos regulares. Los datos de ventas que presentamos pueden ser modelados como una serie de tiempo, y se puede utilizar la regresión para prever las ventas futuras.
Supongamos que queremos predecir las ventas de los próximos tres meses. Utilizaremos el modelo lineal ajustado para hacer predicciones.
# Predicción para los próximos tres meses (meses 11, 12, 13)
<- c(11, 12, 13)
nuevos_meses <- predict(modelo_lineal, newdata=data.frame(meses=nuevos_meses))
predicciones
# Mostrar las predicciones
data.frame(Meses = nuevos_meses, Predicciones = predicciones)
Meses Predicciones
1 11 435.3333
2 12 465.7576
3 13 496.1818
Este código predice las ventas para los próximos tres meses basándose en el modelo de mínimos cuadrados ajustado.
Ejercicio 1: Ajuste Lineal
Dado el siguiente conjunto de datos sobre el crecimiento de un producto en función del tiempo, ajusta una recta de mínimos cuadrados para predecir el crecimiento en los próximos 6 meses.
Mes | Crecimiento (en unidades) |
---|---|
1 | 120 |
2 | 150 |
3 | 170 |
4 | 200 |
5 | 220 |
6 | 240 |
Ejercicio 2: Ajuste Polinómico
Ajusta un modelo polinómico de segundo grado a los siguientes datos de temperatura promedio mensual.
Mes | Temperatura (°C) |
---|---|
Enero | 15 |
Febrero | 16 |
Marzo | 18 |
Abril | 20 |
Mayo | 22 |
Junio | 25 |
Ejercicio 3: Predicción de Ventas
Con los siguientes datos de ventas, ajusta un modelo de regresión y predice las ventas para los próximos 4 meses.
Mes | Ventas (en unidades) |
---|---|
Enero | 100 |
Febrero | 120 |
Marzo | 140 |
Abril | 160 |