所以我在R中使用 spdep 包来执行此操作。我需要在其中使用localmoran函数来获得研究区域中的热点/冷点集群。
通过参考指南后,我开始工作了。
但由于数据是一个时间序列,现在我不太确定。我的数据是关于降雨的方式,在2006 - 2016年间在7个城市测量。
对于最简单的例子我可以想到我会缩小这个问题。 假设我有这个数据帧,我们称之为 test 。
city1 city2 city3
day_1 1.09765 0.89634 37.09863
day_2 14.98641 0.97531 5.97451
day_3 1.97551 12.18713 7.97512
根据参考指南,我需要创建一个listw对象,我做了。
coord <- read_csv("myCSV.csv") #this is just a matrix of the x and y coordinates of the cities
coordinates(coord) <- ~ y + x
proj4string(coord) <- CRS("+init=epsg:4326")
mapview(coord)
as.data.frame(coord)
knn <- knearneigh(coord, k=2, longlat = NULL, RANN = TRUE)
nb <- knn2nb(knn, row.names = NULL, sym = TRUE)
listw <- nb2listw(nb, style="W")
localmoran函数至少接受2个参数,一个数字向量和一个listw对象。数字向量必须与listw对象的长度相同(在此缩小示例的情况下为3)。
我现在的问题是,因为它接受一个数字向量,所以我只能传递一行:
localmoran(as.numeric(test[1, ]), listw)
但这只考虑了时间序列中的第一天。我必须遍历数据以获取其他日子的localmoran索引,就像这样。
for(i in c(1:3)) {
final <- as.data.frame(localmoran(as.numeric(test[i, ]), listw))
}
现在我将通过谈论参考指南中的示例来稍微离开。该示例仅采用一个数字向量,可能只是该变量的一个实例。但是由于我是在多个实例(天)被采取的,所以我偏离了这个例子,现在我既困惑又害怕。
再次通过谈论统计数据再次离开,因为我需要跨越整个时间跨度的localmoran的一个值,我如何将每天的localmoran值折叠成一个?平均?费舍尔的转型?等?
spdep 套餐是否会考虑时间?在R的某个地方是否有使用时间的包?
我很害怕。
感谢任何回复的人。
(请帮帮我)