Séries Temporais - Métodos Ingênuos
Introdução
Métodos ingênuos, como assumir que o valor previsto no tempo 't' é o valor real da variável no tempo 't-1' ou média móvel da série, são usados para avaliar o quão bem os modelos estatísticos e modelos de aprendizado de máquina podem executar e enfatizar sua necessidade.
Neste capítulo, vamos experimentar esses modelos em um dos recursos de nossos dados de série temporal.
Primeiro, veremos a média do recurso de 'temperatura' de nossos dados e o desvio em torno dele. Também é útil ver os valores máximos e mínimos de temperatura. Podemos usar as funcionalidades da biblioteca numpy aqui.
Mostrando estatísticas
Em [135]:
import numpy
print (
'Mean: ',numpy.mean(df['T']), ';
Standard Deviation: ',numpy.std(df['T']),';
\nMaximum Temperature: ',max(df['T']),';
Minimum Temperature: ',min(df['T'])
)
Temos as estatísticas para todas as 9357 observações na linha do tempo com espaçamento igual, que são úteis para entendermos os dados.
Agora vamos tentar o primeiro método ingênuo, definindo o valor previsto no momento igual ao valor real no momento anterior e calcular a raiz do erro quadrático médio (RMSE) para quantificar o desempenho desse método.
Que mostra uma r método naïve
Em [136]:
df['T']
df['T_t-1'] = df['T'].shift(1)
Em [137]:
df_naive = df[['T','T_t-1']][1:]
Em [138]:
from sklearn import metrics
from math import sqrt
true = df_naive['T']
prediction = df_naive['T_t-1']
error = sqrt(metrics.mean_squared_error(true,prediction))
print ('RMSE for Naive Method 1: ', error)
RMSE para Método Naive 1: 12.901140576492974
Vejamos o próximo método ingênuo, em que o valor predito no tempo presente é igualado à média dos períodos de tempo que o precedem. Iremos calcular o RMSE para este método também.
Mostrando 2 nd método ingénuo
Em [139]:
df['T_rm'] = df['T'].rolling(3).mean().shift(1)
df_naive = df[['T','T_rm']].dropna()
Em [140]:
true = df_naive['T']
prediction = df_naive['T_rm']
error = sqrt(metrics.mean_squared_error(true,prediction))
print ('RMSE for Naive Method 2: ', error)
RMSE for Naive Method 2: 14.957633272839242
Aqui, você pode experimentar vários períodos de tempo anteriores também chamados de 'atrasos' que deseja considerar, que são mantidos como 3 aqui. Nestes dados, pode ser visto que conforme você aumenta o número de defasagens e o erro aumenta. Se o lag for mantido em 1, ele se tornará o mesmo que o método ingênuo usado anteriormente.
Points to Note
Você pode escrever uma função muito simples para calcular a raiz do erro quadrático médio. Aqui, usamos a função de erro quadrático médio do pacote 'sklearn' e então obtemos sua raiz quadrada.
No pandas, df ['column_name'] também pode ser escrito como df.column_name, no entanto, para este conjunto de dados df.T não funcionará da mesma forma que df ['T'] porque df.T é a função para transpor um dataframe. Portanto, use apenas df ['T'] ou considere renomear esta coluna antes de usar a outra sintaxe.