ในแพ็คเกจ HistData สำหรับ R ( https://r-forge.r-project.org/R/?group_id=574 ) ฉันมีชุดข้อมูลที่เกี่ยวข้องกับแผนที่ของ John Snow เกี่ยวกับการระบาดของอหิวาตกโรคในลอนดอนปี 1854 ฉันเชื่อว่าพวกเขา มีอำนาจมีการแปลงเป็นดิจิทัลอย่างระมัดระวังภายใต้การดูแลของวอลเตอร์ Tobler รายละเอียดบางอย่างเกี่ยวกับชุดข้อมูลเหล่านี้จะอธิบายโดยจอห์นแม็คเคนซี่ที่http://www1.udel.edu/johnmack/frec480/cholera/cholera2.html
น่าเสียดายที่พิกัดแห่งความตายปั๊มและถนนใช้ระบบพิกัดโดยพลการไม่ใช่พิกัดแผนที่ที่เหมาะสมสำหรับแอปพลิเคชั่น GIS อื่น ๆ หรือซอฟต์แวร์แผนที่ใน R (แพ็คเกจอวกาศ ggmap ฯลฯ )
ในhttp://freakonometrics.hypotheses.org/19213อาร์เธอร์ Charpentier ใช้ ggmap กับรุ่นของข้อมูลจอห์นหิมะจาก
http://www.rtwilson.com/downloads/SnowGIS_v2.zip Cholera_Deaths.shp
ไฟล์ แต่แสดงรายการเพียง 489 ตายไม่ได้ 578 HistData::Snow.deaths
ผมได้บันทึกไว้ใน
แนวคิดหนึ่งคือการค้นหาความสัมพันธ์ระหว่างค่าเฉลี่ยและค่าเบี่ยงเบนมาตรฐานของพิกัด (x, y) และ rescale เป็นเส้นตรง แต่อาจจะมีวิธีที่ดีกว่านี้หรือ
นี่คือสิ่งที่ฉันได้ลองไปแล้ว
> 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
>
แก้ไข:มันอาจจะมีประโยชน์ในปัญหานี้เพื่อดูแผนที่ของ Snow ตามฟังก์ชั่นใหม่ซึ่งSnowMap(axis.labels=TRUE)
ตอนนี้อยู่ในเวอร์ชันการพัฒนาHistData
(rev 102) บน R-Forge ป้ายกำกับแกนแสดงที่มาของระบบพิกัดที่มุมซ้ายล่างเหมือนที่อยู่ในSnow.*
ชุดข้อมูลของฉัน
Snow.*
ไฟล์ไปยังผู้ที่อยู่ในแผนที่ GIS กับสถานที่ตั้งของสองปั๊มหรือสามเพื่อตรวจสอบความถูกต้อง น่าเสียดายที่ไม่มีป้ายกำกับสำหรับปั๊มในSnowGIS
ไฟล์และฉันไม่ได้เห็นตัวอย่างของวิธีการลงจุดเพื่อให้สามารถเปรียบเทียบได้