聚集相邻的县

时间:2014-05-23 19:12:59

标签: r

如何根据一个或多个变量聚类相似的县以形成连续县的群集 - 我每个县都有一条记录。理想情况下,我想基于质心lat / long或者邻接矩阵来做这个。我已经有了lat / long和adjacency矩阵。我找到的最接近的包是SpatialEpi,如果我有计数数据,这将是很好的。我也尝试使用具有lat / long的Mclust作为预测因子,以获得不太令人满意或连续的结果。我也尝试过CARBayes,但这似乎不是正确的。非常感谢任何建议!

1 个答案:

答案 0 :(得分:3)

如果您有相当不错的空间数据(例如,,就像地图包中或maptools::wrld_simpl中分发的数据一样),您可以使用rgeos::gTouches()形成邻接矩阵。 (如果您想要一个矩阵表示相互之间有一些非零距离的县,请改用rgeos::gWithinDistance()。)

例如,使用便捷函数raster::getData('GADM', country='USA', level=2)下载from here的县级shapefile并存储在名为“SpatialPolygonsDataFrame”的gadm中,以下是我如何获得的罗德岛县的邻接矩阵:

library(rgeos)

## Subset out just the counties in Rhode Island
RI <- gadm[gadm$NAME_1 == "Rhode Island",]
## Form their adjacency matrix
m <- gTouches(RI, RI, byid=TRUE)
## Add in counties' names along table edges
rownames(m) <- colnames(m) <- RI$NAME_2

## See that it works
RI
#            Bristol  Kent Newport Providence Washington
# Bristol      FALSE FALSE   FALSE       TRUE      FALSE
# Kent         FALSE FALSE   FALSE       TRUE       TRUE
# Newport      FALSE FALSE   FALSE      FALSE      FALSE
# Providence    TRUE  TRUE   FALSE      FALSE      FALSE
# Washington   FALSE  TRUE   FALSE      FALSE      FALSE

plot(RI, col=blues9[c(1,3,5,7,9)])
title("Rhode Island counties")

enter image description here