Kom igångKom igång gratis

Utvärdera prognosnoggrannhet för icke-säsongsbaserade metoder

Inom datavetenskap är en träningsdatamängd en datamängd som används för att identifiera möjliga samband. En testdatamängd är en datamängd som används för att verifiera styrkan hos dessa potentiella samband. När du delar upp en datamängd i dessa delar brukar du använda en större andel av datan för träning och en mindre andel för testning.

En funktion som kan användas för att skapa tränings- och testdatamängder är subset(), som returnerar en delmängd av en tidsserie där de valfria argumenten start och end anges med hjälp av indexvärden.

> # 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, ...)

Som du såg i videon beräknar en annan funktion, accuracy(), olika noggrannhetsmått för prognoser givet prognoserna och de faktiska observationerna. Funktionen är tillräckligt smart för att hitta relevanta observationer även om du skickar in fler än de du prognostiserar.

> # f is an object of class "forecast"
> # x is a numerical vector or time series
> accuracy(f, x, ...)

De noggrannhetsmått som tillhandahålls inkluderar rotmedelkvadratfelet (RMSE), vilket är kvadratroten av medelkvadratfelet (MSE). Att minimera RMSE, vilket motsvarar ökad noggrannhet, är detsamma som att minimera MSE.

Den förinstallerade tidsserien gold består av dagliga guldpriser under 1 108 dagar. Här används de första 1 000 dagarna som träningsdatamängd, och du beräknar prognoser för de återstående 108 dagarna. Dessa jämförs sedan med de faktiska värdena med hjälp av de enkla prognosfunktionerna naive(), som du använde tidigare i det här kapitlet, och meanf(), som ger prognoser som är lika med medelvärdet av alla observationer. Du behöver ange nyckelordet h (som anger antalet värden du vill prognostisera) för båda.

Den här övningen är en del av kursen

Prognoser i R

Visa kurs

Övningsinstruktioner

  • Använd subset() för att skapa en träningsdatamängd för gold som omfattar de första 1 000 observationerna. Den ska heta train.
  • Beräkna prognoser för testdatamängden, som innehåller resterande data, med hjälp av naive() och tilldela resultatet till naive_fc. Ange h på lämpligt sätt.
  • Beräkna nu prognoser för samma testdatamängd med hjälp av meanf() och tilldela resultatet till mean_fc. Ange h på lämpligt sätt.
  • Jämför noggrannhetsstatistiken för de två metoderna med hjälp av funktionen accuracy().
  • Baserat på resultaten ovan, lagra prognoserna med högst noggrannhet som bestforecasts.

Interaktiv övning med praktiskt arbete

Testa den här övningen genom att slutföra den här exempelkoden.

# 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 <- ___
Redigera och kör kod