5.11 Esercizi

  1. Produci previsioni per le seguenti serie usando il metodo più appropriato tra NAIVE(y), SNAIVE(y) o RW(y ~ drift()) per ogni serie:

    • Popolazione australiana (global_economy)
    • Mattoni (aus_production)
    • Agnelli del NSW (aus_livestock)
    • Ricchezza delle famiglie (hh_budget).
    • Fatturato del cibo da asporto australiano (aus_retail).
  2. Usa il prezzo delle azioni di Facebook (set di dati gafa_stock) per:

    1. Produrre un grafico temporale della serie.
    2. Produrre previsioni utilizzando il metodo del drift e rappresentarle graficamente.
    3. Mostrare che le previsioni sono identiche alla linea tracciata tra la prima e l’ultima osservazione.
    4. Provare ad usare alcune delle altre funzioni benchmark per prevedere lo stesso set di dati. Quale pensi sia la migliore? Perché?
  3. Applica un metodo naive stagionale ai dati trimestrali della produzione di birra australiana del 1992. Controlla se i residui assomigliano ad un white noise e rappresenta graficamente le previsioni. Il seguente codice può essere utile per rispondere.

    # Estrazione dei dati di interesse
    recent_production <- aus_production %>%
      filter(year(Quarter) >= 1992)
    # Definizione e stima del modello
    fit <- recent_production %>% model(SNAIVE(Beer))
    # Analisi grafica dei residui
    fit %>% gg_tsresiduals()
    #> Warning: Removed 4 rows containing missing values (`geom_line()`).
    #> Warning: Removed 4 rows containing missing values (`geom_point()`).
    #> Warning: Removed 4 rows containing non-finite values (`stat_bin()`).

    # Analisi grafica di alcune previsioni
    fit %>% forecast() %>% autoplot(recent_production)

Quali sono le tue conclusioni?

  1. Ripeti l’esercizio precedente usando la serie delle esportazioni australiane da global_economy e la serie dei mattoni da aus_production. Usa il metodo NAIVE() o SNAIVE() più appropriato per le due serie.

  2. Produci le previsioni per le sette serie vittoriane in aus_livestock usando SNAIVE(). Disegna le previsioni risultanti includendo i dati storici. Si tratta di un benchmark ragionevole per queste serie?

  3. Le seguenti affermazioni sono vere o false? Spiega la tua risposta.

  1. I buoni metodi di previsione dovrebbero avere residui distribuiti normalmente.
  2. Un modello con residui piccoli darà buone previsioni.
  3. La migliore misura dell’accuratezza della previsione è il MAPE.
  4. Se il tuo modello non prevede bene, dovresti renderlo più complicato.
  5. Scegliere sempre il modello con la migliore accuratezza di previsione misurata sul test set.
  1. Per la serie storica delle vendite al dettaglio (dall’esercizio 8 nel paragrafo 2.10):

    1. Crea un traning set composto da osservazioni precedenti al 2011 utilizzando

      myseries_train <- myseries %>%
        filter(year(Month) < 2011)
    2. Controlla che i dati siano stati divisi in modo appropriato producendo il seguente grafico.

      autoplot(myseries, Turnover) +
        autolayer(myseries_train, Turnover, colour = "red")
  1. Adatta un modello naive stagionale usando SNAIVE() ai tuo traning set

    fit <- myseries_train %>%
      model(SNAIVE())
  2. Verifica i risulati

    fit %>% gg_tsresiduals()

    I residui appaiono incorrelati e normalmente distribuiti?

  3. Produci delle previsioni per il test set

    fc <- fit %>%
      forecast(new_data = anti_join(myseries, myseries_train))
    fc %>% autoplot(myseries)
  4. Confronta le prevsioni con i valori osservati

    fit %>% accuracy()
    fc %>% accuracy(myseries)
  5. Quanto sono sensibili le misure di accuratezza alla ampiezza del traning set utilizzato?

  1. Considera il numero di maiali macellati nel Nuovo Galles del Sud (dataset aus_livestock).

    1. Produci i grafici dei dati per acquisire familiarità con essi.
    2. Crea un traning set di 486 osservazioni, ottenendo un test set 72 osservazioni (6 anni).
    3. Prova ad utilizzare vari metodi di previsione benchmark sul traning set e confrontate i risultati sul test set. Quale metodo funziona meglio in questo caso?
    4. Controlla i residui del metodo scelto. Assomigliano ad un white noise?
    1. Crea un training set per la ricchezza delle famiglie (hh_budget) lasciando gli ultimi quattro anni come test set.
    2. Stima tutti i metodi benchmark appropriati sul training set e prevedi i periodi temporali coperti dal test set.
    3. Calcola l’accuratezza delle previsioni. Quale metodo funziona meglio?
    4. I residui del metodo migliore assomigliano ad un white noise?
    1. Crea un training set per il fatturato del cibo da asporto australiano (aus_retail) lasciando gli ultimi quattro anni come test set.
    2. Applica tutti i metodi benchmark appropriati al traning set e prevedi i periodi coperti dall’insieme di test.
    3. Calcola l’accuratezza delle previsioni. Quale metodo funziona meglio?
    4. I residui del metodo migliore assomigliano ad un white noise?
  2. Per questo esercizio utilizza i dati Bricks da aus_production (produzione trimestrale australiana di mattoni in argilla 1956–2005).

    1. Usa una decomposizione STL per calcolare il trend-ciclo e gli indici stagionali. (Sperimenta se la stagionalità è fissa o variabile).
    2. Calcola e disegna i dati destagionalizzati.
    3. Usa un metodo naive per produrre previsioni per i dati destagionalizzati.
    4. Usa decomposition_model() per ristagionalizzare i risultati, calcolando previsioni per i dati originali.
    5. I residui appaiono non correlati?
    6. Ripeti l’analisi usando una decomposizione STL robusta. C’è molta differenza?
    7. Confronta le previsioni di decomposition_model() con quelle di SNAIVE(), utilizzando un test set che comprende gli ultimi 2 anni di dati. Quale funziona meglio?
  3. Il dataset tourism contiene i pernottamenti trimestrali dei visitatori (in migliaia) dal 1998 al 2017 per 76 regioni dell’Australia.

    1. Estrai i dati della regione della Gold Coast usando filter() e aggrega il totale dei pernottamenti (somma su Purpose) usando summarise(). Chiama questo nuovo dataset gc_tourism.

    2. Usando slice() o filter(), crea tre traning set per questi dati escludendo rispettivamente gli ultimi 1, 2 e 3 anni. Per esempio, gc_train_1 <- gc_tourism %>% slice(1:(n()-4)).

    3. Calcola un anno di previsioni per ogni traning set usando il metodo naive stagionale (SNAIVE()). Chiama queste previsioni rispettivamente gc_fc_1, gc_fc_2 e gc_fc_3.

    4. Usa accuracy() per confrontare l’accuratezza delle previsioni del test set usando il MAPE. Commenta questi risultati.