Suavização exponencial e medidas de acurácia | Monolito Nimbus
Suavização exponencial e medidas de acurácia
Deixe um comentário	Existe um grande número de diferentes métodos de previsão baseados apenas na análise de valores passados de uma sequência de tempo. O principal instrumento desses métodos é o esquema de extrapolação, onde presume-se que as propriedades de sequência identificadas em um determinado de tempo passado serão as mesmas no passado e no futuro.
Os métodos de previsão com modelos de suavização baseiam-se na ideia de que observações passadas contêm informações sobre o padrão da série temporal, distinguindo o padrão de comportamento de eventuais ruídos. Um exemplo é o uso de Médias Móveis Simples (MMS) e ponderadas (que multiplica fatores para fornecer diferentes pesos para diferentes dados), muito utilizadas para estudar a volatilidade ao comparar médias de menor período (comprimento de média) com as de maior comprimento. No entanto, comportamentos muito antigos tem o mesmo peso de comportamentos mais recentes, correndo-se o risco de levar previsões próximas do comportamento médio de toda a amostra.
Primeiramente, suponha um modelo simples no qual o processo simulado é a soma nível de processo variável e da média zero variável aleatória (tudo em função do tempo). É possível multiplicar o processo simulado por um valor entre 0 e 1, chamado de constante de suavização α . Com α = 0, não há suaviação e o resultado será um valor constante para qualquer tempo; se α = 1, o nível do processo não sofre distorção, assim como o componente aleatório.
A Suavização Exponencial Simples (SES) pondera as observações passadas com pesos maiores às observações mais recentes, eliminando uma das desvantagens do método de MMS. Uma técnica similar a essa é a Suavização Exponencial de Holt (SEH), recomendada para séries que apresentam tendência. Se a série também contiver sazonalidade, a recomendação vai para outra técnica. Veja também sobre tendência e sazonalidade clicando no link.
A Suavização Exponencial de Holt-Winters (HW) envolve três equações com três parâmetros de suavização que são associados a cada componente da série: nível, tendência e sazonalidade. Existem variações dessa técnica: tanto o termo de sazonalidade quanto o de tendência pode ser adicionado e/ou multilplicado ao nível de processo variável, de modo normal ou amortecido. As 15 variações decorrentes desses cenários podem ser vistas em tabela do link, com as fórmulas para cálculos recursivos e previsões pontuais – em cada caso, lt denota o nível da série no tempo t, bt denota a inclinação no tempo t, st é a componente sazonal da série no tempo t e m é o número de estações em um ano, enquanto que α, β, γ e φ são os parâmetros de suavização.
Ainda nesse texto do link, a terminologia utiliza letras para identificar o tipo de erro, de tendência e de sazonalidade, respectivamente. Essas letra são as seguintes:
N = nenhum (exceto para erro)
A = aditivo
M = multiplicativo
d = amortecimento (em conjunto com A ou M)
Z = escolha automática
Por exemplo, "ANN" é suavização exponencial simples com erros aditivos e "MAM" é o método multiplicativo de Holt-Winters com erros multiplicativos. Para escolher se é amortecido ou não, usar o argumento "dumped": se TRUE, usa uma tendência amortecida (aditivo ou multiplicativo); se NULL, tendências tanto amortecidas como não amortecidas serão testadas e retornará o melhor modelo (de acordo com o critério de informação ic) retornado.
No R, a função ets() do pacote forecast calcula a suavização exponencial recebendo como argumento um vetor numérico ou uma série temporal (convertida pela função ts()). Além disso, deve-se informar o critério de informação "ic" utilizado para realizar a escolha de modelos ("aicc","aic","bic") e três letras identificando o método a ser utilizado ("model") conforme os códigos apresentados anteriormente. Também permite entrar como argumento os valores de α, β, γ e φ assim como outros parâmetros. Exemplo de uso: model = ets(dados.ts, model="ZZZ", damped = TRUE, ic='aic')
Gráfico com dados observados e previstos usando modelo ETS
(E,T,S)
(M,Md,M)
305.7329
-5.656195
60.13781
49.68313
-0.8560223
4.638675
0.4636062
-0.1618966
Visualmente, os dados observados apresentam sazonalidade anual, apesar de não ter muitos valores para confirmar com mais certeza. Assim, todas as combinações envolvendo o último termo como "N" resultaram em linhas retas horizontais ou com tendência de subida. Deixando tudo no automático, a escolha é ETS(M,Md,M).
Certas estatísticas são informações importantes para comparar os modelos de suavização e decidir se representam um bom ajuste aos dados. Todas baseiam-se no cálculo do um erro de previsão de um passo à frente no tempo t, dado pela diferença entre o valor de sequência de entrada no tempo (yt) e a previsão no mesmo instante (y't). Nas fórmulas seguintes, n é o número de amostras:
Erro médio absoluto (MAE – Mean Absolute Error) ou Desvio Padrão Absoluto da Média (MAD – Mean Absolute Deviation)
Representa o desvio padrão do ajuste em relação à média nas mesmas unidades dos dados. O erro quadrado aqui é substituído pelo valor absoluto do erro.
Erro quadrado/quadrático médio (MSE – Mean Squared Error) ou Desvio Padrão Quadrático da Média (MSD – Mean Squared Deviation)
Muito sensível a erro individuais, por isso, muitas vezes é utilizado o MAE como alternativa. Um MAE/MAD baixo e um MSE/MSD alto indica ocorrência de outliers no conjunto de dados. Ao tirar a raiz desse valor, tem-se a raiz do erro quadrático médio (RMSE – Root Mean Squared Error).
Média percentual absoluta do erro (MAPE – Mean Absolute Percentage Erro)
Os erros percentuais têm a vantagem de serem independentes da escala e, portanto, são frequentemente usados para comparar o desempenho da previsão entre diferentes conjuntos de dados. No entanto, têm a desvantagem de serem infinitas ou indefinidas se yt = 0 e tenda a valores extremos quando qualquer yt é próximo de zero.
– Erro médio absoluto escalado (MASE – mean absolute scaled error)
A equação vale para uma série temporal com sazonalidade, onde m é o período sazonal – para não-sazonal, usar m = 1. O erro escalado é menor que um se o modelo testado for melhor que a média das previsões um passo a frente "in sample" feitas por um método "ingênuo" (melhor previsão para amanhã é o valor de hoje).
Em R, dentro do pacote forecast, a função accuracy(f,x) calcula todas essas medidas. Ela recebe como argumento um objeto f da classe "forecast" ou um vetor numérico contendo previsões e um vetor numérico x (opcional) contendo valores reais do mesmo comprimento de objeto, ou uma série de tempo sobrepostos com os tempos de f. Ela também irá trabalhar com Arima, ets e lm objetos se x é omitido.
Outra opção é calcular diretamente, conforme explicado no link.
ETS vs ARIMA
O modelo autorregressivo integrado de médias móveis (ARIMA) é uma generalização de um modelo de média móvel autorregressiva (ARMA). A diferença entre estes dois modelos é o uso de um termo de integração que precisa diferenciar as séries temporais (subtraindo a observação no período corrente do anterior), deixando-as estacionárias – condição necessária para operar com um modelo assim. Os parâmetros de um modelo ARIMA são três (p, d, q) e representam respectivamente o parâmetro autorregressivo, o parâmetro de integração e a média móvel. A melhor maneira de escolher os parâmetros é usar a técnica Box-Jenkins (1971), analisando a função de autocorrelação (ACF) e a função de autocorrelação parcial (PACF) das séries temporais diferenciadas.
Apesar de propostos por Holt e Brown bem antes dos trabalhos de Box e Jenkins, os modelos lineares de suavização exponencial são todos casos especiais de modelos ARIMA. Já os modelos de suavização exponencial não linear não têm equivalentes equivalentes ARIMA. Há também muitos modelos ARIMA que não têm equivalente de suavização exponencial. Em particular, todo modelo ETS não é estacionário, enquanto que os modelos ARIMA podem ser estacionários. A tabela do link apresenta algumas relações de equivalência para as duas classes de modelos.
Gráfico de diferenças, autocorrelação (ACF) e autocorrelação parcial (FACP) – comando tsdisplay(diff(dados.ts,1)) no R
Resultado dos testes de estacionariedade e de tendência:
ADF: 0.2285
KPSS: 0.0798
Runs: statistic = -2.0871, runs = 8, n1 = 12, n2 = 12, n = 24, p-value = 0.03688
Cox Stuart: statistic = 9, n = 12, p-value = 0.146
Mann-Kendall Rank: statistic = 1.8851, n = 24, p-value = 0.05941
Gráficos com ARIMA(1,0,0), ARIMA(0,1,0), ARIMA(0,0,1) e ARIMA(1,1,1) e suas projeções
Estatísticas dos modelos e projeções:
(p,d,q)
4.847714
164.9907
-3.636337
16.85215
1.539571
0.0658907
24.95942
205.0826
163.1261
-0.3655325
15.84919
1.522172
-0.0869532
1.735543
217.2929
176.3508
-5.053277
18.01476
1.645575
0.1723885
26.01431
204.0288
161.0937
-0.4360241
15.72157
1.503207
0.01010683
A função auto.arima() retorna o modelo com menor AIC – nesse caso, o modelo escolhido foi o ARIMA(1,0,0). No entanto, tá na cara que essas projeções estão furadas! Isso porque a série tem uma parte sazonal, conforme mencionando ao falar de ETS, que deve ser incluída no modelo.
A parte sazonal de um modelo ARIMA tem a mesma estrutura que a parte não sazonal: ARIMA(p,d,q)x(P,D,Q) onde P é o número de termos sazonais autorregressivos, D é o número de diferenças sazonais, Q é o número de termos de média móvel sazonal.
Assim, aplicou-se diferenciação "D=1" na parte sazonal como outro argumento na função auto.arima(), obtendo-se o modelo "ARIMA(0,0,0)(0,1,0)[12] with drift":
Gráficos com ARIMA(0,0,0)(0,1,0) e ARIMA(0,0,0) e suas projeções
Estatísticas dos modelos e projeções
(p,d,q)x(P,D,Q)
-3.031533e-13
269.9837
-7.407961
22.68479
0.6318802
(0,0,0)(0,1,0)
0.5168921
81.45377
48.76689
-0.4894911
4.476549
0.4550565
-0.08943678
Caso o termo "D" não seja informado, será aplicado o resultado do teste OCSB. Havendo necessidade de diferenciação na parte não-sazonal (decidida através do teste KPSS), haveria mudança no valor de "d", mas também poderia ser colocado usando como argumento "d=1" na função para diferenciação de ordem 1. Exemplo de uso: auto.arima(dados.ts, D=1)
O pacote forecast não tem como incluir regressores usando ETS – uma outra formulação para incluir regressores foi proposta em um trabalho comentado no link, mas é mais confusa e difícil de interpretar do que usar um modelo ARIMA. Ele também não ajusta um modelo ARIMA com sazonalidade maior do que 350 (fonte) – pode-se usar termos de Fourier para a sazonalidade e erros ARMA para a dinâmica de curto prazo.
De modo geral, quanto mais curto o intervalo de observação disponível, maior é a probabilidade de se ter uma visão errada em relação ao processo como um todo. Por outro lado, ao fazer uma previsão de curto prazo, a redução do tamanho da amostra pode conduzir ao aumento da precisão de tal previsão. Por exemplo: fazer uma previsão de tempo usando diretamente uma grande série climatológica pode levar às previsões serem próximas à média climatológica, dando um peso muito baixo às variações mais recentes, podendo inclusive suavizar demasiadamente extremos meteorológicos.
Outro aspecto para se considera em previsões: quanto maior o intervalo de previsão, mais forte o efeito da variabilidade das características de sequência sobre o erro de previsão.
A comparison of forecast models to predict weather parameters
Portal Action – Modelos de suavização exponencial
MQL5 – Previsão de séries temporais utilizando suavização exponencial
Renato Vieira dos Santos – Uma Aplicação de Métodos de Renormalização ao Estudo de Séries Temporais Financeiras
Rob Hyndman & George Athana­sopou­los – Holt-Winters seasonal method
Rob Hyndman & George Athana­sopou­los – Evaluating forecast accuracy
Robert Nau – What's the bottom line? How to compare models
Robert Nau – What's a good value for R-squared?
Este post foi publicado em Ciências, Matemática e marcado com a tag Matemática, R em 30 de novembro de 2016 por Vinicius.	Busca no site