25 oct 2021

Descomposición histórica de series temporales en R

El próximo programa muestra un ejemplo de cómo descomponer la variación anual de una serie temporal en choques de plazos recientes y de mayores plazos. Concretamente, el programa muestra como descomponer las variaciones mensuales de una serie en cuatro grupos, dependiendo del mes en el que registró la variación. Concretamente se usa como ejemplo los precios mensuales promedios del petróleo publicados por el EIA, para ver qué tanto de la variación anual se debe a variaciones acontecida en los tres meses más reciente, del 4 al 6 mes, del 7-9 y del 10 al 12.

Primero cargamos la data y la convertimos en un objeto ts para poder extraer el componente temporal; calculamos las tasas de variación, anual y mensual (tc_mes, tc_ano); identificamos para cada fila el efecto de las variaciones correspondiente a los distintos meses (eft_x); luego sumamos los meses correspondientes para agregar los choques según los meses, como describimos en el grafico anterior.

library(readxl)

library(tidyverse)

library(tseries)

library(ggthemes)

library(fredr)

 

setwd("C:/Users…")

 

serie <- read_excel("dataPrecioWTI.xlsx")

serieD <- serie$p_wti

serie_ts <- ts(ipc, start = c(1986,1,1), frequency = 12)

 

datag <- serieD %>%

  data.frame() %>%

  mutate(fecha = time(serie_ts),

         tc_mes = ((./dplyr::lag(.,1))-1)*100,

         tc_ano =((./dplyr::lag(.,12))-1)*100,

         eft_1 = dplyr::lag(.,1)/dplyr::lag(.,12)*tc_mes,

         eft_2 = dplyr::lag(.,2)/dplyr::lag(.,12)*dplyr::lag(tc_mes,1),

         eft_3 = dplyr::lag(.,3)/dplyr::lag(.,12)*dplyr::lag(tc_mes,2),

         eft_4 = dplyr::lag(.,4)/dplyr::lag(.,12)*dplyr::lag(tc_mes,3),

         eft_5 = dplyr::lag(.,5)/dplyr::lag(.,12)*dplyr::lag(tc_mes,4),

         eft_6 = dplyr::lag(.,6)/dplyr::lag(.,12)*dplyr::lag(tc_mes,5),

         eft_7 = dplyr::lag(.,7)/dplyr::lag(.,12)*dplyr::lag(tc_mes,6),

         eft_8 = dplyr::lag(.,8)/dplyr::lag(.,12)*dplyr::lag(tc_mes,7),

         eft_9 = dplyr::lag(.,9)/dplyr::lag(.,12)*dplyr::lag(tc_mes,8),

         eft_10 = dplyr::lag(.,10)/dplyr::lag(.,12)*dplyr::lag(tc_mes,9),

         eft_11 = dplyr::lag(.,11)/dplyr::lag(.,12)*dplyr::lag(tc_mes,10),

         eft_12 = dplyr::lag(.,12)/dplyr::lag(.,12)*dplyr::lag(tc_mes,11),

       cho1_3 =  eft_1+eft_2+eft_3,

       cho4_6 =  eft_4+eft_5+eft_6,

       cho7_9 =  eft_7+eft_8+eft_9,

       cho10_12 =  eft_10+eft_11+eft_12) %>%

  tail(n=36) %>%

  select(fecha,tc_ano, starts_with("cho"))

Ahora procedemos a combinar una figura de barras apiladas y la serie temporal de la variación interanual de los precios del petróleo. Para esta tarea usamos el paquete ggplot2.

datag %>%

  gather(clave, value, -fecha, -tc_ano) %>%

    ggplot(aes(x=fecha, y=value, fill=clave)) +

    geom_bar(stat="identity")  +

    geom_line(data = select(datag,fecha,value=tc_ano) ,

              aes(fecha, value, fill = "Inflación"), size=1.4)+

  theme_minimal() +

  theme(legend.title = element_blank(),legend.position="bottom") +

  scale_fill_brewer(palette = "Dark2")




Creando variables por grupos en dplyr (group_by + mutate)

  Simulemos una base de hogares, donde se identifica el hogar, el sexo (1 mujer) y provincia y edad para cada miembro.   # Definir la lista ...