Je suis après une description / méthodologie pour mener une analyse en composantes principales pondérée géographiquement (GWPCA). Je suis heureux d’utiliser Python pour n’importe quelle partie de cela et j’imagine que SPSS ou R sont utilisés pour exécuter la PCA sur les variables pondérées géographiquement.
Mon jeu de données est composé d'environ 30 variables indépendantes qui sont mesurées dans environ 550 secteurs de recensement (géométrie vectorielle).
Je sais que c'est une question chargée. Mais, lorsque je cherche et que je cherche, il ne semble pas y avoir de solutions. Ce que j'ai rencontré sont des équations mathématiques qui expliquent la composition fondamentale de GWPCA (et GWR). Ce que je recherche est plus appliqué dans un sens, c’est-à-dire que je recherche les étapes principales que je dois accomplir pour passer des données brutes aux résultats de la GWPCA.
Je voudrais développer la première partie avec cette modification en raison des commentaires reçus ci-dessous.
Pour adresser Paul ...
Je fonde mon intérêt pour GWPCA sur le document suivant:
Lloyd, CD, (2010). Analyse des caractéristiques de la population à l'aide d'une analyse en composantes principales pondérée géographiquement: une étude de cas de l'Irlande du Nord en 2001. Computers, Environment and Urban Systems, 34 (5), p. 389-399.
Pour ceux qui n'ont pas accès à la littérature, j'ai joint des captures d'écran des sections particulières expliquant les mathématiques ci-dessous:
Et pour aborder whuber ...
Sans entrer dans les détails (confidentialité), nous essayons de réduire les 30 variables, que nous considérons tous comme de très bons indicateurs (bien que globalement), à l'ensemble des composants avec des valeurs propres supérieures à 1. En calculant les composants pondérés géographiquement, comprendre les variances locales expliquées par ces composantes.
Notre objectif principal sera de prouver le concept de GWPCA, c'est-à-dire de montrer la nature spatialement explicite de nos données et que nous ne pouvons pas considérer toutes les variables indépendantes comme explicatives à l'échelle mondiale. Plutôt, l'échelle locale (les quartiers) que chaque composante identifiera nous aidera à comprendre la nature multidimensionnelle de nos données (comment les variables peuvent être combinées entre elles pour expliquer certains quartiers de notre zone d'étude).
Nous espérons cartographier le pourcentage de variance représenté par chaque composant (séparément), pour comprendre l'étendue du voisinage expliquée par le composant en question (nous aider à comprendre la spatialité locale de nos composants). Peut-être quelques autres exemples de cartographie, mais aucun ne vient à l'esprit pour le moment.
Aditionellement:
Les mathématiques derrière la GWPCA vont au-delà de ce que je comprends compte tenu de ma formation en analyse géographique et en statistiques sociales. L’application des mathématiques est la plus importante, c’est-à-dire, que dois-je connecter à ces variables / formules?
la source
Réponses:
"PCA géographiquement pondéré" est très descriptif:
R
le programme s’écrit pratiquement lui-même. (Il faut plus de lignes de commentaires que de lignes de code.)Commençons par les poids, car c’est là que PCA, géographiquement pondérée, se sépare de la société PCA. Le terme "géographique" signifie que les poids dépendent des distances entre un point de base et les emplacements de données. La pondération standard - mais pas seulement - est une fonction gaussienne; c'est-à-dire une décroissance exponentielle avec une distance au carré. L'utilisateur doit spécifier le taux de décroissance ou, plus intuitivement, une distance caractéristique sur laquelle une décroissance fixe se produit.
La CPA s’applique soit à une covariance, soit à une matrice de corrélation (dérivée d’une covariance). Voici donc une fonction permettant de calculer les covariances pondérées de manière numériquement stable.
La corrélation est dérivée de la manière habituelle, en utilisant les écarts-types pour les unités de mesure de chaque variable:
Maintenant nous pouvons faire la PCA:
(Cela représente jusqu'à présent 10 lignes de code exécutable. Il ne vous en faudra plus qu'une, après avoir décrit une grille sur laquelle effectuer l'analyse.)
Illustrons avec des échantillons de données aléatoires comparables à ceux décrits dans la question: 30 variables sur 550 emplacements.
Les calculs pondérés géographiquement sont souvent effectués sur un ensemble sélectionné d'emplacements, par exemple le long d'un transect ou à des points d'une grille régulière. Utilisons une grille grossière pour avoir une perspective sur les résultats; plus tard - une fois que nous sommes certains que tout fonctionne et que nous obtenons ce que nous voulons - nous pouvons affiner le réseau.
Il y a une question de savoir quelles informations nous souhaitons conserver de chaque APC. En règle générale, une ACP pour n variables renvoie une liste triée de n valeurs propres et - sous diverses formes - une liste correspondante de n vecteurs, chacun de longueur n . C'est n * (n + 1) nombres à mapper! En prenant quelques indices de la question, cartographions les valeurs propres. Celles-ci sont extraites de la sortie de
gw.pca
via l'$sdev
attribut, qui correspond à la liste des valeurs propres par valeur décroissante.Cela se termine en moins de 5 secondes sur cette machine. Notez qu'une distance caractéristique (ou "bande passante") de 1 a été utilisée dans l'appel à
gw.pca
.Le reste est une question de nettoyage. Mappons les résultats à l'aide de la
raster
bibliothèque. (Au lieu de cela, on pourrait écrire les résultats dans un format de grille pour le post-traitement avec un SIG.)Ce sont les quatre premières des 30 cartes, montrant les quatre plus grandes valeurs propres. (Ne soyez pas trop excités par leurs tailles, qui dépassent 1 à chaque endroit. Rappelez-vous que ces données ont été générées totalement au hasard et donc, si elles ont une structure de corrélation - ce que les valeurs propres approximatives dans ces cartes semblent indiquer. - C’est uniquement dû au hasard et ne reflète en rien ce qui est "réel" qui explique le processus de génération de données.)
Il est instructif de changer la bande passante. Si c'est trop petit, le logiciel se plaindra des singularités. (Je n'ai intégré aucune vérification d'erreur dans cette implémentation complète.) Mais le réduire de 1 à 1/4 (et en utilisant les mêmes données qu'auparavant) donne des résultats intéressants:
Notez la tendance des points autour de la limite à donner des valeurs propres principales inhabituellement grandes (indiquées dans les emplacements verts de la carte en haut à gauche), tandis que toutes les autres valeurs propres sont déprimées pour compenser (indiquées par le rose pâle dans les trois autres cartes). . Ce phénomène, ainsi que de nombreuses autres subtilités de la PCA et de la pondération géographique, devra être compris avant de pouvoir espérer interpréter de manière fiable la version pondérée de la PCA. Et puis il y a les 30 * 30 = 900 autres vecteurs propres (ou "charges") à considérer ....
la source
nrow=n.cols
, mais c'est ainsi que cela a fonctionné (en fonction de la manière dont elle apoints
été créée) et je ne voulais pas tout renommer.Mise à jour:
CRAN - GWmodel propose désormais un package R spécialisé qui comprend, entre autres outils, une analyse PCA pondérée géographiquement. Du site de l'auteur :
Plus de détails dans l'aperçu d'un prochain article .
Je doute qu'il existe une solution «prête à l'emploi, connectez vos données». Mais j'espère beaucoup avoir tort, car j'aimerais bien tester cette méthode avec certaines de mes données.Quelques options à considérer:
Marí-Dell'Olmo et ses collègues ont utilisé une analyse factorielle bayésienne pour calculer l'indice de défavorisation pour les petites régions d'Espagne:
Dans cet article, ils fournissent des spécifications du modèle WinBUGS exécuté à partir de R qui pourraient vous aider à démarrer.
Le package adegenet R implémente la
spca
fonction. Bien qu'il se concentre sur les données génétiques, il pourrait tout aussi bien être aussi proche d'une solution à votre problème que vous pouvez obtenir. Soit en utilisant directement ce paquet / cette fonction, soit en modifiant son code. Il existe une vignette sur le problème qui devrait vous permettre de démarrer.Les chercheurs du groupe de recherche stratégique semble travailler activement sur le sujet. Surtout Paul Harris et Chris Brunsdon (la présentation que je suis tombé sur). La récente publication de Paul et Urska ( texte intégral ) pourrait également être une ressource utile:
Pourquoi n'essayez-vous pas de les contacter et de leur demander quelles solutions ils utilisent exactement? Ils pourraient être disposés à partager leur travail ou à vous orienter dans la bonne direction.
L'article mentionne l'utilisation du système GeoDAS GIS . Peut-être une autre piste.
la source
spca
vignette.) C’est une utilisation puissante et légitime de GWPCA. (Cependant, cette méthode pourrait être grandement améliorée etGWmodel
ressemble à un paquet à acquérir.