Aan de slagGa gratis aan de slag

Voorspellingsnauwkeurigheid evalueren voor niet-seizoensgebonden methoden

In data science is een trainingsset een gegevensset die wordt gebruikt om mogelijke verbanden te ontdekken. Een testset is een gegevensset die wordt gebruikt om de sterkte van deze potentiële verbanden te controleren. Als je een gegevensset in deze delen opsplitst, gebruik je doorgaans meer data voor training en minder voor testen.

Eén functie die je kunt gebruiken om trainings- en testsets te maken is subset(), die een subset van een tijdreeks teruggeeft waarbij de optionele argumenten start en end worden opgegeven met indexwaarden.

> # x is een numerieke vector of tijdreeks
> # Om observaties van 101 t/m 500 te selecteren
> train <- subset(x, start = 101, end = 500, ...)

> # Om de eerste 500 observaties te selecteren
> train <- subset(x, end = 500, ...)

Zoals je in de video zag, berekent een andere functie, accuracy(), diverse statistieken voor voorspellingsnauwkeurigheid op basis van de voorspellingen en de bijbehorende werkelijke observaties. Deze is slim genoeg om de relevante observaties te vinden als je er meer doorgeeft dan degene die je voorspelt.

> # f is een object van klasse "forecast"
> # x is een numerieke vector of tijdreeks
> accuracy(f, x, ...)

De beschikbare nauwkeurigheidsmaten bevatten onder andere de root mean squared error (RMSE), de vierkantswortel van de mean squared error (MSE). Het minimaliseren van RMSE, wat overeenkomt met een hogere nauwkeurigheid, is gelijk aan het minimaliseren van MSE.

De vooringeladen tijdreeks gold bevat dagelijkse goudprijzen voor 1108 dagen. Hier gebruik je de eerste 1000 dagen als trainingsset en bereken je voorspellingen voor de resterende 108 dagen. Deze worden vergeleken met de werkelijke waarden voor deze dagen met de eenvoudige voorspellingsfuncties naive(), die je eerder in dit hoofdstuk gebruikte, en meanf(), die voorspellingen geeft gelijk aan het gemiddelde van alle observaties. Je moet voor beide de parameter h opgeven (die het aantal waarden specificeert dat je wilt voorspellen).

Deze oefening maakt deel uit van de cursus

Voorspellen in R

Cursus bekijken

Oefeninstructies

  • Gebruik subset() om een trainingsset voor gold te maken met de eerste 1000 observaties. Noem deze train.
  • Bereken voorspellingen voor de testset, met de resterende data, met naive() en zet dit in naive_fc. Stel h overeenkomstig in.
  • Bereken nu voorspellingen voor dezelfde testset met meanf() en zet dit in mean_fc. Stel h overeenkomstig in.
  • Vergelijk de statistieken voor voorspellingsnauwkeurigheid van de twee methoden met de functie accuracy().
  • Sla, op basis van de bovenstaande resultaten, de voorspellingen met de hoogste nauwkeurigheid op als bestforecasts.

Praktische interactieve oefening

Probeer deze oefening eens door deze voorbeeldcode in te vullen.

# 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 <- ___
Code bewerken en uitvoeren