Les données sont constituées de spectres optiques (intensité lumineuse en fonction de la fréquence) enregistrés à différents moments. Les points ont été acquis sur une grille régulière en x (temps), y (fréquence). Afin d'analyser l'évolution du temps à des fréquences spécifiques (une montée rapide, suivie d'une décroissance exponentielle), je voudrais supprimer une partie du bruit présent dans les données. Ce bruit, pour une fréquence fixe, peut probablement être modélisé comme aléatoire avec une distribution gaussienne. À un moment fixe, cependant, les données montrent un type de bruit différent, avec de grandes pointes parasites et des oscillations rapides (+ bruit gaussien aléatoire). Autant que je puisse imaginer, le bruit le long des deux axes ne doit pas être corrélé car il a des origines physiques différentes.
Quelle serait une procédure raisonnable pour lisser les données? Le but n'est pas de déformer les données, mais de supprimer les artefacts bruyants "évidents". (et le sur-lissage peut-il être réglé / quantifié?) Je ne sais pas si le lissage dans une direction indépendamment de l'autre est logique, ou s'il vaut mieux lisser en 2D.
J'ai lu des choses sur l'estimation de la densité du noyau 2D, l'interpolation polynomiale / spline 2D, etc. mais je ne connais pas le jargon ou la théorie statistique sous-jacente.
J'utilise R, pour lequel je vois de nombreux packages qui semblent liés (MASS (kde2), champs (smooth.2d), etc.) mais je ne trouve pas beaucoup de conseils sur la technique à appliquer ici.
Je suis heureux d'en savoir plus, si vous avez des références spécifiques à me montrer (j'entends que MASS serait un bon livre, mais peut-être trop technique pour un non-statisticien).
Edit: Voici un spectrogramme factice représentatif des données, avec des coupes le long des dimensions de temps et de longueur d'onde.
L'objectif pratique ici est d'évaluer le taux de décroissance exponentielle dans le temps pour chaque longueur d'onde (ou bacs, si trop bruyant).
Réponses:
Vous avez besoin de pour spécifier un modèle qui sépare le signal du bruit.
Il y a la composante du bruit au niveau de la mesure que vous supposez gaussienne. Les autres composants, dépendant des mesures:
"Ce bruit, pour une fréquence fixe, peut probablement être modélisé comme aléatoire avec une distribution gaussienne". Besoin de clarification - la composante de bruit est-elle commune à tous les points temporels, étant donné la fréquence? L'écart type est-il le même pour toutes les fréquences? Etc.
"À un moment fixe, cependant, les données montrent un type de bruit différent, avec de grandes pointes parasites et des oscillations rapides" Comment séparez-vous cela du signal, car vous êtes probablement intéressé par la variation de l'intensité à travers la fréquence. La variation intéressante est-elle en quelque sorte différente de la variation sans intérêt, et si oui, comment?
Les oscillations parasites ou le bruit non gaussien en général ne sont pas un gros problème, si vous avez une idée réaliste de ses caractéristiques. Il peut être modélisé en transformant les données (puis en utilisant un modèle gaussien) ou en utilisant explicitement une distribution d'erreur non gaussienne. La modélisation du bruit corrélé sur les mesures est plus difficile.
Selon la façon dont votre bruit et votre modèle de données sont, vous pourriez être en mesure de modéliser les données avec un outil à usage général comme les GAM dans le package mgcv, ou vous pourriez avoir besoin d'un outil plus flexible, ce qui conduit facilement à une configuration bayésienne assez personnalisée . Il existe des outils pour de tels modèles, mais si vous n'êtes pas statisticien, apprendre à les utiliser prendra un certain temps.
Je suppose que soit une solution spécifique à l'analyse spectrale soit le package mgcv sont vos meilleurs paris.
la source
Une série temporelle de spectres me suggère une expérience cinétique , et il existe une quantité bien établie de littérature chimiométrique à ce sujet.
Que savez-vous des spectres? De quel type de spectres s'agit-il? Pouvez-vous raisonnablement vous attendre à n'avoir que deux espèces, éduit et produit?
Pouvez-vous raisonnablement supposer la bilinéarité, c'est-à-dire les spectres mesurésX à un moment donné sont une combinaison linéaire des concentrations de composants C fois le spectre des composants purs S :
Vous dites que vous voulez estimer une décroissance exponentielle (dans les concentrations). Ceci, associé à la bilinéarité, me suggère une résolution de courbe multivariée (MCR). Il s'agit d'une technique qui vous permet d'utiliser les informations dont vous disposez (par exemple, les spectres de composants purs de certaines substances ou les hypothèses sur le comportement de concentration comme la décroissance exponentielle) pendant l'ajustement du modèle.
Anna de Juan, Marcel Maeder, Manuel Martínez Romà Tauler: Combiner la modélisation dure et douce pour résoudre les problèmes cinétiques, la chimiométrie et les systèmes de laboratoire intelligents 54, 2000. 123–141.
Pour autant que je sache, il est assez courant de lisser les concentrations selon certains modèles, par exemple cinétiques, mais il est beaucoup moins courant de lisser les spectres. Cependant, l'algorithme permet de le faire. J'ai demandé à Anna en été s'ils imposaient des contraintes de lissage, mais elle m'a répondu que non (et les bons spectroscopistes détestent le lissage au lieu de mesurer de bons spectres ;-)). Souvent, ce n'est pas nécessaire non plus, car l'agrégation des informations de tous les spectres donnera déjà de bonnes estimations des spectres des composants purs.
J'ai fait des "spectres de composants" lisses (en fait, les composants principaux) deux fois récemment ( Dochow et al .: Dispositif Raman sur puce et fibres de détection avec réseau de Bragg pour l'analyse des solutions et des particules, LabChip, 2013 et Dochow el al. : Puce microfluidique de quartz pour l'identification des cellules tumorales par spectroscopie Raman en combinaison avec des pièges optiques, AnalBioanalChem, accepté) mais dans ces cas, mes connaissances spectroscopiques m'ont dit que j'étais autorisé à le faire. J'applique assez régulièrement une sous-échantillonnage et une interpolation de lissage à mes spectres Raman (
hyperSpec::spc.loess
).Comment savoir ce qu'est trop de lissage? Je pense que la seule réponse possible est "une connaissance approfondie du type de spectroscopie et d'expérience".
edit: J'ai relu la question, et vous dites que vous voulez estimer la décroissance à chaque longueur d'onde. Cependant, est-ce vrai ou voulez-vous estimer la décroissance de différentes espèces avec des spectres qui se chevauchent?
la source
Pour moi, cela ressemble beaucoup à un cas pour l'analyse des données fonctionnelles (FDA), bien que je n'ai aucune idée de la physique derrière votre problème, et je peux me tromper complètement. Si vous pouvez considérer que le processus derrière vos données est intrinsèquement fluide et continu, vous pouvez utiliser une extension de fonction de base bivariée pour capturer vos mesures sous la formeintensity=f(time,frequency) , avec f étant une somme de fonctions de base (par exemple les splines b) et de coefficients. Un ensemble limité de fonctions de base réduit directement la rugosité et annule donc une bonne partie du bruit blanc.
Vous avez mentionné l'interpolation spline, mais vous n'avez pas mentionné le paquetage fda qui implémente assez bien et facilement l'accessibilité de la fonction de base que j'ai mentionnée ci-dessus. L'ensemble de mesures simultanées du temps, de la fréquence et de l'intensité (ordonné comme un tableau tridimensionnel) pourrait être capturé comme un objet de données fonctionnelles bivariées, voir. par exemple la fonction 'Data2fd'. De plus, plusieurs procédures de lissage sont disponibles dans l'emballage, toutes conçues pour annuler le bruit blanc ou la "rugosité" dans les mesures de processus intrinsèquement lisses.
L' article de Wikipedia formule le problème du bruit blanc dans la FDA comme suit:
La FDA fournit les outils pour ces cas. Cela ne se traduit-il pas dans votre cas?
Concernant la FDA: je n'étais pas non plus, mais le livre de Ramsay et Silverman sur FDA (2005) rend les bases très bien accessibles et Ramsay Hooker et Graves (2009) traduisent directement les idées du livre en code R. Les deux volumes devraient être disponibles sous forme de livres électroniques dans une bibliothèque universitaire de statistiques, biosciences, climatologie ou psychologie. Google affichera également d'autres liens que je ne peux pas publier ensemble ici.
Désolé de ne pas pouvoir fournir de solution plus directe à votre problème. Cependant, la FDA m'a beaucoup aidé une fois que j'ai compris à quoi cela sert.
la source
Étant un simple physicien, pas un expert en statistiques, j'adopterais une approche simple. Les deux dimensions sont de natures différentes. Il serait logique de lisser le temps avec un algorithme et de lisser le long de la longueur d'onde avec un autre.
Les algorithmes réels que j'utiliserais: pour la longueur d'onde, Savitzky-Golay avec un ordre supérieur, 6 peut-être 8.
Avec le temps, si cet exemple est typique, ce saut soudain et ce déclin plus ou moins exponentiel le rendent délicat. J'ai eu des données expérimentales et des images bruyantes, juste comme ça. Si les méthodes simples et simples ne vous aident pas suffisamment, essayez un lisseur gaussien mais supprimez son effet près du saut, tel que détecté par un détecteur de bord. Lissez et élargissez la sortie du détecteur de bord, normalisez-le pour passer de 0,0 à 1,0 et utilisez-le pour sélectionner entre l'image d'origine et celle lissée gaussienne, pixel par pixel.
la source
@baptiste: Je suis content que vous ayez ajouté l'intrigue comme je l'ai suggéré. Cela aide beaucoup:
Donc, si je comprends bien, votre objectif pratique est d'évaluer le taux de décroissance exponentielle pour chaque longueur d'onde; alors faisons-le! Définissez séparément une fonction que vous souhaitez minimiser pour chaque longueur d'onde et minimisez-la.
Regardons une seule longueur d'onde donnée, comme dans votre tracé en bas à droite.
Tout d'abord, pour plus de simplicité, jetons toutes les valeurs avant 0,2 seconde, car elles contiennent une discontinuité massive (notre approche peut être augmentée pour y faire face plus tard). Ensuite, définissez le critère d'optimisation suivant, qui vise à trouver la constante de décroissanceτ :
Vous pouvez résoudre ce problème d'optimisation de manière analytique en différenciant wrtτ , égal à zéro, et résoudre pour τ ; ou vous pouvez utiliser un solveur.
Plus tard, si vous pensez que la longueur d'onde adjacente devrait avoir des constantes de désintégration similaires, vous pouvez l'incorporer dans un critère d'optimisation plus élaboré.
Si quelque chose, je vous suggère de lire un livre à lire absolument sur l'optimisation: l' optimisation convexe de Boyd .
J'espère que cela t'aides!
la source