Trong gói HistData cho R ( https://r-forge.r-project.org/R/?group_id=574 ) Tôi có các bộ dữ liệu liên quan đến bản đồ dịch bệnh dịch tả của John Snow ở London, 1854. Tôi tin rằng chúng có thẩm quyền, đã được số hóa cẩn thận dưới sự giám sát của Walter Tobler. Một số chi tiết về các bộ dữ liệu này được mô tả bởi John Mackenzie, tại địa chỉ http://www1.udel.edu/johnmack/frec480/cholera/cholera2.html .
Thật không may, tọa độ của tử vong, máy bơm và đường phố sử dụng hệ tọa độ tùy ý, không phải tọa độ ánh xạ phù hợp với các ứng dụng hoặc phần mềm ánh xạ khác trong R (gói không gian, ggmap, v.v.)
Trong http://freakonometrics.hypuitses.org/19213 Arthur Charpentier sử dụng ggmap với một phiên bản của dữ liệu John Snow từ
http://www.rtwilson.com/doads/SnowGIS_v2.zip . Các Cholera_Deaths.shp
tập tin, tuy nhiên chỉ liệt kê 489 cái chết, không phải là 578 tôi đã ghi lại HistData::Snow.deaths
.
Một ý tưởng là tìm mối quan hệ giữa phương tiện và độ lệch chuẩn của tọa độ (x, y) và giải mã tuyến tính, nhưng có lẽ có cách nào tốt hơn?
Đây là những gì tôi đã cố gắng cho đến nay
> 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
Đọc tệp 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
>
Được rồi, sau đó tôi cố gắng thay đổi tỷ lệ D
để có cùng phương tiện và độ lệch chuẩn như XX
, nhưng một cái gì đó không hoạt động chính xác ở đây-- nghĩa là cột Dscaled
phải hóa ra tương đương với 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: Có thể hữu ích trong vấn đề này khi xem bản đồ của Snow được vẽ bởi chức năng mới, SnowMap(axis.labels=TRUE)
hiện đang ở phiên bản phát triển của HistData
(rev 102) trên R-Forge. Các nhãn trục hiển thị nguồn gốc của hệ tọa độ ở góc dưới bên trái vì chúng nằm trong Snow.*
bộ dữ liệu của tôi .
Snow.*
các tệp của mình sang các tọa độ trong bản đồ dựa trên GIS với vị trí của hai máy bơm hoặc ba để kiểm tra độ chính xác. Thật không may, không có nhãn cho máy bơm trong các SnowGIS
tệp và tôi chưa thấy một ví dụ nào về cách vẽ đồ thị để tôi có thể so sánh chúng một cách trực quan.