Saturday 11 May 2019

Ambientes ambulantes médios


Estou usando um filtro médio móvel para suavizar os dados para a remoção de valores aberrantes. Ao alterar o número de pontos médios, estou obtendo resultados diferentes. Meus dados são vetores de recursos multidimensionais. Eu apliquei a média móvel para toda a matriz e depois em variáveis ​​individuais. Eles dão resultados diferentes. Então, como escolher não saber o número de pontos para a média e deve ser aplicado em toda a matriz ou uma por uma base, pediu 1 de novembro 13 às 21:44 Glenb 9830 157k 9679 20 9679 260 9679 538 Uma abordagem para escolher um O parâmetro de suavização seria otimizar erros de previsão de um passo a frente (como somas de quadrados de erros de predição de um passo à frente). Se você estiver tentando identificar outliers, você quer uma medida diferente de erro de previsão - um razoavelmente robusto para outliers (e então as médias móveis pareceriam uma escolha estranha - por que não algo mais robusto para os outliers) ndash Glenb 9830 Nov 2 13 em 1: 11 Nem. Ambos. Todos. Desculpa. Mas acho que esta é outra tentativa (embora inteligente) para automatizar o que realmente não pode ser automatizado. É claro que diferentes métodos dão resultados diferentes, as únicas vezes que eles não conseguiriam, é onde o outlier é tão óbvio que você não precisa de um teste. Minha sugestão é usar uma variedade de métodos para identificar possíveis outliers e, em seguida, examinar esses outliers individualmente. Temos um daemon que lê em dados de alguns sensores, e entre as coisas que ele calcula (além de simplesmente denunciar o estado) é O tempo médio que leva para que os sensores mudem de um valor para outro. Ele mantém uma média em execução de 64 datapoints e assume que o tempo de execução é bastante constante. Infelizmente, conforme demonstrado pelo gráfico abaixo, os dados de entrada não são os mais prístinos: (Cada linha representa um conjunto diferente de dados, o eixo x não significa realmente nada além de um vago eixo histórico do tempo). Minha solução óbvia para lidar com isso seria criar um histograma dos dados e, em seguida, escolher o modo. No entanto, eu queria saber se havia outros métodos que renderiam um melhor desempenho ou seriam mais adequados para operação com uma média em execução. Algumas buscas rápidas de Wikipedia sugerem algoritmos para detectar outliers também podem ser adequados. Simplicidade é uma vantagem, já que o daemon está escrito em C. Edit. Compreendi a Wikipedia e criei estas várias técnicas: critério Chauvenets: usando a média e o desvio padrão, calcule a probabilidade de um dado datapoint acontecer e, em seguida, excluí-lo se a probabilidade for realmente ruim é inferior a 50. Enquanto isso parece Para ser bem adaptado para corrigir uma média em execução, não estou bastante convencido de sua eficácia: parece que com dados grandes não desejaria descartar os pontos de dados. Teste de Grubbs: outro método que usa a diferença entre o desvio padrão e o padrão, e tem alguma expressão para quando a hipótese de não outliers é rejeitada Distância de Cozinheiros: Mede a influência de um ponto de dados em uma regressão de mínimos quadrados, nossa aplicação provavelmente o rejeitaria se Excedido 1 Média truncada: descarte a extremidade baixa e a extremidade alta e, em seguida, tome a média como normal. Qualquer pessoa tem alguma experiência específica e pode comentar sobre essas técnicas estatísticas. Além disso, alguns comentários sobre a situação física: estavam medindo o tempo médio até a conclusão de Uma máquina de lavar mecânica, então o tempo de execução deve ser bastante constante. Não tenho certeza se ele realmente tem uma distribuição normal. Editar 2. Outra questão interessante: quando o daemon é bootstrapping, como no, não tem dados anteriores para analisar, como deve lidar com os dados recebidos. Simplesmente não faça qualquer edição sem limite Edite 3. Mais uma coisa. Se o hardware mudar de modo que os tempos de execução se tornem diferentes, vale a pena fazer o algoritmo suficientemente robusto de tal forma que não descartará esses novos tempos de execução, eu deveria lembrar de esvaziar o cache quando isso acontecesse 12 de abril de 09 às 7 : 24 Lido em muitos lugares que o Moving median é um pouco melhor do que a média móvel para algumas aplicações, porque é menos sensível a outliers. Eu queria testar essa afirmação em dados reais, mas não consigo ver esse efeito (verde: mediana, vermelha: média). Veja aqui: tentei com vários valores para a largura da janela (aqui no código 1000) e sempre foi o mesmo: a mediana móvel não é melhor do que a média móvel (ou seja, não menos sensível a outliers). O mesmo com a largura da janela 10000 (10000 a largura da espiga). Você pode fornecer um exemplo mostrando que a mediana móvel é menos sensível a valores esporádicos do que a média móvel e, se possível, usando a amostra. WAV file data-set (download link). Isto é, é possível fazer uma mediana móvel nesses dados, de modo que o resultado seja como esta curva amarela (ou seja, não mais pico). Isso não é realmente uma resposta, mas pensei que ID informasse o que eu vi e pedi mais informações. Eu carreguei seu arquivo test. wav e eu posso ver o sinal traçado abaixo. Então, o que você está recebendo nas parcelas que mostra não é tanto o valor médio, mas é mais como um envelope do sinal. A segunda questão é que o sinal realmente parece ser parte do sinal. Se eu aumentar o zoom, então é isso que eu vejo: o que você realmente está tentando alcançar Obrigado pelo feedback. Abaixo está um código R que faz o seguinte: carrega o arquivo wav. Toma o valor absoluto do sinal (é carregado no canal esquerdo pela biblioteca waveR). Executa um filtro de média móvel de 100 comprimento nos dados para obter algo mais próximo do envelope (sinal vermelho). Em seguida, aplica um filtro médio de comprimentos 201, 2001 e 4001 ao resultado (sinal azul). A partir do gráfico abaixo, o melhor desempenho é o 4001 de comprimento. Caso contrário, o efeito da falha ainda está presente. O único que posso ver agora é que o envelope não corresponde ao verdadeiro envelope, bem como a Id. Um melhor detector de envelope pode melhorar isso (por exemplo, o sinal analítico ou tal). Abaixo está um gráfico do envelope calculado mediano filtrado sobreposto no sinal original. Obrigado pelo tempo que você gastou nesta questão. Na verdade, planejei a mediana e a média do valor absoluto do sinal. E sim, isso dá uma idéia do envelope, isso é o que eu quero. O que eu esperava (graças à mediana em vez de significar) era algo assim. Captura de tela. Infelizmente, independentemente da largura da janela para a mediana. O pico está sempre aqui. Enquanto muitos documentos dizem quotthe mediana tem a vantagem de reduzir o efeito de valores outrais. Ndash Basj 30 de novembro 15 às 14:01 Direita, então a pergunta I39m perguntando é: quotoutlier de whatquot. -) Tomar mediana ou média direta dos dados que você irá produzir resultados sem sentido. A filtragem mediana só funciona bem quando algumas amostras (em relação ao comprimento da janela) estão fora do alcance esperado. Porque os dados que você possui são balanceados positivos e negativos, a mediana não é realmente apropriada para isso. Tomar a mediana do envelope deve funcionar melhor. Você pode até querer colocar um filtro passa-baixa simples no valor absoluto para obter um valor de envelope mais estável. Ndash Peter K. 9830 30 de novembro 15 às 14:05

No comments:

Post a Comment