day6hw

remove(list=ls())

library(fpp3)
── Attaching packages ──────────────────────────────────────────── fpp3 1.0.3 ──
✔ tibble      3.3.1     ✔ tsibble     1.2.0
✔ dplyr       1.2.1     ✔ tsibbledata 0.4.1
✔ tidyr       1.3.2     ✔ ggtime      0.2.0
✔ lubridate   1.9.5     ✔ feasts      0.5.0
✔ ggplot2     4.0.3     ✔ fable       0.5.0
── Conflicts ───────────────────────────────────────────────── fpp3_conflicts ──
✖ lubridate::date()    masks base::date()
✖ dplyr::filter()      masks stats::filter()
✖ tsibble::intersect() masks base::intersect()
✖ tsibble::interval()  masks lubridate::interval()
✖ dplyr::lag()         masks stats::lag()
✖ tsibble::setdiff()   masks base::setdiff()
✖ tsibble::union()     masks base::union()
library(tidyquant)
Registered S3 method overwritten by 'quantmod':
  method            from
  as.zoo.data.frame zoo 
── Attaching core tidyquant packages ─────────────────────── tidyquant 1.0.12 ──
✔ PerformanceAnalytics 2.1.0      ✔ TTR                  0.24.4
✔ quantmod             0.4.29     ✔ xts                  0.14.2
── Conflicts ────────────────────────────────────────── tidyquant_conflicts() ──
✖ zoo::as.Date()                 masks base::as.Date()
✖ zoo::as.Date.numeric()         masks base::as.Date.numeric()
✖ dplyr::filter()                masks stats::filter()
✖ xts::first()                   masks dplyr::first()
✖ zoo::index()                   masks tsibble::index()
✖ tsibble::interval()            masks lubridate::interval()
✖ dplyr::lag()                   masks stats::lag()
✖ xts::last()                    masks dplyr::last()
✖ PerformanceAnalytics::legend() masks graphics::legend()
✖ quantmod::summary()            masks base::summary()
✖ tidyquant::VAR()               masks fable::VAR()
ℹ Use the conflicted package (<http://conflicted.r-lib.org/>) to force all conflicts to become errors

Attaching package: 'tidyquant'


The following object is masked from 'package:fable':

    VAR
?tidyquant
?tq_get()
  
df_daily_new <-
  tq_get(x = "gold", 
         get = "stock.prices", 
         from = "2014-03-17")

data_monthly <- df_daily_new %>%
  mutate(month = yearmonth(date)) %>% 
  group_by(month) %>% 
  summarise(adjusted = mean(adjusted)) %>% as_tsibble(index = month)

write.csv(x = data_monthly,
          file = "monthly.csv")
train <- data_monthly[1:119, ]
test <- data_monthly[119:149, ]
?fabletools::model
?NAIVE
?forecast()
Help on topic 'forecast' was found in the following packages:

  Package               Library
  generics              /Library/Frameworks/R.framework/Versions/4.6/Resources/library
  fabletools            /Library/Frameworks/R.framework/Versions/4.6/Resources/library


Using the first match ...
models_stock <- model(.data = train,
                      naive = NAIVE(adjusted),
                      snaive = SNAIVE(adjusted),
                      drift = RW(adjusted ~ drift())
)

h <- nrow(test)

forecast_stock <- 
  forecast(models_stock,
           h = 24,
           level = 95
  )

autoplot(forecast_stock)