Test de la signification des pics de densité spectrale

20

Nous utilisons parfois le tracé de densité spectrale pour analyser la périodicité des séries chronologiques. Normalement, nous analysons l'intrigue par inspection visuelle, puis essayons de tirer une conclusion sur la périodicité. Mais les statisticiens ont-ils développé un test pour vérifier si des pointes dans l'intrigue sont statistiquement différentes du bruit blanc? Les experts R ont-ils développé un package pour l'analyse de la densité spectrale et pour faire ce genre de test? Génial si quelqu'un pouvait aider.

Cordialement,
P.

Pantera
la source
1
Pressé par @Wesley, j'ai supprimé mes réflexions rapides sur les fonctions d'autocorrélation et le périodogramme (peut-être qu'il est en effet un gourou de l'analyse du domaine fréquentiel, mais personnellement, je ne pense pas Bartlett, tout en travaillant avec les autocorrélations dans le domaine temporel), mais je pense toujours que mon une deuxième suggestion sur bootspecdenspeut être utile.
Dmitrij Celov
Je fonde mon hypothèse sur la réponse des gens à "qu'est-ce qu'une autocorrélation?" sur les apparences de la littérature, dans lesquelles presque tous les cas où une autocorrélation est utilisée étant de l'autocorrélation standard, calculée dans le domaine temporel, Barlett. Et, malheureusement, c'est mauvais! :) J'apprécie la suggestion de bootspecdensDmitrij; hâte de le vérifier.
Wesley Burr

Réponses:

9

Vous devez savoir que l'estimation des spectres de puissance à l'aide d'un périodogramme n'est pas recommandée, et en fait, c'est une mauvaise pratique depuis ~ 1896. C'est un estimateur incohérent pour rien de moins que des millions d'échantillons de données (et même alors ...), et généralement biaisé. La même chose s'applique exactement à l'utilisation d'estimations standard d'autocorrélations (c'est-à-dire Bartlett), car ce sont des paires de transformées de Fourier. Si vous utilisez un estimateur cohérent, certaines options s'offrent à vous.

La meilleure d'entre elles est une estimation sur plusieurs fenêtres (ou effilement) des spectres de puissance. Dans ce cas, en utilisant les coefficients de chaque fenêtre à une fréquence d'intérêt, vous pouvez calculer une statistique F harmonique par rapport à une hypothèse nulle de bruit blanc. Il s'agit d'un excellent outil pour la détection des composants de ligne dans le bruit, et il est fortement recommandé. C'est le choix par défaut dans la communauté du traitement du signal pour la détection des périodicités du bruit sous l'hypothèse de stationnarité.

Vous pouvez accéder à la fois à la méthode multicouche d'estimation du spectre et au test F associé via le multitaperpackage en R (disponible via CRAN). La documentation fournie avec le package devrait être suffisante pour vous permettre de continuer; le test F est une option simple dans l'appel de fonction pour spec.mtm.

La référence originale qui définit ces deux techniques et en donne les algorithmes est Spectrum Estimation and Harmonic Analysis , DJ Thomson, Proceedings of the IEEE, vol. 70, p. 1055-1096, 1982.

Voici un exemple d'utilisation de l'ensemble de données inclus avec le multitaperpackage.

require(multitaper);
data(willamette);
resSpec <- spec.mtm(willamette, k=10, nw=5.0, nFFT = "default",
                    centreWithSlepians = TRUE, Ftest = TRUE,
                    jackknife = FALSE, maxAdaptiveIterations = 100,
                    plot = TRUE, na.action = na.fail) 

Les paramètres que vous devez connaître sont k et nw : ce sont le nombre de fenêtres (défini sur 10 ci-dessus) et le produit de bande passante (5,0 ci-dessus). Vous pouvez facilement les laisser à ces valeurs quasi-par défaut pour la plupart des applications. La commande centreWithSlepians supprime une estimation robuste de la moyenne des séries chronologiques à l'aide d'une projection sur les fenêtres de Slepian - cela est également recommandé, car laisser la moyenne dans produit beaucoup d'énergie aux basses fréquences.

Je recommanderais également de tracer le spectre de sortie de 'spec.mtm' sur une échelle logarithmique, car cela nettoie considérablement les choses. Si vous avez besoin de plus d'informations, postez-le et je serai heureux de vous le fournir.

Wesley Burr
la source
À Burr, Silva et Celov - merci beaucoup pour vos réponses et suggestions intéressantes. J'ai hâte de tester ces estimateurs. Meilleures salutations
Pantera
(+1) cette nuit, j'ai soigneusement réfléchi à vos suggestions et j'ai décidé que le domaine temporel était en effet la dernière chose (en raison de la troncature du décalage et des propriétés faibles dans les petits échantillons) à essayer de rechercher un comportement cycliste. Ce qui m'inquiète personnellement, ce sont les hypothèses pour les statistiques F et les propriétés de petite taille de l'échantillon du schéma proposé. Eh bien et probablement, il est bon de commencer une question distincte concernant la sélection optimale de la fenêtre, car il y en a effectivement beaucoup.
Dmitrij Celov
Il existe en effet de nombreux choix de fenêtres, bien que les deux plus courantes soient les séquences sphéroïdales discrètes (ou Slepians ) et les cônes sinusoïdaux. Si vous recherchez une concentration maximale d'énergie dans une bande passante locale, les Slepians se sont révélés être optimaux, et sont en fait la sortie de la forme d'équation intégrale de la densité spectrale (voir l'article que j'ai mentionné pour plus de détails). En ce qui concerne les statistiques F, il y a certainement quelques problèmes avec les degrés de liberté, mais dans l'ensemble, ils fonctionnent assez bien, avec environ 2k-2 dof disponibles.
Wesley Burr
Le périodogramme lissé utilise également la conicité, permet la FFT, le livre de David Stoffer vous apprend également à calculer les intervalles de confiance. Ce multitaperpackage semble avoir utilisé des techniques plus avancées pour réduire et calculer l'intervalle de confiance. Mais je pense que l'idée était la même, selon David Stoffer. C'est la seule chose à laquelle je pouvais penser que l'enseignement du péridogoram de vanille a toujours un sens aujourd'hui.
stucash
ok donc vous êtes l'un des auteurs de ce paquet et vous avez utilisé des mots très forts contre le périodogramme J'espère que vous pourrez un jour revenir avec plus de preuves. Les avantages et les inconvénients courants du périodogramme sont bien connus, comme sa variance explosive, c'est pourquoi ce n'est pas un bon estimateur cohérent pour le spectre, mais le périodogramme lissé n'est pas vraiment si mauvais, pas aussi mauvais que vous l'avez dit ici, je pense.
stucash
3

Nous avons tenté de résoudre ce problème par une transformation en ondelettes d'un test spectral récemment dans cet article . Essentiellement, vous devez considérer la distribution des ordonnées du périodogramme, de manière similaire à l'article de Fisher, mentionné dans les réponses précédentes. Un autre document de Koen est ce . Nous avons récemment publié un package R hwwntest .

Delyan Savchev
la source
Savchev, merci beaucoup pour vos commentaires et références. J'ai hâte de tester votre R-package.
Pantera
2

F(ωk)

Vous pouvez obtenir plus de détails sur le test dans MB Priestley, Spectral Analysis and Time Series , Academic Press, Londres, 1981, page 406.

Dans R, le package GeneCycle contient la fonction fisher.g.test():

library(GeneCycle)
?fisher.g.test

J'espère que cela t'aides.

Washington S. Silva
la source
c'est génial mais le test g du package repose sur sa propre fonction de périodogramme qui a des options très limitées pour calculer les spectres de puissance ...
stucash