#Cargar librerías necesarias
library(readxl)  # Para leer archivos Excel
library(tseries)  # Para pruebas de estacionariedad
library(forecast)  # Para modelado ARIMA y pronósticos
library(ggplot2)  # Para visualización de datos
library(plotly)  # Para gráficos interactivos
library(timetk) 
library(ggplot2)
library(readxl)
MICRO <- read_excel("C:/Users/Natalya/Documents/Documentos Natalya/1. Maestria Finanzas Javeriana/Semestre 1/Analisis/MICRO.xlsx", col_types = c("date", 
    "numeric", "numeric", "numeric", "numeric", 
    "numeric", "numeric", "numeric", "numeric", 
    "numeric", "numeric", "numeric", "numeric"))
View(MICRO)
# Convertir/declarar el número de microempresas en serie de tiempo trimestral
micro_ts <- ts(MICRO$CAN, start = c(2001, 1), frequency = 12)
micro_ts
##            Jan       Feb       Mar       Apr       May       Jun       Jul
## 2001 1671352.6 1674824.7 1759785.8 1339756.5 1538194.2 1699486.5 1801306.4
## 2002 1421177.2 1464930.1 1609577.1  996259.9 1151679.0 1249728.9 1757298.3
## 2003 1585669.9 1626498.2 1546404.6 1634077.6 1658338.7 1690369.8 1928801.0
## 2004 1780203.6 1755628.4 1939971.4 1508625.3 1795144.9 1678881.7 1959118.5
## 2005 1690471.3 1856477.1 2034737.1 1584314.4 1731354.3 1835510.5 2010884.1
## 2006 1851451.0 1837869.4 1948845.2 1913165.5 1540919.8 1535831.8 1907158.4
## 2007 1694824.3 1812299.5 1964267.1 1631500.2 1689422.9 1541842.9 2022384.7
## 2008 1672967.2 1777308.2 1914620.8 1350858.1 1352809.5 1745006.4 2061239.2
## 2009 1696183.6 1719496.3 1940329.9 1482416.4 1342273.5 1680568.1 2000687.9
## 2010 1928672.2 1941280.9 2025288.1 1727702.6 1828097.8 1991118.4 2150386.1
## 2011 1827224.2 1709495.9 1810874.9 1280074.1 1368995.4 1692709.7 1852062.4
## 2012 1937959.5 1893842.5 2008666.5 1485051.5 1742469.9 1895763.7 2190251.6
## 2013 1685583.9 1973654.3 2083470.2 1406867.6 1233630.5 1997317.9 2107651.9
## 2014 1415218.6 1526726.9 1484409.6 1429731.5  935326.5 1922847.6 2311142.4
## 2015 1845617.2 1984383.4 2079076.7 1833917.6 1416006.1 2065484.0 2331974.0
## 2016 1873025.6 2042447.4 2107250.0 1811593.2 1540371.6 2114224.9 2296713.9
## 2017 1883293.4 1935466.7 1949405.1 1696820.9 1325742.1 1995881.7 2264160.5
## 2018 1966713.4 2110280.0 1871801.7 1626405.6 1169223.3 2153039.2 2451640.8
## 2019 2004166.1 2083484.4 2329449.7 2001725.0 1332282.6 2212367.4 2471471.0
## 2020 1953024.0 1840400.7 2051050.6 1343556.8 1261590.0 1961549.9 2471711.0
## 2021 1983027.0 2031204.0 2157380.0 1359211.0 1238443.0 1942278.0 2198382.2
## 2022 1993003.0 2063592.0 1618398.0 1717757.0  138148.0 1926337.0 2433724.0
## 2023 2217896.7 2067395.7 1987167.2 1636843.3 1320098.2 1430592.0 2173157.6
## 2024 1673601.0 2055975.3 1770832.1 1554420.0 1001084.0 1735018.0 2138407.2
## 2025 1602184.0 1819645.0 1913302.0 1109173.0  829067.7 1721484.0 2243604.3
##            Aug       Sep       Oct       Nov       Dec
## 2001 1879301.2 1754797.2 1756910.0 1647102.8 1399573.4
## 2002 1849696.8 1790531.6 1866935.9 1669917.5 1292286.7
## 2003 1917627.4 1833958.1 1870501.6 1664925.3 1548274.0
## 2004 1992048.5 1931944.5 1868111.4 1669943.7 1789777.8
## 2005 2006575.5 1966475.2 1911524.9 1677796.6 1859157.2
## 2006 2018134.6 1948929.3 1884271.0 1744281.0 1653948.0
## 2007 2104935.2 2043241.1 2030566.8 1813527.5 1671121.1
## 2008 2110073.0 2045563.9 1914350.9 1656095.8 1489310.4
## 2009 2090279.2 1300327.2  677859.7 1394008.0 1883297.9
## 2010 2219658.7 2053742.7 2065702.6 1885915.5 1771080.4
## 2011 2112016.6 2049457.1 2072533.8 1220179.8 1276969.8
## 2012 2273398.5 2207606.4 2013064.2 1652479.1 1428204.2
## 2013 2075408.0 2005429.3 1700439.8 1144776.2 1409399.0
## 2014 2338868.2 2292918.1 2212027.0 1871888.3 1827138.0
## 2015 2434982.1 2303703.6 2188397.9 1712510.4 2087194.9
## 2016 2339657.9 2256633.7 2184373.4 1727333.5 1917544.0
## 2017 2412379.7 2233086.3 2043861.7 1660368.1 1821465.2
## 2018 2451644.7 2327705.0 2258138.6 1834750.2 2159250.3
## 2019 2493510.6 2288295.0 2163328.9 1506036.8 2150051.0
## 2020 2484820.0 2311636.9 1997837.5 1589919.7 2065113.1
## 2021 2374975.0 2347101.9 2383201.9 1512704.7 2030826.0
## 2022 2476491.0 2354418.0 2249369.0 1758250.0 2142976.0
## 2023 2403020.5 2344196.3 2085516.8 1472515.5 1864013.8
## 2024 2142163.1 2117721.8 1673912.0 1219860.0 1785299.0
## 2025 2407235.4 2345389.6 2203425.7 1856743.9 2082758.3
# Calcular estadísticas descriptivas básicas
descriptive_stats <- data.frame(
  Min = min(micro_ts),
  Max = max(micro_ts),
  Media = mean(micro_ts),
  Mediana = median(micro_ts),
  DesviacionEstandar = sd(micro_ts),
  CoefVar = sd(micro_ts) / mean(micro_ts)
)
print(descriptive_stats)
##      Min     Max   Media Mediana DesviacionEstandar   CoefVar
## 1 138148 2493511 1841228 1871152           344097.2 0.1868846
# Gráfico interactivo de la serie original
grafico_serie <- ggplot(MICRO, aes(x = seq.Date(from = as.Date("2001-01-01"), by = "month", length.out = nrow(MICRO)), y = micro_ts)) +
  geom_line(color = "grey", size = 0.4) +
  geom_point(color = "black", size = 0.1) +
  ggtitle("Figura 1.Evolución de la producción de caña en Cali") +
  xlab("Tiempo") +
  ylab("Producción de caña") +
  theme_minimal()
ggplotly(grafico_serie)
# Cargar librerías necesarias
library(ggplot2)
library(plotly)

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

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

# Crear gráfico con ggplot2
p <- ggplot(stl_df, aes(x = Time, y = Value, color = Component)) +
  geom_line() +
  facet_wrap(~Component, scales = "free_y", ncol = 1) + 
  theme_minimal() +
  labs(title = "Figura A. Descomposición de la Produccipn de caña en Cali",
       x = "Tiempo",
       y = "Toneladas")

# Convertir a gráfico interactivo con plotly
ggplotly(p)
# Extraer los componentes de la descomposición
micro_sa <- micro_ts - stl_decomp$time.series[, "seasonal"]
# Crear vector de fechas correctamente alineado con la serie
fechas <- seq.Date(from = as.Date("2001-01-01"), by = "months", length.out = length(micro_ts))

# Gráfico mejorado con fechas en el eje X
grafico_ajustada <- ggplot() +
  geom_line(aes(x = fechas, y = micro_ts), color = "grey", size = 0.5, linetype = "solid", name = "Serie Original") +
  geom_line(aes(x = fechas, y = micro_sa), color = "black", size = 0.6, linetype = "solid", name = "Serie Ajustada") +
  ggtitle("Figura 2. Caña:Serie Original vs Serie Ajustada por Estacionalidad") +
  xlab("Tiempo") +
  ylab("Ton de Caña") +
  theme_minimal() +
  theme(axis.text.x = element_text(angle = 45, hjust = 1)) # Rotar etiquetas para mejor visualización

# Convertir a gráfico interactivo
ggplotly(grafico_ajustada)
# Extraer la tendencia de la descomposición STL
tendencia <- stl_decomp$time.series[, "trend"]

# Gráfico interactivo de la serie original vs tendencia
grafico_tendencia <- ggplot() +
  geom_line(aes(x = fechas, y = micro_ts), color = "grey", size = 0.7, linetype = "solid", name = "Serie Original") +
  geom_line(aes(x = fechas, y = tendencia), color = "black", size = 0.8, linetype = "solid", name = "Tendencia") +
  ggtitle("Figura 3. Caña :Serie Original vs Tendencia") +
  xlab("Tiempo") +
  ylab("Número de microempresas") +
  theme_minimal() +
  theme(axis.text.x = element_text(angle = 45, hjust = 1)) # Rotar etiquetas del eje X para mejor visualización

# Convertir a gráfico interactivo
ggplotly(grafico_tendencia)
#Cálculo de la tasa de crecimiento anual correctamente alineada
tasa_crecimiento <- (micro_ts[(13:length(micro_ts))] / micro_ts[1:(length(micro_ts) - 12)] - 1) * 100
tasa_tendencia <- (tendencia[(13:length(tendencia))] / tendencia[1:(length(tendencia) - 12)] - 1) * 100

# Crear vector de fechas corregido
fechas_corregidas <- seq(from = as.Date("2001-01-01"), by = "month", length.out = length(tasa_crecimiento))

# Verificar longitudes
print(length(fechas_corregidas))
## [1] 288
print(length(tasa_crecimiento))
## [1] 288
print(length(tasa_tendencia))
## [1] 288
# Gráfico de la tasa de crecimiento mensual
grafico_crecimiento <- ggplot() +
  geom_line(aes(x = fechas_corregidas, y = tasa_crecimiento), color = "grey", size = 0.7) +
  geom_line(aes(x = fechas_corregidas, y = tasa_tendencia), color = "black", size = 0.8, linetype = "dashed") +
  ggtitle("Figura 4. Caña: Tasa de crecimiento mensual % de la serie Original vs Tendencia") +
  xlab("Tiempo") +
  ylab("% de Crecimiento mensual") +
  theme_minimal()

# Convertir a gráfico interactivo
ggplotly(grafico_crecimiento)