J'ai des données pour un réseau de stations météorologiques à travers les États-Unis. Cela me donne un bloc de données qui contient la date, la latitude, la longitude et une certaine valeur mesurée. Supposons que les données soient collectées une fois par jour et dictées par la météo à l'échelle régionale (non, nous n'allons pas entrer dans cette discussion).
Je voudrais montrer graphiquement comment les valeurs mesurées simultanément sont corrélées dans le temps et l'espace. Mon objectif est de montrer l'homogénéité régionale (ou son absence) de la valeur étudiée.
Base de données
Pour commencer, j'ai pris un groupe de stations dans la région du Massachusetts et du Maine. J'ai sélectionné les sites par latitude et longitude à partir d'un fichier d'index qui est disponible sur le site FTP de la NOAA.
Vous voyez tout de suite un problème: il y a beaucoup de sites qui ont des identifiants similaires ou qui sont très proches. FWIW, je les identifie à l'aide des codes USAF et WBAN. En regardant plus profondément dans les métadonnées, j'ai vu qu'elles ont des coordonnées et des élévations différentes, et les données s'arrêtent sur un site puis commencent sur un autre. Donc, parce que je ne sais pas mieux, je dois les traiter comme des stations distinctes. Cela signifie que les données contiennent des paires de stations très proches les unes des autres.
Analyse préliminaire
J'ai essayé de regrouper les données par mois civil, puis de calculer la régression des moindres carrés ordinaires entre différentes paires de données. Je trace ensuite la corrélation entre toutes les paires comme une ligne reliant les stations (ci-dessous). La couleur de la ligne montre la valeur de R2 de l'ajustement OLS. La figure montre ensuite comment les 30+ points de données de janvier, février, etc. sont corrélés entre différentes stations dans la zone d'intérêt.
J'ai écrit les codes sous-jacents afin que la moyenne quotidienne ne soit calculée que s'il y a des points de données toutes les 6 heures, les données doivent donc être comparables d'un site à l'autre.
Problèmes
Malheureusement, il y a tout simplement trop de données pour donner un sens à une parcelle. Cela ne peut pas être résolu en réduisant la taille des lignes.
Le réseau semble être trop complexe, donc je pense que je dois trouver un moyen de réduire la complexité ou d'appliquer une sorte de noyau spatial.
Je ne sais pas non plus quelle est la mesure la plus appropriée pour montrer la corrélation, mais pour le public visé (non technique), le coefficient de corrélation d'OLS pourrait être le plus simple à expliquer. Il se peut que je doive également présenter d'autres informations comme le gradient ou l'erreur standard.
Des questions
J'apprends mon chemin dans ce domaine et R en même temps, et j'apprécierais des suggestions sur:
- Quel est le nom le plus formel de ce que j'essaie de faire? Existe-t-il des termes utiles qui me permettraient de trouver plus de documentation? Mes recherches dessinent des blancs pour ce qui doit être une application courante.
- Existe-t-il des méthodes plus appropriées pour montrer la corrélation entre plusieurs ensembles de données séparés dans l'espace?
- ... en particulier, des méthodes dont il est facile de montrer visuellement les résultats?
- Y en a-t-il dans R?
- L'une de ces approches se prête-t-elle à l'automatisation?
la source
Réponses:
Je pense qu'il y a quelques options pour montrer ce type de données:
La première option consisterait à effectuer une «analyse des fonctions orthogonales empiriques» (EOF) (également appelée «analyse en composantes principales» (ACP) dans les cercles non climatiques). Pour votre cas, cela doit être effectué sur une matrice de corrélation de vos emplacements de données. Par exemple, votre matrice de données
dat
serait vos emplacements spatiaux dans la dimension de colonne et le paramètre mesuré dans les lignes; Ainsi, votre matrice de données sera constituée de séries chronologiques pour chaque emplacement. Laprcomp()
fonction vous permettra d'obtenir les principales composantes, ou modes de corrélation dominants, relatifs à ce domaine:La deuxième option serait de créer des cartes qui montrent une corrélation par rapport à un emplacement individuel d'intérêt:
EDIT: exemple supplémentaire
Bien que l'exemple suivant n'utilise pas de données gappy, vous pouvez appliquer la même analyse à un champ de données après une interpolation avec DINEOF ( http://menugget.blogspot.de/2012/10/dineof-data-interpolating-empirical.html ) . L'exemple ci-dessous utilise un sous-ensemble de données mensuelles de pression au niveau de la mer des anomalies provenant de l'ensemble de données suivant ( http://www.esrl.noaa.gov/psd/gcos_wgsp/Gridded/data.hadslp2.html ):
Mappez le principal mode EOF
Créer une carte de corrélation
la source
Je ne vois pas clairement derrière les lignes mais il me semble qu'il y a trop de points de données.
Puisque vous voulez montrer l'homogénéité régionale et pas exactement les stations, je vous suggère tout d'abord de les regrouper spatialement. Par exemple, superposer un "filet de pêche" et calculer la valeur mesurée moyenne dans chaque cellule (à chaque instant). Si vous placez ces valeurs moyennes dans les centres des cellules de cette façon, vous pixellisez les données (ou vous pouvez également calculer la latitude et la longitude moyennes dans chaque cellule si vous ne voulez pas superposer des lignes). Ou de faire la moyenne à l'intérieur des unités administratives, peu importe. Ensuite, pour ces nouvelles "stations" moyennes, vous pouvez calculer les corrélations et tracer une carte avec un plus petit nombre de lignes.
Cela peut également supprimer ces lignes de haute corrélation unique aléatoires traversant toute la zone.
la source