Ejercicio 1 Clase

Author

Luis Márquez e Ivanna Herrera

library(tidyverse) # data science
library(fpp3) # ts
library(plotly) # interactive plots
library(patchwork) # handling many plots in one figure
library(tidyquant)
library(tsibble)
library(tibble)

Ejercicio 1

1: Tomando el PIB de cada país, GDP, contenido en la tabla global_economy, grafique el PIB per cápita a lo largo del tiempo. ¿Cómo ha sido la evolución de la economía de los países en el tiempo? ¿Cuál país tiene el mayor PIB per cápita? (Les recomiendo quitar la leyenda del gráfico, incluyendo theme(legend.position = “none”))

global <- global_economy |> 
  mutate('GDP_per_capita' = GDP/Population)
global
p <- global |> 
  autoplot(GDP_per_capita) + theme(legend.position = "none") + ggtitle("PIB per cápita por país") + xlab("Date")
ggplotly(p, dynamicTicks = TRUE)
global |> 
  select(c(Country,Year,GDP_per_capita)) |> 
  filter(Year == 2016) |> 
  arrange(desc(GDP_per_capita))
#global_economy |> 
 # mutate(gdp_per_capita=GDP/Population) |> 
  #select(-c(Code,Growth:Exports)) |> 
  #filter(Year %in% 2010:2017) |> 
  #as_tsibble() |> 
  #group_by(Country) |> 
  #summarise(mean_gdpp = mean (gd_per_capita, na.rm = TRUE)) |> 

¿Cómo ha sido la evolución de la economía de los países en el tiempo?

La gran mayoría de países muestra un crecimiento de su PIB per cápita a lo largo del tiempo. Se puede ver una tendencia similar entre todos los países en cuanto a los años en los que sube el PIB per cápita y años en los que baja de manera general como en 2008 por la crisis inmobiliaria de Estados Unidos. Que los movimientos en el PIB per cápita sean similares entre tantos paíes se debe principalmente a lo globalizada que esta la economía actualmente.

¿Cuál país tiene el mayor PIB per cápita?

Monaco es el país con un mayor PIB per cápita de $168,010 por persona.

Ejercicio 2

Grafique las siguientes series de tiempo y transfórmelas y/o ajústelas si lo considera necesario. ¿Qué efecto tuvo la transformación?

PIB de EEUU, de global_economy.

eua <- global |> 
  filter(Country == "United States")
eua |> 
  autoplot(GDP) + xlab("Date")

eua |> 
  autoplot(log(GDP)) + ggtitle("Transformación Logarítmica") + xlab("Date")

eua |> 
  autoplot(GDP_per_capita) + ggtitle("Transformación por población") + xlab("Date")

PIB de México, también de global_economy.

mex <- global |> 
  filter(Country == "Mexico")
mex |> 
  autoplot(GDP) + xlab("Date")

mex |> 
  autoplot(log(GDP)) + ggtitle("Transformación Logarítmica") + xlab("Date")

mex |> 
  autoplot(GDP_per_capita) + ggtitle("Transformación por población") + xlab("Date")

Demanda de electricidad en el estado de Victoria (Australia), de vic_elec.

ve <- vic_elec |> 
  autoplot(Demand)
ggplotly(ve, dynamicTicks = TRUE)
ve_log <- vic_elec |> 
  autoplot(log(Demand)) + ggtitle("Transformación Logarítmica")
ggplotly(ve_log, dynamicTicks = TRUE)

¿Qué efecto tuvo la transformación?

  • EUA: En la gráfica original del PIB se puede ver un crecimiento exponencial, sin embargo, al utilizar la transformación logarítmica la serie de tiempo toma una forma más lineal lo cual ayuda al momento de hacer pronósticos del PIB ya que es más sencillo pronosticar a futuro el comportamiento de una línea. En la transformación a PIB per capita sigue con comportamiento exponencial y muy similar a la del PIB, esta ayuda a comparar con otros países ajustando a las distintas poblaciones que puedan tener.
  • México: En la gráfica original del PIB se puede ver un crecimiento exponencial con algunas subidas y bajadas fuertes, sin embargo, al utilizar la transformación logarítmica la serie de tiempo al igual que con EUA se vuelve más lineal lo cual lo hace más sencilla de pronosticar y las subidas y bajadas que tiene se reducen quitando así el ruido.. En la transformación a PIB per capita sigue el comportamiento es muy similar al PIB y de igual manera sirve para comparar con otros países.
  • Victoria: Como el intervalo de tiempo es de 30 minutos durante 3 años son muchos datos con los que se cuenta, al hacer la transformación logarítmica en general la serie de tiempo se ve muy parecida manteniendo la misma estacionalidad, nomás la proporción del eje “y” se reduce al usar transformación logarítmica.

Ejercicio 3

cg <- canadian_gas |> 
  autoplot(Volume) + ggtitle("Volumen de Gas") + xlab("Date")
ggplotly(cg, dynamicTicks = TRUE)
(lambda <- canadian_gas |> 
  features(Volume, features = guerrero) |> 
  pull(lambda_guerrero))
[1] 0.5767648
l <- canadian_gas |>  
  autoplot(box_cox(Volume, lambda)) + ggtitle("Box-Cox, lambda = 0.5767648") + ylab("Box-Cox Volume") + xlab("Date")
ggplotly(l, dynamicTicks = TRUE)

¿Es útil realizar una transformación de Box-Cox a los datos canadian_gas? ¿Por qué sí o por qué no?

No, porque si bien el volumen cambia, el comportamiento general de la serie no, ya que su tendencia y forma general se mantienen iguales además que la varianza de la serie se mantiene muy similar. Uno de los objetivos principales de las transformaciones es reducir la varianza de la serie para hacer pronósticos de manera más adecuada, sin embargo, en este caso al hacer una transformación de Box-Cox vemos que se mantienen muy similares tanto la varianza y la tendencia de la serie por lo que la transformación realmenete no nos ayuda.

Ejercicio 4

El dataset fma::plastics tiene información de las ventas mensuales (medidas en miles) del producto A para un productor de plásticos, a lo largo de cinco años.

plastic <- fma::plastics
plastic
   Jan  Feb  Mar  Apr  May  Jun  Jul  Aug  Sep  Oct  Nov  Dec
1  742  697  776  898 1030 1107 1165 1216 1208 1131  971  783
2  741  700  774  932 1099 1223 1290 1349 1341 1296 1066  901
3  896  793  885 1055 1204 1326 1303 1436 1473 1453 1170 1023
4  951  861  938 1109 1274 1422 1486 1555 1604 1600 1403 1209
5 1030 1032 1126 1285 1468 1637 1611 1608 1528 1420 1119 1013
tsbl_plastics <- as_tsibble(plastic)
tsbl_plastics

i. Grafique la serie de tiempo para el producto A.

pl2 <- tsbl_plastics |> 
  autoplot(value) + xlab("Year") + ylab("Ventas") + ggtitle("Ventas de Plástico")
ggplotly(pl2, dynamicTicks = TRUE)
tsbl_plastics |> 
  gg_tsdisplay(value, plot_type="auto")

  • ¿Identifica algún componente de tendencia-ciclo y/o estacional?

Las ventas del plástico es un componente estacional; en la gráfica se puede apreciar como forma ciclos de manera anual, por lo que se puede decir que la serie de tiempo tiene una estacionalidad anual.

ii. Utilice una descomposición clásica multiplicativa para calcular el componente de tendencia y estacional.

plastics_decomp <- tsbl_plastics |> 
  model(
    clasica=classical_decomposition(value,
                                    type="multiplicative")
  )
plastics_components <- plastics_decomp |> 
  components()
plastics_components
plastics_components |> 
  autoplot()

iii. ¿Los resultados coinciden con su respuesta al inciso i)?

Si coinciden, ya que al hacer la descomposición de la serie de tiempo vemos en la parte de estacionalidad que hay 5 ciclos que coinciden con la cantidad de años de los que se tiene información, entonces se puede concluir que las ventas de plástico de esta serie de tiempo tienen una estacionalidad anual.

iv. Calcule y grafique los datos desestacionalizados.

pl_com <- plastics_components |>
  select(c(index,season_adjust))
pl_com
pl_com_des <- pl_com |> 
  autoplot(season_adjust) + ggtitle("Ventas de Plástico (Desestacionalizadas)") + xlab("Date") + ylab("Ventas")
ggplotly(pl_com_des, dynamicTicks = TRUE)

v. Cambie, manualmente, una observación para que sea un outlier (p. ej., sume 500 a una observación). Vuelva a estimar los datos desestacionalizados.

tsbl_plastics2 <- tsbl_plastics |> 
  mutate(value = ifelse(row_number() == 32, 1800, value))
inte <- tsbl_plastics2 |> 
  autoplot(value) + ggtitle("Ventas de Plástico con Outlier Medio") + xlab("Date") + ylab("Ventas")
ggplotly(inte, dynamicTicks = TRUE)
plastics_decomp2 <- tsbl_plastics2 |> 
  model(
    clasica=classical_decomposition(value,
                                    type="multiplicative")
  )
plastics_components2 <- plastics_decomp2 |> 
  components()
plastics_components2
plastics_components2 |> 
  autoplot()

pl_com_outm <- plastics_components2 |>
  select(c(index,season_adjust))
pl_com_des <- pl_com |> 
  autoplot(season_adjust) + ggtitle("Ventas de Plástico (Desestacionalizadas)") + xlab("Date") + ylab("Ventas")
ggplotly(pl_com_des, dynamicTicks = TRUE)
plcodm <- pl_com_outm |> 
  autoplot(season_adjust) + ggtitle("Ventas de Plástico (Desestacionalizadas) con Outlier Medio") + xlab("Date") + ylab("Ventas")
ggplotly(plcodm, dynamicTicks = TRUE)
  • ¿Cuál fue el efecto de ese outlier?

El cambio más grade se ve en el punto del outlier, donde a pesar de haber desestacionalizado la serie se sigue viendo como un outlier. Además de esto en general hay cambios a lo largo de toda la serie, el inicio y final de la serie tiene cambios ligeros con unos cuantos picos más y hay algunas variaciones más grandes durante la serie, por lo que un outlier al centro de los datos si tiene efectos incluso después de haber desestacionalizado.

vi. ¿Hace alguna diferencia que el outlier se encuentre cerca del final de la serie o más alrededor del centro?

tsbl_plastics3 <- tsbl_plastics |> 
  mutate(value = ifelse(row_number() == 56, 2000, value))

intef <- tsbl_plastics3 |> 
  autoplot(value) + ggtitle("Ventas de Plástico con Outlier Final") + xlab("Date") + ylab("Ventas")
ggplotly(intef, dynamicTicks = TRUE)
plastics_decomp3 <- tsbl_plastics3 |> 
  model(
    clasica=classical_decomposition(value,
                                    type="multiplicative")
  )
plastics_components3 <- plastics_decomp3 |> 
  components()
pl_com_outf <- plastics_components3 |>
  select(c(index,season_adjust))
pl_com_des <- pl_com |> 
  autoplot(season_adjust) + ggtitle("Ventas de Plástico (Desestacionalizadas)") + xlab("Date") + ylab("Ventas")
ggplotly(pl_com_des, dynamicTicks = TRUE)
plcodm <- pl_com_outm |> 
  autoplot(season_adjust) + ggtitle("Ventas de Plástico (Desestacionalizadas) con Outlier Medio") + xlab("Date") + ylab("Ventas")
ggplotly(plcodm, dynamicTicks = TRUE)
plcodf <- pl_com_outf |> 
  autoplot(season_adjust) + ggtitle("Ventas de Plástico (Desestacionalizadas) con Outlier Final") + xlab("Date") + ylab("Ventas")
ggplotly(plcodf, dynamicTicks = TRUE)

Si hay una diferencia entre un outlier en medio de la serie o al final al momento de desestacionalizarla. Si comparamos la serie desestacionalizada sin outlier (original) contra la del outlier en medio vemos que además de existir una gran diferencia justo en un punto, hay varias partes de la gráfica que cambian tanto al inicio como al final generando ciertas variaciones más grandes de lo normal. En cambio la serie con outlier al final, se mantiene igual a la original todo el tiempo e excepción de la parte final con el outlier. Esto nos dice que un outlier en medio de la serie de tiempo tiene un mayor efecto al momento de destacionalizar que si tuviera un outlier al final.