Ocena dokładności prognoz metodami niesezonowymi
W data science zbiór treningowy to zbiór danych używany do wykrywania potencjalnych zależności. Zbiór testowy służy natomiast do weryfikacji siły tych zależności. Dzieląc dane na te dwie części, zazwyczaj przeznaczasz więcej danych na trening, a mniej na testowanie.
Jedną z funkcji, której możesz użyć do tworzenia zbiorów treningowych i testowych, jest subset(). Zwraca ona podzbiór szeregu czasowego, przy czym opcjonalne argumenty start i end określa się za pomocą indeksów.
> # x is a numerical vector or time series
> # To subset observations from 101 to 500
> train <- subset(x, start = 101, end = 500, ...)
> # To subset the first 500 observations
> train <- subset(x, end = 500, ...)
Jak widziałeś w filmie, funkcja accuracy() oblicza różne statystyki dokładności prognoz na podstawie prognoz i odpowiadających im rzeczywistych wartości. Jest na tyle inteligentna, że sama znajdzie odpowiednie obserwacje, nawet jeśli przekażesz jej ich więcej niż prognozowanych.
> # f is an object of class "forecast"
> # x is a numerical vector or time series
> accuracy(f, x, ...)
Wśród dostępnych miar dokładności znajduje się pierwiastek błędu średniokwadratowego (RMSE), czyli pierwiastek kwadratowy ze średniego błędu kwadratowego (MSE). Minimalizacja RMSE – która odpowiada zwiększeniu dokładności – jest równoważna minimalizacji MSE.
Wczytany szereg czasowy gold zawiera dzienne ceny złota z 1108 dni. Użyjesz pierwszych 1000 dni jako zbioru treningowego i obliczysz prognozy dla pozostałych 108 dni. Wyniki porównasz z rzeczywistymi wartościami za pomocą prostych funkcji prognozujących: naive(), której używałeś wcześniej w tym rozdziale, oraz meanf(), która jako prognozy zwraca średnią wszystkich obserwacji. Dla obu funkcji konieczne będzie podanie argumentu h, określającego liczbę wartości do prognozowania.
To ćwiczenie jest częścią kursu
Prognozowanie w R
Instrukcje do ćwiczenia
- Użyj funkcji
subset(), aby utworzyć zbiór treningowy dlagoldzawierający pierwsze 1000 obserwacji. Przypisz go do zmiennejtrain. - Oblicz prognozy dla zbioru testowego (zawierającego pozostałe dane) za pomocą funkcji
naive()i przypisz wynik donaive_fc. Ustaw odpowiednią wartośćh. - Oblicz prognozy dla tego samego zbioru testowego za pomocą funkcji
meanf()i przypisz wynik domean_fc. Ustaw odpowiednią wartośćh. - Porównaj statystyki dokładności obu metod, używając funkcji
accuracy(). - Na podstawie powyższych wyników przypisz prognozy o wyższej dokładności do zmiennej
bestforecasts.
Interaktywne ćwiczenie praktyczne
Spróbuj tego ćwiczenia, uzupełniając ten przykładowy kod.
# Create the training data as train
train <- subset(___, end = ___)
# Compute naive forecasts and save to naive_fc
naive_fc <- naive(___, h = ___)
# Compute mean forecasts and save to mean_fc
mean_fc <- meanf(___, h = ___)
# Use accuracy() to compute RMSE statistics
accuracy(___, gold)
___(___, gold)
# Assign one of the two forecasts as bestforecasts
bestforecasts <- ___