Calcul de la corrélation spatiale entre les entités de deux couches distinctes dans QGIS

10

J'essaie de déterminer si la présence d'un grand nombre de militaires en service actif dans une zone est spatialement corrélée avec des niveaux plus ou moins élevés de crimes violents. Autrement dit, les zones entourant les grandes bases militaires sont-elles plus / moins violentes, en moyenne, que les zones qui ne sont pas à proximité de bases militaires?

Je travaille avec les deux jeux de données suivants:

(1) un ensemble de données ponctuelles sur les bases militaires des États-Unis continentaux et leurs niveaux de troupes correspondants:

Emplacements des installations militaires américaines dans le bas 48

(2) un ensemble de données nationales sur les taux de crimes violents par ville:

Niveaux de crimes violents aux États-Unis par ville

J'ai l'impression de chercher une sorte de modèle basé sur la gravité où la fonction "masse" donne des niveaux de troupes à chaque base. Ainsi, une grande présence de troupes exercerait une influence sur une plus grande zone et aurait un effet plus fort près du centre de masse (c'est-à-dire l'emplacement du point dans la couche SIG).

Je pense que, conceptuellement, cela ressemblerait à ceci: modèle de gravité - diagramme de décroissance de la distance

Dans ce diagramme, X, Y, Z représentent des bases militaires. a, b, c, d représentent chacun des villes (chacune ayant un champ de taux de violence dans sa table attributaire).

Le gradient autour des bases représente le champ d'influence, qui diminue exponentiellement avec la distance du centre de gravité de la base. Une plus grande présence de troupes équivaut à un plus grand rayon d'influence (avec une certaine distance de seuil maximale), et également à une influence plus forte à proximité du centre par rapport aux zones proches d'une base plus petite.

Chaque ville se verra attribuer un score basé sur la somme de l’amplitude de tous les vecteurs de «force» de toutes les bases environnantes dont ils dépendent. Ainsi, dans mon diagramme, la ville a aurait un score de 0 car elle se trouve en dehors du rayon de toute base. Ville b ne serait influencée par la base X . Ville c ne serait influencée par la base Z , et son score serait inférieur à b , puisque X est une base beaucoup plus grande que Z . Enfin, la ville d se situe dans le rayon des deux bases X et Y, il recevrait un score basé sur la somme de l'ampleur de l'influence des deux bases. Je verrais alors s'il existe une corrélation entre un score plus élevé pour une ville et des taux de violence plus élevés.

J'ai étudié divers modèles basés sur la gravité (modèles Huff , etc.) mais je n'ai pas pu trouver grand-chose jusqu'à QGIS / Python, et je ne sais pas trop comment mettre en œuvre ce que j'ai décrit ci-dessus ... Quelqu'un a-t-il des suggestions pour ça? Avez-vous déjà effectué ce type d'analyse dans d'autres domaines?

Le TLDR est donc:

  • Quelles techniques statistiques pourrais-je utiliser pour ce genre de question?
  • Y a-t-il des outils intégrés à QGIS (ou disponibles en tant que plugins) qui peuvent le faire?
  • S'il n'y a rien de tel dans QGIS, y a-t-il des bibliothèques Python qui peuvent effectuer ce type d'analyse?
J. Taylor
la source
Juste pour être clair, je suis conscient qu'il y a une tonne d'autres facteurs qui entrent en jeu avec les taux de violence (pauvreté, densité urbaine, etc.), mais supposons, par souci de simplicité, qu'il n'y avait pas de variables confusionnelles significatives et que j'étais seulement examiner la corrélation entre ces deux variables (niveau des troupes et taux de violence). À ce stade, ce n'est qu'un exercice d'apprentissage, et j'essaie de comprendre quels outils sont à ma disposition. Merci!
J. Taylor
1
Pour répondre à votre troisième question, j'ai trouvé PySAl, qui a été développé par le professeur Luc Anselin qui mérite d'être recherché compte tenu de vos intérêts. Il a également travaillé sur GeoDa, qui est une solution prête à l'emploi pour ce que vous regardez. Il pourrait y avoir un plugin PySAl pour QGIS? pysal.readthedocs.org/en/latest
raphael

Réponses:

2

Développer mon commentaire ci-dessus

Ce que vous allez probablement finir par vouloir faire, c'est exécuter une régression linéaire avec décalage spatial, ce qui explique la corrélation spatiale de certaines de vos variables (je vais devoir regarder mes notes à ce sujet).

Luc Anselin a été un pionnier dans cet espace, et vous devriez jeter un œil à son travail, en particulier les outils et la documentation (gratuits) du GeoDa Center . Ces deux outils pourraient vous intéresser:

  1. GeoDa, un logiciel autonome pour explorer la (auto) corrélation spatiale.
  2. PySAL , une bibliothèque d'analyse spatiale Python.

Ma recherche d'un plugin PySAL pour QGIS a trouvé quelque chose qui n'a pas été mis à jour depuis des années, mais vous pourriez avoir plus de chance.

raphael
la source
Merci Raphael. J'examinerai plus en détail le concept de "régression linéaire avec décalage spatial". J'avais déjà rencontré PySAL / GeoDa grâce à une recommandation sur le canal IRC #qgis. Vous avez raison, une grande partie de la documentation de la page GeoDa a été utile. Je n'ai toujours rien trouvé qui fasse exactement ce que je veux, mais si je dois le coder moi-même, il y a beaucoup d'outils qui semblent être des "blocs de construction" utiles.
J. Taylor