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