Friday 1 December 2017

Kalman filter moving average matlab no Brasil


Este segmento pergunta quando um filtro de Kalman de tempo discreto é melhor diferente de uma média móvel simples das observações: não há resposta definitiva. Pode alguém dar um exemplo definitivo onde o filtro kalman, idealmente em caso 1D simples, faz algo diferente (e melhor) do que manter uma média móvel, e indicar as condições quando o filtro kalman seria reduzir a uma simples média móvel um pensamento é que o Kalman filtro não iria pesar todos os pontos de dados igualmente porque sua variação é inicialmente menor e melhora com o tempo. Mas parece que isso só importaria perto de observações iniciais e que, uma vez que a variância convergisse, o filtro kalman iria pesar cada observação igualmente igual a uma média móvel, então não veja quando os dois são diferentes e por que quando o filtro faria melhor. Perguntou 17 de fevereiro às 23:52 como a primeira resposta (com a maioria dos votos) diz, o filtro kalman é melhor em qualquer caso quando o sinal está mudando. Observe a declaração do problema Estes usam o algoritmo para estimar alguma tensão constante. Como poderia usar um filtro de Kalman para isso ser melhor do que apenas manter uma média de corrida Estes exemplos são simplificados apenas casos de uso do filtro usando um filtro kalman para estimar uma tensão constante é definitivamente, overkill. Nesse problema específico, é melhor usar a média corrente, que sabemos ser o melhor estimador para as distribuições gaussianas. Neste exemplo, a tensão medida é a tensão real V mas com algum ruído tipicamente modelado como 0 média gaussiana (ruído branco). De modo que nossas medidas são Gaussian com meanV, e sigmasigma ruído. O filtro kalman é mais adequado para estimar as coisas que mudam ao longo do tempo. O exemplo mais tangível é o rastreamento de objetos em movimento. Vamos imaginar jogando uma bola, sabemos que fará um arco parabólico, mas o que nossos estimadores mostrarão? Um filtro de Kalman será muito próximo da trajetória real porque diz que a medição mais recente é mais importante do que os mais antigos (quando a covariância É baixo que é). A média de corrida leva todas as medidas igualmente trajetória azul-bola, vermelho-running média (desculpe não kalman se eu tiver tempo mal jogá-lo lá se eu tiver tempo, mas seria me muito mais perto da linha azul supondo que você modelou o sistema bem ) O filtro kalman, por outro lado, diz, se a nossa convariância e residual foram pequenas (ou seja, tivemos uma boa estimativa), então vamos ficar com a estimativa anterior e tweak-lo um pouco com base no residual (ou a nossa estimativa erro). Agora, uma vez que o nosso xhat kk está muito próximo do estado real, quando fizermos a próxima atualização, usaremos um estado do sistema que corresponda ao estado real. Em x30, a média de execução diz, a condição inicial y (0) é tão importante quanto y (29), isso é isso, e você recebe um erro enorme. O filtro kalman foi responsável por isso. Ele disse que desde o nosso erro da última vez foi enorme, vamos fazer uma mudança drástica para a nossa estimativa (o nosso xhat) por isso, quando usá-lo para a próxima atualização, será mais perto do que realmente está acontecendo Espero que faz algum sentido eu só notei Sua pergunta pergunta sobre uma média móvel vs kalman. Eu respondi correndo avg vs kalman (que é o tema do link que você forneceu) Apenas para adicionar um pouco mais de informações especificamente para o movimento (janelas) média. A média móvel é um melhor estimador de mudança de valores. Uma vez que apenas leva em conta amostras mais recentes. Infelizmente, ele tem um atraso associado a ele, especialmente em torno de mudança de derivativos (Basta olhar perto t30, onde a derivada está indo de positivo para negativo). Isso ocorre porque a média é lento para ver a flutuação. Que é tipicamente por isso que usá-lo, para remover a flutuação (ruído). O tamanho da janela também desempenha um papel. Uma janela menor é geralmente mais próxima dos valores medidos, o que faz sentido e soa bem, certo. A desvantagem disso é se você tem medidas barulhentas, uma pequena janela significa mais ruído aparece mais na saída. Vamos olhar para as outras questões novamente medições com média .5, sigma .1 z 0,3708435, 0,4985331, 0,4652121. A média das três primeiras amostras é 0,4448629 não exatamente próxima ao valor esperado de 0,5. Isso mostra novamente que, com a janela menor, o ruído tem um efeito mais profundo na saída. Então, logicamente, nosso próximo passo é pegar janelas maiores, para melhorar nossa imunidade ao ruído. Bem, as janelas maiores são ainda mais lentas para refletir as mudanças reais (novamente olhar para t30 no meu gráfico) eo caso mais extremo de janelas é basicamente a média de corrida (que já sabemos é ruim para alterar dados) Agora de volta para o mágico Kalman filtro. Se você pensa sobre isso é semelhante a uma amostra de 2 janela média (semelhante não é o mesmo). Olhe X kk na etapa de atualização, ele leva o valor anterior, e adiciona a ele uma versão ponderada da amostra atual. Você pôde pensar, bem que sobre o ruído Porque não é ele suscetível ao mesmo problema que a média windowed com um tamanho de amostragem pequeno Porque o filtro do kalman toma em consideração a incerteza de cada medida. O valor de ponderação K (ganho de kalman) pode ser considerado como uma relação entre a covariância (incerteza) de sua estimativa e a covariância (incerteza) da estimativa atual (na verdade é o residual, mas é mais fácil pensar dessa maneira) . Portanto, se a última medida tem muita incerteza K diminui, e assim a amostra mais recente desempenha um rolo menor. Se a última medida tiver menos incerteza do que a previsão, k aumenta, e agora a nova informação desempenha um papel maior na próxima estimativa. Assim, mesmo com um pequeno tamanho de amostra, o filtro kalman ainda está bloqueando um monte de ruído. De qualquer maneira, espero que as respostas da janela avg vs kalman pergunta agora respondeu 18 de fevereiro às 3:34 Outra tomada: O Filtro Kalman permite que você adicione mais informações sobre como o sistema youre filtragem funciona. Em outras palavras, você pode usar um modelo de sinal para melhorar a saída do filtro. Claro, um filtro de média móvel pode dar resultados muito bons quando você está esperando uma saída de close-to-constante. Mas assim que o sinal que você está modelando é dinâmico (pense fala ou medições de posição), então o filtro de média móvel simples não mudará rapidamente o suficiente (ou em tudo) em comparação com o que o filtro de Kalman fará. O filtro de Kalman usa o modelo de sinal, que captura seu conhecimento de como o sinal muda, para melhorar sua saída em termos da variação da verdade. Respondeu Feb 18 15 at 13: 11Estou tentando entender filtros de Kalman. Aqui estão alguns exemplos que me ajudaram até agora: Estes usam o algoritmo para estimar alguma tensão constante. Como usar um filtro de Kalman para isso é melhor do que apenas manter uma média de execução Estes exemplos são apenas casos de uso simplificados do filtro (Se sim, qual é o exemplo onde uma média de execução não é suficiente) Por exemplo, considere o seguinte programa Java e saída . A saída de Kalman não corresponde à média, mas eles estão muito próximos. Por que escolher um sobre o outro SIM é exemplo simplificado, mais enganoso do que educar. Se sim, o que é um exemplo onde uma média em execução não é suficiente Em qualquer caso quando o sinal está mudando. Imagine veículo em movimento. Calculando média significa que assumimos valor de sinal a partir de qualquer momento no tempo para ser igualmente importante. Obviamente está errado. Intuição diz, a última medição é mais confiável do que a de uma hora antes. Um exemplo muito bom para experimentar é da forma frac. Tem um estado, assim que as equações não começ complicadas. Em tempo discreto poderia ser assim: Theres o código que usa (Im sorry seu Matlab, eu não usei Python recentemente): Existem algumas dicas: Sempre definir Q e R maior do que zero. Caso Q 0 é MUITO MAU exemplo. Você diz para o filtro: não há nenhuma perturbação agindo sobre a planta, então depois de um tempo o filtro vai crer apenas para suas previsões com base no modelo, em vez de olhar para as medições. Matematicamente falando Kk para 0. Como sabemos modelos não descrevem a realidade perfeitamente. Experimente com algum modelo de imprecisão - modelError Altere a estimativa inicial do estado (xpost (1)) e veja quão rápido converge para diferentes Q, R e Ppost inicial (1) Verifique como o ganho do filtro K muda ao longo do tempo dependendo de Q e R De fato, eles são a mesma coisa em certo sentido, vou mostrar o seu algo por trás Kalman filtro e você ficará surpreso. Considere o seguinte problema mais simples de estimação. São dadas uma série de medidas z1, z2, cdots, zk, de uma constante desconhecida x. Assumimos que o modelo aditivo começa zi x vi, i1,2, cdots, k (1) end onde vi são ruídos de medição. Se nada mais for conhecido, então todos concordarão que uma estimativa razoável de x dada as k medições pode ser dada por begin hat k frac sum zi Agora podemos reescrever acima eq. (2) por manipulação algébrica simples para começar o chapéu de começo K hat frac (zk-hat) (3) end Eq. (3) que é simplesmente Eq. (2) expressa em forma recursiva tem uma interpretação interessante. Diz que a melhor estimativa de x após k medição é a melhor estimativa de x após k-1 medições mais um termo de correção. O termo de correção é a diferença entre o que você espera medir com base na medição k-1, ou seja, eo que você realmente mede zk. Se rotular a fração de correção como Pk, então novamente a manipulação algébrica pode escrever a forma recursiva de Pk como begin PkP-P (P 1) P Acredite ou não, as Eqs. (3-4) podem ser reconhecidas como a filtragem de Kalman Equações para este caso simples. Qualquer discussão é bem-vinda. Para dar algum sabor, veja esta lista de livros: Eu tenho GrewalAndrews com MatLab, também GrewalWeillAndrews sobre GPS. Esse é o exemplo fundamental, o GPS. Aqui está um exemplo simplificado, eu entrevistei para um trabalho onde eles estavam escrevendo software para manter o controle de todos os caminhões entrando e saindo de um pátio de entrega enorme, para Walmart ou similar. Eles tinham dois tipos de informação: baseados em colocar um dispositivo RFID em cada caminhão, eles tinham informações bastante boas sobre a direção que cada caminhão estava indo com medidas possíveis muitas vezes por segundo, mas eventualmente crescendo em erro, como faz qualquer aproximação essencialmente ODE. Em uma escala de tempo muito mais longo, poderiam fazer exame da posição do GPS de um caminhão, que dê uma posição muito boa imparcial mas tenha uma variação grande, você começ a posição dentro de 100 medidores ou algo. Como combinar estes Thats o uso principal do filtro de Kalman, quando você tem duas fontes de informação dando tipos de erro grosseiramente oposto. Minha idéia, que eu teria dito a eles se eles tinham pago-me, era colocar um dispositivo em cada semi onde a cabina atende o reboque, dando o raio de giro atual. Isso poderia ter sido integrado para dar muito boa informação de curto prazo sobre a direção que o caminhão estava indo. Bem, isso é o que eles fazem com quase qualquer coisa se movendo hoje em dia. O que eu achava bonito era fazendas na Índia, mantendo o controle de onde estavam os tratores. O corpo em movimento não precisa se mover rapidamente para fazer as mesmas perguntas. Mas, é claro, o primeiro grande uso foi o projeto da NASA Apollo. Meu pai conheceu Kalman em algum momento. Papai trabalhou principalmente na navegação, inicialmente mísseis para o Exército, mais tarde submarinos para a Marinha. Resposta De vez em quando eu me deparo com uma ferramenta que está tão atolada em páginas de cálculos matemáticos esotéricos, torna-se difícil conseguir mesmo uma simples compreensão de como ou por que eles podem seja útil. Pior ainda, você pesquisa exaustivamente a internet para encontrar uma imagem simples que pode expressar mil equações, mas não encontrar nada. O filtro kalman é uma dessas ferramentas. Extremamente útil, porém, muito difícil de entender conceitualmente por causa do complexo jargão matemático. Abaixo está um enredo simples de uma versão filtrada kalman de uma caminhada aleatória (por agora, vamos usar isso como uma estimativa de uma série de tempo financeiro). Fig. 1. Estimativas do filtro de Kalman de média e covariância de Random Walk O kf é um fantástico exemplo de um modelo adaptativo, mais especificamente, um modelo linear dinâmico, que é capaz de se adaptar a um ambiente em constante mudança. Ao contrário de uma média móvel simples ou FIR que tem um conjunto fixo de parâmetros de janelas, o filtro kalman atualiza constantemente as informações para produzir filtragem adaptativa na mosca. Embora existam alguns filtros adaptativos baseados em TA, como Kaufman Adaptive Moving Average e variações da média móvel exponencial nem captura a estimativa ótima da série na forma que o KF faz. Na trama da Fig. 1. Temos uma linha azul que representa a média estimada das séries temporais subjacentes, onde a linha vermelha representa a própria série de tempo e, finalmente, as linhas pontilhadas representam a estimativa de covariância das séries temporais em relação à estimativa média. Observe que, ao contrário de muitos outros filtros, a média estimada é uma medida muito boa do verdadeiro centro móvel da série temporal. Sem mergulhar em muita matemática, a seguinte é a bem conhecida equação espacial de estado do kf: xtAxt-1 w ztHxt v Embora essas equações sejam freqüentemente expressas em espaço de estados ou representação matricial, tornando-as um pouco complicadas para o leigo, se você for Familiar com a regressão linear simples, poderia fazer mais sentido. Vamos definir as variáveis: xt é a variável oculta que é estimada, neste caso, ela representa a melhor estimativa da média ou centro da série de tempo A é a matriz de transição de estado ou eu muitas vezes penso nela como semelhante ao coeficiente autorregressivo em Um modelo de AR pensa nela como Beta em uma regressão linear aqui. W é o ruído do modelo. Assim, podemos pensar que a equação de xAx-1 w é muito semelhante ao modelo de regressão linear básico, que é. A principal diferença é que o kf atualiza constantemente as estimativas em cada iteração de uma forma online. Aqueles familiarizados com os sistemas de controle podem entendê-lo como um mecanismo de feedback, que se ajusta para o erro. Como não podemos realmente ver o verdadeiro centro no futuro, apenas estimá-lo, pensamos em x como uma variável oculta. A outra equação está diretamente ligada à primeira. ZtHxtv zt é a estimativa da covariância do sinal real em relação ao centro estimado, x. Xt nós reconhecemos como a estimativa do centro móvel da série de tempo. V é o ruído do modelo. Novamente, é um modelo linear, mas desta vez a equação contém algo que podemos observar: zt é o valor da série temporal que estamos tentando capturar e modelar em relação a xt. Mais especificamente, é uma estimativa da covariância, ou co-movimento entre a variável observada, o valor da série temporal ea estimativa do centro x. Você também pode pensar no envelope que cria como semelhante a uma banda de desvio padrão que prediz a variância futura do sinal em relação a x. Aqueles familiarizados com modelos de markov ocultos, podem reconhecer o conceito de variáveis ​​de estado ocultas e observadas aqui. Basicamente, começamos a estimar nossa suposição de xey, a média ea covariância das séries baseadas em medições das séries subjacentes, que neste caso são simplesmente os parâmetros normais N (média, std) usados ​​para gerar a caminhada aleatória. A partir daí, as equações de matriz linear são usadas para estimar os valores de z e x, usando operações de matriz linear. A chave é que uma vez que uma estimativa é feita, o valor da covariância de y é então verificado contra o valor da série cronológica real e um parâmetro chamado K é ajustado para atualizar as estimativas anteriores. Cada vez que K é atualizado, o valor da estimativa de x é atualizado via: xtnewestxtest K (zt Hxest). O valor de K converte geralmente a um valor estável, quando a série subjacente é verdadeiramente gaussian (como visto na fig. 1. durante o começo da série, aprende). Após algumas iterações, o valor ótimo de K é bastante estável, de modo que o modelo aprendeu ou adaptou-se à série subjacente. Algumas vantagens para o filtro kalman são que é preditivo e adaptativo, pois olha para a frente com uma estimativa da covariância e média da série de tempo um passo para o futuro e ao contrário de uma Rede Neural, não requer dados estacionários. Aqueles que trabalham nos tutoriais Neural Network, esperamos ver uma grande vantagem aqui. Ele tem um muito próximo a suave representação da série, enquanto não exigindo peeking no futuro. As desvantagens são que o modelo de filtro assume dependências lineares, e é baseado em termos de ruído que são gaussianos gerados. Como sabemos, os mercados financeiros não são exatamente gaussianos, uma vez que eles tendem a ter caudas gordas com mais freqüência do que seria de esperar, momentos superiores não normais, e as séries exibem heteroskedasticity clustering. Outro filtro mais avançado que resolve esses problemas é o filtro de partículas, que usa métodos de amostragem para gerar os parâmetros de distribuição subjacentes. Aqui estão algumas referências que podem ajudar ainda mais na compreensão do filtro kalman. Além disso, há um kalman mais suave no pacote R, DLM. Se você está interessado em uma abordagem baseada em Python, eu recomendo altamente o seguinte bookMachine Learning Algorithmic Perspective Não só existe um writeup fantástico em modelos de markov ocultos e filtros kalman, mas há código real que você pode replicar. Este é um dos melhores livros práticos sobre a Aprendizagem de Máquinas que eu encontrei durante o período. Pacote de Filtro de Kalman Este pacote implementa os seguintes filtros de Kalman: 1) Filtro de Kalman Padrão 2) Filtro de Kalman Estendido 3) Filtro de Kalman Duplo 4) Pacote contém também exemplos instrutivos para cada tipo de filtro demonstrando sua aplicação prática. Em todos os 4 casos, as funções KF aceitam como amostras ruidosas de entrada de um sistema multidimensional e produzem a estimativa KF do verdadeiro estado do sistema com base nas covariâncias de ruído de processo que variam no tempo inerentes às amostras ruidosas. As médias móveis ponderadas exponencialmente (ou não ponderadas) são utilizadas para estimar as covariâncias do sistema variando no tempo a partir das medições ruidosas. O filtro padrão de Kalman é a implementação mais básica do KF. Ele assume um modelo que as medições ruidosas contêm o verdadeiro estado do sistema mais ruído branco. O Filtro de Kalman Estendido é uma generalização do Filtro de Kalman Padrão que permite ao usuário especificar um modelo de sistema não-linear, o qual é iterativamente linearizado durante a execução de EKF. O filtro Dual Kalman resolve simultaneamente dois problemas de filtro Standard Kalman: 1) Ajusta um modelo auto-regressivo aos dados e aplica um filtro Kalman para atualizar o modelo AR 2) Aplica o modelo AR em cada iteração antes de executar a atualização padrão do KF Raiz quadrada Os Filtros de Kalman são um método mais robusto e numericamente estável para executar a Filtragem de Kalman StandardDual, especialmente quando as matrizes de covariância de interesse são mal-condicionadas ou quase não positivas definidas. A idéia de Filtragem de Kalman de Raiz Quadrada é propagar a covariância de erro de processo P na forma de raiz quadrada P U D U, onde U e D são atualizados iterativamente e P não é explicitamente computado. Isso garante que P é positivo definido e, assim, aumentar a estabilidade numérica do KF.

No comments:

Post a Comment