regresion de series de tiempo

options(repos = c(CRAN = "https://cloud.r-project.org"))
install.packages("ggplot2")
## Installing package into 'C:/Users/isra9/AppData/Local/R/win-library/4.3'
## (as 'lib' is unspecified)
## package 'ggplot2' successfully unpacked and MD5 sums checked
## 
## The downloaded binary packages are in
##  C:\Users\isra9\AppData\Local\Temp\RtmpAjH4EA\downloaded_packages
library(ggplot2)

PESCA DE BACALAO

pescadebacalao <- data.frame(
  MES = c('enero', 'febrero', 'marzo', 'abril', 'mayo', 'junio', 'julio', 'agosto', 'septiembre', 'octubre', 'noviembre', 'diciembre'),
  AÑO1 = c(362, 381, 317, 297, 399, 402, 375, 349, 386, 328, 389, 343),
  AÑO2 = c(276, 334, 394, 334, 384, 314, 344, 337, 345, 362, 314, 365)
)

time <- seq_along(pescadebacalao$AÑO1)

ggplot(pescadebacalao, aes(x=time)) +
  geom_line(aes(y=AÑO1, color="AÑO1")) +
  geom_line(aes(y=AÑO2, color="AÑO2")) +
  labs(x = "Tiempo", y = "Valor", title = "Gráfica de series de tiempo para AÑO1 y AÑO2") +
  scale_color_manual(name = "Variables", values = c("AÑO1" = "blue", "AÑO2" = "red"))

Ajustar modelos de regresión lineal para cada año

model_year1 <- lm(AÑO1 ~ as.factor(MES), data = pescadebacalao)
model_year1
## 
## Call:
## lm(formula = AÑO1 ~ as.factor(MES), data = pescadebacalao)
## 
## Coefficients:
##              (Intercept)      as.factor(MES)agosto   as.factor(MES)diciembre  
##                      297                        52                        46  
##      as.factor(MES)enero     as.factor(MES)febrero       as.factor(MES)julio  
##                       65                        84                        78  
##      as.factor(MES)junio       as.factor(MES)marzo        as.factor(MES)mayo  
##                      105                        20                       102  
##  as.factor(MES)noviembre     as.factor(MES)octubre  as.factor(MES)septiembre  
##                       92                        31                        89
model_year2 <- lm(AÑO2 ~ as.factor(MES), data = pescadebacalao)
model_year2
## 
## Call:
## lm(formula = AÑO2 ~ as.factor(MES), data = pescadebacalao)
## 
## Coefficients:
##              (Intercept)      as.factor(MES)agosto   as.factor(MES)diciembre  
##                3.340e+02                 3.000e+00                 3.100e+01  
##      as.factor(MES)enero     as.factor(MES)febrero       as.factor(MES)julio  
##               -5.800e+01                 1.766e-14                 1.000e+01  
##      as.factor(MES)junio       as.factor(MES)marzo        as.factor(MES)mayo  
##               -2.000e+01                 6.000e+01                 5.000e+01  
##  as.factor(MES)noviembre     as.factor(MES)octubre  as.factor(MES)septiembre  
##               -2.000e+01                 2.800e+01                 1.100e+01

Predecir valores

AÑO1_pred <- predict(model_year1)
AÑO1_pred
##   1   2   3   4   5   6   7   8   9  10  11  12 
## 362 381 317 297 399 402 375 349 386 328 389 343
AÑO2_pred <- predict(model_year2)
AÑO2_pred
##   1   2   3   4   5   6   7   8   9  10  11  12 
## 276 334 394 334 384 314 344 337 345 362 314 365
# Crear un DataFrame para almacenar los resultados
resultados <- data.frame(MES = pescadebacalao$MES, AÑO1 = pescadebacalao$AÑO1, AÑO2 = pescadebacalao$AÑO2, AÑO1_pred, AÑO2_pred)

# Reorganizar datos para usar con ggplot2
resultados_long <- reshape2::melt(resultados, id.vars = "MES")

# Convertir MES a factor explícitamente
resultados_long$MES <- factor(resultados_long$MES, levels = unique(resultados_long$MES))

# Crear gráfico
ggplot(resultados_long, aes(x = MES, y = value, color = variable, group = variable)) +
  geom_line() +
  labs(title = "Tendencia de AÑO1 y AÑO2 - Observado vs Predicción",
       x = "Mes",
       y = "Datos") +
  theme_minimal()

VENTA DE CALCULADORAS

vdc <- data.frame(
  mesvdc = c('enero', 'febrero', 'marzo', 'abril', 'mayo', 'junio', 'julio', 'agosto', 'septiembre', 'octubre', 'noviembre', 'diciembre'),
  AÑO1vdc = c(197, 211, 203, 247, 239, 269, 308, 262, 258, 256, 261, 288),
  AÑO2vdc = c(296, 276, 305, 308, 356, 393, 363, 386, 443, 308, 358, 384)
)

tiempo <- seq_along(vdc$AÑO1vdc)

ggplot(vdc, aes(x=tiempo)) +
  geom_line(aes(y=AÑO1vdc, color="AÑO1vdc")) +
  geom_line(aes(y=AÑO2vdc, color="AÑO2vdc")) +
  labs(x = "Tiempo", y = "Valor", title = "Gráfica de series de tiempo para AÑO1 y AÑO2") +
  scale_color_manual(name = "Variables", values = c("AÑO1vdc" = "blue", "AÑO2vdc" = "red"))

Ajustar modelos de regresión lineal para cada año

model_year1.1 <- lm(AÑO1vdc ~ as.factor(mesvdc), data = vdc)
model_year1.1
## 
## Call:
## lm(formula = AÑO1vdc ~ as.factor(mesvdc), data = vdc)
## 
## Coefficients:
##                 (Intercept)      as.factor(mesvdc)agosto  
##                         247                           15  
##  as.factor(mesvdc)diciembre       as.factor(mesvdc)enero  
##                          41                          -50  
##    as.factor(mesvdc)febrero       as.factor(mesvdc)julio  
##                         -36                           61  
##      as.factor(mesvdc)junio       as.factor(mesvdc)marzo  
##                          22                          -44  
##       as.factor(mesvdc)mayo   as.factor(mesvdc)noviembre  
##                          -8                           14  
##    as.factor(mesvdc)octubre  as.factor(mesvdc)septiembre  
##                           9                           11
model_year2.1 <- lm(AÑO2vdc ~ as.factor(mesvdc), data = vdc)
model_year2.1
## 
## Call:
## lm(formula = AÑO2vdc ~ as.factor(mesvdc), data = vdc)
## 
## Coefficients:
##                 (Intercept)      as.factor(mesvdc)agosto  
##                         308                           78  
##  as.factor(mesvdc)diciembre       as.factor(mesvdc)enero  
##                          76                          -12  
##    as.factor(mesvdc)febrero       as.factor(mesvdc)julio  
##                         -32                           55  
##      as.factor(mesvdc)junio       as.factor(mesvdc)marzo  
##                          85                           -3  
##       as.factor(mesvdc)mayo   as.factor(mesvdc)noviembre  
##                          48                           50  
##    as.factor(mesvdc)octubre  as.factor(mesvdc)septiembre  
##                           0                          135

##Predecir valores

AÑO1.1_pred <- predict(model_year1.1)
AÑO1.1_pred
##   1   2   3   4   5   6   7   8   9  10  11  12 
## 197 211 203 247 239 269 308 262 258 256 261 288
AÑO2.1_pred <- predict(model_year2.1)
AÑO2.1_pred
##   1   2   3   4   5   6   7   8   9  10  11  12 
## 296 276 305 308 356 393 363 386 443 308 358 384
# Crear un DataFrame para almacenar los resultados
resultados1 <- data.frame(mesvdc = vdc$mesvdc, AÑO1vdc = vdc$AÑO1vdc, AÑO2vdc = vdc$AÑO2vdc, AÑO1.1_pred, AÑO2.1_pred)

# Reorganizar datos para usar con ggplot2
resultados_long1<- reshape2::melt(resultados1, id.vars = "mesvdc")

# Convertir MES a factor explícitamente
resultados_long1$mesvdc <- factor(resultados_long1$mesvdc, levels = unique(resultados_long1$mesvdc))

# Crear gráfico
ggplot(resultados_long1, aes(x = mesvdc, y = value, color = variable, group = variable)) +
  geom_line() +
  labs(title = "ventas de calculadoras del AÑO1 y AÑO2 - Observado vs Predicción",
       x = "mesvdc",
       y = "Datos") +
  theme_minimal()

sdp<- data.frame(
  messdp = c('enero', 'febrero', 'marzo', 'abril', 'mayo', 'junio', 'julio', 'agosto', 'septiembre', 'octubre', 'noviembre', 'diciembre'),
  AÑO1sdp = c(297, 249, 340, 406, 464, 481, 549, 553, 556, 642, 670, 712),
  AÑO2sdp = c(808, 809, 867, 855, 965, 921, 956, 990, 1019, 1021, 1033, 1127)
)

t <- seq_along(sdp$AÑO1sdp)

ggplot(sdp, aes(x=t)) +
  geom_line(aes(y=AÑO1sdp, color="AÑO1sdp")) +
  geom_line(aes(y=AÑO2sdp, color="AÑO2sdp")) +
  labs(x = "Tiempo", y = "Valor", title = "Gráfica para AÑO1 y AÑO2") +
  scale_color_manual(name = "Variables", values = c("AÑO1sdp" = "blue", "AÑO2sdp" = "red"))

Ajustar modelos de regresión lineal para cada año

model_year1.2 <- lm(AÑO1sdp ~ as.factor(messdp), data = sdp)
model_year1.2
## 
## Call:
## lm(formula = AÑO1sdp ~ as.factor(messdp), data = sdp)
## 
## Coefficients:
##                 (Intercept)      as.factor(messdp)agosto  
##                         406                          147  
##  as.factor(messdp)diciembre       as.factor(messdp)enero  
##                         306                         -109  
##    as.factor(messdp)febrero       as.factor(messdp)julio  
##                        -157                          143  
##      as.factor(messdp)junio       as.factor(messdp)marzo  
##                          75                          -66  
##       as.factor(messdp)mayo   as.factor(messdp)noviembre  
##                          58                          264  
##    as.factor(messdp)octubre  as.factor(messdp)septiembre  
##                         236                          150
model_year2.2 <- lm(AÑO2sdp ~ as.factor(messdp), data = sdp)
model_year2.2
## 
## Call:
## lm(formula = AÑO2sdp ~ as.factor(messdp), data = sdp)
## 
## Coefficients:
##                 (Intercept)      as.factor(messdp)agosto  
##                         855                          135  
##  as.factor(messdp)diciembre       as.factor(messdp)enero  
##                         272                          -47  
##    as.factor(messdp)febrero       as.factor(messdp)julio  
##                         -46                          101  
##      as.factor(messdp)junio       as.factor(messdp)marzo  
##                          66                           12  
##       as.factor(messdp)mayo   as.factor(messdp)noviembre  
##                         110                          178  
##    as.factor(messdp)octubre  as.factor(messdp)septiembre  
##                         166                          164

##Predecir valores

AÑO1.2_pred <- predict(model_year1.2)
AÑO1.2_pred
##   1   2   3   4   5   6   7   8   9  10  11  12 
## 297 249 340 406 464 481 549 553 556 642 670 712
AÑO2.2_pred <- predict(model_year2.2)
AÑO2.2_pred
##    1    2    3    4    5    6    7    8    9   10   11   12 
##  808  809  867  855  965  921  956  990 1019 1021 1033 1127
# Crear un DataFrame para almacenar los resultados

resultados2 <- data.frame(messdp = sdp$messdp, AÑO1sdp = sdp$AÑO1sdp, AÑO2sdp = sdp$AÑO2sdp, AÑO1.2_pred, AÑO2.2_pred)

# Reorganizar datos para usar con ggplot2
resultados_long2<- reshape2::melt(resultados2, id.vars = "messdp")

# Convertir MES a factor explícitamente
resultados_long2$messdp <- factor(resultados_long2$messdp, levels = unique(resultados_long2$messdp))

# Crear gráfico
ggplot(resultados_long2, aes(x = messdp, y = value, color = variable, group = variable)) +
  geom_line() +
  labs(title = "solicitudes de prestamo del AÑO1 y AÑO2 - Observado vs Predicción",
       x = "messdp",
       y = "Datos") +
  theme_minimal()