Thursday 17 August 2017

Perl Moving Average Function


Esta é uma questão Evergreen Joe Celko. Ignoro qual plataforma DBMS é usada. Mas, em qualquer caso, Joe conseguiu responder há mais de 10 anos com o SQL padrão. Citação de Joe Celko SQL Puzzles and Answers: Essa última tentativa de atualização sugere que poderíamos usar o predicado para construir uma consulta que nos daria uma média móvel: a coluna extra ou a abordagem de consulta melhor. A consulta é tecnicamente melhor porque a abordagem UPDATE Desmoralize o banco de dados. No entanto, se os dados históricos que estão sendo registrados não mudem e o cálculo da média móvel é caro, você pode considerar usar a abordagem da coluna. Consulta SQL Puzzle: por todos os meios uniforme. Você apenas joga no balde de peso apropriado dependendo da distância do ponto de tempo atual. Por exemplo, quottake weight1 para datapoints dentro de 24 horas a partir do ponto de dados atual0.5 para pontos de dados dentro de 48hrsquot. Esse caso é importante quantos pontos de dados consecutivos (como 6:12 e 11:48) estão distantes um do outro. Um caso de uso que eu posso pensar seria uma tentativa de alisar o histograma sempre que os pontos de dados não forem suficientemente densos. 22:22 Não estou certo de que seu resultado esperado (saída) mostre uma média simples em movimento simples (rolando) por 3 dias. Como, por exemplo, o primeiro triplo dos números, por definição, dá: mas você espera 4.360 e é confuso. No entanto, sugiro a seguinte solução, que usa o AVG de função de janela. Essa abordagem é muito mais eficiente (clara e menos intensiva em recursos) do que a SELF-JOIN introduzida em outras respostas (e estou surpreso que ninguém tenha dado uma solução melhor). Você vê que o AVG está envolvido com o caso quando rownum gt p. days, em seguida, para forçar NULL s nas primeiras filas, onde 3 Day Moving Average não tem sentido. Respondeu 23 de fevereiro às 13:12. Podemos aplicar o método de junção externa suja esquerda de Joe Celkos (como citado acima por Diego Scaravaggi) para responder a pergunta como foi feita. Gera a saída solicitada: respondeu Jan 9 às 0:33 Sua resposta 2016 Stack Exchange, IncWith vetor de peso Eu significo o vetor com pesos que você tem que multiplicar as observações na janela que desliza sobre seus dados, então, se você adicionar esses produtos juntos Ele retorna o valor do EMA no lado direito da janela. Para uma média móvel ponderada linear, a fórmula para encontrar o vetor de peso é: (1: n) soma (1: n) (no código R). Esta série de comprimento n acrescenta-se a 1. Para n10 será 0.01818182 0.03636364 0.05454545 0.07272727 0.09090909 0.10909091 0.12727273 0.14545455 0.16363636 0.18181818 os números 1 a 10 55, com 55 a soma dos números 1 a 10. Como você calcula o vetor de peso Para uma média móvel exponencial (EMA) de comprimento n se n é o comprimento da janela, então alphalt-2 (n1) e ilt-1: n então EmaWeightVectorlt - ((alfa (1-alfa) (1-i)) ) Isso é correto Mesmo que o EMA não seja realmente confinado a uma janela com um começo e um fim, não deveria os pesos somar 1 como o LWMA Obrigado Jason, qualquer ponteiro de como aproximar o filtro EMA para qualquer precisão desejada Ao aproximá-lo com um filtro FIR suficientemente longo. Existe um script perl no en. wikipedia. org wiki hellip que fez a imagem do vetor de peso EMA, mas não entendi: se eles definiram o número de pesos para 15, porque eles estão lá? 20 barras vermelhas em vez de 15 ndash MisterH 19 de dezembro 12 às 22:40

No comments:

Post a Comment