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.