标签: spdep

用4000条记录计算Moran's I

我在树木种植园有4000个体积记录.我需要计算整个种植园的莫兰一世.我使用ape库因为据说spdep较慢.我的代码是这样的:

# Modified from http://www.ats.ucla.edu/stat/r/faq/morans_i.htm
require(ape)
df <- data.frame(
     x = 1:2000,
     y = 1:2000,
     v = rnorm(4000, mean=4) )
df.dists <- as.matrix(dist(cbind(df$x, df$y)))
df.dists.inv <- 1/df.dists
diag(df.dists.inv) <- 0
Moran.I(df$v, df.dists.inv)
Run Code Online (Sandbox Code Playgroud)

当我运行代码时,我会遇到类似溢出的错误.

*Error in if (obs <= ei) 2 * pv else 2 * (1 - pv) : 
  missing value where TRUE/FALSE needed*
Run Code Online (Sandbox Code Playgroud)

使用ff库

require(ape)
require(ff)
ffdf <- as.ffdf(df)
ffdf.dists <- as.matrix(dist(cbind(ffdf$x, ffdf$y)))
ffdf.dists.inv <- 1/df.dists
diag(ffdf.dists.inv) <- 0
Moran.I(ffdf$v, ffdf.dists.inv)
Run Code Online (Sandbox Code Playgroud)

更多错误消息:

*Error in x …
Run Code Online (Sandbox Code Playgroud)

parallel-processing r ape-phylo spdep

9
推荐指数
1
解决办法
2510
查看次数

具有MRF平滑功能的GAM-错误(nb /多边形区域名称与数据区域名称不匹配

在@GavinSimpson撰写的超级博客之后,我正在尝试调整2015年波兰地方政府的选举结果。 https://www.fromthebottomoftheheap.net/2017/10/19/first-steps-with-mrf-smooths/ 我将xls上的shp数据与6位数字标识符(可能是前导0 s)结合在一起。我将其保留为文本变量。编辑,我简化了标识符,现在使用从1到n的序列来简化我的问题。

library(tidyverse)
library(sf)
library(mgcv)

# Read data
# From https://www.gis-support.pl/downloads/gminy.zip shp file

boroughs_shp <- st_read("../../_mapy/gminy.shp",options = "ENCODING=WINDOWS-1250",
                     stringsAsFactors = FALSE ) %>% 
  st_transform(crs = 4326)%>% 
  janitor::clean_names() %>% 
# st_simplify(preserveTopology = T, dTolerance = 0.01) %>% 
  mutate(teryt=str_sub(jpt_kod_je, 1, 6)) %>% 
  select(teryt, nazwa=jpt_nazwa, geometry)

# From https://parlament2015.pkw.gov.pl/wyniki_zb/2015-gl-lis-gm.zip data file
elections_xls <-
  readxl::read_excel("data/2015-gl-lis-gm.xls",
             trim_ws = T, col_names = T) %>% 
  janitor::clean_names() %>% 
  select(teryt, liczba_wyborcow, glosy_niewazne)

elections <-
  boroughs_shp %>% fortify() %>% 
  left_join(elections_xls, by = "teryt") %>% 
  arrange(teryt) %>%
  mutate(idx = …
Run Code Online (Sandbox Code Playgroud)

r mgcv spdep

7
推荐指数
1
解决办法
162
查看次数

在 R 中创建空间集群 LISA 的地图

我想创建一个地图,显示一个现象的局部空间集群,最好使用 Local Moran (LISA)。

在下面的可重复示例中,我使用计算本地莫兰指数,spdep但我想知道是否有简单的方法来映射集群,最好使用ggplot2. 帮助 ?

library(UScensus2000tract)
library(ggplot2)
library(spdep)

# load data
data("oregon.tract")

# plot Census Tract map
plot(oregon.tract)

# create  Queens contiguity matrix
spatmatrix <- poly2nb(oregon.tract)

#calculate the local moran of the distribution of black population
lmoran <- localmoran(oregon.tract@data$black, nb2listw(spatmatrix))
Run Code Online (Sandbox Code Playgroud)

现在为了使这个示例更类似于我的真实数据集,NA我的形状文件中有一些值,它们代表多边形中的孔,因此不应在计算中使用这些区域。

oregon.tract@data$black[3:5] <- NA
Run Code Online (Sandbox Code Playgroud)

plot r geospatial ggplot2 spdep

6
推荐指数
2
解决办法
5366
查看次数

R 中面板数据的空间回归

我有一个面板数据集,其中包含数百个区域、约 10 年以及这些区域的空间数据。我用包创建了一个权重矩阵spdep(通过标准方式,然后,nb2listw)。因此,我有一个矩阵,其中每个区域的权重(相对于其他区域) - 但每个区域仅表示一次。

我想运行spdep包 ( lagsarlm, errorsarlm) 中的一些空间回归,但出现错误:

Error in subset.listw(listw, subset, zero.policy = zero.policy) : Not yet able to subset general weights lists

Error in lagsarlm(y ~ x1 + x2: Input data and weights have different dimensions

我认为这是因为权重矩阵每个区域只有一行(然后只能计算一年)。您对如何解决这个问题有什么建议吗?我的想法围绕以下几点:

  • 扩展空间权重矩阵 OR
  • 告诉 spdep 这些区域将以相同的顺序重复(但如何重复?)

期待您的建议。

regression r panel spatial spdep

6
推荐指数
0
解决办法
750
查看次数

K-means对空间受限数据进行聚类 - 在spdep包中使用skater

我想使用k-means聚类从自组织映射中聚类码本.但是,考虑到数据的"空间"特性,我想约束聚类,以便只将连续的节点聚集在一起.环顾四周后,我决定尝试和使用功能skaterspdep包.

这是我一直在做的一个例子.

# the 'codebook' data obtained from the self-organizing map. 
# My grid is 15 by 15 nodes. 
data <- data.frame(var1=rnorm(15*15, mean = 0, sd = 1), var2=rnorm(15*15, mean = 5, sd = 2))

# creating a matrix with all edges listed 
# (so basically one row to show a connection between each pair of adjacent nodes) 
require(spdep)
nbs <- cell2nb(nrow=15, ncol=15)

edges <- data.frame(node=rep(1:(tt.grid$xdim*tt.grid$ydim), each=4))
edges$nb <- NA 
for (i in 1:(tt.grid$xdim*tt.grid$ydim)) {   
   vals …
Run Code Online (Sandbox Code Playgroud)

r cluster-analysis spatial k-means spdep

5
推荐指数
0
解决办法
734
查看次数

R中二进制数据的空间自相关测试

我想测试一个物种的存在/不存在记录的空间自相关性。我的数据在 GIS 中包含超过 130,000 个网格和大约 700 个物种的存在记录。

我读过普通的 Moran 的 $I$ 无法处理这种数据,但是 package 中的 join count 方法spdep可以做到。但是,我是新手R,我仍然无法理解joincount.mcor的帮助中的信息和代码joincount.test

我的数据是这样的:

 gridnumber  species  
     1       1     
     2       0
     3       0
     4       1
     ……      
Run Code Online (Sandbox Code Playgroud)

我知道如何读shp.fileR,我知道我必须计算数据的权重,但以下步骤spdep超出了我的能力。

r spatial binary-data spdep

5
推荐指数
0
解决办法
1102
查看次数

R中的空间自相关分析(Global Moran's I)

我有一个点列表,我想使用Moran的I检查自相关,并将感兴趣的区域除以4 x 4个样本.

现在我在Google上找到的每个例子(例如http://www.ats.ucla.edu/stat/r/faq/morans_i.htm)都使用某种测量值作为Moran I函数的第一个输入,无论哪个使用库(我查看了猿和spdep包).

但是,我所拥有的只是我想要检查相关性的分数.

问题是,听起来有趣(或悲伤),我不知道我在这里做什么.我不是一个(空间)统计人员,我想知道的是,如果使用Moran的I分散,聚集或ramdom的点集合.

我的方法是否正确?如果不是在哪里,我做错了什么?

谢谢

这是我到目前为止:

# download, install and load the spatstat package (http://www.spatstat.org/)
install.packages("spatstat")
library(spatstat)

# Download, install and run the ape package (http://cran.r-project.org/web/packages/ape/)
install.packages("ape")
library(ape)

# Define points
x <- c(3.4, 7.3, 6.3, 7.7, 5.2, 0.3, 6.8, 7.5, 5.4, 6.1, 5.9, 3.1, 5.2, 1.4, 5.6, 0.3)
y <- c(2.2, 0.4, 0.8, 6.6, 5.6, 2.5, 7.6, 0.3, 3.5, 3.1, 6.1, 6.4, 1.5, 3.9, 3.6, 5.2)

# Store the coordinates as a matrix …
Run Code Online (Sandbox Code Playgroud)

r correlation spdep

4
推荐指数
1
解决办法
9131
查看次数

R中的二元空间相关图(二元LISA)

我想创建一个地图,显示两个变量之间的双变量空间相关性。这可以通过制作双变量 Moran's I 空间相关性的 LISA 图或使用Lee (2001)提出的 L 指数来完成。

双变量 Moran's I 没有在spdep库中实现,但 L 索引是,所以这里是我尝试使用 L 索引但没有成功的方法。显示基于 Moran's I 的解决方案的答案也将非常受欢迎!

从下面的可重现示例中可以看出,到目前为止,我已经设法计算了局部 L 索引。我想要做的是估计伪 p 值并创建一个结果地图,就像我们在 LISA 空间集群中使用的那些地图一样,具有 high-high、high-low、...、low-low

在此示例中,目标是创建一个地图,其中包含黑人和白人人口之间的双变量 Lisa 关联。地图应在 中创建ggplot2,显示集群:

  • 黑人的高存在和白人的高存在
  • 黑人比例高,白人比例低
  • 黑人比例低,白人比例高
  • 黑人的低存在和白人的低存在

可重现的例子

library(UScensus2000tract)
library(ggplot2)
library(spdep)
library(sf)

# load data
  data("oregon.tract")

# plot Census Tract map
  plot(oregon.tract)


# Variables to use in the correlation: white and black population in each census track
  x <- scale(oregon.tract$white)
  y …
Run Code Online (Sandbox Code Playgroud)

r spatial geospatial spdep

4
推荐指数
1
解决办法
3112
查看次数