Tuesday, November 15, 2016

12 Month Moving Average Seasonality

Ao calcular uma média móvel em execução, colocar a média no período de tempo médio faz sentido No exemplo anterior, calculamos a média dos três primeiros períodos de tempo e colocá-lo próximo ao período 3. Poderíamos ter colocado a média no meio da Intervalo de tempo de três períodos, ou seja, próximo ao período 2. Isso funciona bem com períodos de tempo ímpar, mas não é tão bom para mesmo períodos de tempo. Então, onde colocamos a primeira média móvel quando M 4 Tecnicamente, a Média Móvel cairá em t 2,5, 3,5. Para evitar esse problema, suavizamos as MAs usando M 2. Assim, suavizamos os valores suavizados Se formos um número médio de termos, precisamos suavizar os valores suavizados A tabela a seguir mostra os resultados usando M 4.Calculando um Índice Sazonal Este folheto Deve ser usado junto com o arquivo do MS Excel seasonalindex. xls localizado na página inicial da classe Econ437. 1. Liste os preços mensais em ordem cronológica na Coluna D da planilha. Exemplo. O conjunto de dados fornecido é de janeiro de 1975 a dezembro de 1996, totalizando 264 observações. 2. Calcule um total movimentado de 12 meses centrado adicionando acima os preços para janeiro através de dezembro. Você deve começar com a 6ª observação. Exemplo. Para Junho de 1975 (observação 6) 3.012.822.632.652.672.652.702.942.762.542.302.30 31.97 3. Repita o passo 2 para o resto do conjunto de dados. Nota. Haverá 5 células em branco no início do conjunto de dados na Coluna E e 6 células em branco no final da Coluna E. 4. Calcule o total móvel de 2 meses da Coluna E e insira isto na Coluna F começando com a 7ª observação. Haverá 6 células em branco no início e no final da coluna F. Exemplo. Para observação 7, 31.9731.3363.30. 5. Divida a Coluna F por 24 e insira isto na Coluna G começando com a observação 7. Esta é a média móvel dupla de 12 meses (MA) centrada. 6. Divida os preços originais na Coluna D pela média móvel de 12 meses centralizada na Coluna G e insira esses valores mensais individuais na Coluna H a partir de julho de 1975, observação 7. Não haverá valores para os primeiros 6 meses de 1975 e Nos últimos 6 meses de 1996. 7. Some todos os índices mensais para cada mês e medie-os para obter o valor do índice Raw. Ver tabela abaixo. Encontre a média dos índices brutos. Divida cada mês Raw Index pela Média dos índices Raw para obter a aplicação Index. Spreadsheet ajustada de ajuste sazonal e suavização exponencial É fácil executar o ajuste sazonal e ajustar os modelos de suavização exponencial usando o Excel. As imagens e gráficos de tela a seguir são extraídos de uma planilha que foi configurada para ilustrar o ajuste sazonal multiplicativo e a suavização linear exponencial nos seguintes dados de vendas trimestrais do Outboard Marine: Para obter uma cópia do próprio arquivo de planilha, clique aqui. A versão de suavização exponencial linear que será usada aqui para fins de demonstração é a versão de Brown8217s, simplesmente porque ela pode ser implementada com uma única coluna de fórmulas e há apenas uma constante de suavização para otimizar. Normalmente é melhor usar a versão Holt8217s que tem constantes de suavização separadas para nível e tendência. O processo de previsão prossegue da seguinte forma: (i) primeiro os dados são ajustados sazonalmente (ii) então as previsões são geradas para os dados ajustados sazonalmente através de suavização exponencial linear e (iii) finalmente as previsões sazonalmente ajustadas são quasi mensuradas para obter previsões para a série original . O processo de ajuste sazonal é realizado nas colunas D a G. O primeiro passo no ajuste sazonal é calcular uma média móvel centrada (realizada aqui na coluna D). Isto pode ser feito tomando a média de duas médias anuais que são compensadas por um período em relação um ao outro. (Uma combinação de duas médias de compensação ao invés de uma única média é necessária para fins de centralização quando o número de estações é par.) O próximo passo é calcular a relação com a média móvel - i. e. Os dados originais divididos pela média móvel em cada período - o que é realizado aqui na coluna E. (Isso também é chamado de componente quottrend-cyclequot do padrão, na medida em que os efeitos da tendência e do ciclo de negócios podem ser considerados como sendo tudo isso Permanece após a média de dados de um ano inteiro. Naturalmente, as mudanças mês a mês que não são devido à sazonalidade poderia ser determinada por muitos outros fatores, mas a média de 12 meses suaviza sobre eles em grande medida.) O índice sazonal estimado para cada estação é calculado pela primeira média de todas as razões para essa estação particular, que é feita nas células G3-G6 usando uma fórmula AVERAGEIF. As razões médias são então redimensionadas de modo que somam exatamente 100 vezes o número de períodos em uma estação, ou 400, neste caso, o que é feito nas células H3-H6. Abaixo na coluna F, as fórmulas VLOOKUP são usadas para inserir o valor do índice sazonal apropriado em cada linha da tabela de dados, de acordo com o trimestre do ano que ele representa. A média móvel centrada e os dados ajustados sazonalmente acabam parecidos com isto: Note que a média móvel normalmente se parece com uma versão mais lisa da série ajustada sazonalmente, e é mais curta em ambas as extremidades. Outra planilha no mesmo arquivo do Excel mostra a aplicação do modelo de suavização exponencial linear aos dados dessazonalizados, começando na coluna G. Um valor para a constante de alisamento (alfa) é inserido acima da coluna de previsão (aqui, na célula H9) e Por conveniência é atribuído o nome de intervalo quotAlpha. quot (O nome é atribuído usando o comando quotInsert / Name / Createquot). O modelo LES é inicializado definindo as duas primeiras previsões iguais ao primeiro valor real da série ajustada sazonalmente. A fórmula usada aqui para a previsão de LES é a forma recursiva de equação única do modelo Brown8217s: Esta fórmula é inserida na célula correspondente ao terceiro período (aqui, célula H15) e copiada para baixo a partir daí. Observe que a previsão do LES para o período atual se refere às duas observações precedentes e aos dois erros de previsão anteriores, bem como ao valor de alfa. Assim, a fórmula de previsão na linha 15 refere-se apenas a dados que estavam disponíveis na linha 14 e anteriores. (É claro que, se desejássemos usar a suavização linear simples em vez de linear, poderíamos substituir a fórmula SES aqui. Também poderíamos usar Holt8217s ao invés do modelo LES de Brown8217s, o que exigiria mais duas colunas de fórmulas para calcular o nível ea tendência Que são usados ​​na previsão.) Os erros são computados na coluna seguinte (aqui, coluna J) subtraindo as previsões dos valores reais. O erro médio quadrático é calculado como a raiz quadrada da variância dos erros mais o quadrado da média. (Isto decorre da identidade matemática: VARIANCE MSE (erros) (AVERAGE (erros)) 2.) No cálculo da média e variância dos erros nesta fórmula, os dois primeiros períodos são excluídos porque o modelo não começa a prever até O terceiro período (linha 15 na planilha). O valor ótimo de alfa pode ser encontrado alterando manualmente alfa até que o RMSE mínimo seja encontrado, ou então você pode usar o quotSolverquot para executar uma minimização exata. O valor de alpha que o Solver encontrado é mostrado aqui (alpha0.471). Geralmente é uma boa idéia traçar os erros do modelo (em unidades transformadas) e também calcular e traçar suas autocorrelações em defasagens de até uma estação. Aqui está um gráfico de séries temporais dos erros (ajustados sazonalmente): As autocorrelações de erro são calculadas usando a função CORREL () para calcular as correlações dos erros com elas mesmas retardadas por um ou mais períodos - os detalhes são mostrados no modelo de planilha . Aqui está um gráfico das autocorrelações dos erros nos primeiros cinco lags: As autocorrelações nos intervalos 1 a 3 são muito próximas de zero, mas a espiga no retardo 4 (cujo valor é 0,35) é ligeiramente problemática - sugere que a Processo de ajuste sazonal não foi completamente bem sucedido. No entanto, é apenas marginalmente significativo. 95 para determinar se as autocorrelações são significativamente diferentes de zero são mais ou menos 2 / SQRT (n-k), onde n é o tamanho da amostra e k é o atraso. Aqui n é 38 e k varia de 1 a 5, então a raiz quadrada-de-n-menos-k é de cerca de 6 para todos eles, e, portanto, os limites para testar a significância estatística de desvios de zero são mais ou menos - Ou-menos 2/6, ou 0,33. Se você variar o valor de alfa à mão neste modelo do Excel, você pode observar o efeito sobre as parcelas de tempo de série e de autocorrelação dos erros, bem como sobre o erro raiz-médio-quadrado, que será ilustrado abaixo. Na parte inferior da planilha, a fórmula de previsão é quotbootstrappedquot para o futuro, simplesmente substituindo as previsões de valores reais no ponto onde os dados reais se esgotou - i. e. Onde o futuro começa. (Em outras palavras, em cada célula onde um valor de dados futuro ocorreria, uma referência de célula é inserida que aponta para a previsão feita para esse período.) Todas as outras fórmulas são simplesmente copiadas para baixo de cima: Observe que os erros para previsões de O futuro são todos computados como sendo zero. Isso não significa que os erros reais serão zero, mas sim apenas reflete o fato de que para fins de previsão estamos assumindo que os dados futuros serão iguais às previsões em média. As previsões de LES resultantes para os dados ajustados sazonalmente são as seguintes: Com este valor específico de alfa, que é ideal para as previsões de um período antecipado, a tendência projetada é ligeiramente alta, refletindo a tendência local observada nos últimos 2 anos ou então. Para outros valores de alfa, uma projeção de tendência muito diferente pode ser obtida. Geralmente é uma boa idéia ver o que acontece com a projeção de tendência de longo prazo quando o alfa é variado, porque o valor que é melhor para previsão de curto prazo não será necessariamente o melhor valor para prever o futuro mais distante. Por exemplo, aqui está o resultado que é obtido se o valor de alfa é manualmente definido como 0.25: A tendência de longo prazo projetada é agora negativa em vez de positiva Com um menor valor de alfa, o modelo está colocando mais peso em dados mais antigos em A sua estimativa do nível e da tendência actuais e as suas previsões a longo prazo reflectem a tendência descendente observada nos últimos 5 anos, em vez da tendência ascendente mais recente. Este gráfico também ilustra claramente como o modelo com um valor menor de alfa é mais lento para responder a pontos de quoturno nos dados e, portanto, tende a fazer um erro do mesmo sinal para muitos períodos em uma linha. Seus erros de previsão de 1 passo são maiores em média do que aqueles obtidos antes (RMSE de 34,4 em vez de 27,4) e fortemente positivamente autocorrelacionados. A autocorrelação lag-1 de 0,56 excede largamente o valor de 0,33 calculado acima para um desvio estatisticamente significativo de zero. Como uma alternativa ao avanço do valor de alfa para introduzir mais conservadorismo em previsões de longo prazo, um fator quottrend de amortecimento é às vezes adicionado ao modelo para fazer a tendência projetada aplanar após alguns períodos. A etapa final na construção do modelo de previsão é a de igualar as previsões de LES, multiplicando-as pelos índices sazonais apropriados. Dessa forma, as previsões reseasonalized na coluna I são simplesmente o produto dos índices sazonais na coluna F e as previsões de LES estacionalmente ajustadas na coluna H. É relativamente fácil calcular intervalos de confiança para as previsões de um passo à frente feitas por este modelo: primeiro Calcular o RMSE (erro quadrático médio, que é apenas a raiz quadrada do MSE) e, em seguida, calcular um intervalo de confiança para a previsão ajustada sazonalmente, adicionando e subtraindo duas vezes o RMSE. (Em geral, um intervalo de confiança de 95 para uma previsão de um período antecipado é aproximadamente igual à previsão de pontos mais ou menos duas vezes o desvio padrão estimado dos erros de previsão, assumindo que a distribuição de erro é aproximadamente normal eo tamanho da amostra É grande o suficiente, digamos, 20 ou mais. Aqui, o RMSE em vez do desvio padrão da amostra dos erros é a melhor estimativa do desvio padrão de futuros erros de previsão porque leva bias, bem como variações aleatórias em conta.) Os limites de confiança Para a previsão ajustada sazonalmente são então reseasonalized. Juntamente com a previsão, multiplicando-os pelos índices sazonais apropriados. Neste caso o RMSE é igual a 27,4 e a previsão ajustada sazonalmente para o primeiro período futuro (Dec-93) é 273,2. De modo que o intervalo de confiança ajustado sazonalmente é de 273,2-227,4 218,4 para 273,2227,4 328,0. Multiplicando esses limites por Decembers índice sazonal de 68,61. Obtemos limites de confiança inferior e superior de 149,8 e 225,0 em torno da previsão de ponto Dec-93 de 187,4. Os limites de confiança para as previsões de mais de um período de tempo em geral aumentarão à medida que o horizonte de previsão aumentar, devido à incerteza quanto ao nível e à tendência, bem como aos fatores sazonais, mas é difícil computá-los em geral por métodos analíticos. (A maneira apropriada de calcular limites de confiança para a previsão de LES é usando a teoria ARIMA, mas a incerteza nos índices sazonais é outra questão.) Se você quer um intervalo de confiança realista para uma previsão mais de um período à frente, tomando todas as fontes de A sua melhor aposta é usar métodos empíricos: por exemplo, para obter um intervalo de confiança para uma previsão de duas etapas à frente, você poderia criar outra coluna na planilha para calcular uma previsão de duas etapas para cada período ( Por bootstrapping a previsão one-step-ahead). Em seguida, calcular o RMSE dos erros de previsão de 2 passos à frente e usá-lo como a base para um intervalo de confiança de duas etapas. Time Series Forecasting Simple Moving Average A média móvel simples pode ser calculada usando ma () da previsão sm lt - Ma (ts, order12) Linhas de média móvel de 12 meses (sm, colred) lote Suavização exponencial A suavização exponencial simples, dupla e tripla pode ser realizada usando a função HoltWinters (). Existem várias implementações do método Holt Winters hw () e ets (). Biblioteca (previsão) Suavização exponencial simples: Nível Somente modelo lt-hw (treinamentoData, inicial ideal, h (forecastPeriodLen), betaNULL, gammaNULL) h é o não. (PrevisãoPeriodLen), gammaNULL) Holt Winters: Modelo de Nível, Tendência e Sazonalidade lt - hw (formaçãoData, optimização inicial, h (forecastPeriodLen) ) Modelo (modelo) precisão (modelo) calcular precisão medidas ARIMA O pacote de previsão oferece a função auto. arima () para ajustar os modelos ARIMA. Também pode ser ajustado manualmente usando Arima (). Uma advertência com ARIMA modelos em R é que ele não tem a funcionalidade para caber longa sazonalidade de mais de 350 períodos por exemplo: 365 dias para dados diários ou 24 horas para 15 seg dados. Ajustar e prever com auto. arima () autoArimaFit lt - auto. arima (tsData) gráfico (previsão (autoArimaFit, h20)) Ajustar e prever com Arima () arimaFit lt - Arima (tsData, orderc (3,1,0)) Como prever modelos de ARIMA com sazonalidade longa (Maior que 350 períodos) Ao traçar sua previsão de Arima (), você encontra uma previsão mais ou menos plana, poderia ser por causa da sazonalidade longa. Nesse caso, você pode alimentar a sazonalidade como um regressor externo através do xregargumento. Fit lt - Arima (tsData, orderc (3,1,0)) ajuste modelo Arima Fit lt - auto. arima (tsData, seasonalFALSE, xregfourier (tsData, 4)) ajuste auto. arima modelo gráfico (previsão (Fit, h20) ) Pred lt - predict (fit, newxregnewXregVar) caminho alternativo ao gráfico de previsão (forecast, hh, xregfourierf (tsData, 4, h))) h é o número de previsões Se você estiver usando um vetor numérico como um regressor externo (xreg ), Certifique-se de alterá-lo para um data. frame () antes de alimentá-lo como um parâmetro xreg para auto. arima (). Você também pode usar vários regressores externos vinculando-os como um data. frame (). Alguns Regressores Externos Úteis Para Arima () e auto. arima () Qualquer dataframe com tantas linhas quanto comprimento de dados ts pode ser usado como argumento xreg. Um par de xregs comuns que são usados ​​para modelar efeitos sazonais estão abaixo. Xreg1 lt - seasonaldummy (tsData) cria variável binária dummy para cada período em uma estação. Xreg2 lt-modelo. matrix (como. fator (semana) 0)) dia da semana pode ser um dia do mês, hora do dia, indicador de férias, etc. Como Modelar séries temporais com padrão de sazonalidade complexa Use os tbats () no pacote de previsão. As séries temporais com sazonalidade múltipla podem ser modeladas com este método. Uma vez que este é um procedimento computacionalmente intensivo, a facilidade de processamento em paralelo pode ser alavancada. TbatsFit lt - tbats (tsData, use. parallelTRUE, num. cores 2) ajuste tbats modelo parcela (previsão (ajuste)) parcela componentes lt - tbatsponents (tbatsFit) parcela (componentes) Como Encontrar Intervalos de Confiança Para as Minhas Previsões A previsão () Função tem a facilidade. Ao fornecer o argumento predição. intervalTRUE e nível n, os intervalos de previsão para uma dada confiança são calculados. Abaixo está um formato geral do código. Modelo lt - HoltWinters (TS) predict (modelo, 50, prediction. interval TRUE, nível 0,99) prediction. interval TRUE Funções Mais Úteis Relacionadas com o Tempo SeriesRolling 12 Meses Média em DAX Computing a média móvel de 12 meses no DAX parece um simples Tarefa, mas esconde alguma complexidade. Este artigo explica como escrever a melhor fórmula evitando armadilhas comuns usando funções de inteligência de tempo. Começamos com o usual modelo de dados AdventureWorks, com a tabela Produtos, Vendas e Calendário. O Calendário foi marcado como uma tabela de calendário (é necessário trabalhar com qualquer função de inteligência de tempo) e construímos uma hierarquia simples ano-mês-data. Com esta configuração, é muito fácil criar uma primeira tabela dinâmica mostrando as vendas ao longo do tempo: Ao fazer a análise de tendências, se as vendas estão sujeitas à sazonalidade ou, de forma mais geral, se você quiser remover o efeito de picos e quedas nas vendas, Técnica comum é a de calcular o valor ao longo de um determinado período, geralmente 12 meses, e média dele. A média móvel em 12 meses fornece um bom indicador da tendência e é muito útil em gráficos. Dada uma data, podemos calcular a média móvel de 12 meses com esta fórmula, que ainda tem alguns problemas que vamos resolver mais tarde: O comportamento da fórmula é simples: calcula o valor de Vendas após a criação de um filtro no calendário que Mostra exatamente um ano inteiro de dados. O núcleo da fórmula é o DATESBETWEEN, que retorna um conjunto inclusivo de datas entre os dois limites. O mais baixo é: Leitura do mais íntimo: se estamos mostrando dados de um mês, digamos julho 2007, tomamos a última data visível usando LASTDATE, que retorna o último dia em julho de 2007. Então usamos NEXTDAY para tomar o primeiro De agosto de 2007 e finalmente usamos SAMEPERIODLASTYEAR para mudar de volta um ano, produzindo 1 de agosto de 2006. O limite superior é simplesmente LASTDATE, ou seja, final de julho de 2007. Se usarmos essa fórmula em uma tabela dinâmica, o resultado parece ótimo, mas nós Tem um problema para a última data: Na verdade, como você pode ver na figura, o valor é corretamente calculado até 2008. Então, não há valor em 2009 (o que é correto, não temos vendas em 2009), mas não há Um valor surpreendente em dezembro de 2010, onde nossa fórmula mostra o total geral em vez de um valor em branco, como seria de esperar. Na verdade, em dezembro, LASTDATE retorna o último dia do ano e NEXTDAY deve retornar a 1 de janeiro de 2011. Mas NEXTDAY é uma função de inteligência de tempo e é esperado para retornar conjuntos de datas existentes. Este fato não é muito evidente e vale a pena algumas palavras mais. Funções de inteligência de tempo não executam matemática em datas. Se você quiser tomar o dia após uma determinada data, você pode simplesmente adicionar 1 a qualquer coluna de data, eo resultado será no dia seguinte. Em vez disso, funções de inteligência de tempo deslocam conjuntos de data para trás e para frente ao longo do tempo. Assim, NEXTDAY leva sua entrada (no nosso caso uma tabela de uma linha com o 31 de dezembro de 2010) e muda um dia depois. O problema é que o resultado deve ser 1 de janeiro de 2011 mas, como a tabela de calendário não contém essa data, o resultado é em branco. Assim, nossa expressão calcula vendas com um limite inferior em branco, que significa o começo do tempo, rendendo como resultado o total geral das vendas. Para corrigir a fórmula é suficiente para alterar a ordem de avaliação do limite inferior: Como você pode ver, agora NEXTDAY é chamado após a mudança de um ano de volta. Desta forma, tomamos 31 de dezembro de 2010, movê-lo para 31 de dezembro de 2009 e tomar o dia seguinte, que é 01 de janeiro de 2010: uma data existente na tabela de calendário. O resultado é agora o esperado: Neste ponto, precisamos apenas dividir esse número por 12 para obter a média móvel. Mas, como você pode facilmente imaginar, nem sempre podemos dividi-la por 12. Na verdade, no início do período não há 12 meses para agregar, mas um número menor. Precisamos calcular o número de meses para os quais há vendas. Isso pode ser feito usando a filtragem cruzada da tabela de calendário com a tabela de vendas depois de aplicarmos o novo contexto de 12 meses. Definimos uma nova medida que calcula o número de meses existentes no período de 12 meses: Você pode ver na próxima figura que a medida Months12M calcula um valor correto: Vale ressaltar que a fórmula não funciona se você escolher um período Mais de 12 meses, porque o CalendarMonthName tem apenas 12 valores. Se você precisar de períodos mais longos, você precisará usar uma coluna YYYYMM para ser capaz de contar mais de 12. A parte interessante desta fórmula que usa a filtragem cruzada é o fato de que ele calcula o número de meses disponíveis, mesmo quando você filtrar usando outros atributos. Se, por exemplo, você selecionar a cor azul usando um slicer, em seguida, as vendas começam em julho de 2007 (não em 2005, como acontece com muitas outras cores). Usando o filtro cruzado no Sales, a fórmula calcula corretamente que em julho de 2007 há um único mês de vendas disponíveis para o Blue: Neste ponto, a média móvel é apenas um DIVIDE away: Quando usamos em uma Tabela Dinâmica, nós ainda Tem um pequeno problema: na verdade, o valor é calculado também para os meses para os quais não há vendas (ou seja, futuros meses): Isso pode ser resolvido usando uma instrução IF para evitar que a fórmula de mostrar valores quando não há vendas. Eu não tenho nada contra IF, mas, para o desempenho viciado entre você, é sempre vale a pena lembrar que IF pode ser um assassino de desempenho, porque poderia forçar o motor fórmula DAX para chutar. Neste caso específico, a diferença é insignificante, mas , Como uma regra geral, a melhor maneira de remover o valor quando não há vendas é confiar em fórmulas de mecanismo de armazenamento puro como este: Comparando um gráfico usando o Avg12M com outro que mostra Vendas você pode facilmente apreciar como a média móvel Esboça as tendências de uma forma muito mais limpa: Download Mantenha-me informado sobre os próximos artigos (boletim informativo). Desmarque para baixar livremente o arquivo.


No comments:

Post a Comment