# Cargar librerías necesarias
library(readxl)
library(forecast)
## Registered S3 method overwritten by 'quantmod':
##   method            from
##   as.zoo.data.frame zoo
library(tseries)
library(ggplot2)
library(plotly)  # Para gráficos interactivos
## 
## Adjuntando el paquete: 'plotly'
## The following object is masked from 'package:ggplot2':
## 
##     last_plot
## The following object is masked from 'package:stats':
## 
##     filter
## The following object is masked from 'package:graphics':
## 
##     layout
library(timetk)   
library(readxl)
data_col <- read_excel("~/econometria/PACCIONES COL.xlsx", 
    col_types = c("date", "numeric"))
View(data_col)
# Convertir/declarar variable 1=ENER en serie de tiempo mensual
variable1_ts <- ts(data_col$CCB, start = c(2010, 1), frequency = 12)
variable1_ts
##           Jan      Feb      Mar      Apr      May      Jun      Jul      Aug
## 2010  6072.93  6083.28  6197.08  5959.13  5814.29  5897.06  5907.41  6114.32
## 2011  5917.75  5690.14  5617.72  5534.96  5969.48  5834.98  5700.49  5741.87
## 2012  5638.42  5638.42  5741.87  6310.89  5793.60  7000.00  7080.00  7100.00
## 2013 10940.00  9300.00  8700.00  8150.00  7800.00  7980.00  8650.00  9160.00
## 2014  8330.00  9200.00 10080.00 10800.00 10800.00 11820.00 11000.00 11300.00
## 2015  9200.00  8960.00  8530.00 10120.00  9200.00  9250.00  9870.00  9760.00
## 2016  9800.00 10300.00 11620.00 11580.00 11640.00 11920.00 11500.00 11800.00
## 2017 11660.00 11700.00 11800.00 11900.00 11720.00 11840.00 11900.00 11960.00
## 2018 11300.00 10440.00  9690.00  9930.00  9200.00  9800.00  9200.00  9020.00
## 2019  8080.00  8130.00  7880.00  8070.00  7290.00  7500.00  7690.00  7680.00
## 2020  6500.00  5300.00  4090.00  3895.00  3500.00  3400.00  3660.00  5000.00
## 2021  5840.00  5770.00  5150.00  5130.00  5070.00  5350.00  5595.00  5900.00
## 2022  6480.00  6070.00  6230.00  6005.00  5500.00  4640.00  3900.00  3489.00
## 2023  3213.00  3012.00  3018.00  3090.00  3180.00  3400.00  3540.00  2902.00
## 2024  6400.00  6790.00  8640.00  8120.00  8200.00  8330.00  8350.00  8320.00
## 2025 10340.00 10700.00                                                      
##           Sep      Oct      Nov      Dec
## 2010  6517.80  6569.53  5886.71  5897.06
## 2011  5638.42  5555.65  5514.27  5617.72
## 2012  7820.00  8760.00  9120.00 10100.00
## 2013 10000.00  9990.00  9330.00  9800.00
## 2014 10800.00 10500.00  9540.00 10200.00
## 2015  9440.00  9600.00  9360.00  9720.00
## 2016 11480.00 11900.00 10940.00 11860.00
## 2017 11700.00 11100.00 10600.00 11520.00
## 2018  7700.00  7020.00  7000.00  6960.00
## 2019  7440.00  7630.00  6200.00  7300.00
## 2020  4630.00  4555.00  4980.00  6180.00
## 2021  5895.00  6350.00  6010.00  6110.00
## 2022  3380.00  3330.00  3503.00  3600.00
## 2023  4910.00  4736.00  5540.00  6110.00
## 2024  7500.00  8590.00  9620.00 10200.00
## 2025
library(ggplot2)
library(plotly)

# Convertir la serie temporal a un vector numérico para lograr graficar con ggplot2
data_col$variable1 <- as.numeric(variable1_ts)

# Crear el gráfico
grafico_serie <- ggplot(data_col, aes(x = seq.Date(from = as.Date("2010-01-01"), by = "month", length.out = nrow(data_col)), 
                                      y = variable1)) +
  geom_line(color = "grey", linewidth = 0.4) +  # Cambiado 'size' por 'linewidth'
  geom_point(color = "black", size = 0.1) +
  ggtitle("Variable 1: Serie original") +
  xlab("Tiempo") +
  ylab("Unidad Variable 1") +
  theme_minimal()

ggplotly(grafico_serie)
# Cargar librerías necesarias
library(ggplot2)
library(plotly)

# Descomposición de la serie temporal
stl_decomp_var1 <- stl(variable1_ts, s.window = "periodic")

# Convertir la descomposición a un data frame para graficar con ggplot2
stl_df_var1 <- data.frame(
  Time = rep(time(variable1_ts), 4),  # Tiempo repetido para cada componente (son 4 componentes)
  Value = c(stl_decomp_var1$time.series[, "seasonal"], 
            stl_decomp_var1$time.series[, "trend"], 
            stl_decomp_var1$time.series[, "remainder"], 
            variable1_ts),
  Component = rep(c("Estacional", "Tendencia", "Residuo", "Serie Original"), each = length(variable1_ts))
)

# Crear gráfico con ggplot2
p <- ggplot(stl_df_var1, aes(x = Time, y = Value, color = Component)) +
  geom_line() +
  facet_wrap(~Component, scales = "free_y", ncol = 1) + 
  theme_minimal() +
  labs(title = "Descomposición temporal de la variable 1",
       x = "Tiempo",
       y = "Valor")

# Convertir a gráfico interactivo con plotly
ggplotly(p)

La descomposición temporal de la serie muestra cuatro componentes clave: tendencia, estacionalidad, residuo y serie original. La serie original (azul) refleja la evolución del valor de la variable a lo largo del tiempo, con fluctuaciones notables. La tendencia (morado) indica un comportamiento cíclico, con picos alrededor de 2015 y 2025, y una caída entre 2020 y 2023, lo que sugiere posibles periodos de expansión y contracción en la serie. La componente estacional (naranja) muestra un patrón recurrente con variaciones regulares en el tiempo, lo que sugiere efectos estacionales significativos en los datos. El residuo (verde) representa las fluctuaciones no explicadas por la tendencia y la estacionalidad, con alta variabilidad en ciertos periodos, indicando momentos de mayor incertidumbre o eventos inesperados. En general, la serie parece tener una estructura bien definida con patrones cíclicos y estacionales,

# Extraer los componentes de la descomposición
variable1_sa <- variable1_ts - stl_decomp_var1$time.series[, "seasonal"]

##Gráfico serie original VS ajustada Variable 1

# Crear vector de fechas correctamente alineado con la serie
fechas_var1 <- seq.Date(from = as.Date("2010-01-01"), by = "month", length.out = length(variable1_ts))

# Gráfico mejorado con fechas en el eje X
grafico_ajustada_var1 <- ggplot() +
  geom_line(aes(x = fechas_var1, y = variable1_ts), color = "grey", size = 0.5, linetype = "solid", name = "Serie Original") +
  geom_line(aes(x = fechas_var1, y = variable1_sa), color = "black", size = 0.6, linetype = "solid", name = "Serie Ajustada") +
  ggtitle("Variable 1:Serie Original vs Serie Ajustada por Estacionalidad") +
  xlab("Tiempo") +
  ylab("Unidad de medida variable 1") +
  theme_minimal() +
  theme(axis.text.x = element_text(angle = 45, hjust = 1)) # Rotar etiquetas para mejor visualización
## Warning: Using `size` aesthetic for lines was deprecated in ggplot2 3.4.0.
## ℹ Please use `linewidth` instead.
## This warning is displayed once every 8 hours.
## Call `lifecycle::last_lifecycle_warnings()` to see where this warning was
## generated.
## Warning in geom_line(aes(x = fechas_var1, y = variable1_ts), color = "grey", :
## Ignoring unknown parameters: `name`
## Warning in geom_line(aes(x = fechas_var1, y = variable1_sa), color = "black", :
## Ignoring unknown parameters: `name`
# Convertir a gráfico interactivo
ggplotly(grafico_ajustada_var1)
## Don't know how to automatically pick scale for object of type <ts>. Defaulting
## to continuous.

##Tendencia Variable 1

library(ggplot2)
library(plotly)

# Convertir la serie a un vector numérico
variable1_vec <- as.numeric(variable1_ts)
tendencia_var1 <- as.numeric(stl_decomp_var1$time.series[, "trend"])

# Asegurar que 'fechas' tenga la misma longitud
fechas <- seq.Date(from = as.Date("2010-01-01"), by = "month", length.out = length(variable1_ts))

# Gráfico interactivo de la serie original vs tendencia
grafico_tendencia_var1 <- ggplot() +
  geom_line(aes(x = fechas, y = variable1_vec, color = "Serie Original"), size = 0.7, linetype = "solid") +
  geom_line(aes(x = fechas, y = tendencia_var1, color = "Tendencia"), size = 0.8, linetype = "solid") +
  scale_color_manual(values = c("Serie Original" = "grey", "Tendencia" = "black")) +
  ggtitle("Variable 1: Serie Original vs Tendencia") +
  xlab("Tiempo") +
  ylab("Unidad de medida Variable 1") +
  theme_minimal() +
  theme(axis.text.x = element_text(angle = 45, hjust = 1)) # Rotar etiquetas del eje X

# Convertir a gráfico interactivo con plotly
ggplotly(grafico_tendencia_var1)

##Tasa de crecimiento de la serie de tendencia y original para la variable 1

#Cálculo de la tasa de crecimiento anual correctamente alineada
tasa_crecimiento_var1 <- (variable1_ts[(13:length(variable1_ts))] / variable1_ts[1:(length(variable1_ts) - 12)] - 1) * 100
tasa_tendencia_var1 <- (tendencia_var1[(13:length(tendencia_var1))] / tendencia_var1[1:(length(tendencia_var1) - 12)] - 1) * 100

# Crear vector de fechas corregido, es decir que inicie desde enero 2013
fechas_corregidas_var1 <- seq(from = as.Date("2010-01-01"), by = "month", length.out = length(tasa_crecimiento_var1))

# Verificar longitudes
print(length(fechas_corregidas_var1))
## [1] 170
print(length(tasa_crecimiento_var1))
## [1] 170
print(length(tasa_tendencia_var1))
## [1] 170

##*Gráfico variable original y tendencia variable 1: tasa de crecimiento anual**

library(ggplot2)
library(plotly)

# Gráfico de la tasa de crecimiento anual variable 1
grafico_crecimiento_var1 <- ggplot() +
  geom_line(aes(x = fechas_corregidas_var1, y = tasa_crecimiento_var1), color = "gray", size = 0.7) +
  geom_line(aes(x = fechas_corregidas_var1, y = tasa_tendencia_var1), color = "green", size = 0.8, linetype = "dashed") +
  ggtitle("Variable1: Tasa de crecimiento anual % de la serie Original y la tendencia") +
  xlab("Tiempo") +
  ylab("% de Crecimiento Anual") +
  theme_minimal()

# Convertir a gráfico interactivo
ggplotly(grafico_crecimiento_var1)

La acción de Argos ha mostrado un comportamiento cíclico con periodos de fuerte crecimiento y correcciones significativas. Entre 2010 y 2015, su crecimiento fue impulsado por la expansión del sector construcción, alcanzando picos por encima del 50%. Sin embargo, entre 2015 y 2019, la tasa de crecimiento disminuyó, posiblemente debido a una desaceleración económica y menor demanda en el sector. A partir de 2020, la acción experimentó un repunte agresivo, superando el 150% en 2022-2023, impulsado por la recuperación post-pandemia y la reactivación de la construcción. No obstante, en los últimos meses ha mostrado una corrección, lo que sugiere que el mercado ajusta sus expectativas ante factores como tasas de interés altas y una posible reducción en la inversión en infraestructura.