Dans le package HistData pour R ( https://r-forge.r-project.org/R/?group_id=574 ) j'ai les ensembles de données liés à la carte de John Snow de l'épidémie de choléra à Londres, 1854. Je crois qu'ils font autorité, ayant été soigneusement numérisées sous la supervision de Walter Tobler. Certains détails sur ces ensembles de données sont décrits par John Mackenzie, à http://www1.udel.edu/johnmack/frec480/cholera/cholera2.html .
Malheureusement, les coordonnées des décès, des pompes et des rues utilisent un système de coordonnées arbitraires, et non des coordonnées cartographiques adaptées à d'autres applications SIG ou logiciels de cartographie en R (packages spatiaux, ggmap, etc.)
Dans http://freakonometrics.hypotheses.org/19213, Arthur Charpentier utilise ggmap avec une version des données John Snow de
http://www.rtwilson.com/downloads/SnowGIS_v2.zip . Le Cholera_Deaths.shp
fichier ne répertorie cependant que 489 décès, pas les 578 que j'ai enregistrés HistData::Snow.deaths
.
Une idée est de trouver les relations entre les moyennes et les écarts-types des coordonnées (x, y) et de redimensionner linéairement, mais peut-être y a-t-il une meilleure façon?
Voici ce que j'ai essayé jusqu'à présent
> data(Snow.deaths, package="HistData")
> D <- Snow.deaths[,2:3]
> colMeans(D)
x y
13.03312 11.69721
> var(D)
x y
x 3.8150987 0.3802654
y 0.3802654 2.7213828
Lire le fichier Cholera_deaths
> folder <- "C:/Dropbox/R/data/Snow/SnowGIS_v2/SnowGIS"
> library(maptools)
> deaths <- readShapePoints(file.path(folder, "Cholera_Deaths"))
> head(deaths@coords)
coords.x1 coords.x2
0 529308.7 181031.4
1 529312.2 181025.2
2 529314.4 181020.3
3 529317.4 181014.3
4 529320.7 181007.9
5 529336.7 181006.0
> # deaths has only 250 observations; 489 deaths
> sum(deaths@data$Count)
[1] 489
> # try to relate to Snow.deaths
> X <- deaths@coords
> colnames(X) <- c("x", "y")
>
> XX <- data.frame(X, Freq=deaths@data$Count)
> XX <- vcdExtra::expand.dft(XX)
>
> colMeans(XX)
x y
529414.8 181031.9
> var(XX)
x y
x 10813.816 1521.693
y 1521.693 6227.924
>
OK, alors j'essaie de redimensionner D
pour avoir les mêmes moyennes et écarts-types que XX
, mais quelque chose ne fonctionne pas correctement ici - la moyenne des colonnes de Dscaled
aurait dû être égale à celles de XX
:
> # scale D to have the same means and standard deviations as XX
> Dscaled <- scale(D, center=TRUE, scale=TRUE)
> Dscaled <- scale(Dscaled, center=colMeans(XX), scale=sqrt(diag(var(XX))))
> colMeans(Dscaled)
x y
-5091.040 -2293.947
>
EDIT: Il pourrait être utile dans ce problème de voir la carte de Snow dessinée par la nouvelle fonction, SnowMap(axis.labels=TRUE)
maintenant dans la version de développement de HistData
(rév 102) sur R-Forge. Les étiquettes des axes indiquent l'origine du système de coordonnées dans le coin inférieur gauche, comme dans mes Snow.*
ensembles de données.
Snow.*
fichiers en celles d'une carte SIG avec les emplacements de deux pompes, ou trois pour vérifier la précision. Malheureusement, il n'y a pas d'étiquettes pour les pompes dans les SnowGIS
fichiers, et je n'ai pas vu d'exemple pour les tracer afin de pouvoir les comparer visuellement.