library(fpp3)
library(tsibble)
library(cowplot)
gg_tsdisplay( filter(gafa_stock,Symbol=="AMZN"),Close,plot_type = "partial")
filter(gafa_stock,Symbol=="AMZN") %>% gg_tsdisplay( difference(Close),plot_type = "partial")
Turkey <- global_economy %>% filter(Country=="Turkey")
autoplot(Turkey,GDP)
lam <- Turkey %>%
features(GDP, features = guerrero) %>%
pull(lambda_guerrero)
Turkey <- Turkey %>%
mutate(lam_gdp = box_cox(GDP, lam))
Turkey %>% autoplot(lam_gdp)
gg_tsdisplay( Turkey,lam_gdp,plot_type = "partial")
Turkey %>%
features(lam_gdp, unitroot_ndiffs)
Turkey %>%
mutate(dif = difference(lam_gdp,1)) %>%
gg_tsdisplay( dif,plot_type = "partial")
Tas <- aus_accommodation %>% filter(State == "Tasmania")
autoplot(Tas,Takings)
Tas_lam <- Tas %>%
features(Takings, features = guerrero) %>%
pull(lambda_guerrero)
autoplot(Tas, box_cox(Takings,Tas_lam))
gg_tsdisplay( Tas,Takings,plot_type = "partial")
Tas %>%
features(Takings, unitroot_nsdiffs)
Tas %>%
mutate(dif = difference(Takings,4)) %>%
gg_tsdisplay( dif,plot_type = "partial")
Tas %>%
mutate(dif = difference(Takings,4)) %>%
features(dif, unitroot_kpss)
autoplot(souvenirs)
lam_sales <- souvenirs %>%
features(Sales, features = guerrero) %>%
pull(lambda_guerrero)
souvenirs <- souvenirs %>%
mutate(box_souvenirs = box_cox(Sales,lam_sales))
autoplot(souvenirs, box_souvenirs)
gg_tsdisplay( souvenirs,box_souvenirs,plot_type = "partial")
Applying one seasonal difference appears to fix our data as shown below. We double check with the KPSS test. and confirm our findings that our data is now stationary.
souvenirs%>%
features(box_souvenirs, unitroot_nsdiffs)
souvenirs %>%
mutate(dif = difference(box_souvenirs,12)) %>%
gg_tsdisplay( dif,plot_type = "partial")
souvenirs %>%
mutate(dif = difference(box_souvenirs,12)) %>%
features(dif, unitroot_kpss)
set.seed(1221)
myseries <- aus_retail %>%
filter(`Series ID` == sample(aus_retail$`Series ID`,1))
autoplot(myseries)
lam_my <- myseries %>%
features(Turnover, features = guerrero) %>%
pull(lambda_guerrero)
myseries <- myseries %>%
mutate(box_Turnover = box_cox(Turnover,lam_my))
autoplot(myseries,box_Turnover)
gg_tsdisplay(myseries,box_Turnover,plot_type = "partial")
myseries%>%
features(box_Turnover, unitroot_nsdiffs)
myseries %>%
mutate(dif = difference(box_Turnover,12)) %>%
gg_tsdisplay( dif,plot_type = "partial")
myseries %>%
mutate(dif = difference(box_Turnover,12)) %>%
features(dif, unitroot_kpss)
myseries %>%
mutate(dif = difference(box_Turnover,12)) %>%
features(dif, unitroot_ndiffs)
dd_series <- myseries %>%
mutate(dif = difference(box_Turnover,12),
second_dif = difference(dif,1))
gg_tsdisplay( dd_series,second_dif,plot_type = "partial")
dd_series %>%
features(second_dif, unitroot_kpss)
set.seed(123)
y <- numeric(100)
e <- rnorm(100)
for(i in 2:100)
y[i] <- 0.6*y[i-1] + e[i]
sim <- tsibble(idx = seq_len(100), y = y, index = idx)
sim
make_AR<- function(phi){
y <- numeric(100)
e <- rnorm(100)
for(i in 2:100)
y[i] <- phi*y[i-1] + e[i]
tsibble(idx = seq_len(100), y = y, index = idx)
}
set.seed(123)
plot_grid(autoplot(make_AR(.05) )+labs(title = "Phi .05") ,autoplot( make_AR(.1)) +labs(title = "Phi .1"),autoplot( make_AR(.6))+labs(title = "Phi .6"),autoplot( make_AR(1))+labs(title = "Phi 1") )
make_MA <- function(theta){
y <- numeric(100)
e <- rnorm(100)
for(i in 2:100)
y[i] <- theta*e[i-1] + e[i]
tsibble(idx = seq_len(100), y = y, index = idx)
}
set.seed(123)
plot_grid(autoplot(make_MA(.05) )+labs(title = "Theta .05") ,autoplot( make_MA(.1)) +labs(title = "Theta .1"),autoplot( make_MA(.6))+labs(title = "Theta .6"),autoplot( make_MA(1))+labs(title = "Theta 1") )
set.seed(123)
y <- numeric(100)
e <- rnorm(100)
for(i in 2:100)
y[i] <- 0.6*y[i-1] + 0.6*e[i-1]+ e[i]
ARMA <- tsibble(idx = seq_len(100), y = y, index = idx)
set.seed(123)
y <- numeric(100)
e <- rnorm(100)
for(i in 3:100)
y[i] <- -0.8*y[i-1] + 0.3*y[i-2]+ e[i]
AR2 <- tsibble(idx = seq_len(100), y = y, index = idx)
plot_grid(autoplot(ARMA) + labs(title="ARMA(1,1) Plot"),autoplot(AR2)+ labs(title ="AR(2) Plot"))
gg_tsdisplay( AR2,plot_type = "partial")
gg_tsdisplay( ARMA,plot_type = "partial")
aus_fit <- aus_airpassengers %>%
model(
ARIMA(Passengers,stepwise=F))
aus_fit %>% report()
## Series: Passengers
## Model: ARIMA(0,2,1)
##
## Coefficients:
## ma1
## -0.8963
## s.e. 0.0594
##
## sigma^2 estimated as 4.308: log likelihood=-97.02
## AIC=198.04 AICc=198.32 BIC=201.65
aus_fit %>% gg_tsresiduals()
aus_fit %>% forecast(h=10) %>%
autoplot(aus_airpassengers)
aus_fit2 <-aus_airpassengers %>%
model(ARIMA(Passengers ~ pdq(0,1,0) ))
report(aus_fit2)
## Series: Passengers
## Model: ARIMA(0,1,0) w/ drift
##
## Coefficients:
## constant
## 1.4191
## s.e. 0.3014
##
## sigma^2 estimated as 4.271: log likelihood=-98.16
## AIC=200.31 AICc=200.59 BIC=203.97
aus_fit2 %>% forecast(h=10) %>%
autoplot(aus_airpassengers)
aus_fit3 <-aus_airpassengers %>%
model(ARIMA(Passengers ~ pdq(2,1,2)+1 ))
aus_fit3 %>% forecast(h=10) %>%
autoplot(aus_airpassengers)
aus_fit4 <-aus_airpassengers %>%
model(ARIMA(Passengers ~ pdq(0,2,1)+1 ))
ggdraw() + draw_image("https://i.gyazo.com/ed572e798d7bbf48a21c73f44244320e.png")
aus_fit4 %>% forecast(h=10) %>%
autoplot(aus_airpassengers)
US <- global_economy %>% filter(Code=="USA")
autoplot(US)
US_lam <- US %>%
features(GDP, features = guerrero) %>%
pull(lambda_guerrero)
US <- US %>%
mutate(Box_GDP =box_cox(GDP, US_lam) )
autoplot(US, Box_GDP)
US_fit <- US %>%
model(
ARIMA(Box_GDP,stepwise = FALSE, approx = FALSE)
)
report(US_fit)
## Series: Box_GDP
## Model: ARIMA(1,1,0) w/ drift
##
## Coefficients:
## ar1 constant
## 0.4586 118.1822
## s.e. 0.1198 9.5047
##
## sigma^2 estimated as 5479: log likelihood=-325.32
## AIC=656.65 AICc=657.1 BIC=662.78
US_fit2 <- US %>%
model(
auto = ARIMA(Box_GDP,stepwise = FALSE, approx = FALSE),
`ARIMA 0,0,0` = ARIMA(Box_GDP~pdq(0,0,0)),
`ARMIA 0,1,0` = ARIMA(Box_GDP~pdq(0,1,0)),
`ARMIA 2,1,2` = ARIMA(Box_GDP~pdq(2,1,2)),
`ARMIA 0,1,2` = ARIMA(Box_GDP~pdq(0,1,2)),
`ARMIA 0,2,2` = ARIMA(Box_GDP~pdq(0,2,2)),
`ARMIA 0,2,0` = ARIMA(Box_GDP~pdq(0,2,0))
)
US_fit2 %>% report()
US_fit2 %>%
select( `ARMIA 0,2,2`) %>%
gg_tsresiduals()
US_fit2 %>%
select(Country, `ARMIA 0,2,2`) %>%
forecast(h=10) %>%
autoplot(US)
US_ETS_FIT <- US %>%
model(
ETS(GDP)
)
US_ETS_FIT %>%
forecast(h=10) %>%
autoplot(US)
US %>%
model(
ETS(Box_GDP)
) %>%
forecast(h=10) %>%
autoplot(US)
US %>%
model(
ETS(Box_GDP)
) %>% report()
## Series: Box_GDP
## Model: ETS(M,A,N)
## Smoothing parameters:
## alpha = 0.9998985
## beta = 0.3731217
##
## Initial states:
## l[0] b[0]
## 7045.398 198.9275
##
## sigma^2: 0
##
## AIC AICc BIC
## 744.1762 745.3300 754.4784