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

2023-12-07

我有一个点列表,我想使用 Moran's I 并通过将感兴趣的区域除以 4 x 4 样方来检查自相关性。

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

然而,我所拥有的只是我想要检查相关性的点本身。

问题是,尽管这听起来很有趣(或悲伤),但我不知道我在这里做什么。我不是一个(空间)统计人员,我只想知道使用 Moran's I 点的集合是否是分散的、聚集的或随机的。

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

Thanks

这是我到目前为止所拥有的:

# 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
coords <- as.matrix(cbind(x, y))

# Store the points as two-dimensional point pattern (ppp) object (ranging from 0 to 8 on both axis)
coords.ppp <- as.ppp(coords, c(0, 8, 0, 8))

# Quadrat count
coords.quadrat <- quadratcount(coords.ppp, 4)

# Store the Quadrat counts as vector
coords.quadrat.vector <- as.vector(coords.quadrat)

# Replace any value > 1 with 1
coords.quadrat.binary <- ifelse(coords.quadrat.vector > 1, 1, coords.quadrat.vector)

# Moran's I

# Generate the distance matrix (euclidean distances between points)
coords.dists <- as.matrix(dist(coords))

# Take the inverse of the matrix
coords.dists.inv <- 1/coords.dists

# replace the diagonal entries (Inf) with zeroes
diag(coords.dists.inv) <- 0

writeLines("Moran's I:")
print(Moran.I(coords.quadrat.binary, coords.dists.inv))
writeLines("")

有几种方法可以做到这一点。我拍了一张分析空间数据的精彩(免费)课程与 Roger Bivand 的 R 一起,他在r-sig-geo邮件列表(您可能希望在其中定向此查询)。您基本上想要评估您的点模式是否完全空间随机。

您可以绘制观测点的最近邻距离的经验累积分布,然后将其与ecdf在观察窗口内随机生成的完全空间随机点模式集:

#  The data
coords.ppp <- ppp( x , y , xrange = c(0, 8) , yrange = c(0, 8) )

#  Number of points
n <- coords.ppp$n

#  We want to generate completely spatially random point patterns to compare against the observed
ex <- expression( runifpoint( n , win = owin(c(0,8),c(0,8))))

#  Reproducible simulation
set.seed(1)

# Compute a simulation envelope using Gest, which estimates the nearest neighbour distance distribution function G(r)
res <- envelope( coords.ppp , Gest , nsim = 99, simulate = ex ,verbose = FALSE, savefuns = TRUE )

#  Plot
plot(res)

enter image description here

观察到的最近邻分布完全包含在随机生成的点模式的 ecdf 的灰色包络内。我的结论是,您有一个完全空间随机的点模式,但需要注意的是您没有很多点。

顺便说一句,当观察到的黑色线落在灰色包络线下方时,我们可以推断点之间的距离比偶然预期的要远,反之亦然。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

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

  • picker输入字体或背景颜色

    我在闪亮的仪表板中使用 pickerInput 这很好 除了一个问题 背景颜色和字体颜色太相似 使得过滤器选择难以阅读 有什么办法可以改变背景或字体颜色吗 如果可能的话 我想继续使用 pickerInput 但如果有一个带有 selectI
  • 如何纠正 data.frame 上的字符编码

    我有一个像这样的数据框 data names lt data frame DATA c 1 5 rownames data names lt c IV xc1N JOS xc9 LUC xcdA RAM xd3N TO xd1O data
  • 在 RcppArmadillo 中将列向量乘以数值标量

    我在编译这个简单的程序时遇到一些麻烦c 代码使用Rcpp和RcppArmadillo包裹 采用以下简单示例 将矩阵的每一列乘以数值标量 code lt arma mat out Rcpp as
  • 从 data.frame 在 ggplot 图例中添加信息

    我想在图例中添加信息 哪个传感器具有该值 这是我的代码 z lt data frame a c sensor 1 sensor 2 sensor 3 sensor 4 sensor 5 sensor 6 sensor 7 sensor 8
  • 如何声明包含 M 个元素的列表对象

    我想声明一个包含 M 3 x 3 矩阵的列表 如果我事先知道数字 M 那么我可以通过以下方式声明这样的列表 elm lt matrix NA 3 3 Say M 7 myList lt list elm elm elm elm elm el
  • 在r中的某个阈值处破坏 cumsum() 函数

    例如我有以下代码 cumsum 1 100 我想打破它 如果一个元素 i 1 大于3000 我怎样才能做到这一点 因此 而不是这个结果 1 1 3 6 10 15 21 28 36 45 55 66 78 91 105 120 136 15
  • R,使用具有两种以上可能性的二项式分布

    我知道这可能是基本的 但我似乎有一个心理障碍 假设您想要计算在一个骰子上掷出 4 5 或 6 的概率 在 R 中 这很简单 sum 1 6 1 6 1 6 这给出了 1 2 这是正确答案 然而 我内心深处 可能应该保留的地方 认为我应该能够
  • R Shinydashboard 自定义 CSS 到 valueBox

    我一直在尝试将 valueBox 的颜色更改为自定义颜色 超出 validColors 中可用的颜色 但一直无法这样做 我知道有一种方法可以使用标签来包含自定义 CSS 但是我无法将它们放在正确的位置 ui lt dashboardPage
  • R在Windows平台Rstudio上打印data.frames中的UTF-8代码

    当数据框中存在UTF 8字符时 将无法正常显示 例如 以下内容是正确的 gt U6731 1 朱 但是当我将其放入数据框中并打印出来时 它是 gt data frame x U6731 x 1
  • 为什么这个 R ggplot2 代码会显示一个空白的显示设备?

    虽然 SO 通常不用于帮助解决错误 但这个显示了特别简单且特别烦人的行为 如果你是一个ggplot2用户 您可以在 10 秒或更短的时间内重现它 正如这个 GitHub 问题 ggplot gtable 创建空白显示 https githu
  • R中IF函数的使用

    我正在短跑ifR 中的函数 但收到以下警告消息 In if runif 50 0 1 lt 0 69 the condition has length gt 1 and only the first element will be used
  • 平滑连续 2D 点

    UPDATE 感谢 user20650和 李哲源Zheyuan Li 这是我想出的解决方案 Example data set df 3600 observations points Create a vector of the cumula
  • 将维基百科中的表格加载到 R 中

    我正在尝试从以下 URL 将最高法院法官表加载到 R 中 https en wikipedia org wiki List of Justices of the Supreme Court of the United States http
  • 如何像在facet_grid中一样在facet_wrap中定位条带标签

    我想在使用时删除多余的条带标签facet wrap 并用两个变量进行分面 并且都是自由尺度的 例如 这个facet wrap下图的版本 library ggplot2 dt lt txhousing txhousing year in 20
  • 自定义轴缩放后 ggplot2 缺少标签

    我正在尝试使用我的 x 轴应用自定义缩放ggplot2 and scales trans new 但是 当我这样做时 一些轴标签丢失了 有人可以帮我弄清楚为什么吗 Setup library tidyverse the data ds lt
  • R 数据结构的运算效率

    我想知道是否有任何关于操作效率的文档R 特别是那些与数据操作相关的 例如 我认为向数据框添加列是有效的 因为我猜您只是向链接列表添加一个元素 我想添加行会更慢 因为向量保存在数组中C level你必须分配一个新的长度数组n 1并将所有元素复
  • 是否有weighted.median()函数?

    我正在寻找类似形式的东西weighted mean 我通过搜索找到了一些解决方案 这些解决方案写出了整个函数 但希望有一些更用户友好的解决方案 以下软件包都有计算加权中位数的函数 aroma light isotone limma cwhm
  • ggplot2:带有 geom_line 的 x 轴因子不起作用

    我想要一个线图 其中value绘制为函数expt每级一行var 这是我的数据 lines lt expt var value 1 none p 0 183065327746799 2 none p 0 254234138384241 3 n
  • 安装 2.15 后 ggplot2 中的 alpha 通道不起作用

    更新到 R 2 15 后 ggplot 中的 alpha 通道似乎不再起作用 plot rnorm 100 rnorm 100 bg cc000055 pch 21 工作得很好但是 qplot rnorm 100 rnorm 100 col
  • 如何在R中分离两个图?

    每当我运行这段代码时 第一个图就会简单地覆盖前一个图 R中有没有办法分开得到两个图 plot pc title main abc xlab xx ylab yy plot pcs title main sdf xlab sdf ylab x

随机推荐

  • tinyMCE - 获取光标位置处的内容

    我正在为tinyMCE制作一个小单词预测插件 需要提取一些文本 然后从预测单词列表中插入文本 插入应该没有问题 因为我知道光标在哪里并且可以使用mceInsertContent命令 然而 获取预测文本 我需要提取以光标位置之前的字母结尾并从
  • 重写 Angularjs 应用程序以消除延迟的 Bootstrapper

    我正在尝试对应用程序进行逆向工程 并以摆脱 deferredBootstrapper 的方式重新编写它 我遇到了模块加载问题等 我是否在标准意义上正确调用了多个模块 当前的任务是在没有引导程序的情况下简化应用程序 这是最初的 deferre
  • 逐行读取流

    Delphi中有没有办法逐行读取流 有没有办法设置流的编码 我知道 TEncoding getEncodingPage 1250 如何从流中获取它 我想你正在寻找TStreamReader 您在构造函数中设置编码 然后调用ReadLine
  • Facebook Graph API 和 FQL 之类的照片计数都不正确?

    Hey all 我为竞赛制作了一个 Facebook 应用程序 允许用户上传他们的照片 上传后 照片将发布到其个人资料上的专用相册中 一旦照片出现 用户应该收集尽可能多的喜欢 目前 我已尝试使用 Facebook Graph API 和 F
  • .Net 中的图形错误图像插值

    我有一个简单的测试 当它解决时 我的问题也解决了 当处理小图像时 图形插值的效果很差 请检查您是否知道如何解决以下代码中的结果图像忽略要绘制的图像的后半部分的问题 使用 JPG 中的 loadimage 或任何你想要的东西在图像上绘制一些东
  • 如何从html页面中提取文本?

    例如网页是链接 https www architecture com FindAnArchitect FAAPractices aspx display 50 我必须知道公司名称及其地址和网站 我尝试了以下方法将 html 转换为文本 im
  • 无法在模块的类中声明具有公共访问权限的变量

    我正在制作一个基于 GUI 的应用程序 表单 并遇到以下错误 首先 我在模块中声明以下内容 Module test mod Public Structure sub struct Public test int As Integer Pub
  • 从远程读取h5文件

    我有一个问题 我无法从我的服务器读取 h5 文件 我的服务器上有 ssh 服务器也是本地的 所以我有两种类型的代码 store1 pd HDFStore os system scp newrow data copy h5 email pro
  • 如何使用量角器或硒测试@media print?

    我已经在我的网站上实现和打印功能 我想通过量角器 硒来测试它 有任何方法可以 应用 下面的样式 media print测试期间 我只看到一个相关的question 但没有任何好的答案 例如在那个样本中我想要 hiddendiv 将在测试过程
  • Javascript Date.ToLocaleTimeString() 与计算机的时间格式不匹配

    我的电脑定义为使用 24 小时格式 但是 当我使用var date new Date 10 25 2020 19 32 进而date toLocaleTimeString I get a 12h format 当没有提供选项时 输出到区域设
  • RuntimeError:当我附加 hdf5 文件时无法创建链接(名称已存在)?

    我正在尝试将 hdf5 数据集附加到之前的 hdf5 数据集发生以下错误 h5o link obj id self id 名称 lcpl lcpl lapl self lapl 文件 h5py objects pyx 第 54 行 在 h5
  • Angular4异常:无法绑定到“ngClass”,因为它不是“input”的已知属性

    在我的项目中我使用延迟加载所以 在我的注册模块中我使用 ngClass 指令添加无效类时formGroup我的注册表上有一些验证错误 但我的代码在尝试添加时抛出异常 ngClass 我的表格上的指令 无法绑定到 ngClass 因为它不是
  • 添加一列,该列是 pandas 中连续行的差异结果

    假设我有一个像这样的数据框 A B 0 a b 1 c d 2 e f 3 g h 0 1 2 3是时间 a c e g是一个时间序列 b d f h是另一个时间序列 我需要能够向原始数据帧添加两列 这是通过计算某些列的连续行的差异而获得的
  • Facebook 群组文档 API

    我是否可以使用 facebook group api 发布和检索群组文档 我已经浏览了文档 但找不到任何解释如何实现这一点的内容 如果有人知道我可以在哪里获得此内容 请提供链接网址 以便我可以自己阅读 简而言之 我想检索文档并能够通过 fa
  • 是否可以从 Spring 应用程序属性中获取自定义对象?

    是否可以从 application yaml 获取自己的对象并将其与 Value 绑定到我的组件 Model Data public class CurrencyPlan private String id private String b
  • PHP 提交后保留选择选项

    我有一个 html 选择框 其中包含国家 地区列表 当我选择一个时 它会毫无问题地发送到 PHP 方法 但选择框会重置到顶部 如何保留用户在此处选择的值 我的代码在这里 为了简洁起见 我已经删除了大多数其他国家 地区
  • 在arm-linux中打印堆栈跟踪

    我按照这篇文章打印堆栈跟踪当我的 gcc C 应用程序崩溃时如何生成堆栈跟踪 它在 x86 linux 上运行良好 谁能教我如何让它在arm linux上运行 我使用的是arm linux gcc 4 4 3 root FriendlyAR
  • 使用 Sinatra 更改 HTTP 状态消息

    我正在编写一个简单的 Sinatra 应用程序 并且给定用户发布包含特定数据的请求 我想返回错误 453 自定义错误代码 以及消息 CLIENT ERROR 或类似的内容 问题是 查看 Sinatra 文档并进行一些测试 我找不到设置响应错
  • 如何检测鼠标指针是否击中 HTML 5 画布上已绘制的线条

    我试图弄清楚如何使用 jQuery 检测用户的鼠标是否点击了 HTML 5 画布上的一行 这是生成画布线的代码
  • R 中的空间自相关分析 (Global Moran's I)

    我有一个点列表 我想使用 Moran s I 并通过将感兴趣的区域除以 4 x 4 样方来检查自相关性 现在我在谷歌上找到的每个例子 例如http www ats ucla edu stat r faq morans i htm 使用某种测