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
Övningsinstruktioner
- Använd
subset()för att skapa en träningsdatamängd förgoldsom omfattar de första 1 000 observationerna. Den ska hetatrain. - Beräkna prognoser för testdatamängden, som innehåller resterande data, med hjälp av
naive()och tilldela resultatet tillnaive_fc. Angehpå lämpligt sätt. - Beräkna nu prognoser för samma testdatamängd med hjälp av
meanf()och tilldela resultatet tillmean_fc. Angehpå 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 <- ___