Avaliando a acurácia de previsões com métodos não sazonais
Em ciência de dados, um conjunto de treinamento é um conjunto de dados usado para descobrir possíveis relações. Um conjunto de teste é um conjunto de dados usado para verificar a força dessas relações potenciais. Ao separar um conjunto de dados nessas partes, você geralmente destina mais dados para treinamento e menos para teste.
Uma função que pode ser usada para criar conjuntos de treinamento e teste é subset(), que retorna um subconjunto de uma série temporal em que os argumentos opcionais start e end são especificados usando valores de índice.
> # x é um vetor numérico ou série temporal
> # Para obter as observações de 101 a 500
> train <- subset(x, start = 101, end = 500, ...)
> # Para obter as primeiras 500 observações
> train <- subset(x, end = 500, ...)
Como você viu no vídeo, outra função, accuracy(), calcula várias estatísticas de acurácia de previsão dadas as previsões e as observações reais correspondentes. Ela é inteligente o suficiente para encontrar as observações relevantes se você fornecer mais do que aquelas que está prevendo.
> # f é um objeto da classe "forecast"
> # x é um vetor numérico ou série temporal
> accuracy(f, x, ...)
As medidas de acurácia fornecidas incluem o root mean squared error (RMSE), que é a raiz quadrada do mean squared error (MSE). Minimizar o RMSE, o que corresponde a aumentar a acurácia, é o mesmo que minimizar o MSE.
A série temporal pré-carregada gold contém preços diários do ouro por 1108 dias. Aqui, você usará os primeiros 1000 dias como conjunto de treinamento e calculará previsões para os 108 dias restantes. Elas serão comparadas aos valores reais desses dias usando as funções simples de previsão naive(), que você usou anteriormente neste capítulo, e meanf(), que fornece previsões iguais à média de todas as observações. Você precisará especificar a palavra-chave h (que define o número de valores que você quer prever) para ambas.
Este exercício faz parte do curso
Previsão em R
Instruções do exercício
- Use
subset()para criar um conjunto de treinamento degoldcom as primeiras 1000 observações. Chame-o detrain. - Calcule previsões do conjunto de teste, contendo os dados restantes, usando
naive()e atribua anaive_fc. Definahde forma apropriada. - Agora, calcule previsões do mesmo conjunto de teste usando
meanf()e atribua amean_fc. Definahde forma apropriada. - Compare as estatísticas de acurácia de previsão dos dois métodos usando a função
accuracy(). - Com base nos resultados acima, armazene as previsões com maior acurácia em
bestforecasts.
Exercício interativo prático
Experimente este exercício completando este código de exemplo.
# 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 <- ___