Tuesday, 28 January 2020

Numpy convolve exponencial moving average


Estou escrevendo uma função de média móvel que usa a função convolve em numpy, o que deve ser equivalente a (média móvel ponderada). Quando meus pesos são todos iguais (como em uma média aritmática simples), ele funciona bem: no entanto, quando eu tento usar uma média ponderada em vez do (para o mesmo dado) 3.667.4.667,5.667,6.667. Eu espero, eu consigo Se eu remover a bandeira válida, eu nem vejo os valores corretos. Eu realmente gostaria de usar convolve para o WMA, bem como MA, pois faz o código de limpeza (mesmo código, pesos diferentes) e caso contrário eu acho que eu tenho que percorrer todos os dados e pegar fatias. Qualquer idéia sobre este comportamento Hmmm, parece que esta frase para implementar a função é realmente muito fácil de se errar e promoveu uma boa discussão sobre a eficiência da memória. Estou feliz por ter tossido se isso significa saber que algo foi feito corretamente. Ndash Richard 20 de setembro 14 às 19:23 NumPys, a falta de uma função particular específica de domínio é talvez devido à disciplina e à fidelidade das equipes principais à diretiva principal do NumPys: forneça um tipo de matriz N-dimensional. Bem como funções para criar e indexar esses arrays. Como muitos objetivos fundamentais, este não é pequeno, e NumPy faz isso de forma brilhante. O SciPy (muito) maior contém uma coleção muito maior de bibliotecas específicas de domínio (chamadas subpacotes por desenvolvedores SciPy) - por exemplo, otimização numérica (otimização), processamento de sinal (sinal) e cálculo integral (integrar). Meu palpite é que a função que você está procurando é em pelo menos um dos subpacotes de SciPy (scipy. signal talvez) no entanto, eu olharia primeiro na coleção de SciPy scikits. Identifique o (s) scikit (s) relevante (s) e procure a função de interesse lá. Os Scikits são pacotes desenvolvidos de forma independente com base em NumPySciPy e dirigidos a uma disciplina técnica específica (por exemplo, scikits-image. Scikits-learn, etc.). Vários desses foram (em particular, o incrível OpenOpt para otimização numérica) eram altamente conceituados, projetos maduros por muito tempo Antes de escolher residir sob a rubrica de scikits relativamente nova. A página inicial do Scikits gostava de incluir acima de cerca de 30 desses scikits. Embora pelo menos vários deles não estejam mais em desenvolvimento ativo. Seguindo este conselho o levaria a scikits-timeseries no entanto, esse pacote não está mais em desenvolvimento ativo. Na verdade, o Pandas tornou-se, a AFAIK, a biblioteca de séries temporais baseada em NumPy. Pandas tem várias funções que podem ser usadas para calcular uma média móvel, o mais simples é provavelmente o padrão de rolamento. Que você usa da mesma forma: Agora, basta chamar a função rollingmean passando no objeto Series e um tamanho de janela. Que no meu exemplo abaixo é de 10 dias. Verifique se funcionou - por exemplo. Comparou os valores de 10 a 15 na série original em relação à nova série suavizada com a média de rolamento. A função rollingmean, juntamente com cerca de uma dúzia de outras funções, são agrupadas informalmente na documentação do Pandas sob as funções da janela de mudança de rubrica, um segundo grupo relacionado de funções Em Pandas é referido como funções ponderadas exponencialmente (por exemplo, ewma. Que calcula a média ponderada exponencialmente móvel). O fato de que este segundo grupo não está incluído na primeira (funções da janela em movimento) é talvez porque as transformações ponderadas exponencialmente não dependem de uma janela de comprimento fixo. Os exemplos a seguir produzem uma média móvel dos valores de WINDOW precedentes. Nós truncamos os primeiros valores (WINDOW -1), já que podemos encontrar a média antes deles. (O comportamento padrão para a convolução é assumir que os valores antes do início da nossa sequência são 0). (Mais formalmente, construímos a seqüência y para a seqüência x onde yi (xi x (i1) 8230. x (in)) n) Isso faz uso da função de convolução numpy8217s. Esta é uma operação média móvel de propósito geral. Alterar as ponderações faz com que alguns valores sejam mais importantes para compensar adequadamente, permite que você veja a média em torno do ponto em vez do ponto anterior. Em vez de truncar valores podemos consertar os valores iniciais, como ilustrado neste exemplo:

No comments:

Post a Comment