Lissage
Confronté à une carte de la France à l’échelon communal, on peut avoir parfois envie de calculer une moyenne prenant en compte plusieurs communes. En effet, il y a énormément de communes très petites, pour lesquelles un individu de plus ou de moins peut conduire à des taux différents. On peut passer de suite à l’échelle départementale (comme je le fais ici), mais on perd en finesse.
Par exemple, si je dresse la carte du ratio “Inscrits/résidents”, je me retrouve avec une carte qui semble stochastique. Il peut être intéressant de calculer non plus ce ratio pour une commune, mais pour le groupe des N communes les plus proches. Le GIF-animé, ci dessous, montre ce qu’il advient de cette carte quand on augmente le nombre de voisins (ici entre 1 et 32).
On voit apparaître plus clairement des zones où les inscrits sont plus nombreux que les résidents majeurs et des zones où, au contraire, les inscrits sont beaucoup moins nombreux que les résidents (à la fois parce que celles et ceux qui y résident sont inscrits ailleurs ou parce que ces résident.e.s n’ont pas le droit de vote en France).
Avec le logiciel R, voici les instructions qui permettent, à partir du fichier GEOFLA des communes (ici “france”), de déterminer les k plus proches communes voisines.
library(spdep) # package à charger : spdep france.cntr<-cbind(france$X_CENTROID,france$Y_CENTROID) # on extrait les centroides des communes k <- 8 # nombre de voisins à extraire nn <- knearneigh(france.cntr, k, longlat=FALSE) france.neighbors.knn <- knn2nb(nn) df<-do.call(rbind.data.frame, france.neighbors.knn) # df est le data.frame contenant, pour chaque colonne i, l'indice des voisins d'ordre i