library(fpp3)
library(tidyverse)tarea ets
Serie de tiempo 1
lh <- us_employment |>
filter(Title == "Wholesale Trade", year(Month) >= 1985)
lh# A tsibble: 417 x 4 [1M]
# Key: Series_ID [1]
Month Series_ID Title Employed
<mth> <chr> <chr> <dbl>
1 1985 ene. CEU4142000001 Wholesale Trade 4812.
2 1985 feb. CEU4142000001 Wholesale Trade 4805.
3 1985 mar. CEU4142000001 Wholesale Trade 4832.
4 1985 abr. CEU4142000001 Wholesale Trade 4846.
5 1985 may. CEU4142000001 Wholesale Trade 4867.
6 1985 jun. CEU4142000001 Wholesale Trade 4905.
7 1985 jul. CEU4142000001 Wholesale Trade 4907.
8 1985 ago. CEU4142000001 Wholesale Trade 4915.
9 1985 sep. CEU4142000001 Wholesale Trade 4907.
10 1985 oct. CEU4142000001 Wholesale Trade 4919.
# ℹ 407 more rows
lh_train <- lh %>%
filter(year(Month) <= 2010, Title =="Wholesale Trade")
lh_train# A tsibble: 312 x 4 [1M]
# Key: Series_ID [1]
Month Series_ID Title Employed
<mth> <chr> <chr> <dbl>
1 1985 ene. CEU4142000001 Wholesale Trade 4812.
2 1985 feb. CEU4142000001 Wholesale Trade 4805.
3 1985 mar. CEU4142000001 Wholesale Trade 4832.
4 1985 abr. CEU4142000001 Wholesale Trade 4846.
5 1985 may. CEU4142000001 Wholesale Trade 4867.
6 1985 jun. CEU4142000001 Wholesale Trade 4905.
7 1985 jul. CEU4142000001 Wholesale Trade 4907.
8 1985 ago. CEU4142000001 Wholesale Trade 4915.
9 1985 sep. CEU4142000001 Wholesale Trade 4907.
10 1985 oct. CEU4142000001 Wholesale Trade 4919.
# ℹ 302 more rows
Primeros modelos
Entrenamiento de datos
lh_fit <- lh_train %>%
model(
Mean = MEAN(Employed),
`Naïve` = NAIVE(Employed),
`Seasonal naïve` = SNAIVE(Employed),
Drift = RW(Employed ~ drift())
)
lh_fc <- lh_fit %>%
forecast(h = "9 years")
lh_fc %>%
autoplot(lh |> filter_index("2002 Jan" ~.), level = NULL) +
xlab("Year") + ylab("people") +
ggtitle("Forecasts for employement Wholesale Trade") +
guides(colour=guide_legend(title="Forecast"))Errores en el entrenamiento
lh_accu_train <- accuracy(lh_fit) |>
arrange(MAE)
lh_accu_train# A tibble: 4 × 11
Series_ID .model .type ME RMSE MAE MPE MAPE MASE RMSSE ACF1
<chr> <chr> <chr> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl>
1 CEU4142000… Drift Trai… 2.75e-13 23.8 17.9 0.00127 0.330 0.163 0.179 0.429
2 CEU4142000… Naïve Trai… 1.95e+ 0 23.9 18.2 0.0373 0.335 0.165 0.180 0.429
3 CEU4142000… Seaso… Trai… 2.03e+ 1 133. 110. 0.367 2.01 1 1 0.993
4 CEU4142000… Mean Trai… 4.94e-14 331. 289. -0.375 5.37 2.63 2.49 0.992
Errores en el modelo
lh_accu_fc <- lh_fc |>
accuracy(lh) |>
arrange(MAE)Warning: The future dataset is incomplete, incomplete out-of-sample data will be treated as missing.
3 observations are missing between 2019 oct. and 2019 dic.
lh_accu_fc# A tibble: 4 × 11
.model Series_ID .type ME RMSE MAE MPE MAPE MASE RMSSE ACF1
<chr> <chr> <chr> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl>
1 Drift CEU41420… Test 208. 224. 210. 3.60 3.64 1.91 1.68 0.908
2 Mean CEU41420… Test 286. 316. 290. 4.94 5.00 2.63 2.38 0.940
3 Naïve CEU41420… Test 312. 340. 314. 5.38 5.42 2.85 2.56 0.940
4 Seasonal naïve CEU41420… Test 346. 370. 346. 5.98 5.98 3.14 2.78 0.955
lh_train |>
autoplot(Employed)lh_train |>
autoplot(log(Employed))Descomposiciones
dcmp <- lh_train |>
model(
STL(log(Employed), robust = TRUE)
)
dcmp |>
components() |>
autoplot()dcmp |>
components() |>
ggplot(aes(x = Month, y = season_adjust)) +
geom_line()lh_train |>
model(
STL(Employed, robust = TRUE)
) |>
components() |>
autoplot()Segundos modelos
lh_fit <- lh_train |>
model(
snaive = SNAIVE(Employed),
ets_ANA = ETS(Employed ~ error("A") + trend("N") + season("A")),
ets_AAdA = ETS(Employed ~ error("A") + trend("Ad") + season("A")),
ets_MAdM = ETS(Employed ~ error("M") + trend("Ad") + season("M")),
ets_ANA_l = ETS(log(Employed) ~ error("A") + trend("N") + season("A")),
ets_AAdA_l = ETS(log(Employed) ~ error("A") + trend("Ad") + season("A")),
ets_MAdM_l = ETS(log(Employed) ~ error("M") + trend("Ad") + season("M")),
stl_ets_A = decomposition_model(
STL(log(Employed), robust = TRUE),
ETS(season_year ~ error("A") + trend("N") + season("A")),
ETS(season_adjust ~ error("A") + trend("Ad") + season("N"))
),
stl_ets_M = decomposition_model(
STL(log(Employed), robust = TRUE),
ETS(season_year ~ error("M") + trend("N") + season("M")),
ETS(season_adjust ~ error("A") + trend("Ad") + season("N"))
)
)
lh_fit# A mable: 1 x 10
# Key: Series_ID [1]
Series_ID snaive ets_ANA ets_AAdA ets_MAdM ets_ANA_l
<chr> <model> <model> <model> <model> <model>
1 CEU4142000001 <SNAIVE> <ETS(A,N,A)> <ETS(A,Ad,A)> <ETS(M,Ad,M)> <ETS(A,N,A)>
# ℹ 4 more variables: ets_AAdA_l <model>, ets_MAdM_l <model>,
# stl_ets_A <model>, stl_ets_M <model>
Errores en el entrenamiento
accuracy(lh_fit) |>
arrange(MAPE)# A tibble: 9 × 11
Series_ID .model .type ME RMSE MAE MPE MAPE MASE RMSSE
<chr> <chr> <chr> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl>
1 CEU41420000… stl_e… Trai… 2.08e-1 9.41e0 6.94 0.00489 0.128 0.0630 0.0708
2 CEU41420000… ets_A… Trai… 2.08e-1 1.03e1 7.79 0.00531 0.144 0.0707 0.0773
3 CEU41420000… ets_M… Trai… 2.79e-2 1.04e1 8.13 0.00224 0.150 0.0738 0.0781
4 CEU41420000… ets_A… Trai… 3.59e-1 1.04e1 8.14 0.00884 0.150 0.0739 0.0782
5 CEU41420000… ets_M… Trai… 3.09e-1 1.35e1 10.7 0.00798 0.197 0.0971 0.101
6 CEU41420000… ets_A… Trai… 1.62e+0 1.45e1 11.2 0.0309 0.207 0.102 0.109
7 CEU41420000… ets_A… Trai… 1.17e+0 1.77e1 11.7 0.0217 0.215 0.106 0.133
8 CEU41420000… snaive Trai… 2.03e+1 1.33e2 110. 0.367 2.01 1 1
9 CEU41420000… stl_e… Trai… -3.42e+2 1.48e3 349. -6.62 6.75 3.17 11.1
# ℹ 1 more variable: ACF1 <dbl>
lh_fit |>
augment() |>
features(.innov, ljung_box, lag = 5)# A tibble: 9 × 4
Series_ID .model lb_stat lb_pvalue
<chr> <chr> <dbl> <dbl>
1 CEU4142000001 ets_AAdA 92.7 0
2 CEU4142000001 ets_AAdA_l 104. 0
3 CEU4142000001 ets_ANA 221. 0
4 CEU4142000001 ets_ANA_l 479. 0
5 CEU4142000001 ets_MAdM 244. 0
6 CEU4142000001 ets_MAdM_l 96.9 0
7 CEU4142000001 snaive 1374. 0
8 CEU4142000001 stl_ets_A 2.60 0.762
9 CEU4142000001 stl_ets_M 4.72 0.451
lh_fit |>
select(stl_ets_A) |>
gg_tsresiduals()lh_fit |>
select(stl_ets_M) |>
gg_tsresiduals()Pronósticos de prueba
lh_fc <- lh_fit |>
forecast(h = "9 years")
lh_fc# A fable: 972 x 5 [1M]
# Key: Series_ID, .model [9]
Series_ID .model Month Employed .mean
<chr> <chr> <mth> <dist> <dbl>
1 CEU4142000001 snaive 2011 ene. N(5340, 17663) 5340.
2 CEU4142000001 snaive 2011 feb. N(5327, 17663) 5327
3 CEU4142000001 snaive 2011 mar. N(5345, 17663) 5345.
4 CEU4142000001 snaive 2011 abr. N(5363, 17663) 5363.
5 CEU4142000001 snaive 2011 may. N(5382, 17663) 5382.
6 CEU4142000001 snaive 2011 jun. N(5411, 17663) 5411.
7 CEU4142000001 snaive 2011 jul. N(5412, 17663) 5412.
8 CEU4142000001 snaive 2011 ago. N(5407, 17663) 5407
9 CEU4142000001 snaive 2011 sep. N(5394, 17663) 5394.
10 CEU4142000001 snaive 2011 oct. N(5414, 17663) 5414.
# ℹ 962 more rows
lh_fc |>
autoplot(lh, level = NULL, size = 1)lh_fc |>
filter(.model != "stl_ets_M") |>
autoplot(lh |> filter_index("2010 Jan" ~ .), level = NULL, size = 1)lh_fc |>
filter(.model != "stl_ets_M") |>
autoplot(lh |> filter_index("2010 Jan" ~ .), size = 1) +
facet_wrap(~ .model, ncol = 3) +
theme(legend.position = "none")lh_fc |>
accuracy(lh) |>
arrange(MAPE)Warning: The future dataset is incomplete, incomplete out-of-sample data will be treated as missing.
3 observations are missing between 2019 oct. and 2019 dic.
# A tibble: 9 × 11
.model Series_ID .type ME RMSE MAE MPE MAPE MASE RMSSE ACF1
<chr> <chr> <chr> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl>
1 ets_MAdM CEU41420… Test 129. 144. 130. 2.23 2.24 1.18 1.08 0.948
2 ets_MAd… CEU41420… Test 181. 195. 181. 3.13 3.14 1.64 1.47 0.948
3 ets_AAd… CEU41420… Test 200. 218. 200. 3.46 3.46 1.82 1.64 0.953
4 ets_AAdA CEU41420… Test 300. 325. 300. 5.18 5.18 2.72 2.44 0.957
5 stl_ets… CEU41420… Test 314. 337. 314. 5.42 5.42 2.85 2.53 0.953
6 ets_ANA… CEU41420… Test 314. 340. 314. 5.43 5.43 2.85 2.56 0.958
7 ets_ANA CEU41420… Test 318. 344. 318. 5.50 5.50 2.89 2.59 0.958
8 snaive CEU41420… Test 346. 370. 346. 5.98 5.98 3.14 2.78 0.955
9 stl_ets… CEU41420… Test -3201. 18168. 3682. -55.2 63.6 33.4 137. -0.0373
Errores en el modelo
lh_fc |>
accuracy(lh) |>
arrange(MAPE)Warning: The future dataset is incomplete, incomplete out-of-sample data will be treated as missing.
3 observations are missing between 2019 oct. and 2019 dic.
# A tibble: 9 × 11
.model Series_ID .type ME RMSE MAE MPE MAPE MASE RMSSE ACF1
<chr> <chr> <chr> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl>
1 ets_MAdM CEU41420… Test 129. 144. 130. 2.23 2.24 1.18 1.08 0.948
2 ets_MAd… CEU41420… Test 181. 195. 181. 3.13 3.14 1.64 1.47 0.948
3 ets_AAd… CEU41420… Test 200. 218. 200. 3.46 3.46 1.82 1.64 0.953
4 ets_AAdA CEU41420… Test 300. 325. 300. 5.18 5.18 2.72 2.44 0.957
5 stl_ets… CEU41420… Test 314. 337. 314. 5.42 5.42 2.85 2.53 0.953
6 ets_ANA… CEU41420… Test 314. 340. 314. 5.43 5.43 2.85 2.56 0.958
7 ets_ANA CEU41420… Test 318. 344. 318. 5.50 5.50 2.89 2.59 0.958
8 snaive CEU41420… Test 346. 370. 346. 5.98 5.98 3.14 2.78 0.955
9 stl_ets… CEU41420… Test -3201. 18168. 3682. -55.2 63.6 33.4 137. -0.0373
Pronóstico final
lh_fut <- lh |>
model(
ets_MAdM = ETS(Employed ~ error("M") + trend("Ad") + season("M"))
) |>
forecast(h = "5 years")
lh_fut# A fable: 60 x 5 [1M]
# Key: Series_ID, .model [1]
Series_ID .model Month Employed .mean
<chr> <chr> <mth> <dist> <dbl>
1 CEU4142000001 ets_MAdM 2019 oct. N(5949, 155) 5949.
2 CEU4142000001 ets_MAdM 2019 nov. N(5948, 260) 5948.
3 CEU4142000001 ets_MAdM 2019 dic. N(5948, 396) 5948.
4 CEU4142000001 ets_MAdM 2020 ene. N(5899, 554) 5899.
5 CEU4142000001 ets_MAdM 2020 feb. N(5901, 754) 5901.
6 CEU4142000001 ets_MAdM 2020 mar. N(5921, 997) 5921.
7 CEU4142000001 ets_MAdM 2020 abr. N(5942, 1283) 5942.
8 CEU4142000001 ets_MAdM 2020 may. N(5970, 1617) 5970.
9 CEU4142000001 ets_MAdM 2020 jun. N(6001, 2003) 6001.
10 CEU4142000001 ets_MAdM 2020 jul. N(6003, 2418) 6003.
# ℹ 50 more rows
lh_fut |>
autoplot(lh)Serie de tiempo 2
jam <- global_economy |>
filter(Country == "Jamaica", Year >= 1985) |>
select(Country, Population)
jam_train <- jam |>
filter(Year <= 2008)
jam_train# A tsibble: 24 x 3 [1Y]
# Key: Country [1]
Country Population Year
<fct> <dbl> <dbl>
1 Jamaica 2338638 1985
2 Jamaica 2361720 1986
3 Jamaica 2379279 1987
4 Jamaica 2393534 1988
5 Jamaica 2407720 1989
6 Jamaica 2424242 1990
7 Jamaica 2443689 1991
8 Jamaica 2465362 1992
9 Jamaica 2488782 1993
10 Jamaica 2513049 1994
# ℹ 14 more rows
Primeros modelos
jam_fit <-jam_train |>
model(
Mean = MEAN(Population),
`Naïve` = NAIVE(Population),
Drift = RW(Population ~ drift())
)jam_fc <- jam_fit |>
forecast(h = '9 years')
jam_fc %>%
autoplot(jam, level = NULL) +
xlab("Year") + ylab("Population") +
ggtitle("Forecasts for Population of Jamaica") +
guides(colour=guide_legend(title="Forecast"))Errores en el entrenamiento
jam_accu_train <- accuracy(jam_fit) |>
arrange(MAE)
jam_accu_train# A tibble: 3 × 11
Country .model .type ME RMSE MAE MPE MAPE MASE RMSSE ACF1
<fct> <chr> <chr> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl>
1 Jamaica Drift Train… 2.02e-10 3.83e3 3.52e3 0.00150 0.137 0.179 0.192 0.831
2 Jamaica Naïve Train… 1.96e+ 4 2.00e4 1.96e4 0.764 0.764 1 1 0.831
3 Jamaica Mean Train… -1.55e-10 1.43e5 1.27e5 -0.314 4.99 6.49 7.17 0.887
Errores en el modelo
jam_accu_fc <- jam_fc |>
accuracy(jam) |>
arrange(MAE)
jam_accu_fc# A tibble: 3 × 11
.model Country .type ME RMSE MAE MPE MAPE MASE RMSSE ACF1
<chr> <fct> <chr> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl>
1 Drift Jamaica Test -38353. 44754. 38353. -1.34 1.34 1.95 2.24 0.670
2 Naïve Jamaica Test 59796. 65915. 59796. 2.09 2.09 3.05 3.30 0.662
3 Mean Jamaica Test 279515. 280887. 279515. 9.80 9.80 14.2 14.0 0.662
jam_accu_fc <- jam_fc |>
accuracy(jam) |>
arrange(MAE)
jam_accu_fc# A tibble: 3 × 11
.model Country .type ME RMSE MAE MPE MAPE MASE RMSSE ACF1
<chr> <fct> <chr> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl>
1 Drift Jamaica Test -38353. 44754. 38353. -1.34 1.34 1.95 2.24 0.670
2 Naïve Jamaica Test 59796. 65915. 59796. 2.09 2.09 3.05 3.30 0.662
3 Mean Jamaica Test 279515. 280887. 279515. 9.80 9.80 14.2 14.0 0.662
jam_train |>
autoplot(Population)jam_train |>
autoplot(log(Population))Segundos modelos
jam_fit <- jam_train |>
model(
drift = RW(Population ~ drift()),
ets_ANA = ETS(Population ~ error("A") + trend("N") + season("N")),
ets_AAdA = ETS(Population ~ error("A") + trend("Ad") + season("N")),
ets_MAdM = ETS(Population ~ error("M") + trend("Ad") + season("N")),
ets_ANA_l = ETS(log(Population) ~ error("A") + trend("N") + season("N")),
ets_AAdA_l = ETS(log(Population) ~ error("A") + trend("Ad") + season("N")),
ets_MAdM_l = ETS(log(Population) ~ error("M") + trend("Ad") + season("N")),
)
jam_fit# A mable: 1 x 8
# Key: Country [1]
Country drift ets_ANA ets_AAdA ets_MAdM ets_ANA_l
<fct> <model> <model> <model> <model> <model>
1 Jamaica <RW w/ drift> <ETS(A,N,N)> <ETS(A,Ad,N)> <ETS(M,Ad,N)> <ETS(A,N,N)>
# ℹ 2 more variables: ets_AAdA_l <model>, ets_MAdM_l <model>
Errores en el entrenamiento
accuracy(jam_fit) |>
arrange(MAPE)# A tibble: 7 × 11
Country .model .type ME RMSE MAE MPE MAPE MASE RMSSE
<fct> <chr> <chr> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl>
1 Jamaica ets_MAdM_l Traini… 4.46e+ 2 1795. 1274. 0.0176 0.0512 0.0649 0.0897
2 Jamaica ets_AAdA_l Traini… 4.07e+ 2 1788. 1292. 0.0163 0.0521 0.0658 0.0894
3 Jamaica ets_MAdM Traini… 8.03e+ 1 2218. 1621. 0.00331 0.0660 0.0826 0.111
4 Jamaica ets_AAdA Traini… 8.57e+ 1 2251. 1635. 0.00346 0.0666 0.0833 0.113
5 Jamaica drift Traini… 2.02e-10 3830. 3520. 0.00150 0.137 0.179 0.192
6 Jamaica ets_ANA_l Traini… 1.88e+ 4 19581. 18814. 0.733 0.733 0.958 0.979
7 Jamaica ets_ANA Traini… 1.54e+ 4 25888. 22270. 0.585 0.880 1.13 1.29
# ℹ 1 more variable: ACF1 <dbl>
jam_fit |>
augment() |>
features(.innov, ljung_box, lag = 8)# A tibble: 7 × 4
Country .model lb_stat lb_pvalue
<fct> <chr> <dbl> <dbl>
1 Jamaica drift 47.1 0.000000146
2 Jamaica ets_AAdA 5.82 0.667
3 Jamaica ets_AAdA_l 19.2 0.0139
4 Jamaica ets_ANA 0.441 1.00
5 Jamaica ets_ANA_l 13.7 0.0889
6 Jamaica ets_MAdM 5.06 0.751
7 Jamaica ets_MAdM_l 22.8 0.00361
jam_fit |>
select(ets_AAdA) |>
gg_tsresiduals()jam_fit |>
select(ets_AAdA) |>
gg_tsresiduals()Pronósticos de prueba
jam_fc <- jam_fit |>
forecast(h = "9 years")
jam_fc# A fable: 63 x 5 [1Y]
# Key: Country, .model [7]
Country .model Year Population .mean
<fct> <chr> <dbl> <dist> <dbl>
1 Jamaica drift 2009 N(2809752, 1.6e+07) 2809752.
2 Jamaica drift 2010 N(2829381, 3.3e+07) 2829381.
3 Jamaica drift 2011 N(2849011, 5.2e+07) 2849011.
4 Jamaica drift 2012 N(2868641, 7.2e+07) 2868641.
5 Jamaica drift 2013 N(2888271, 9.3e+07) 2888271.
6 Jamaica drift 2014 N(2907900, 1.2e+08) 2907900.
7 Jamaica drift 2015 N(2927530, 1.4e+08) 2927530.
8 Jamaica drift 2016 N(2947160, 1.7e+08) 2947160.
9 Jamaica drift 2017 N(3e+06, 1.9e+08) 2966790.
10 Jamaica ets_ANA 2009 N(2790121, 7.3e+08) 2790121.
# ℹ 53 more rows
jam_fc |>
autoplot(jam, level = NULL, size = 1)jam_fc |>
autoplot(jam |> filter_index("2003" ~ .), level = NULL, size = 1)jam_fc |>
autoplot(jam |> filter_index("2003" ~ .), size = 1) +
facet_wrap(~ .model, ncol = 3) +
theme(legend.position = "none")jam_fc |>
autoplot(jam |> filter_index("2003" ~ .), size = 1) +
facet_wrap(~ .model, ncol = 3) +
theme(legend.position = "none")jam_fc |>
accuracy(jam) |>
arrange(MAPE)# A tibble: 7 × 11
.model Country .type ME RMSE MAE MPE MAPE MASE RMSSE ACF1
<chr> <fct> <chr> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl>
1 ets_MAdM… Jamaica Test -2135. 2673. 2135. -0.0744 0.0744 0.109 0.134 0.703
2 ets_AAdA… Jamaica Test -3126. 3906. 3126. -0.109 0.109 0.159 0.195 0.692
3 ets_AAdA Jamaica Test -7040. 8803. 7040. -0.245 0.245 0.359 0.440 0.678
4 ets_MAdM Jamaica Test -7307. 9138. 7307. -0.255 0.255 0.372 0.457 0.677
5 drift Jamaica Test -38353. 44754. 38353. -1.34 1.34 1.95 2.24 0.670
6 ets_ANA_l Jamaica Test 59348. 65412. 59348. 2.07 2.07 3.02 3.27 0.662
7 ets_ANA Jamaica Test 59797. 65916. 59797. 2.09 2.09 3.05 3.30 0.662
Pronóstico final
jam_fut <- jam |>
model(
ets_AAdA = ETS(Population ~ error("A") + trend("Ad") + season("N"))
) |>
forecast(h = "5 years")
jam_fut# A fable: 5 x 5 [1Y]
# Key: Country, .model [1]
Country .model Year Population .mean
<fct> <chr> <dbl> <dist> <dbl>
1 Jamaica ets_AAdA 2018 N(2898996, 4391921) 2898996.
2 Jamaica ets_AAdA 2019 N(2907436, 2e+07) 2907436.
3 Jamaica ets_AAdA 2020 N(2915633, 5.5e+07) 2915633.
4 Jamaica ets_AAdA 2021 N(2923594, 1.1e+08) 2923594.
5 Jamaica ets_AAdA 2022 N(2931327, 2.1e+08) 2931327.
jam_fut |>
autoplot(jam)