Wednesday, 27 December 2017

Moving average time constant


Estive estudando sobre a média exponencial. Há explicações suficientes sobre isso na Internet, mas eles não explicam sobre a constante de tempo. Eu tenho um canal com um sinal de tempo de T segundos com freqüência de amostragem fs. Se eu quiser fazer a média deste sinal de tempo, precisamos usar o método linear ou exponencial. Método de média linear é bastante simples para que não haja problemas para a aplicação. No entanto, se eu tentar aplicar método de média exponencial, existem alguns problemas. Se o sinal de tempo variar rapidamente, preferimos usar uma constante de tempo rápida de 125 ms. Além disso, o sinal de tempo varia lentamente, usando 1000 ms de tempo lento constante é melhor, mas nesta situação, eu não sei como posso aplicar esta constante de tempo com sinal de tempo. Existe alguma explicação ou qualquer exemplo para fazer média exponencial com constante de tempo pedida Aug 29 13 at 16: 54 Eu tenho um valor contínuo para o qual Id gostaria de calcular uma média móvel exponencial. Normalmente, apenas use a fórmula padrão para isso: 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 consigo tomar uma amostra por vários milissegundos de cada vez. Um caso provável mais comum, no entanto, é que eu amostra simples 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, minha freqüê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 em 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 esteja faltando algo ndash freespace Jun 21 09 at 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). 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 alfa aqui é igual a 1-e-Datat / tau onde Deltat é o tempo entre amostras, e tau é a constante de tempo do filtro passa-baixa. Eu digo igual entre aspas porque isso funciona bem quando Deltat / tau é pequeno em comparação com 1, e alfa 1-e-Datat / tau asymp Deltat / tau. (Mas não é muito pequeno: você terá problemas de quantização e, a menos que você recorra a algumas técnicas exóticas, você normalmente precisará de mais N bits de resolução na sua variável de estado S, onde N - log 2 (alfa). Para valores maiores de Deltat / Tau o efeito de filtragem começa a desaparecer, até chegar ao ponto em que o alfa está perto de 1 e basicamente você está apenas atribuindo a entrada para a saída. Isso deve funcionar corretamente com diferentes valores de Deltat (a variação de Deltat não é muito importante, desde que o alfa é pequeno, caso contrário, você vai correr em algumas coisas bastante estranho Nyquist / aliasing / etc), e se você estiver trabalhando em um processador Onde a multiplicação é mais barata do que a divisão, ou questões de ponto fixo são importantes, precalculam omega 1 / tau, e consideram tentar aproximar a fórmula para alfa. Se você realmente quer saber como derivar a fórmula alfa 1-e-Datat / tau, 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 - t / tau. Para valores pequenos de Deltat, a derivada pode ser aproximada por DeltaY / Deltat, produzindo Y tau DeltaY / Deltat X DeltaY (XY) (Deltat / tau) alfa (XY) ea extrapolação de alfa 1-e-Datat / tau vem de Tentando corresponder ao comportamento com o caso de função de etapa de unidade. Você poderia por favor elaborar sobre o quottrying para coincidir com a parte behaviorquot eu entendo sua solução contínua 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 a 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 se estender infinitamente dessa 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 ficar sem tempo. Qualquer resposta a essa 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 t 2 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 até 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 onde 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. Resposta Eu acho que posso interpolar meus dados: dado que I39m amostragem em intervalos discretos, I39m já fazê-lo com um padrão EMA Anyway, suponha que eu preciso 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 períodos de amostra. Ndash Curt Sampson Jun 21 09 at 15:21 Mas isso é o que eu digo: Se você considerar a EMA uma interpolação de seus valores, você é feito se você deixar alfa como está (porque inserir a média mais recente 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 em que você não pode amostra, você pode preencher essas amostras com 0s, ou manter o valor anterior estável e usar esses valores para o EMA. Ou alguma interpolação para trás uma vez que você tem uma nova amostra, preencha os valores ausentes e recompite a EMA. O que eu 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, 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 em 14:07 Eu don39t acho que existe uma besta como quotproper interpolationquot. Você simplesmente não sabe o que aconteceu no momento em 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. Acho que se você souber como modelar os dados faltantes, então você apenas modelaria os dados faltantes e, em seguida, aplicaria o algoritmo EMA sem nenhuma 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 momento 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 me parece exatamente para 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 um mínimo de 2 amostras por período para ser capaz de identificar o sinal de forma exclusiva. 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 não entendo o que você quer dizer com quotwaveform muda linearmente da última amostra para a atual onequot. 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 elaborado em certa medida, mas não têm 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 última amostra seria de 8 unidades), que poderia ser usado para aplicar o alisamento várias vezes. 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 ao aplicar a fórmula 8 vezes no caso anterior. O que esta aproximação de suavização perderá? Já perdeu 7 amostras no exemplo acima Isto foi aproximado no passo 1 com uma reaplicação aplainada do valor atual um adicional de 7 vezes Se definimos um fator de aproximação beta que será aplicado juntamente com o 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 muco 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 deslocadas a partir 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 o valor jitter muito ao longo dos 8 milissegundos, as aproximações podem ser completamente fora da realidade. Mas, então, se você está 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 at 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 alocando a alfa na fórmula, eu tento para alfa constante (fator de suavização) e um beta independentemente calculado (um fator de ajuste) que compensa amostras perdidas agora. Na prática, a média móvel fornecerá uma boa estimativa da média das séries temporais se a média for constante ou mudar lentamente. No caso de uma média constante, o maior valor de m dará as melhores estimativas da média subjacente. Um período de observação mais longo medirá os efeitos da variabilidade. O objetivo de fornecer um m menor é permitir que a previsão responda a uma mudança no processo subjacente. Para ilustrar, propomos um conjunto de dados que incorpora mudanças na média subjacente das séries temporais. A figura mostra a série de tempo usada para ilustração juntamente com a demanda média a partir da qual a série foi gerada. A média começa como uma constante em 10. Começando no tempo 21, ele aumenta em uma unidade em cada período até atingir o valor de 20 no tempo 30. Então ele se torna constante novamente. Os dados são simulados adicionando à média um ruído aleatório de uma distribuição Normal com média zero e desvio padrão 3. Os resultados da simulação são arredondados para o número inteiro mais próximo. A tabela mostra as observações simuladas usadas para o exemplo. Quando usamos a tabela, devemos lembrar que a qualquer momento, apenas os dados passados ​​são conhecidos. As estimativas do parâmetro do modelo, para três valores diferentes de m, são mostradas juntamente com a média das séries temporais na figura abaixo. A figura mostra a estimativa média móvel da média em cada momento e não a previsão. As previsões mudariam as curvas da média móvel para a direita por períodos. Uma conclusão é imediatamente aparente a partir da figura. Para as três estimativas, a média móvel está aquém da tendência linear, com o atraso aumentando com m. O atraso é a distância entre o modelo ea estimativa na dimensão temporal. Devido ao atraso, a média móvel subestima as observações à medida que a média aumenta. O viés do estimador é a diferença em um tempo específico no valor médio do modelo eo valor médio predito pela média móvel. O viés quando a média está aumentando é negativo. Para uma média decrescente, o viés é positivo. O atraso no tempo e o viés introduzido na estimativa são funções de m. Quanto maior o valor de m. Maior a magnitude do atraso e do viés. Para uma série de crescimento contínuo com tendência a. Os valores de lag e viés do estimador da média são dados nas equações abaixo. As curvas de exemplo não correspondem a essas equações porque o modelo de exemplo não está aumentando continuamente, em vez disso, ele começa como uma constante, muda para uma tendência e, em seguida, torna-se constante novamente. Também as curvas de exemplo são afetadas pelo ruído. A previsão média móvel de períodos no futuro é representada deslocando as curvas para a direita. O atraso e o viés aumentam proporcionalmente. As equações abaixo indicam o atraso e o viés de um período de previsão para o futuro quando comparado aos parâmetros do modelo. Novamente, essas fórmulas são para uma série de tempo com uma tendência linear constante. Não devemos nos surpreender com esse resultado. O estimador da média móvel baseia-se no pressuposto de uma média constante, eo exemplo tem uma tendência linear na média durante uma parte do período do estudo. Como as séries de tempo real raramente obedecerão exatamente aos pressupostos de qualquer modelo, devemos estar preparados para tais resultados. Podemos também concluir a partir da figura que a variabilidade do ruído tem o maior efeito para m menor. A estimativa é muito mais volátil para a média móvel de 5 do que a média móvel de 20. Temos os desejos conflitantes de aumentar m para reduzir o efeito da variabilidade devido ao ruído e diminuir m para tornar a previsão mais sensível às mudanças Em média O erro é a diferença entre os dados reais e o valor previsto. Se a série temporal é verdadeiramente um valor constante, o valor esperado do erro é zero ea variância do erro é composta por um termo que é uma função de e um segundo termo que é a variância do ruído,. O primeiro termo é a variância da média estimada com uma amostra de m observações, assumindo que os dados provêm de uma população com média constante. Este termo é minimizado fazendo-se o maior possível. Um grande m faz com que a previsão não responda a uma mudança nas séries temporais subjacentes. Para tornar a previsão responsiva às mudanças, queremos que m seja o menor possível (1), mas isso aumenta a variância do erro. A previsão prática requer um valor intermediário. Previsão com o Excel O suplemento de Previsão implementa as fórmulas de média móvel. O exemplo abaixo mostra a análise fornecida pelo add-in para os dados da amostra na coluna B. As primeiras 10 observações são indexadas -9 a 0. Em comparação com a tabela acima, os índices de período são deslocados por -10. As primeiras dez observações fornecem os valores de inicialização para a estimativa e são usados ​​para calcular a média móvel para o período 0. A coluna MA (10) (C) mostra as médias móveis calculadas. O parâmetro de média móvel m está na célula C3. A coluna Fore (1) (D) mostra uma previsão para um período no futuro. O intervalo de previsão está na célula D3. Quando o intervalo de previsão é alterado para um número maior, os números na coluna Fore são deslocados para baixo. A coluna Err (1) (E) mostra a diferença entre a observação e a previsão. Por exemplo, a observação no tempo 1 é 6. O valor previsto a partir da média móvel no tempo 0 é 11.1. O erro é então -5.1. O desvio padrão eo desvio médio médio (MAD) são calculados nas células E6 e E7, respectivamente.

No comments:

Post a Comment