Você está na página 1de 5

SériesTemporais A2 - Projeto 1

Emanuel Bissiatti de Almeida

Preparação dos dados

Após a leitura dos dados, foi verificado a existência de linhas duplicadas. Dessa forma, estas linhas foram eliminadas e converti a coluna de tempo para o tipo
de dado temporal. Em seguida agrupei as informações de temperatura de hora em hora por meio da temperatura média deste período. Veja:

Depois, verifiquei que existiam període de tempo nos dados sem registro da temperatura. Assim, foi-se necessário utilizar algum método de interpolação
para preencher os dados faltantes, ecolhi utlilizar a interpolação linear da biblioteca pandas para tratar esses dados. Por fim, exportei os dados de interesse
limpos para um novo arquivo para facilitar a análise de dados que virá a seguir.

Análise dos dados

Após observar e tratar os dados, vamos compreender estatísticamente como essa série temporal está distribuida. Primeiramente, vamos decompor a série
nos termos da tendência e da sazionalidade anual, semanal e diária:

Observa-se a presença de sazionalidade principalemente a sazionalidade anual e diária (observe a escala). Já a tendência aparenta ser muito fraca.

Então, vamos verificar se esta série possuiu tendência, com o auxílio do teste estatístico ADF (Augmented Dickey–Fuller test - Wikipedia) que testa se os
dados possuem raiz unitária, ou seja, são não estacionários, pelo seguinte teste de hipótese:
é
H0 = A s rie temporal é não estacionária.
{
é
H1 = A s rie temporal é estacionária.

Se o p-valor é inferor a 0.05 rejeitamos a hipótese nula.

Ao realizar o teste ADF da biblioteca python "statsmodels.tsa" verificamos que o p-valor é igual a: p = 1.190598197778221e − 13, ou seja, há forte evidência
para rejeitamos a hipótese nula. Concluimos que a série é estacionária.

Assim, ao remover a sazionalidade anual e diária, é possível estudar o comportamento do ruído branco da série, observe:

Modelagem Clásssica

Naive Models

Como foi possível observar uma grande sazionalidade sobre a série temporal. Assim, dentro os modelos naive, um dos que se destacam é o modelo de
Seasonal Naive. Executando para h = 24 passos a frente foi possível obter um erro absoluto médio de M AE = 1.16125 . Já para h = 365 ⋅ 24 o erro foi de
M AE = 4.81347

Double Exponential Smoothing

Devido a existência de sazionalidade, faz sentido utilizar o modelo Exponential Smoothing, veja o resultado para a previsão de h=24:

M AE = 1.0878851209012639

Apesar do erro relativamente baixo, a previsão não foi boa. Esse modelo não se adaptou a bem a sazionalidade diária e anual, é preciso dar mais pesos as
informações anteriores, o modelo LSTM talvez resolva esse problema.

Auto correlação
Analisando a correlação para o lag do intervalo, podemos obter os melhores parâmetros para os modelos a seguir:

ARMA

Aplicando o modelo ARMA, que não é indicado para série sazionais temos:

ARI M A(1, 0, 1)

M AE = 3.2230117993640572

Removendo a sazionalidade anual, por meio da diferença do data atual menos a data do ano anterior, e reaplicando o modelo temos:

ARI M A(1, 0, 1)

M AE = 2.42378

Sazonal ARIMA

Pela naturaza do problema, o modelo ARIMA não irá trzer uma boa predição devido a sazionalidade da série. Então partimos para a análise do ARIMA
sazonal. Como não foi identificado tendência, os componentes D e d são nulos, isto é, um modelo SARMA. Observe o resultado obtido:

SARI M A(1, 0, 1)(1, 0, 1, 24) com M AE = 2.0

Pela natureza do problema existem parâmetros melhores para este modelo, entretanto, por limitações físicas de processamento, não consegui executar este
modelo com o lag equivalente a um ano, sendo este o meu melhor resultado encontrado.

Deep Learning
##LSTM

Um dos principais modelos desta categoria para séries temporais é o LSTM, ele é importanto pois preserva a informação passada durante o treinamento, o
que é fundamental para esta série temporal com forte sazionalidade.

Utilizando uma LSTM 3D (num_samples, num_time_steps, num_features) com a seguinte estruturação interna:

Obtive o seguinte resultado de perda:

Observe, o teste do LSTM

Um dos melhores resultados: M AE = 0.062324

Outros modelos

Afim de complentar o trabalho, busquei conhecer outros modelos usados para tratar com séries temporais, vejamos alguns exemplos a seguir:

Prophet

Modelo de séries temporais do Facebook, foi desenvolvido para suprir a necessidade interna da empresa. Esse modelo foi pensado para dados com as
seguintes propriedades:

Dados coletados por um longo período (meses ou anos), e que possuam o maior detalhamento histórico possível.
Sazonalidades fortes e destacadas.
Feriados ou datas especiais conhecidas a priori.
Tendência de crescimento não linear, que se aproxima de um limite.

Os nossos dados não possui todas essas propriedades, etretanto, é interessante estudar o resultado dessa ferramenta. Veja:

M AE = 5.35225

O resultado não foi tão bom, talvez este modelo não seja muito bom para previsões de intervalos pequenos de tempo.

Conclusão

Após limpar e visualizar os dados e a aplicar modelos de séries temporais para a temperatura, observei que o melhor modelo para os dados é o LSTM com
aquela arquitetura descrita anteriormente. Os modelos de ARIMA e SARIMA era esperado um melhor desempenho nesse trabalho, entretanto eu não
consegui processa-los com os parâmetros de forma adequada. De todo o modo, o modelo de Deep Learning conseguiu se sobresair diante dos demais
conseguindo o menor erro deste trabalho,

Você também pode gostar