Monday 26 March 2018

Mathematica moving average plot


Eu tenho uma série de séries temporais no pacote ggplot2 e eu executei a média móvel e gostaria de adicionar o resultado da média móvel ao enredo das séries temporais. Exemplo de conjunto de dados (p31): ambtemp dt -1,14 2007-09-29 00:01:57 -1.12 2007-09-29 00:03:57 -1.33 2007-09-29 00:05:57 -1.44 2007 -09-29 00:07:57 -1,54 2007-09-29 00:09:57 -1,29 2007-09-29 00:11:57 Código aplicado para a apresentação da série temporal: Amostra do gráfico médio móvel Amostra dos resultados esperados O O desafio é que os dados da série temporal são obtidos a partir do conjunto de dados, que inclui timestamps e temperatura, mas os dados médios em movimento incluem apenas a coluna média e não os carimbos de data e os dois podem causar inconsistência. Tenho uma lista de pontos de dados,. meus dados. Quando os traço, a curva está irregular. Eu quero suavizar a curva e preservar os dois cantos afiados. Este é um gráfico dos dados brutos. Tentei usar filtros de passagem baixa por uma semana, mas a curva ainda não é muito boa. Minha curva tem muitos ziguezagues. O seguinte é a minha função de filtro passa-baixa. Depois de avaliar o código acima, posso suavizar as três partes da curva em ziguezague separadamente. Então eu os combino. Como eu disse, a curva ainda não parece boa o suficiente. Algumas partes são alteradas de forma inadequada. O que eu quero é algo assim, que foi obtido fazendo um desenho :). Eu só quero usar alguns truques de trama da Mathematica ou alguma outra abordagem que me dê a curva suave que eu estou procurando. Perguntou Oct 10 14 às 13:04 Apenas um comentário prolongado para começar. Vou tentar acompanhar com algum código mais tarde, hoje ou durante o fim de semana. Isso soa como um trabalho perfeito para um Filtro Laguerre e, provavelmente, um adaptável, e. Laguerre filtra uma introdução. Você pode encontrar muitas informações sobre isso online. O filtro Laguerre suaviza um conjunto de dados baseado em polinômios Laguerre. Seu primeiro termo, uma Média de Movimento Exponencial, seguido de certos termos de feedback. O alisamento é controlado por um fator alfa (o alfa para a Média de Movimento Exponencial) e também afasta os demais termos. Alpha pode variar de 1 para seguir os dados quase exatamente para 0 para uma resposta muito lenta. O resultado dá média ponderada de valores passados. Um filtro de lubrificação adaptativo introduz um fator alfa variável baseado em quão bem o filtro rastreia os valores N passados. Isso deve permitir que o filtro siga os dados de forma bastante próxima, pois altera o caractere ao longo do alcance do eixo x. Mathematicas LaguerreL função pode tornar isso bastante fácil. Da documentação: tentarei postar algum código mais tarde. Respondeu 10 de outubro 14 às 13:58 Oi, Jagra Obrigado pelo seu interessante. Eu também vou tentar. Estou pensando que a MovingAverage pode fazer este trabalho perfeitamente se pudermos controlar o peso para fazer a média na parte oscilante e seguir minha curva perto Os dois pontos de inversão. Como você pode ver, com meu LowpassFilter ou kale39s GaussianFilter. Há uma mudança inadequada na parte direita da curva, onde a curva original é suave ou suficientemente boa. Ndash pode 10 de outubro 14 às 14:14 Heres uma abordagem bastante ham-fisted usando GaussianFilter: Primeiro, uma função de filtragem: Esta função aplica um filtro gaussiano a todos os dados maiores que um certo valor y. Podemos usá-lo assim: para jogar com os valores, podemos criar um programa Manipulate simples: acho que o WienerFilter funciona melhor: respondeu 10 de outubro 14 às 13:52 Obrigado kale Como você pode ver, com meu LowpassFilter ou seu GaussianFilter. Há uma mudança inadequada na parte direita da curva, onde a curva original é lisa ou boa o suficiente. Acho que o seu WienerFilter é relativamente bom. Mas ainda podemos melhorar. Você poderia colocar seu código WienerFilter ndash 10 de outubro 14 às 14:21 Ixy Apenas substitua GaussianFilter por WeinerFilter. Ndash kale 10 de outubro 14 às 14:22 Sua resposta 2017 Stack Exchange, Inc

No comments:

Post a Comment