Tuesday 18 July 2017

Movimento Média Equação Diferencial


Eu tenho um valor contínuo para o qual eu gostaria de calcular uma média móvel exponencial. Normalmente, apenas use a fórmula padrão para isto: onde S n é a nova média, alfa é o alfa, Y é a amostra, e S n-1 é a média anterior. Infelizmente, devido a várias questões que eu não tenho um tempo de amostragem consistente. Eu posso saber que posso provar no máximo, digamos, uma vez por milissegundo, mas devido a fatores fora do meu controle, eu não posso ser capaz de tomar uma amostra por vários milissegundos de cada vez. Um caso provável mais comum, no entanto, é que eu simples amostra um pouco cedo ou tarde: em vez de amostragem em 0, 1 e 2 ms. I amostra a 0, 0,9 e 2,1 ms. Eu antecipo que, independentemente dos atrasos, a minha frequência de amostragem será muito, muito acima do limite de Nyquist, e assim eu não preciso se preocupar com aliasing. Eu acho que eu posso lidar com isso de uma forma mais ou menos razoável, variando o alfa adequadamente, com base no período de tempo desde a última amostra. Parte do meu raciocínio de que isso irá funcionar é que o EMA interpola linearmente entre o ponto de dados anterior eo atual. Se considerarmos o cálculo de um EMA da seguinte lista de amostras a intervalos t: 0,1,2,3,4. Devemos obter o mesmo resultado se usarmos o intervalo 2t, onde os inputs se tornam 0,2,4, right Se o EMA tivesse assumido que, em t 2, o valor tinha sido 2 desde t 0. Que seria o mesmo que o cálculo do intervalo t calculando em 0,2,2,4,4, o que não está fazendo. Ou isso faz sentido em tudo Alguém pode me dizer como variar o alfa adequadamente Por favor, mostre seu trabalho. I. e. Mostre-me a matemática que prova que seu método realmente está fazendo a coisa certa. Perguntou Jun 21 09 at 13:05 Você shouldn39t obter o mesmo EMA para entrada diferente. Pense em EMA como um filtro, amostragem em 2t é equivalente a amostragem para baixo, eo filtro vai dar uma saída diferente. Isto é claro para mim já que 0,2,4 contém componentes de freqüência mais alta do que 0,1,2,3,4. A menos que a questão seja, como faço para alterar o filtro na mosca para torná-lo dar a mesma saída. Talvez eu estou faltando algo ndash freespace Jun 21 09 em 15:52 Mas a entrada não é diferente, it39s apenas amostrado menos frequentemente. 0,2,4 em intervalos 2t é como 0,, 2, 4 em intervalos t, onde o indica que a amostra é ignorada ndash Curt Sampson Jun 21 09 at 23:45 Esta resposta baseada na minha boa compreensão do low-pass Filtros (média móvel exponencial é realmente apenas um filtro singlepass pólo único), mas a minha compreensão obscuros do que você está procurando. Eu acho que o seguinte é o que você quer: Primeiro, você pode simplificar a sua equação um pouco (parece mais complicado, mas seu mais fácil no código). 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 alfa aqui é igual a 1-e-Delatattau onde Deltat é o tempo entre as amostras, e tau é a constante de tempo do filtro passa-baixa. Digo igual entre aspas porque isso funciona bem quando Deltattau é pequeno em comparação com 1, e alfa 1-e-Delatattau asymp Deltattau. (Mas não é muito pequeno: você terá problemas de quantização e, a menos que você recorra a algumas técnicas exóticas, geralmente precisa de mais N bits de resolução na 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 em que o alfa está próximo de 1 e você basicamente está apenas atribuindo a entrada à saída. Isso deve funcionar corretamente com vários valores de Deltat (a variação de Deltat não é muito importante, desde que o alfa é pequeno, caso contrário, você vai correr em alguns problemas bastante estranho Nyquist aliasing 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, precalculate omega 1tau, e considerar tentar aproximar a fórmula para alfa. Se você realmente quer saber como derivar a fórmula alfa 1-e-Dtattattau, então considere sua fonte de equação diferencial: que, quando X é uma função de etapa unitária, tem 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) ea extrapolação de alfa 1-e - Detatatta vem da tentativa de igualar o comportamento com o Caso de função de etapa unitária. Você poderia por favor elaborar sobre o quottrying para combinar o behaviorquot parte Eu entendo sua solução de tempo contínuo Y 1 - exp (-t47) e sua generalização para uma função escalonada escalonada com magnitude x e condição inicial y (0). Mas não vejo como juntar essas idéias para alcançar seu resultado. Ndash Rhys Ulerich May 4 13 at 22:34 Esta não é uma resposta completa, mas pode ser o início de um. Seu até onde eu com isto em uma hora ou assim de jogar Im que afixa isto como um exemplo de que Im que procuram, e talvez uma inspiração para outros que trabalham no problema. Começo com S 0. Que é a média resultante da média anterior S -1 e da amostra Y 0 tomada em t 0. (T 1 - t 0) é o meu intervalo de amostra e alfa é ajustado para o que é apropriado para esse intervalo de amostra eo período sobre o qual eu desejo a média. Eu considerei o que acontece se eu perder a amostra em t 1 e em vez disso ter que se contentar com a amostra Y 2 tomada em t 2. Bem, podemos começar expandindo a equação para ver o que teria acontecido se tivéssemos tido Y 1: Observo que a série parece estender-se infinitamente desta maneira, porque podemos substituir o S n no lado direito indefinidamente: Ok , Então não é realmente um polinômio (bobo-me), mas se multiplicarmos o termo inicial por um, então vemos um padrão: Hm: é uma série exponencial. Quelle surpresa Imagine que saindo da equação para uma média móvel exponencial Então, de qualquer maneira, eu tenho esse x 0 x 1 x 2 x 3. Coisa que vai, e Im certeza estou cheirando e ou um logaritmo natural chutando por aqui, mas eu não consigo lembrar onde eu estava indo em seguida antes de eu acabar o 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 coletadas em t 0 0ms. T 1 0,9ms e t2 2,1ms. 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 conhecer os valores da amostra em t1ms e t2ms. Isso leva à pergunta: você pode interpolar os seus dados de forma sensata para ter suposições sãs do que valores intermédios poderiam ter sido ou você pode mesmo interpolar a própria média Se nenhum destes é possível, então, tanto quanto eu vejo, o lógico A escolha de um valor intermediário Y (t) é a média calculada mais recentemente. I. e. Y (t) asymp S n em que n é maxmial tal que t n ltt. Esta escolha tem uma conseqüência simples: Deixe o alfa sozinho, não importa o que a diferença de tempo era. Se, por outro lado, é possível interpolar seus valores, então isto lhe dará amostras de intervalo constante averagable. Por último, se é mesmo possível interpolar a própria média, isso tornaria a pergunta sem sentido. Respondeu Jun 21 09 at 15:08 balpha 9830 27k 9679 10 9679 87 9679 117 Eu acho que posso interpolar meus dados: dado que I39m amostragem em intervalos discretos, I39m já fazê-lo com um padrão EMA De qualquer forma, presumo que eu preciso de um Quotproofquot que mostra que funciona bem como um padrão EMA, que também tem irá produzir um resultado incorreto se os valores não estão mudando muito bem entre os períodos de amostra. Ndash Curt Sampson Jun 21 09 at 15:21 Mas isso é o que I39m dizendo: Se você considerar a EMA uma interpolação de seus valores, youre feito se você deixar alfa como é (porque inserir a mais recente média como Y não muda a média) . Se você disser que precisa de algo que funciona bem como um padrão EMAquot - o que está errado com o original A menos que você tenha mais informações sobre os dados que você está medindo, quaisquer ajustes locais para alfa será no melhor arbitrário. Ndash balpha 9830 Jun 21 09 at 15:31 Eu deixaria o valor alfa sozinho, e preencher os dados em falta. Uma vez que você não sabe o que acontece durante o tempo quando você não pode amostra, 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ê tiver uma nova amostra, preencha os valores ausentes e recompite a EMA. O que estou tentando obter é que você tem uma entrada xn que tem buracos. Não há como contornar o fato de que você está faltando dados. Assim, você pode usar uma retenção de ordem zero ou defini-la como 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 do intervalo. Possivelmente mesmo usando valores antes de n. De gastar uma hora ou assim muco sobre um pouco com a matemática para isso, eu acho que simplesmente variando o alfa vai realmente me dar a interpolação adequada entre os dois pontos que você fala, mas em um Muito mais simples. Além disso, acho que a variação do alfa também irá tratar adequadamente amostras tomadas entre os intervalos de amostragem padrão. Em outras palavras, eu estou procurando o que você descreveu, mas tentando usar matemática para descobrir a maneira simples de fazê-lo. Ndash Curt Sampson Jun 21 09 at 14:07 Eu não acho que há uma besta tão quotproper interpolationquot. Você simplesmente não sabe o que aconteceu no tempo que você não está amostragem. Interpolação boa e má implica algum conhecimento do que você perdeu, uma vez que você precisa medir contra isso para julgar se uma interpolação é bom 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 faltantes, então você apenas modelar os dados ausentes, em seguida, aplicar o algoritmo EMA sem alteração, Do que alterar alfa. Just my 2c :) ndash freespace Jun 21 09 em 14:17 Isto é exatamente o que eu estava começando em minha edição para a pergunta 15 minutos atrás: QuotYou simplesmente don39t saber o que aconteceu no tempo que você não está amostragem, mas isso é verdade Mesmo se você amostra em cada intervalo designado. Assim, minha contemplação de Nyquist: desde que você saiba que a forma de onda não muda de direção mais do que cada par de amostras, o intervalo de amostra real não deve ser importante e deve ser capaz de variar. A equação de EMA parece-me exatamente calcular como se a forma de onda mudasse linearmente do último valor de amostra ao atual. Ndash Curt Sampson Jun 21 09 em 14:26 Eu don39t acho que é muito verdadeiro. O teorema de Nyquist requer requer mínimo de 2 amostras por período para ser capaz de identificar exclusivamente o sinal. Se você don39t fazer isso, você começa aliasing. Seria o mesmo que amostragem como fs1 por um tempo, então fs2, então de volta a fs1, e você começa aliasing nos dados quando você amostra com fs2 se fs2 está abaixo do limite de Nyquist. Eu também devo confessar que eu não entendo o que você quer dizer com quotwaveform muda linearmente da última amostra para um onequot atual. Poderia explicar Cheers, Steve. Ndash freespace Jun 21 09 at 14:36 ​​Isso é semelhante a um problema aberto na minha lista de tarefas. Eu tenho um esquema funcionou até certo ponto, mas não tem trabalho matemático para apoiar esta sugestão ainda. Update amp resumo: Gostaria de manter o fator de alisamento (alfa) independente do fator de compensação (que eu me refiro como beta aqui). Jasons excelente resposta já aceito aqui funciona muito bem para mim. Se você também pode medir o tempo desde a última amostra foi tomada (em múltiplos arredondados do seu tempo de amostragem constante - 7,8 ms desde a última amostra seria de 8 unidades), que poderia ser usado para aplicar o alisamento vezes múltiplas. Aplicar a fórmula 8 vezes neste caso. Você efetivamente fez um alisamento mais inclinado para o valor atual. Para obter uma melhor suavização, precisamos ajustar o alfa, aplicando a fórmula 8 vezes no caso anterior. O que esta aproximação de suavização perde? Já perdeu 7 amostras no exemplo acima Isto foi aproximado no passo 1 com uma aplainada re-aplicação do valor atual um adicional de 7 vezes Se definimos um fator de aproximação beta que será aplicado junto com alfa (Como alphabeta em vez de apenas alfa), estaremos assumindo que as 7 amostras perdidas estavam mudando suavemente entre os valores da amostra anterior e atual. Eu pensei sobre isso, mas um pouco de mucking sobre com a matemática me levou ao ponto onde eu acredito que, ao invés de aplicar a fórmula de oito vezes com o valor da amostra, eu 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 iria lidar automaticamente com a questão das amostras desviadas de tempos de amostra exata. Ndash Curt Sampson Jun 21 09 at 13:47 A única aplicação está bem. O que eu não tenho certeza sobre ainda é quão boa é a aproximação dos 7 valores em falta. Se o movimento contínuo faz com que o jitter de valor muito ao longo dos 8 milissegundos, as aproximações podem ser completamente fora da realidade. Mas, então, se você estiver amostragem em 1ms (resolução mais alta, excluindo as amostras atrasadas) você já percebeu que o jitter dentro de 1 ms não é relevante. Este raciocínio funciona para você (eu ainda estou tentando me convencer). Ndash nik Jun 21 09 em 14:08 Direito. 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 alfa novo será (alphabeta) mas será usado somente para essa amostra. Enquanto você parece estar alinhando a alfa na fórmula, eu tento para alfa constante (fator de alisamento) e um beta independentemente calculado (um fator de ajuste) que compensa amostras perdidas agora. Um número de indicadores populares, incluindo Índice de Força Relativa (RSI), Average True Range (ATR) e Movimento Direcional foram desenvolvidos por J. Welles Wilder e introduzidos em seu livro de 1978: New Concepts Em Sistemas Técnicos de Negociação. Os usuários devem estar cientes de que Wilder não usa a fórmula de média móvel exponencial padrão. Isto pode ter imapct significativo ao selecionar períodos de tempo adequados para seus indicadores. A fórmula média móvel 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, a EMA durante 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 do Indicador de 15 dias. Com o RSI, ajustar o período de tempo da seguinte forma: RSI período de tempo (n 1) 2 (15 1) 2 8 diasMoving médias das equações diferenciais ordinárias via convolução Introduzimos um quadro de média, onde a solução de uma equação variando no tempo com um Uma pequena amplitude é aproximada pela solução de um sistema auxiliar de variação lenta, gerada por convolução da equação original com uma função de núcleo. O efeito da convolução é o alisamento da equação, tornando-o assim mais passível de cálculos numéricos. Apresentamos resultados apertados no erro de aproximação para classes gerais de campos vetoriais e grãos. Deseja ler o resto deste artigo.

No comments:

Post a Comment