Monday 11 December 2017

Moving average pure data


Os modelos ARIMA são, em teoria, a classe mais geral de modelos para prever uma série de tempo que pode ser feita para ser estacionária por diferenciação se necessário, talvez em conjunto com transformações não-lineares Tais como registrar ou desinflar, se necessário Uma variável aleatória que é uma série temporal é estacionária se suas propriedades estatísticas são todas constantes ao longo do tempo Uma série estacionária não tem tendência, suas variações em torno de sua média têm uma amplitude constante, e ele se move de forma consistente Ou seja, seus padrões de tempo aleatórios de curto prazo sempre se parecem em um sentido estatístico. A última condição significa que suas correlações de autocorrelações com seus próprios desvios anteriores da média permanecem constantes ao longo do tempo ou, de forma equivalente, que seu espectro de poder permanece constante ao longo do tempo. Variável desta forma pode ser vista como usual como uma combinação de sinal e ruído, eo sinal se um é aparente poderia ser um patt De reversão média rápida ou lenta, ou oscilação sinusoidal, ou alternância rápida no sinal, e também poderia ter uma componente sazonal Um modelo ARIMA pode ser visto como um filtro que tenta separar o sinal do ruído, eo sinal é então Extrapolada para o futuro para obter previsões. A equação de previsão de ARIMA para uma série de tempo estacionária é uma equação de tipo linear de regressão linear, na qual os preditores consistem em atrasos da variável dependente e / ou atrasos dos erros de previsão Isso é. Valor predito de Y Uma soma constante e ou ponderada de um ou mais valores recentes de Y e / ou uma soma ponderada de um ou mais valores recentes dos erros. Se os preditores consistem apenas em valores defasados ​​de Y é um modelo autoregressivo auto-regredido puro, Que é apenas um caso especial de um modelo de regressão e que poderia ser equipado com software de regressão padrão. Por exemplo, um modelo AR 1 auto-regressivo de primeira ordem para Y é um modelo de regressão simples no qual a variável independente i Se apenas alguns dos preditores são defasagens dos erros, um modelo ARIMA não é um modelo de regressão linear, porque não há como especificar o erro do último período s Como uma variável independente, os erros devem ser calculados periodicamente quando o modelo é ajustado aos dados. Do ponto de vista técnico, o problema com o uso de erros retardados como preditores é que as previsões do modelo não são funções lineares do Assim, os coeficientes em modelos ARIMA que incluem erros retardados devem ser estimados por métodos de otimização não-linear escalada em vez de simplesmente resolver um sistema de equações. A sigla ARIMA significa Auto-Regressive Integrated Média Móvel As baixas das séries estacionalizadas na equação de previsão são chamadas de termos autorregressivos, os atrasos dos erros de previsão são chamados de termos de média móvel e uma série de tempo que precisa ser Ser diferenciado para ser feito estacionário é dito ser uma versão integrada de uma série estacionária Random-pé e modelos de tendência aleatória, modelos autorregressivos e modelos de suavização exponencial são todos os casos especiais de modelos ARIMA. Um modelo ARIMA não sazonal é classificado como um ARIMA P, d, q modelo, where. p é o número de termos autorregressivos. d é o número de diferenças não sazonais necessárias para a estacionariedade, e. q é o número de erros de previsão defasados ​​na equação de previsão. A equação de previsão é construída da seguinte forma Notemos que a segunda diferença de Y o caso d 2 não é a diferença de dois períodos atrás. Em vez disso, é a diferença de primeira diferença da primeira diferença que é O análogo discreto de uma segunda derivada, ou seja, a aceleração local da série em vez de sua tendência local. Em termos de y, a equação de previsão geral é. Aqui os parâmetros de média móvel s são definidos de modo que seus sinais sejam negativos na equação Seguindo a convenção introduzida por Box e Jenkins Alguns autores e softwares, incluindo a linguagem de programação R, definem-nos de modo que eles tenham mais sinais ao invés. Quando os números reais são conectados à equação, não há ambigüidade, mas é importante saber qual convenção O software usa quando você está lendo a saída Muitas vezes os parâmetros são indicados por AR 1, AR 2,, e MA 1, MA 2, etc Para identificar o modelo ARIMA apropriado para Y você começa por determinar a ordem de diferenciação d que necessitam Para estacionarizar a série e remover as características grosseiras da sazonalidade, talvez em conjunto com uma transformação estabilizadora de variância, como registrar ou desinflar Se você parar neste ponto e prever que a série diferenciada é constante, você apenas montou uma caminhada aleatória ou aleatória No entanto, a série estacionária pode ainda ter erros autocorrelacionados, sugerindo que algum número de termos AR p 1 e ou algum número de termos MA q 1 também são necessários Na equação de previsão. O processo de determinar os valores de p, d e q que são melhores para uma dada série de tempo será discutido em seções posteriores das notas cujos links estão no topo desta página, mas uma prévia de alguns Dos tipos de modelos não-temporais ARIMA que são comumente encontrados é dado abaixo. ARIMA 1,0,0 modelo auto-regressivo de primeira ordem se a série é estacionária e autocorrelacionada, talvez ele pode ser previsto como um múltiplo de seu próprio valor anterior, mais um Constante A equação de previsão neste caso é a que é Y regressa sobre si mesma retardada por um período. Isto é um modelo constante ARIMA 1,0,0 Se a média de Y for zero, então o termo constante não seria incluído. Se a inclinação O coeficiente 1 é positivo e menor que 1 em magnitude deve ser menor que 1 em magnitude se Y estiver parado, o modelo descreve o comportamento de reversão de média no qual o valor do próximo período deve ser predito como sendo 1 vezes mais distante da média como Valor do período s Se 1 for negativo, Prediz comportamento de reversão de média com alternância de sinais, ou seja, também prevê que Y estará abaixo do próximo período médio se estiver acima da média desse período. Em um modelo autorregressivo de segunda ordem ARIMA 2,0,0, haveria um Y t-2 termo à direita também, e assim por diante Dependendo dos sinais e magnitudes dos coeficientes, um modelo ARIMA 2,0,0 poderia descrever um sistema cuja reversão média ocorre de forma sinusoidal oscilante, como o movimento De uma massa em uma mola que é sujeita a choques aleatórios. ARIMA 0,1,0 passeio aleatório Se a série Y não é estacionário, o modelo mais simples possível para ele é um modelo de caminhada aleatória, que pode ser considerado como um caso limitativo de Um modelo AR 1 no qual o coeficiente auto-regressivo é igual a 1, ie uma série com reversão média infinitamente lenta. A equação de predição para este modelo pode ser escrita como. qual o termo constante é a variação média período-período, isto é, a longo prazo Este modelo pode ser montado como uma interceptação sem Em que a primeira diferença de Y é a variável dependente Uma vez que inclui apenas uma diferença não sazonal e um termo constante, é classificada como modelo ARIMA 0,1,0 com constante O modelo randômico-sem-desvio seria Um modelo ARIMA 0,1,0 sem constante. ARIMA 1,1,0 modelo auto-regressivo de primeira ordem diferenciado Se os erros de um modelo randômico randômico são autocorrelacionados, talvez o problema possa ser corrigido adicionando um atraso da variável dependente ao Isto é, regressando a primeira diferença de Y sobre si mesma retardada por um período Isto resultaria na seguinte equação de previsão que pode ser rearranjada para. Este é um modelo autorregressivo de primeira ordem com uma ordem de diferenciamento não sazonal e um termo constante --em um modelo ARIMA 1,1,0.ARIMA 0,1,1 sem alisamento exponencial simples constante Outra estratégia para corrigir erros autocorrelacionados em um modelo de caminhada aleatória é sugerida pelo modelo de suavização exponencial simples. Por exemplo, aqueles que exibem flutuações barulhentas em torno de uma média de variação lenta, o modelo de caminhada aleatória não funciona tão bem quanto uma média móvel de valores passados. Em outras palavras, ao invés de tomar a observação mais recente como a previsão da próxima observação , É melhor usar uma média das últimas observações para filtrar o ruído e estimar com mais precisão a média local O modelo de suavização exponencial simples usa uma média móvel exponencialmente ponderada de valores passados ​​para alcançar este efeito A equação de previsão para a O modelo de suavização exponencial simples pode ser escrito em um número de formas matematicamente equivalentes, uma das quais é a chamada forma de correção de erro, na qual a previsão anterior é ajustada na direção do erro que ela cometeu. Porque e t-1 Y t - 1 - t-1 por definição, isso pode ser reescrito como. que é uma equação de previsão ARIMA 0,1,1-sem-constante com 1 1 - Isso significa que você pode ajustar um smoo exponencial simples Coisa, especificando-o como um modelo ARIMA 0,1,1 sem constante, eo coeficiente MA 1 estimado corresponde a 1-menos-alfa na fórmula SES Lembre-se que no modelo SES, a idade média dos dados no 1- As previsões de período antecipado é de 1, o que significa que tenderão a ficar para trás em relação a tendências ou pontos de viragem em cerca de 1 períodos. Consequentemente, a idade média dos dados nas previsões de um período de 1 período de um ARIMA 0,1,1 - 1 1 - 1 Assim, por exemplo, se 1 0 8, a idade média é 5 Como 1 se aproxima de 1, o modelo ARIMA 0,1,1-sem constante se torna uma média móvel de muito longo prazo e Quando 1 se aproxima de 0, torna-se um modelo randômico-sem-deriva. Qual é a melhor maneira de corrigir a autocorrelação adicionando termos AR ou adicionando termos MA Nos dois modelos anteriores discutidos acima, o problema de erros autocorrelacionados em um modelo de caminhada aleatória Foi fixado de duas maneiras diferentes adicionando um valor defasado da série diferenciada à equação ou adicionando um valor defasado do foreca St erro Qual abordagem é a melhor Uma regra para esta situação, que será discutida em mais detalhes mais adiante, é que a autocorrelação positiva geralmente é melhor tratada pela adição de um termo AR para o modelo e autocorrelação negativa é geralmente melhor tratada por Adicionando um termo MA Na série econômica e de negócios, a autocorrelação negativa surge frequentemente como um artefato de diferenciação. Em geral, a diferenciação reduz a autocorrelação positiva e pode até causar uma mudança de autocorrelação positiva para negativa. Assim, o modelo ARIMA 0,1,1, em Cuja diferenciação é acompanhada por um termo MA, é mais freqüentemente usado do que um modelo ARIMA 1,1,0. ARIMA 0,1,1 com suavização exponencial simples constante com crescimento Ao implementar o modelo SES como um modelo ARIMA, você realmente ganha alguns Flexibilidade Em primeiro lugar, permite-se que o coeficiente de MA 1 estimado seja negativo, o que corresponde a um factor de alisamento maior do que 1 num modelo SES, o que normalmente não é permitido pelo procedimento de ajustamento do modelo SES Sec Você tem a opção de incluir um termo constante no modelo ARIMA se desejar, para estimar uma tendência média não-zero. O modelo ARIMA 0,1,1 com constante tem a equação de previsão. As previsões deste modelo são qualitativamente semelhantes às do modelo SES, exceto que a trajetória das previsões de longo prazo é tipicamente uma linha inclinada cuja inclinação é igual a mu ao invés de uma linha horizontal. ARIMA 0,2,1 ou 0, 2,2 sem suavização exponencial linear constante Modelos lineares de suavização exponencial são modelos ARIMA que usam duas diferenças não sazonais em conjunção com os termos MA A segunda diferença de uma série Y não é simplesmente a diferença entre Y e ela mesma retardada por dois períodos, mas sim A primeira diferença da primeira diferença - ou seja, a mudança na mudança de Y no período t Assim, a segunda diferença de Y no período t é igual a Y t - Y t-1 - Y t-1 - Y T-2 Y t-2Y t-1 Y t-2 Uma segunda diferença de uma função discreta é analogou S para uma segunda derivada de uma função contínua mede a aceleração ou curvatura na função em um determinado ponto no tempo. O modelo ARIMA 0,2,2 sem constante prevê que a segunda diferença da série é igual a uma função linear da última Dois erros de previsão. que podem ser rearranjados como. quando 1 e 2 são os coeficientes MA 1 e MA 2 Este é um modelo de alisamento exponencial linear geral essencialmente o mesmo que o modelo de Holt s eo modelo de Brown s um caso especial Ele usa ponderação exponencial Médias móveis para estimar um nível local e uma tendência local na série As previsões de longo prazo deste modelo convergem para uma linha reta cuja inclinação depende da tendência média observada no final da série. ARIMA 1,1,2 sem Este modelo é ilustrado nos slides acompanhantes em modelos ARIMA extrapola a tendência local no final da série, mas aplaina-lo em horizontes de previsão mais longos para introduzir um Ote do conservadorismo, uma prática que tem suporte empírico Veja o artigo sobre Por que a Tendência de Damped trabalha por Gardner e McKenzie eo artigo da regra de ouro por Armstrong et al para detalhes. É geralmente aconselhável ficar com modelos em que pelo menos um de p E q não é maior do que 1, ou seja, não tente encaixar um modelo como o ARIMA 2,1,2, uma vez que isso é susceptível de levar a problemas de overfitting e de fatores comuns que são discutidos com mais detalhes nas notas sobre a matemática Estrutura de modelos ARIMA. Implementação de folha de cálculo Modelos ARIMA como os descritos acima são fáceis de implementar em uma planilha A equação de predição é simplesmente uma equação linear que se refere a valores passados ​​de séries de tempo originais e valores passados ​​dos erros Assim, você pode configurar Uma planilha de previsões ARIMA armazenando os dados na coluna A, a fórmula de previsão na coluna B e os dados de erros menos previsões na coluna C A fórmula de previsão em uma célula típica na coluna B seria simplesmente um expressio linear N referindo-se a valores nas linhas precedentes das colunas A e C, multiplicado pelos coeficientes AR ou MA apropriados armazenados em células em outra parte da planilha. Estou jogando em Python um pouco mais e encontrei um livro bem organizado com exemplos Um dos exemplos É traçar alguns dados Eu tenho um arquivo com duas colunas e eu tenho os dados que eu tracei os dados muito bem, mas no exercício que diz Modificar o seu programa ainda mais para calcular e traçar a média corrente dos dados, definido por. where r 5 neste caso e o yk é a segunda coluna no arquivo de dados Ter o programa trama tanto os dados originais ea média de corrida no mesmo graph. So até agora eu tenho this. So como faço para calcular a soma Em Mathematica é simples Uma vez que é manipulação simbólica Sum i, por exemplo, mas como calcular a soma em python que leva a cada dez pontos nos dados e médias, e faz isso até o final de points. I olhou para o livro, mas não encontrou nada que iria Explicar this. heltonbiker s código fez o truque D. Thank yo U muito much. There é um problema com a resposta aceite eu acho que precisamos usar válido em vez de mesmo aqui - retornar janela, same. As um exemplo de experimentar o MA deste conjunto de dados 1,5,7,2,6 , 7,8,2,2,7,8,3,7,3,7,3,15,6 - o resultado deve ser 4 2,5 4,6 0,5 0,5 0,5 2,5 4,4 4,5 4,5 6,5 6,4 6,7 0,6 8 mas tendo o mesmo nos dá uma saída incorrecta de 2 6,3 0,4 2,5 4,6 0,5 0,5 0,5 2,5 4,4 4,5 4,5 6,5 6, 4 6,7 0,6 8,6 2,4 Código 8.Rusty para tentar isto out. Try isto com válido mesmo e ver se A matemática faz sentido. Respondida Oct 29 14 às 4 27.Haven t tentou isso, mas eu vou olhar para ele, Tem sido um tempo desde que eu codifiquei em Python dingod Oct 29 14 at 07 07. dingod Por que você não Rapidamente tentar isso com o código enferrujado eo conjunto de dados de amostra como uma lista simples, eu postei Para algumas pessoas preguiçosas como eu tinha sido no início - suas máscaras para fora o fato de que a média móvel é que você deve considerar a edição de sua resposta original eu tentei Apenas ontem e dupla verificação me salvou cara de olhar mal em relatar a Cxo l Evel Tudo que você precisa fazer, é tentar a sua mesma média móvel uma vez com tempo válido e outro com o mesmo - e uma vez que você está convencido me dar algum amor aka-up-vote ekta 29 de outubro 14 às 7 16.I sabe que este é um Mas aqui está uma solução que não usa qualquer estrutura de dados extra ou bibliotecas É linear no número de elementos da lista de entrada e não consigo pensar em qualquer outra maneira de torná-lo mais eficiente, na verdade, se alguém sabe de um melhor Maneira de alocar o resultado, por favor me avise know. NOTE isso seria muito mais rápido usando uma matriz numpy em vez de uma lista, mas eu queria eliminar todas as dependências Também seria possível melhorar o desempenho por multi-threaded execução. A função assume Que a lista de entrada é um dimensional, então tenha cuidado. UPD soluções mais eficientes foram propostas por Alleo e jasaarim. You pode usar para that. The modo argumento especifica como lidar com as bordas eu escolhi o modo válido aqui porque eu acho que s Como a maioria das pessoas espera correr significa trabalhar, Mas você pode ter outras prioridades Aqui está uma trama que ilustra a diferença entre os modos. contestada Mar 24 14 at 22 01.I como esta solução, porque é limpa uma linha e trabalho relativamente eficiente feito dentro numpy Mas Alleo s solução eficiente usando tem Melhor complexidade Ulrich Stern Sep 25 15 a 0 31. Você pode calcular uma média correndo com. Felizmente, numpy inclui uma função convolve que podemos usar para acelerar as coisas A média de execução é equivalente a convolver x com um vetor que é N longo, Com todos os membros igual a 1 N A implementação numpy de convolve inclui o transiente inicial, então você tem que remover os primeiros pontos N-1. Na minha máquina, a versão rápida é 20-30 vezes mais rápida, dependendo do comprimento da entrada Vetor e tamanho da janela de média. Note que convolve não incluem um mesmo modo que parece que ele deve abordar a questão transitória de partida, mas ele divide-lo entre o início eo fim. Ele remove o transitório do final, eo beginni Ng não tem um Bem, eu acho que é uma questão de prioridades, eu não preciso do mesmo número de resultados à custa de obter uma inclinação para zero que não está lá no BTW dados, aqui está um comando para mostrar a diferença Entre modos modos cheio, mesmo, convênio válido convolvem uns 200,, uns 50, 50, modo m para m em modos eixo -10, 251, - 1, 1 1 modos de legenda, centro loco inferior com pyplot e numpy importado lapis Mar 24 14 at 13 56.pandas é mais adequado para isso do que NumPy ou SciPy Sua função rollingmean faz o trabalho convenientemente Ele também retorna um array NumPy quando a entrada é um array. It é difícil de bater rollingmean no desempenho com qualquer implementação personalizada Python puro Aqui está um exemplo de desempenho contra duas das soluções propostas. Existem também opções agradáveis ​​de como lidar com os valores de borda. Estou sempre irritado pela função de processamento de sinal que retornam sinais de saída de forma diferente do que os sinais de entrada quando ambas as entradas e Saídas são da mesma ordem de Por exemplo, ambos os sinais temporais Quebra a correspondência com a variável independente relacionada, por exemplo, tempo, freqüência fazendo plotar ou comparação não é uma questão direta de qualquer maneira, se você compartilhar o sentimento, você pode querer mudar as últimas linhas da função proposta como mesmo retorno y windowlen Um pouco tarde para a festa, mas eu fiz minha própria pequena função que não envolve as extremidades ou almofadas com zeros que são usados ​​para encontrar a média Bem como um outro tratamento é que também re-amostras do sinal em pontos linearmente espaçados Personalizar o código à vontade para obter outras características. O método é uma simples multiplicação de matriz com um kernel normalizado gaussiano. Um uso simples em um sinal sinusoidal Com o ruído distribuído normal adicionado. Esta pergunta é agora mesmo mais velha do que quando NeXuS escreveu sobre ela o mês passado, MAS eu gosto de como seu código trata dos casos da borda Entretanto, porque é uma média movente simples, seus resultados retardam atrás dos dados o Eu aplico para eu pensei que lidar com borda casos de uma maneira mais satisfatória do que NumPy s modos válidos mesmo e completo poderia ser alcançado através da aplicação de uma abordagem semelhante a uma convolução baseada method. My contribuição usa uma média de execução central para alinhar os seus resultados com os seus Dados Quando existem dois pontos disponíveis para a janela de tamanho completo a ser usado, correntes médias são calculadas a partir de sucessivamente menores janelas nas bordas da matriz Na verdade, a partir de janelas sucessivamente maiores, mas isso é um detalhe de implementação. É relativamente lento Porque usa convolve e poderia provavelmente ser spruced acima completamente muito por um Pythonista verdadeiro, entretanto, eu acredito que a idéia stands. answered janeiro 2 em 0 28. é agradável mas lento quando a largura da janela cresce grande Algumas respostas fornecem algoritmos mais effecient Com mas parece incapaz de lidar com os valores de ponta Eu mesmo tenho implementado um algoritmo que pode lidar com este problema bem, se este problema é declarado como. Input parâmetro mergenum pode ser pensado como 2 windowwi Dth 1.Eu sei que este código é um pouco ilegível se u encontrá-lo útil e deseja algumas expansões, por favor, deixe-me saber e eu vou atualizar esta resposta Desde escrever uma explicação pode custar-me muito tempo, espero fazê-lo apenas quando Alguém precisa dele Por favor, perdoe-me por minha preguiça. Se apenas u estão interessados ​​em sua versão original. É ainda mais ilegível a primeira solução se livrar do problema de borda por zeros de preenchimento em torno da matriz, mas a segunda solução aqui manipula-lo em um Difícil e direta way. In minha última frase que eu estava tentando indicar por que ele ajuda a flutuante ponto de erro Se dois valores são aproximadamente a mesma ordem de grandeza, em seguida, adicionando-los perde menos precisão do que se você adicionou um número muito grande para um muito pequeno O código combina valores adjacentes de uma forma que mesmo somas intermediárias devem ser sempre razoavelmente próximos em magnitude, para minimizar o erro de ponto flutuante Nada é à prova de tolo, mas este método salvou um casal projetos muito mal implementados na produção Mayur Patel Dec 15 14 at 17 22. Alleo Em vez de fazer uma adição por valor, você vai estar fazendo dois A prova é o mesmo que o bit-flipping problema No entanto, o ponto desta resposta não é necessariamente desempenho, mas precisão Uso de memória Para a média de valores de 64 bits não excederia 64 elementos no cache, por isso é amigável no uso de memória Mayur Patel 29 de dezembro de 17 04 04.

No comments:

Post a Comment