我是空间统计的新手,我正在尝试为 R 中美国的所有人口普查区域创建一个空间权重矩阵。大约有 74000 个区域。
基于美国人口普查老虎文件,我创建了所有大片的 shapefile,然后做了(使用spdep
包):
#Create adjacency matrix
am = poly2nb(us)
is.symmetric.nb(am)
这很好用,虽然 am 很大。
下一个:
am = nb2mat(am, style="B",zero.policy=T)
这给了我这个错误:
Error: cannot allocate vector of size 40.9 Gb
显然我的笔记本电脑无法处理 40.9 Gb 的内存。我尝试在 AWS EC2 云上执行此操作,但要获得那么多内存,我需要获得一个非常大的实例,我想避免这种情况,因为我是云计算的新手,宁愿在免费的 T2 中玩。微型沙箱(最多 1 GiB 的内存),直到我准备好在更大的机器上花一些钱。如果我可以将权重矩阵转换为稀疏矩阵,我想我可以处理它,但我不知道该怎么做。我试着做这样的事情:
Wmat<-Matrix(nb2mat(am, style="B",zero.policy=T),sparse=TRUE)
但在创建稀疏矩阵之前,它仍然需要所有内存来执行 nb2mat 命令。
有什么解决办法吗?