Eu tenho um valor contínuo pelo qual Id gostaria de calcular uma média móvel exponencial. Normalmente, Id apenas usa a fórmula padrão para isso: onde S n é a nova média, o alfa é o alfa, Y é a amostra e S n-1 é a média anterior. Infelizmente, devido a várias questões, não tenho um tempo de amostra consistente. Posso saber que posso provar, no máximo, digamos, uma vez por milissegundo, mas devido a fatores fora do meu controle, talvez não consiga tirar uma amostra por vários milissegundos de cada vez. Um caso provavelmente mais comum, no entanto, é que eu amostras simples um pouco cedo ou tarde: em vez de amostragem a 0, 1 e 2 ms. Eu amostras em 0, 0.9 e 2.1 ms. Eu antecipo que, independentemente dos atrasos, minha freqüência de amostragem estará longe, muito acima do limite de Nyquist, e, portanto, não preciso me preocupar com aliasing. Eu acho que eu posso lidar com isso de uma maneira mais ou menos razoável ao variar o alfa apropriadamente, com base no tempo desde a última amostra. Parte do meu raciocínio que isso funcionará é que a EMA interpola linearmente entre o ponto de dados anterior e o atual. Se considerarmos o cálculo de uma EMA da seguinte lista de amostras em intervalos t: 0,1,2,3,4. Devemos obter o mesmo resultado se usarmos o intervalo 2t, onde as entradas se tornam 0,2,4, direito, se a EMA tivesse assumido que, em t 2, o valor tinha sido 2 desde t 0. Isso seria o mesmo que o cálculo do intervalo t calculado em 0,2,2,4,4, o que não está fazendo. Ou isso faz sentido? Alguém pode me dizer como variar o alfa apropriadamente. Por favor, mostre seu trabalho. Isto é, Mostre-me a matemática que prova que seu método realmente está fazendo o que é certo. Perguntou Jun 21 09 às 13:05 Você não deve obter o mesmo EMA para diferentes entradas. Pense em EMA como um filtro, a amostragem em 2t é equivalente a amostragem descendente, e o filtro vai dar uma saída diferente. Isso é claro para mim, pois 0,2,4 contém componentes de freqüência mais alta que 0,1,2,3,4. A menos que seja a questão, como eu altero o filtro de forma direta para que ele dê a mesma saída. Talvez eu esteja faltando algo ndash freespace 21 de junho de 09 às 15:52 Mas a entrada não é diferente, ela é apenas amostrada com menos frequência. 0,2,4 em intervalos 2t é como 0,, 2,, 4 em intervalos t, onde o indica que a amostra é ignorada ndash Curt Sampson 21 de junho de 09 às 23:45 Esta resposta com base na minha boa compreensão de passagem baixa Filtros (a média móvel exponencial é realmente apenas um filtro de passagem simples de um único polo), mas a minha nebulosa compreensão do que você está procurando. Eu acho que o seguinte é o que você quer: primeiro, você pode simplificar sua equação um pouco (parece mais complicado, mas é mais fácil no código). Eu vou usar Y para saída e X para entrada (em vez de S para saída e Y para entrada, como você fez). Em segundo lugar, o valor de alpha aqui é igual a 1-e-Deltattau onde Deltat é o tempo entre amostras, e tau é a constante de tempo do filtro passa-baixa. Eu digo igual em citações, porque isso funciona bem quando Deltattau é pequeno em comparação com 1, e alpha 1-e-Deltattau asymp Deltattau. (Mas não é muito pequeno: você terá problemas de quantificação e, a menos que você recorra a algumas técnicas exóticas, você geralmente precisa de N bits extras de resolução em sua variável de estado S, onde N-log 2 (alfa).) Para valores maiores de Deltattau O efeito de filtragem começa a desaparecer, até chegar ao ponto onde o alfa é próximo de 1 e você basicamente está apenas atribuindo a entrada para a saída. Isso deve funcionar corretamente com valores variáveis de Deltat (a variação do Deltat não é muito importante, desde que o alfa seja pequeno, caso contrário, você irá encontrar algum aliasing de Nyquist, um pouco estranho, etc.) e se você estiver trabalhando em um processador onde a multiplicação É mais barato do que a divisão, ou questões de ponto fixo são importantes, precalcular omega 1tau e considerar tentar aproximar a fórmula para alfa. Se você realmente quer saber como derivar a fórmula alpha 1-e-Deltattau, considere sua fonte de equação diferencial: qual, quando X é uma função de etapa de unidade, a solução Y 1 - e - ttau. Para valores pequenos de Deltat, a derivada pode ser aproximada por DeltaYDeltat, produzindo Y tau DeltaYDeltat X DeltaY (XY) (Deltattau) alfa (XY) e a extrapolação de alpha 1-e-Deltattau vem de tentar combinar o comportamento com o Caso da função do passo da unidade. Você poderia elaborar o quottrying para combinar a parte do comportamento. Compreendo sua solução de tempo contínuo Y 1 - exp (-t47) e sua generalização para uma função escalonada com magnitude x e condição inicial y (0). Mas eu não estou vendo como juntar essas idéias para alcançar seu resultado. Ndash Rhys Ulerich 4 de maio 13 às 22:34 Esta não é uma resposta completa, mas pode ser o início de uma. É tão longe quanto eu consegui com isso em uma hora ou mais de jogar Im publicando isso como um exemplo do que estou procurando, e talvez seja uma inspiração para outros que trabalham no problema. Eu começo com S 0. Qual é a média resultante da média anterior S -1 e a amostra Y 0 tomada em t 0. (T 1 - t 0) é o meu intervalo de amostra e o alfa está configurado para o que for apropriado para esse intervalo de amostra e o período durante o qual eu gostaria de média. Eu considerei o que acontece se eu sinto falta da amostra em t 1 e, em vez disso, tenho que fazer com a amostra Y 2 tomada em t 2. Bem, podemos começar expandindo a equação para ver o que aconteceria se tivéssemos tido Y 1: percebo que a série parece se estender infinitamente dessa maneira, porque podemos substituir o S n no lado direito indefinidamente: Ok , Então não é realmente um polinômio (eu tolo), mas se multiplicarmos o termo inicial por um, então vemos um padrão: Hm: é uma série exponencial. Surpresa Quelle Imagine que sai da equação para uma média móvel exponencial Então, de qualquer forma, eu tenho este x 0 x 1 x 2 x 3. A coisa está acontecendo, e estou certo de que eu estou cheirando e ou um logaritmo natural dando uma volta por aqui, mas não consigo lembrar de onde eu estava indo antes que eu estivesse sem tempo. Qualquer resposta a esta pergunta, ou qualquer prova de correção de tal resposta, depende muito dos dados que você está medindo. Se suas amostras foram tiradas em t 0 0ms. T 1 0,9 ms e t 2 2,1 ms. Mas sua escolha de alfa é baseada em intervalos de 1 ms, e, portanto, você quer um alfa n ajustado localmente. A prova de correção da escolha significaria saber os valores da amostra em t1ms e t2ms. Isso leva à questão: você pode interpolar seus dados de forma razoável para ter suposições sãs do que os valores intermediários podem ter sido ou você pode mesmo interpolar a média em si. Se nenhum desses é possível, então, até onde eu vejo, a lógica A escolha de um valor intermediário Y (t) é a média calculada mais recentemente. Isto é, Y (t) asymp S n onde n é maxmial tal que t n ltt. Essa escolha tem uma conseqüência simples: deixe o alfa sozinho, independentemente da diferença horária. Se, por outro lado, é possível interpolar seus valores, então isso lhe dará amostras intermediárias de intervalo constante. Por fim, se for possível interpolar a média, isso tornaria a pergunta sem sentido. Respondeu 21 de junho 09 às 15:08 balpha 9830 26.5k 9679 10 9679 84 9679 117 Eu pensaria que eu posso interpolar meus dados: dado que I39m amostragem em intervalos discretos, já estou fazendo isso com um EMA padrão, suponha que eu precise Um quotproofquot que mostra que ele funciona, bem como um EMA padrão, que também produzirá um resultado incorreto se os valores não estiverem mudando bastante sem problemas entre os períodos de amostra. Ndash Curt Sampson 21 de junho 09 às 15:21 Mas isso é o que eu digo: se você considerar a EMA uma interpolação de seus valores, você será feito se você deixar o alfa como é (porque inserir a média mais recente como Y não altera a média) . Se você diz que precisa de algo que funciona bem como um EMAquot padrão - o que está errado com o original A menos que você tenha mais informações sobre os dados que você mede, quaisquer ajustes locais para alfa serão, na melhor das hipóteses, arbitrários. Ndash balpha 9830 Jun 21 09 às 15:31 Eu deixaria o valor alfa sozinho e preencheria os dados faltantes. Como você não sabe o que acontece durante o tempo em que você não pode mostrar, você pode preencher essas amostras com 0s ou manter o valor anterior estável e usar esses valores para a EMA. Ou alguma interpolação para trás, uma vez que você tenha uma nova amostra, preencha os valores em falta e recomponha o EMA. O que eu estou tentando conseguir é que você tem uma entrada xn que tem buracos. Não há como contornar o fato de você estar faltando dados. Então, você pode usar uma retenção de ordem zero, ou configurá-la para zero, ou algum tipo de interpolação entre xn e xnM. Onde M é o número de amostras em falta e n o início da lacuna. Possivelmente mesmo usando valores antes de n. Respondeu 21 de junho de 09 às 13:35 De passar uma hora ou mais de um pouco com as matemáticas para isso, acho que simplesmente variar o alfa realmente me dará a interpolação adequada entre os dois pontos de que você fala, mas em um Muito mais simples. Além disso, acho que a variação do alfa também tratará de forma adequada as amostras colhidas entre os intervalos de amostragem padrão. Em outras palavras, estou procurando o que você descreveu, mas tentando usar matemática para descobrir a maneira simples de fazê-lo. Ndash Curt Sampson 21 de junho 09 às 14:07 Não acho que haja tal besta como interpolação quotproper. Você simplesmente não sabe o que aconteceu no momento em que você não está amostragem. A interpolação boa e ruim implica algum conhecimento do que você perdeu, já que você precisa medir contra isso para julgar se uma interpolação é boa ou ruim. Embora isso seja dito, você pode colocar restrições, ou seja, com aceleração máxima, velocidade, etc. Eu acho que se você sabe como modelar os dados perdidos, então você apenas modelaria os dados que faltavam, então aplique o algoritmo EMA sem mudança, em vez disso Do que mudar alfa. Apenas meu 2c :) ndash freespace 21 de junho 09 às 14:17 Isto é exatamente o que eu estava recebendo na minha edição para a pergunta 15 minutos atrás: você simplesmente não sabe o que aconteceu no momento em que você não está amostragem, mas isso é verdade Mesmo se você provar em cada intervalo designado. Assim, a minha contemplação de Nyquist: enquanto você sabe que a forma de onda não altera as direções mais do que todas as amostras, o intervalo de amostra real não deve ser importante e pode variar. A equação EMA parece-me exatamente calcular como se a forma de onda mudasse linearmente do último valor da amostra para o atual. Ndash Curt Sampson 21 de junho 09 às 14:26 Não acho que seja verdade. O teorema de Nyquist exige um mínimo de 2 amostras por período para identificar o sinal de forma exclusiva. Se você não fizer isso, você obtém aliasing. Seria o mesmo que a amostragem como fs1 por um tempo, então fs2, depois de volta para fs1, e você obtém aliasing nos dados quando você amostra com fs2 se fs2 estiver abaixo do limite de Nyquist. Eu também devo confessar que não entendo o que você quer dizer com quotwaveform mudanças linearmente da última amostra para onequot atual. Você poderia explicar Cheers, Steve? Ndash freespace Jun 21 09 às 14:36 Isto é semelhante a um problema aberto na minha lista de tarefas. Eu tenho um esquema elaborado até certo ponto, mas não tenho trabalho matemático para apoiar esta sugestão ainda. Atualize o sumário do amplificador: Gostaria de manter o fator de suavização (alfa) independente do fator de compensação (que eu me refiro como beta aqui). A excelente resposta já aceita aqui é excelente para mim. Se você também pode medir o tempo desde a última amostra (em múltiplos arredondados de seu tempo de amostragem constante - então 7,8 ms desde a última amostra seria 8 unidades), que poderia ser usado para aplicar o alisamento várias vezes. Aplique a fórmula 8 vezes neste caso. Você efetivamente fez um alisamento mais inclinado para o valor atual. Para obter um melhor alisamento, precisamos ajustar o alfa ao aplicar a fórmula 8 vezes no caso anterior. O que essa aproximação de suavização perderá. Já faltou 7 amostras no exemplo acima. Isso foi aproximado na etapa 1 com uma re-aplicação achatada do valor atual 7 vezes adicionais. Se definimos um fator de aproximação beta que será aplicado junto com alfa (Como alfabeta em vez de apenas alfa), estaremos assumindo que as 7 amostras perdidas estavam mudando suavemente entre os valores de amostra anteriores e atuais. Respondeu 21 de junho 09 às 13:35 Eu pensei sobre isso, mas um pouco de amaldiçoamento com a matemática me levou ao ponto em que eu acredito que, ao invés de aplicar a fórmula oito vezes com o valor da amostra, posso fazer um cálculo De um novo alfa que me permitirá aplicar a fórmula uma vez e me dar o mesmo resultado. Além disso, isso trataria automaticamente a questão das amostras compensadas com os tempos de amostra exatos. Ndash Curt Sampson 21 de junho 09 às 13:47 O único aplicativo está bem. O que ainda não tenho certeza é o quanto é boa a aproximação dos 7 valores em falta. Se o movimento contínuo faz com que o valor flui muito durante os 8 milésimos de segundo, as aproximações podem estar bastante fora da realidade. Mas, então, se você estiver amostragem a 1 ms (a maior resolução, excluindo as amostras atrasadas), você já descobriu que o jitter dentro de 1 ms não é relevante. Esse raciocínio funciona para você (eu ainda estou tentando me convencer). Ndash nik Jun 21 09 às 14:08 Direita. Esse é o fator beta da minha descrição. Um fator beta seria calculado com base no intervalo de diferença e nas amostras atual e anterior. O novo alfa será (alfabeta), mas ele será usado apenas para essa amostra. Enquanto você parece ser o alfa na fórmula, eu tende para o alfa constante (fator de suavização) e um beta calculado de forma independente (um fator de sintonia) que compensa amostras perdidas agora. Ndash nik 21 de junho 09 às 15: 23 Média de Movimento de Viver Um número de indicadores populares, incluindo o Índice de Força Relativa (RSI), o Rácio Real Médio (ATR) e o Movimento Direcional foram desenvolvidos por J. Welles Wilder e introduzidos em seu livro de 1978: Conceitos Novos Em Sistemas de Negociação Técnica. Os usuários devem ter cuidado de que Wilder não use a fórmula padrão padrão exponencial padrão. Isso pode ter um imitável significativo ao selecionar períodos de tempo adequados para seus indicadores. A fórmula padrão padrão exponencial padrão converte o período de tempo em uma fração usando a fórmula EMA 2 (n 1) onde n é o número de dias. Por exemplo, o EMA por 14 dias é 2 (14 dias 1) 13.3. Wilder, no entanto, usa um EMA de 114, que é igual a 7.1. Isso equivale a uma média móvel exponencial de 27 dias usando a fórmula padrão. Os indicadores afetados são: Recomendamos que os usuários tentem períodos de tempo mais curtos ao usar um dos indicadores acima. Por exemplo, se você estiver rastreando um ciclo de 30 dias você normalmente selecionaria um período de tempo de 15 dias. Com o RSI, ajuste o período de tempo da seguinte forma: período de tempo RSI (n 1) 2 (15 1) 2 8 dias
No comments:
Post a Comment