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 Clase
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)
globalp <- 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_plasticsi. 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, además de contar con tendencia a la alza.
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_componentsplastics_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. También en la descomposición de la tendencia se ve a la alza con una ligera caída hacia el final.
iv. Calcule y grafique los datos desestacionalizados.
pl_com <- plastics_components |>
select(c(index,season_adjust))
pl_compl_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_components2plastics_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?
En la serie deestacionalizada se seguía viendo un cambio brusco, además en la tendencia la modifica un poco antes y después del outlier haciendo sea distinta, también el cambio más grande fue en la estacionalidad ya que el cambio brusco lo repetía las 5 veces que hay un ciclo cuando solo ocurrió una vez, cambiando así bastante los componentes de la serie.
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()
plastics_components3plastics_components3 |>
autoplot()plastics_components |>
autoplot()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, varias partes de la gráfica cambian, como algunas variaciones que no existían además del cambio en toda la estacionalidad.
En cambio la serie con outlier al final, la serie ya desestacionalizada se parecen bastante y hacia el final de esta cambia, la tendenccia mantiene una forma muy similar pero se ve ligeramente más inclinada hacia arriba que sin el outlier cuando se acerca al final, pero la más distinto es que a diferencia de un outlier en medio, en este caso no cambia la estacionalidad y se mantiene igual, por lo que afecta más a la serie que exista un outlier en medio de los datos.