В пакете HistData для R ( https://r-forge.r-project.org/R/?group_id=574 ) у меня есть наборы данных, относящиеся к карте Джона Сноу о вспышке холеры в Лондоне в 1854 году. Я считаю, что они являются авторитетными, будучи тщательно оцифрованы под наблюдением Уолтера Тоблера. Некоторые подробности об этих наборах данных описаны Джоном Маккензи по адресу http://www1.udel.edu/johnmack/frec480/cholera/cholera2.html .
К сожалению, координаты смертей, насосов и улиц используют произвольную систему координат, а не координаты карты, подходящие для других приложений ГИС или картографического программного обеспечения в R (пространственные пакеты, ggmap и т. Д.)
В http://freakonometrics.hypotheses.org/19213 Артур Шарпантье использует ggmap с версией данных Джона Сноу из
http://www.rtwilson.com/downloads/SnowGIS_v2.zip . Cholera_Deaths.shp
Файл, однако перечисляет только 489 случаев смерти, а не 578 , я записал в HistData::Snow.deaths
.
Одна идея состоит в том, чтобы найти отношения между средними и стандартными отклонениями (x, y) координат и линейно изменить масштаб, но, может быть, есть лучший способ?
Вот что я пробовал до сих пор
> 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
Прочитайте файл 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
>
Хорошо, тогда я пытаюсь изменить масштаб, D
чтобы иметь те же средние значения и стандартные отклонения, что и здесь XX
, но что-то здесь не работает должным образом - среднее значение столбца Dscaled
должно было быть таким же, как у 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
>
РЕДАКТИРОВАТЬ: В этой задаче может быть полезно увидеть карту Сноу, нарисованную новой функцией, SnowMap(axis.labels=TRUE)
теперь в версии для разработчиков HistData
(rev 102) на R-Forge. Метки оси показывают начало системы координат в левом нижнем углу, как они есть в моих Snow.*
наборах данных.
Snow.*
файлах в координаты на карте ГИС с расположением двух насосов или трех для проверки точности. К сожалению, в SnowGIS
файлах нет ярлыков для насосов , и я не видел пример того, как их нанести на график, чтобы я мог сравнить их визуально.