Como lidar com falhas / NaNs em dados de séries temporais ao usar o Matlab para autocorrelação e redes neurais?

9

Eu tenho uma série temporal de medidas (alturas, uma série dimensional). No período de observação, o processo de medição foi interrompido por alguns momentos. Portanto, os dados resultantes são um vetor com NaNs onde houve lacunas nos dados. Usando o MATLAB, isso está me causando um problema ao calcular a autocorrelação ( autocorr) e aplicar redes neurais ( nnstart).

Como devem ser tratadas essas lacunas / NaNs? Devo apenas removê-los do vetor? Ou substituir sua entrada por um valor interpolado? (se sim, como no MATLAB)

Vass
fonte

Respostas:

4

Eu não tocaria nos dados. Use isso para autocorrelação com NaNs:

http://www.mathworks.com/matlabcentral/fileexchange/43840-autocorrelation-and-partial-autocorrelation-with-nans/content/nanautocorr.m

"não tocar nos dados" significa não remover nenhum dado ou intervalo de tempo ou substituir por 0 ou a média, isso comprometeria as informações sobre a dependência linear do intervalo de tempo específico. Eu também evitaria simular os valores nas lacunas, se você estiver interessado na autocorrelação "SAMPLE", de qualquer maneira, mesmo a melhor técnica de simulação não adicionará mais informações sobre a autocorrelação, baseando-se nos próprios dados. Recodifiquei parcialmente as funções de autocorrelação e autocorrelação parcial do matlab (link acima) para lidar com NaNs: qualquer casal de dados incluindo NaNs é excluído do cálculo. Isso é feito para cada atraso. Funcionou para mim. Qualquer sugestão é bem aceita.

Fabio
fonte
Bem-vindo @Fabio: Você poderia dar mais explicações sobre o que você quer dizer com "não tocar nos dados"? Você quer não remover nada? Também ajudaria a apresentar o conteúdo ao qual você vinculou e a explicar por que isso ajuda o OP.
Momo
Olá Momo, obrigado pelo comentário. "não tocar nos dados" significa não remover nenhum dado ou intervalo de tempo ou substituir por 0 ou a média, isso comprometeria as informações sobre a dependência linear do intervalo de tempo específico. Recodifiquei parcialmente as funções de autocorrelação e autocorrelação parcial do matlab (link acima) para lidar com NaNs: qualquer casal de dados incluindo NaNs é excluído do cálculo. Isso é feito para cada atraso. Funcionou para mim. Qualquer sugestão é bem aceita.
Fabio
3

Existem alguns algoritmos que são imunes a valores ausentes, portanto a solução preferida é procurá-los (por exemplo, Rs acfpara autocorrelação).

Em geral, o caminho a seguir é apenas descartar dados com observações ausentes (pode ser muito doloroso) ou apenas imputar seus valores - a média de vizinhos pode ser suficiente para séries suaves e pequenas lacunas, mas é claro que há inúmeros outros métodos mais poderosos, usando splines, valores aleatórios / mais frequentes, imputação de modelos etc.


fonte
2
O acf com valor ausente é calculado da maneira normal, mas os valores ausentes são 'ignorados' nas somas (ou seja, a fórmula acf para um determinado atraso se parece com uma soma dividida por uma soma, em cada uma dessas somas os valores ausentes podem ser ignorado). Isso não é o mesmo que remover os valores ausentes dos dados originais. O problema com o matlab é que ele não ignora o NaN, e incluir isso no cálculo transforma tudo em NaN.
Zero
1

Use a Detecção de intervenção para atribuir os valores ausentes que exploram a estrutura ARIMA útil e quaisquer tendências de horário local e / ou mudanças de nível.

IrishStat
fonte
1

existem 2 problemas aqui. o primeiro é fornecer uma estrutura numérica significativa para sua resposta de autocorrelação no matlab. para que isso aconteça, você precisa esticar e / ou corrigir a parte da série temporal de seus vetores de dados ... esse componente de "integridade dos dados" do problema é o mais fundamental.

em segundo lugar, você precisa decidir como lidar com o componente 'valor' do seu vetor ... isso depende em grande parte da aplicação específica quanto ao que é melhor assumir (por exemplo, pequenos carimbos de data e hora ausentes e os NaNs correspondentes ou Nulos podem ser interpolados com segurança dos vizinhos ... em intervalos maiores, definir o valor como zero é provavelmente mais seguro ... ou imputar como recomendado acima - obviamente, para que isso seja significativo, os intervalos novamente devem ser comparativamente pequenos.) .

chris
fonte