Às vezes usamos gráficos de densidade espectral para analisar a periodicidade em séries temporais. Normalmente, analisamos o gráfico por inspeção visual e, em seguida, tentamos tirar uma conclusão sobre a periodicidade. Mas os estatísticos desenvolveram algum teste para verificar se algum pico no gráfico é estatisticamente diferente do ruído branco? Os especialistas da R desenvolveram algum pacote para análise de densidade espectral e para fazer esse tipo de teste? Ótimo se alguém pudesse ajudar.
Atenciosamente,
P.
r
time-series
hypothesis-testing
Pantera
fonte
fonte
bootspecdens
pode ser útil.bootspecdens
Dmitrij; ansioso para verificá-lo.Respostas:
Você deve estar ciente de que estimar espectros de potência usando um periodograma não é recomendado e, de fato, é uma prática ruim desde ~ 1896. É um estimador inconsistente para algo menos que milhões de amostras de dados (e mesmo assim ...) e geralmente tendencioso. O mesmo se aplica ao uso de estimativas padrão de autocorrelações (por exemplo, Bartlett), pois são pares de transformadas de Fourier. Desde que você esteja usando um estimador consistente, existem algumas opções disponíveis.
O melhor deles é uma estimativa de várias janelas (ou conicidade) dos espectros de potência. Nesse caso, usando os coeficientes de cada janela com uma frequência de interesse, você pode calcular uma estatística F harmônica contra uma hipótese nula de ruído branco. Essa é uma excelente ferramenta para detecção de componentes de linha em ruídos e é altamente recomendada. É a opção padrão na comunidade de processamento de sinal para detecção de periodicidades no ruído, sob suposição de estacionariedade.
Você pode acessar o método multitaper de estimativa de espectro e o teste F associado através do
multitaper
pacote em R (disponível via CRAN). A documentação que acompanha o pacote deve ser suficiente para você prosseguir; o teste F é uma opção simples na chamada de funçãospec.mtm
.A referência original que define essas duas técnicas e fornece os algoritmos para elas é a Estimativa de Espectro e Análise Harmônica , DJ Thomson, Proceedings of the IEEE, vol. 70, pág. 1055-1096, 1982.
Aqui está um exemplo usando o conjunto de dados incluído no
multitaper
pacote.Os parâmetros dos quais você deve estar ciente são k e nw : são o número de janelas (definido como 10 acima) e o produto de largura de banda temporal (5.0 acima). Você pode facilmente deixá-los nesses valores quase padrão para a maioria dos aplicativos. O comando centreWithSlepians remove uma estimativa robusta da média da série temporal usando uma projeção nas janelas do Slepian - isso também é recomendado, pois deixar a média produz muita energia nas baixas frequências.
Eu também recomendaria plotar a saída do espectro de 'spec.mtm' em uma escala de log, pois isso limpa significativamente as coisas. Se precisar de mais informações, basta postar e será um prazer fornecer.
fonte
multitaper
pacote parece ter empregado técnicas mais avançadas para diminuir e calcular o intervalo de confiança. Mas acho que a ideia era a mesma, de acordo com David Stoffer. Esta é a única coisa que eu poderia pensar que ensinar peridogoram de baunilha ainda faz sentido hoje.Tentamos resolver esse problema com uma transformação wavelet de um teste espectral recentemente neste artigo . Essencialmente, você precisa considerar a distribuição de ordenadas do periodograma, da mesma forma que o artigo de Fisher, mencionado nas respostas anteriores. Outro artigo de Koen é este . Publicamos recentemente um pacote R hwwntest .
fonte
Você pode obter mais detalhes sobre o teste em MB Priestley, Análise espectral e séries temporais , Academic Press, Londres, 1981, página 406.
Em R, o pacote GeneCycle contém a função
fisher.g.test()
:Espero que isto ajude.
fonte