Estou escrevendo um programa que calcula a média do peso do usuário em dias diferentes. Estou planejando usar uma média móvel de 5 pontos (dia atual, dois antes e dois depois). Às vezes, um ponto de dados está ausente por 1-2 dias. Como esses casos são geralmente tratados?
(se houver um filtro passa-baixas melhor que eu possa usar, adoraria sugestões)
Respostas:
Como impressão geral, a regressão funcionaria melhor ao ajustar automaticamente os pontos ausentes, em vez de um filtro de média móvel que você escolheu.
Se você usar um filtro AR (filtro regressivo automático) ou ARMA - poderá ter um valor previsto de uma saída de amostra com base nas entradas anteriores.
Onde é o valor previsto.X^[i]
Especificamente no seu caso, diga que você sabe que o peso da pessoa tem um intervalo específico . Agora, se você não tiver o valor - aplique duas substituições diferentes - uma com Min e outra com Max e com base no modelo disponível, você terá dois resultados extremos de casos para e poderá escolha algo entre eles. x [ i - 1 ]Xmax,Xmin x[i−1] X^[i]
Existem várias outras alternativas - você pode manter
x [i]=longa duração média da amostra de X
Essencialmente, é um jogo de previsão desse valor mencionado e continua a usá-lo como sinal. Obviamente, a previsão não será igual a uma amostra original, mas esse é o preço que você paga por não ter dados.
fonte
Um método simples e geral para preencher dados ausentes, se você tiver execuções completas, é usar a
regressão Linear . Digamos que você tenha 1000 execuções de 5 seguidas e nenhuma delas esteja faltando.
Configure o vetor 1000 x 1 y e a matriz X 1000 x 4:
A regressão fornece 4 números abcd que dão a melhor correspondência
para suas 1000 linhas de dados - dados diferentes, diferentes abc d.
Então você usa esses abcd para estimar (prever, interpolar) o peso em falta [0].
(Para pesos humanos, eu esperaria que o abcd fosse em torno de 1/4.)
Em python, consulte numpy.linalg.lstsq .
(Existem milhões de livros e artigos sobre regressão, em todos os níveis. Para a conexão com a interpolação, porém, não conheço uma boa introdução; alguém?)
fonte
Se você não conhece alguns dados, sua melhor aposta é não ficar na média deles. Adivinhar com regressão linear e similares pode ajudar, mas também pode introduzir complexidade extra e viés não intencional para seus dados. Eu diria que, se você está calculando a média desses cinco pontos de dados: , sua resposta deve ser[a,b,c,?,e]
fonte
acho que a maneira mais simples seria "prever" a data do "todo" na série temporal usando os dados que vieram antes. então você pode usar essas séries temporais para estimativa de parâmetros. (você pode prosseguir e reprimir os valores ausentes usando os parâmetros estimados de todas as séries temporais (concluídas) e repeti-las até convergirem. você deve derivar os limites de confiança do número de pontos de dados reais que você possui, e não da extensão dos dados concluídos.
fonte