Unidad 4: Método de los mínimos cuadrados

Clase 6

El objetivo de esta unidad es comprender y aplicar el método de mínimos cuadrados, una técnica estadística fundamental utilizada para ajustar modelos matemáticos a datos reales. Este método se utiliza ampliamente en diversas disciplinas como la economía, la ingeniería, las ciencias sociales, entre otras.
Autor/a
Afiliación

Blás Antonio Benítez Cristaldo

Fecha de publicación

23 de abril de 2025

Código
library(ggplot2)

1 📚 Introducción

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.


2 🎯 Objetivos

  • 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)


3 Método de mínimos cuadrados

3.1 📊 Relación entre Variables y Curvas de Ajuste

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.

3.1.1 Ejemplo 1: Ajuste Lineal de Ventas

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.

3.1.2 Exploración de los datos

Código
# Datos
meses <- c(1, 2, 3, 4, 5, 6, 7, 8, 9, 10)  # Meses del año
ventas <- c(150, 180, 200, 210, 220, 250, 300, 350, 400, 420)  # Ventas en unidades

# Graficar
data <- data.frame(meses,ventas)
ggplot(data,aes(x=meses,y=ventas))+
  geom_point(colour="blue",size = 1)

3.1.3 Código en R: Ajuste Lineal

Código
# Ajuste de mínimos cuadrados (regresión lineal)
modelo_lineal <- lm(ventas ~ meses)

# 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
Código
# crear el la base de datos
data <- data.frame(meses,ventas)

# 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.

3.2 Mínimos Cuadrados

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.

Código
# Calcular los valores predichos y los residuos
predicciones <- predict(modelo_lineal)
residuos <- ventas - predicciones

# 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)

3.2.1 Código en R: Cálculo de la Suma de los Cuadrados

Código
# Función para calcular la suma de los cuadrados de los errores
suma_cuadrados <- function(a, b, t, y) {
  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.

3.2.2 Regresión Polinómica

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.

3.2.3 Código en R: Regresión Polinómica

Código
# Ajuste de regresión polinómica de segundo grado
modelo_polinomico <- lm(ventas ~ poly(meses, 2))

# 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
Código
# Crear el data.frame para ggplot
datos <- data.frame(meses, ventas)

# 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.

3.3 Aplicación de Series de Tiempo

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.

3.3.1 Código en R: Predicción de Ventas Futuras

Supongamos que queremos predecir las ventas de los próximos tres meses. Utilizaremos el modelo lineal ajustado para hacer predicciones.

Código
# Predicción para los próximos tres meses (meses 11, 12, 13)
nuevos_meses <- c(11, 12, 13)
predicciones <- predict(modelo_lineal, newdata=data.frame(meses=nuevos_meses))

# 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.


4 Ejercicios

  1. 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
  2. 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
  3. 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