微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

R:通过最小人口的属性约束将空间多边形聚集到更大的区域

如何解决R:通过最小人口的属性约束将空间多边形聚集到更大的区域

给定具有下面空间多边形的数据集,我想基于相似度矩阵将这些多边形聚类到更大的区域。为了进行计算,我想使用R。多边形代表城镇中的区域。每个面都有人口属性“ anzahl_pers”(可以为0)。

enter image description here

对于集群,我想应用几个约束:产生的集群应该是连续的。我可以使用R包Clustgeo(https://cran.r-project.org/web/packages/ClustGeo/vignettes/intro_ClustGeo.html)来实现这一点,该包可以应用邻域矩阵。

我要考虑的第二个约束是结果簇中的人口数量。当达到阈值时,即一个集群中有20个人,集群应停止。聚类之前人口较多的多边形根本不应该与另一个多边形分组,而应单独留在聚类中。

我看到了软件包scclust(https://cran.r-project.org/web/packages/scclust/index.html),它遵守群集大小的约束。但是,我不希望将一定数量的多边形聚类,但是属性的总和应尽可能接近阈值。每个聚类中的多边形数量无关紧要,但应尽可能低以匹配约束。

理想情况下,不应事先给出簇数。但是,一种解决方法可能是将总人口除以阈值,或者迭代地降低群集数,直到匹配约束为止。

如果可能的话,生成的簇形状应该紧凑,但这并不像其他约束那么重要。

我正在寻找一种针对某个属性的总和(在我的情况下为每个集群的总体)进行集群的R包或解决方案。

数据:

相似矩阵:

https://pastebin.com/embed_iframe/7xx4BLa7

多边形:

https://pastebin.com/embed_iframe/NFhJke4A

人口:

population<-structure(list(ID = c(1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,96,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121),anzahl_pers = c(13,1,3)),row.names = c(1L,2L,3L,4L,5L,6L,7L,8L,9L,10L,11L,12L,13L,14L,15L,16L,17L,18L,19L,20L,21L,22L,23L,24L,25L,26L,27L,28L,29L,30L,31L,32L,33L,34L,35L,36L,37L,38L,39L,40L,41L,42L,43L,44L,45L,46L,47L,48L,49L,50L,51L,52L,53L,54L,55L,56L,57L,58L,59L,60L,61L,62L,63L,64L,65L,66L,68L,69L,70L,71L,72L,73L,74L,75L,76L,77L,67L,78L,79L,80L,81L,82L,83L,84L,85L,86L,87L,89L,90L,91L,92L,93L,94L,95L,96L,97L,98L,99L,100L,101L,102L,103L,104L,105L,106L,107L,108L,88L,109L,110L,111L,112L,113L,114L,115L,116L,117L,118L,119L,120L,121L),class = "data.frame")

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。