Wednesday 19 July 2017

Mover Média Ao Longo Do Tempo


Ao calcular uma média móvel em execução, colocar a média no período de tempo médio faz sentido No exemplo anterior, calculamos a média dos primeiros 3 períodos de tempo e colocamos ao lado do período 3. Poderíamos ter colocado a média no meio do Intervalo de tempo de três períodos, isto é, ao lado do período 2. Isso funciona bem com períodos de tempo estranhos, mas não tão bons para períodos de tempo iguais. Então, onde é que nós colocamos a primeira média móvel quando M 4 Tecnicamente, a Média Móvel cairá em t 2,5, 3,5. Para evitar este problema, suavizamos as MAs usando M 2. Assim, suavizamos os valores suavizados. Se nós medimos um número par de termos, precisamos suavizar os valores suavizados. A tabela a seguir mostra os resultados usando M 4. Eu tenho uma série temporal de Preços das ações e deseja calcular a média móvel em uma janela de dez minutos (veja o diagrama abaixo). Como os carrapatos de preços ocorrem esporadicamente (ou seja, não são periódicos), parece mais conveniente calcular uma média móvel ponderada no tempo. No diagrama há quatro mudanças de preço: A, B, C e D, com os três últimos ocorrendo dentro da janela. Observe que, porque B só ocorre algum tempo na janela (digamos 3 minutos), o valor de A ainda contribui para a computação. Na verdade, até onde eu posso dizer, a computação deve basear-se exclusivamente nos valores de A, B e C (não D) e as durações entre eles e o próximo ponto (ou no caso de A: a duração entre o início Da janela de tempo e B). Inicialmente D não terá qualquer efeito, já que sua pontuação será zero. Isso é correto. Assumindo que isso está correto, minha preocupação é que a média móvel ficará mais do que a computação não ponderada (o que explicaria o valor de D imediatamente), no entanto, a computação não ponderada possui suas próprias desvantagens: A Tem tanto efeito sobre o resultado como os outros preços apesar de estar fora da janela de tempo. Uma onda repentina de carrapatos de preços rápidos prejudicaria fortemente a média móvel (embora talvez isso seja desejável) Alguém pode oferecer algum conselho sobre qual abordagem parece melhor, ou se há uma abordagem alternativa (ou híbrida) que vale a pena considerar, pediu 14 de abril 12 às 21: 35 Seu raciocínio está correto. O que você quer usar a média para embora, sem saber que é difícil dar qualquer conselho. Talvez uma alternativa seja considerar sua média de corrida A, e quando um novo valor V entrar, calcule a nova A média a (1-c) AcV, onde c está entre 0 e 1. Desta forma, os tiques mais recentes têm Uma influência mais forte, e o efeito de carrapatos antigos se dissipa ao longo do tempo. Você poderia até mesmo c depender do tempo desde os tiques anteriores (c se tornando menor à medida que os tiques se aproximam). No primeiro modelo (ponderação), a média seria diferente a cada segundo (como as leituras antigas obtêm menor peso e novas leituras mais altas), então está sempre mudando o que pode não ser desejável. Com a segunda abordagem, os preços fazem saltos bruscos à medida que novos preços são introduzidos e os antigos desaparecem da janela. Respondeu 14 de abril 12 às 21:50 As duas sugestões vêm do mundo discreto, mas você pode encontrar uma inspiração para seu caso particular. Dê uma olhada no suavização exponencial. Nesta abordagem, você apresenta o fator de suavização (01) que permite que você altere a influência dos elementos recentes no valor da previsão (os elementos mais antigos recebem pesos exponencialmente decrescentes): criei uma animação simples de como o alisamento exponencial rastrearia o Uma série de tempo uniforme x1 1 1 1 3 3 2 2 2 1 com três diferentes: veja também algumas das técnicas de aprendizagem de reforço (veja os diferentes métodos de desconto), por exemplo TD-learning e Q-Learning. Sim, a média móvel será, naturalmente, atrasada. Isso ocorre porque seu valor é informação histórica: ele resume amostras do preço nos últimos 10 minutos. Esse tipo de média é inerentemente laggy. Ele tem um deslocamento construído em cinco minutos (porque uma média de caixa sem deslocamento seria baseada em - 5 minutos, centrada na amostra). Se o preço estiver em A por um longo período de tempo e, em seguida, muda uma vez para B, leva 5 minutos para a média para alcançar (AB) 2. Se você quiser uma média de uma função sem qualquer mudança no domínio, o peso tem Para ser distribuído uniformemente em torno do ponto de amostra. Mas isso é impossível para os preços que ocorrem em tempo real, uma vez que os dados futuros não estão disponíveis. Se você quer uma mudança recente, como D, para ter um impacto maior, use uma média que dê um peso maior aos dados recentes, ou um período de tempo mais curto, ou ambos. Uma maneira de suavizar os dados é simplesmente usar um único acumulador (o estimador suavizado) E e tomar amostras periódicas dos dados S. E é atualizado da seguinte forma: I. e. Uma fração K (entre 0 e 1) da diferença entre a amostra de preço atual S e o estimador E é adicionado a E. Suponha que o preço tenha sido em A há muito tempo, de modo que E esteja em A e, de repente, muda Para B. O estimador começará a se mover para B de forma exponencial (como aquecimento, arrefecimento de carga de um capacitor, etc.). No começo, ele irá dar um grande salto e, em seguida, incrementos menores e menores. O quão rápido ele se move depende de K. Se K é 0, o estimador não se move, e se K é 1, ele se move instantaneamente. Com K você pode ajustar a quantidade de peso que você dá ao estimador versus a nova amostra. Mais peso é dado a amostras mais recentes de forma implícita, e a janela de exemplo basicamente se estende ao infinito: E é baseado em cada amostra de valor que já ocorreu. Embora, obviamente, os mais antigos não tenham influência no valor atual. Um método muito simples e bonito. Respondeu 14 de abril 12 às 21:50 Isso é o mesmo que a resposta de Tom. Sua fórmula para o novo valor do estimador é (1 - K) E KS. Que é algébricamente o mesmo que E K (S-E). É uma função de mistura quotlinear entre o estimador atual E e a nova amostra S onde o valor de K 0, 1 controla a mistura. Escrevê-lo dessa maneira é agradável e útil. Se K for 0,7, tomamos 70 de S e 30 de E, o que é o mesmo que adicionar 70 da diferença entre E e S de volta para E. ndash Kaz 14 de abril 12 às 22:15 Ao expandir a resposta Toms, a fórmula Para ter em consideração o espaçamento entre carrapatos pode ser formalizado (os tiques de fechamento têm uma ponderação proporcionalmente menor): a (tn - t n-1) T que é, a é uma proporção de delta de tempo de chegada sobre o intervalo de média v 1 (uso anterior Ponto) ou v (1 - u) a (interpolação linear, ou vu (próximo ponto) Mais informações são encontradas na página 59 do livro Uma Introdução à Finanças de Alta Freqüência. Estou codificando algo no momento em que eu estou levando um monte de Valores ao longo do tempo a partir de uma bússola de hardware. Esta bússola é muito precisa e atualiza-se com muita frequência, com o resultado de que, se ela for ligeiramente leve, acabo com o valor estranho que é inconsistente com seus vizinhos. Eu quero suavizar esses valores. Feito alguma leitura ao redor, parece que o que eu quero é um filtro de passagem de alta, um passe baixo f Ilter ou uma média móvel. Mudar a média com que consigo descer, mantenho um histórico dos últimos 5 valores ou o que quer que seja e use a média desses valores a jusante no meu código, onde acabei de usar o valor mais recente. Isso deve, penso eu, suavizar esses jiggles bem, mas isso me parece que é provavelmente bastante ineficiente, e este é provavelmente um desses problemas conhecidos para programadores adequados para os quais há uma solução de matemática Inteligente verdadeiramente arrumada. Eu sou, no entanto, um daqueles horríveis programadores autodidatas sem um pingo de educação formal em qualquer coisa, mesmo vagamente relacionada com CompSci ou Matemática. Ler em torno de um pouco sugere que este pode ser um filtro de passagem alta ou baixa, mas não consigo encontrar nada que explique em termos compreensíveis para um hack como eu, qual seria o efeito desses algoritmos em uma série de valores, e muito menos como as matemáticas trabalho. A resposta dada aqui. Por exemplo, tecnicamente responde a minha pergunta, mas apenas em termos compreensíveis para aqueles que provavelmente já saberiam como resolver o problema. Seria uma pessoa muito adorável e inteligente, de fato, quem poderia explicar o tipo de problema que isso é, e como funcionam as soluções, em termos compreensíveis para um graduado em artes. Perguntou 21 de setembro às 13:01 Se sua média móvel deve ser longa para conseguir o alisamento necessário e você realmente não precisa de nenhuma forma específica de kernel, então você estará melhor se usar uma média móvel exponencialmente decadente: onde você Escolha minúsculo para ser uma constante apropriada (por exemplo, se você escolher um pequeno 1- 1N, ele terá a mesma quantidade de média como uma janela de tamanho N, mas distribuído de maneira diferente em pontos mais antigos). De qualquer forma, uma vez que o próximo valor da média móvel depende apenas do anterior e de seus dados, você não precisa manter uma fila ou qualquer coisa. E você pode pensar nisso como fazendo algo como, Bem, eu tenho um novo ponto, mas eu realmente não confio nisso, então eu vou manter 80 da minha antiga estimativa da medição, e só confio neste novo ponto de dados 20. Isso é Praticamente o mesmo que dizer: Bem, eu só confio neste novo ponto 20, e eu uso 4 outros pontos que eu confio na mesma quantia, exceto que em vez de tomar explicitamente os 4 outros pontos, você está assumindo que a média que você fez na última vez Foi sensato para que você possa usar seu trabalho anterior. Respondeu 21 de setembro 10 às 14:27 Ei, eu sei que isso é 5 anos de atraso, mas obrigado por uma ótima resposta. Estou trabalhando em um jogo onde o som muda com base em sua velocidade, mas, devido ao funcionamento do jogo em um computador de câmera lenta, a velocidade flutuaria selvagemente, o que era bom para a direção, mas super irritante em termos de som. Esta foi uma solução muito simples e barata para algo que pensei que seria um problema realmente complexo. Ndash Adam Mar 16 15 at 20:20 Se você está tentando remover o valor ímpar ocasional, um filtro passa-baixa é a melhor das três opções que você identificou. Os filtros de passagem baixa permitem mudanças de baixa velocidade, como as causadas pela rotação de uma bússola à mão, ao mesmo tempo que rejeitam mudanças de alta velocidade, como as causadas por solavancos na estrada, por exemplo. Uma média móvel provavelmente não será suficiente, uma vez que os efeitos de uma única descarga em seus dados afetarão vários valores subsequentes, dependendo do tamanho da sua janela média móvel. Se os valores estranhos forem facilmente detectados, você pode até estar melhor com um algoritmo de remoção de falhas que os ignora completamente: Aqui está um gráfico de guick para ilustrar: O primeiro gráfico é o sinal de entrada, com uma falha desagradável. O segundo gráfico mostra o efeito de uma média móvel de 10 amostras. O gráfico final é uma combinação da média de 10 amostras e do algoritmo de detecção de falha simples mostrado acima. Quando a falha é detectada, a média de 10 amostras é usada em vez do valor real. Respondeu 21 de setembro 10 às 13:38 Bem explicado e pontos de bônus para o gráfico) ndash Henry Cooke 22 de setembro 10 às 0:50 Wow. Seldemente vi uma resposta tão agradável ndash Muis Jun 4 13 às 9:14 A média móvel é um filtro passa-baixa. Ndash nomen 21 de outubro às 19:36 Experimente uma mediana de fluxo de ar em vez disso. Ndash kert 25 de abril 14 às 22:09 Mover média com a qual posso descer. Mas parece-me que é provavelmente bastante ineficiente. Realmente, nenhum motivo para uma média móvel deve ser ineficiente. Você mantém o número de pontos de dados desejados em algum buffer (como uma fila circular). Em cada novo ponto de dados, você exibe o valor mais antigo e subtrai-lo de uma soma, e empurre o mais novo e adicione-o à soma. Portanto, cada novo ponto de dados realmente só envolve um poppush, uma adição e uma subtração. Sua média móvel é sempre essa soma de mudança dividida pelo número de valores em seu buffer. Isso fica um pouco mais complicado se você estiver recebendo dados simultaneamente de vários tópicos, mas como seus dados são provenientes de um dispositivo de hardware que parece muito duvidoso para mim. Ah, e também: os horríveis programadores autodidatas se unem) A média móvel pareceu ineficiente para mim porque você precisa armazenar um buffer de valores - melhor para fazer algumas Matemáticas Inteligentes com seu valor de entrada e valor de trabalho atual Eu acho que isso é como a média móvel exponencial trabalho. Uma otimização que eu vi para este tipo de média móvel envolve o uso de um amplificador de espera de comprimento fixo, um ponteiro para onde você está na fila, e apenas empacotando o ponteiro ao redor (com ou um if). Voila Não há pushpop caro. Poder para os amadores, irmão ndash Henry Cooke 22 de setembro 10 às 0:54 Henry: Para uma média móvel direta, você precisa do buffer simplesmente para que você saiba o valor que aparece quando o próximo valor é empurrado. Dito isto, o amplo amplificador de espera de comprimento fixo que você está descrevendo é exatamente o que eu quis dizer com uma fila quotcircular. Por isso, eu estava dizendo que isso não é ineficiente. O que você achou que eu quis dizer E se sua resposta é uma matriz quotan que muda seus valores de volta em cada remoção indexada (como std :: vector em C). Bem, então, eu já estou doente, nem quero falar com você mais) ndash Dan Tao 22 de setembro 10 às 1:58 Henry: Eu não sei sobre AS3, mas um programador de Java tem coleções como CircularQueue em sua disposição (I39m não é um Desenvolvedor de Java, então eu tenho certeza de que há exemplos melhores lá fora, esse é o que eu encontrei a partir de uma busca rápida do Google), que implementa precisamente a funcionalidade em que estamos falando. Estou bastante confiante de que a maioria das linguagens de nível médio e baixo com bibliotecas padrão tem algo semelhante (por exemplo, no. NET there39s QueueltTgt). Enfim, eu também era filosofia. tudo é perdoado. Ndash Dan Tao 22 de setembro 10 às 12:44 Uma média móvel exponencialmente decadente pode ser calculada manualmente com apenas a tendência se você usar os valores apropriados. Veja quatromilab. chhackdiete4 para uma idéia sobre como fazer isso rapidamente com uma caneta e papel, se você estiver procurando uma média móvel suavemente exponencial com 10 suavização. Mas, como você tem um computador, você provavelmente deseja fazer mudanças binárias em oposição à mudança decimal). Desta forma, tudo que você precisa é uma variável para seu valor atual e outra para a média. A próxima média pode então ser calculada a partir disso. Respondeu 21 de setembro 10 às 14:39 há uma técnica chamada de portão de alcance que funciona bem com amostras espúrias de baixa ocorrência. Assumindo o uso de uma das técnicas de filtro mencionadas acima (média móvel, exponencial), uma vez que você tenha um histórico suficiente (uma Constante de Tempo), você pode testar a nova amostra de dados recebidos por razoabilidade, antes de ser adicionada à computação. É necessário algum conhecimento da taxa de mudança máxima razoável do sinal. A amostra bruta é comparada ao valor mais liso e se o valor absoluto dessa diferença é maior que o intervalo permitido, essa amostra é descartada (ou substituída por alguma heurística, por exemplo, uma previsão baseada no diferencial de inclinação ou na tendência Valor de previsão de suavização exponencial dupla) 30 de abril 16 às 6:56

No comments:

Post a Comment