STL em séries temporais com valores ausentes para detecção de anomalias

12

Estou tentando detectar valores anômalos em uma série temporal de dados climáticos com algumas observações ausentes. Pesquisando na web, encontrei muitas abordagens disponíveis. Dessas, a decomposição do stl parece atraente, no sentido de remover componentes de tendência e sazonais e estudar o restante. Lendo STL: um procedimento de decomposição de tendências sazonais baseado em Loess , stlparece ser flexível na determinação das configurações para atribuir variabilidade, não afetadas por valores discrepantes e possíveis de aplicar, apesar dos valores ausentes. No entanto, tentando aplicá-lo em R, com quatro anos de observações e definindo todos os parâmetros de acordo com http://stat.ethz.ch/R-manual/R-patched/library/stats/html/stl.html , encontro erro:

"time series contains internal NAs"(quando na.action=na.omit) e
"series is not periodic or has less than two periods"(quando na.action=na.exclude).

Verifiquei duas vezes se a frequência está definida corretamente. Vi perguntas relevantes em blogs, mas não encontrei nenhuma sugestão que pudesse resolver isso. Não é possível aplicar stlem uma série com valores ausentes? Estou muito relutante em interpolá-los, pois não quero apresentar (e consequentemente detectar ...) artefatos. Pelo mesmo motivo, não sei o quão aconselhável seria usar as abordagens ARIMA (e se os valores ausentes ainda seriam um problema).

Compartilhe se você conhece uma maneira de aplicar stlem uma série com valores ausentes, ou se acredita que minhas escolhas não são metodologicamente válidas ou se você tem alguma sugestão melhor. Sou bastante novo em campo e dominado pelas pilhas de informações (aparentemente ...) relevantes.

effie
fonte
Estou tendo o mesmo problema. O método STL deve ser capaz de preencher apenas os valores ausentes por meio de LOESS, mas essa implementação R não parece fazê-lo.
Jf328

Respostas:

5

Os modelos ARIMA incorporam facilmente variáveis ​​dummy para lidar com valores ausentes. Estes são chamados de indicadores de pulso. A metodologia é direta e documentada em http://www.unc.edu/~jbhill/tsay.pdf . Em geral, o método extrai das informações atuais da série residual sobre pulsos, mudanças de nível, pulsos sazonais e tendências de hora local.

IrishStat
fonte
obrigado pela sugestão e pelo artigo muito interessante!
Effie
3

De acordo com @Julius neste post, é possível usar stlcom na.approx, a partir do zoopacote, usando stl(x, na.action = na.approx, ...). Isso faz algum tipo de interpolação .

Robert
fonte
0

Você também pode querer conferir o stlpluspacote do Hafen . Os detalhes estão em sua tese.

Você pode instalá-lo a partir do CRAN com

install.packages("stlplus")

ou diretamente do github com

devtools::install_github("hafen/stlplus").
sfjac
fonte