-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathbingo_arima.r
91 lines (70 loc) · 2.38 KB
/
bingo_arima.r
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
#' Nosso objetivo é descobrir qual a ordem do ARIMA usando análise descritiva
# gerando os dados --------------------------------------------------------
ar <- sample(0:1, 1)
ma <- sample(0:1, 1)
dif <- sample(0:1, 1)
ar_parm <- runif(ar, min = .3, max = .4)
ma_parm <- runif(ma, min = .3, max = .4)
dados <- data.frame(
mes = 1:(300 + dif),
vendas = arima.sim(list(
order = c(ar, dif, ma),
ma = ma_parm,
ar = ar_parm
), n = 300)
)
# montando os dados -------------------------------------------------------
dados_tsibble <- dados |>
dplyr::mutate(
mes = as.Date("1995-05-01") + months(mes),
mes = tsibble::yearmonth(mes)
) |>
tsibble::as_tsibble(index = mes)
# descritiva --------------------------------------------------------------
# PASSO 1
dados_tsibble |>
feasts::gg_tsdisplay(vendas, plot_type = "partial")
tseries::adf.test(dados_tsibble$vendas)
# PASSO 2: TESTE
dados_tsibble |>
fabletools::features(
vendas,
list(
feasts::unitroot_kpss,
feasts::unitroot_ndiffs,
feasts::unitroot_nsdiffs
)
)
# PASSO 3: DIFERENCIAÇÃO E VISUALIZAÇÃO
dados_tsibble |>
dplyr::mutate(dif_vendas = tsibble::difference(vendas)) |>
feasts::gg_tsdisplay(dif_vendas, plot_type = "partial", lag_max = 30)
dados_tsibble |>
dplyr::mutate(dif_vendas = tsibble::difference(vendas)) |>
dplyr::mutate(dif_vendas2 = tsibble::difference(dif_vendas)) |>
feasts::gg_tsdisplay(dif_vendas2, plot_type = "partial", lag_max = 30)
# PASSO 1: descritiva
# PASSO 2: AVALIAR NECESSIDADE DE DIFERENÇA SAZONAL
# PASSO 3: descritiva, depois de tirar a diferença sazonal, se necessário
# PASSO 4: AVALIAR NECESSIDADE DE DIFERENÇA
# PASSO 5: descritiva, depois de tirar a diferença, se necessário
# modelagem ---------------------------------------------------------------
fit <- dados_tsibble |>
fabletools::model(
arima_manual = fable::ARIMA(vendas ~ 1 + pdq(0,1,0) + PDQ(0,0,0)),
stepwise = fable::ARIMA(vendas ~ 1 + PDQ(0,0,0)),
search = fable::ARIMA(vendas ~ 1 + PDQ(0,0,0), stepwise = FALSE)
)
dplyr::glimpse(fit)
fit |>
broom::glance() |>
dplyr::select(.model, AICc) |>
dplyr::arrange(AICc)
fit |>
broom::augment() |>
dplyr::filter(.model == "stepwise") |>
feasts::gg_tsdisplay(.resid, plot_type = "partial", lag_max = 30)
# gabarito ----------------------------------------------------------------
c(ar, dif, ma)
ar_parm
ma_parm