使用R进行空间自相关检验
「全局溢出」当一个区域的特征变化影响到所有区域的结果时,就会产生全局溢出效应。这甚至适用于区域本身,因为影响可以传递到邻居并返回到自己的区域(反馈)。具体来说,全球溢出效应影响到邻居、邻居到邻居、邻居到邻居等等。
「局部溢出」是指影响只落在附近或近邻的情况,在它们影响邻邻区域之前就消失了。
对应全局与局部溢出,存在全局与局部自相关检验。全局自相关检验指标主要有 moran'I 指数、Geary 指数 C 统计量以及 Getis-Ord global G 统计量;局部自相检验指标主要有局部moran指数、Local Getis-Ord Gi 和 Gi* 统计量。此外,也可以通过图示的方法来显示空间的依赖关系。
下面将对相关指标的计算以及可视化的方法进行演示(所用数据均可通过公共号后台回复「地图可视化R」获取)。
全局空间自相关检验
首先导入数据和矩阵,并进行适当转换
library(readxl)
library("spdep")
# 设置工作路径
setwd('E:\\空间计量专题\\R-空间计量')
# 导入经济变量数据
cdata <- read_xlsx("E:/空间计量专题/R-空间计量/cdata.xlsx")
# 导入自定义矩阵并做适当格式转换
w1 <- read_xlsx("w1.xlsx", col_names = FALSE)
w2 <- as.matrix(w1)
w2[1:5, 1:5]
# 转换格式并标准化
w <- mat2listw(w2, style="W")
导入shp文件,合并数据
library(rgdal)
# 导入shp文件
shpt <- readOGR("广东地级市.shp")
# 合并数据
cdatashpt <- merge(shpt, cdata, by = "city")
moran'I 指数
1.Moran’s I 统计量的计算
>>> moran(cdatashpt$gdp2017, listw=w, n=length(cdatashpt$gdp2017), S0=Szero(w))
$I
0.065546870128173
$K
2.99333822437931
I Moran’s I 统计量, K 变量的峰度
当数据中出现孤岛或者缺失值时,可通过下面的子选项进行调整:
zero.policy默认值为空,使用全局选项值;如果为真,则将0分配给没有邻居的区域的滞后值,如果为假,则分配为NA
NAOK如果 TRUE,则 x 中的任何 NA 或 NaN 或 Inf 值都将传递给外部函数。如果 FALSE ,则存在 NA 或 NaN 或 Inf 值将被视为错误。
2.Monte-Carlo simulation of Moran's I
>>> # Monte-Carlo simulation of Moran's I
>>> set.seed(12345)
>>> moran.mc(cdatashpt$gdp2017, listw = w, nsim = 999, alternative = 'greater')
Monte-Carlo simulation of Moran I
data: cdatashpt$gdp2017
weights: w
number of simulations + 1: 1000
statistic = 0.065547, observed rank = 790, p-value = 0.21
alternative hypothesis: greater
3.moran散点图
>>> # Moran 散点图
>>> moran.plot(cdatashpt$gdp2017, w, zero.policy=NULL, spChk=NULL, labels=TRUE, xlab=NULL, ylab=NULL, quiet=NULL)
labels给具有高影响度量值的点添加字符标签,如果设置为FALSE,则不会为具有较大影响的点绘制标签

4.Moran’s I 空间自相关检验
>>> # Moran’s I test for spatial autocorrelation
>>> moran.test(cdatashpt$gdp2017, w)
Moran I test under randomisation
data: cdatashpt$gdp2017
weights: w
Moran I statistic standard deviate = 0.76045, p-value = 0.2235
alternative hypothesis: greater
sample estimates:
Moran I statistic Expectation Variance
0.06554687 -0.05000000 0.02308712
Geary 检验
>>> geary.test(cdatashpt$gdp2017, listw=w, randomisation=TRUE, alternative="greater")
Geary C test under randomisation
data: cdatashpt$gdp2017
weights: w
Geary C statistic standard deviate = 1.2898, p-value = 0.09856
alternative hypothesis: Expectation greater than statistic
sample estimates:
Geary C statistic Expectation Variance
0.79614300 1.00000000 0.02498145
Geary’s C 检验
1.计算 Geary’s C 统计量
>>> geary(cdatashpt$gdp2017, listw=w, n=length(w), n1=length(w)-1, S0=Szero(w))
$C
0.0796142995607693
$K
0.427619746339901
2.Monte-Carlo simulation of Geary's C
>>> geary.mc(cdatashpt$gdp2017, listw=w, nsim=999, alternative="greater")
Monte-Carlo simulation of Geary C
data: cdatashpt$gdp2017
weights: w
number of simulations + 1: 1000
statistic = 0.79614, observed rank = 116, p-value = 0.116
alternative hypothesis: greater
3.模拟分布图
>>> set.seed(12345)
>>> gdpgeary <- geary.mc(cdatashpt$gdp2017, listw=w, nsim=999, alternative="greater")
>>> plot(gdpgeary, type='l', col='orange')
>>> gdpgeary.dens = density(gdpgeary$res)
>>> polygon(gdpgeary.dens, col="gray")
>>> abline(v=gdpgeary$statistic, col='orange',lwd=2)

Getis-Ord global G 检验
>>> globalG.test(cdatashpt$gdp2017, listw=w, alternative="greater")
Getis-Ord global G statistic
data: cdatashpt$gdp2017
weights: w
standard deviate = -1.1248, p-value = 0.8697
alternative hypothesis: greater
sample estimates:
Global G statistic Expectation Variance
4.948903e-02 5.000000e-02 2.063625e-07
空间相关图
>>> w.nb <- w$neighbours
>>> spcorrI = sp.correlogram(w.nb, cdatashpt$gdp2017, order = 2, method = "I", style = "W", randomisation = TRUE)
>>> spcorrI
Spatial correlogram for cdatashpt$gdp2017
method: Moran's I
estimate expectation variance standard deviate Pr(I) two sided
1 (21) 0.065547 -0.050000 0.023087 0.7605 0.4470
2 (21) -0.130212 -0.050000 0.017101 -0.6134 0.5396
>>> plot(spcorrI, main="Spatial correlogram of gdp2017")

局部空间自相关检验
局部moran检验
>>> localmoran(cdatashpt$gdp2017, listw=w, alternative = "greater")
A localmoran: 21 × 5 of type dbl
Ii E.Ii Var.I Z.Ii Pr(z > 0)
1 -0.01370494 -0.05 0.1146316 0.107200142 0.4573151
2 0.65060843 -0.05 0.4279122 1.071021124 0.1420800
3 -0.32033200 -0.05 0.4279122 -0.413256930 0.6602908
4 0.01710619 -0.05 0.4279122 0.102585331 0.4591460
5 0.05648861 -0.05 0.1146316 0.314522027 0.3765623
6 0.48390574 -0.05 0.1929517 1.215458873 0.1120956
7 -0.48582426 -0.05 0.1929517 -0.992172269 0.8394433
8 0.10421133 -0.05 0.1929517 0.351068574 0.3627685
9 -0.26267734 -0.05 0.1146316 -0.628158331 0.7350499
10 -0.44651083 -0.05 0.1929517 -0.902673594 0.8166504
11 -0.38816462 -0.05 0.2712719 -0.649270674 0.7419183
12 0.02013525 -0.05 0.1929517 0.159665854 0.4365722
13 -0.03877614 -0.05 0.1459596 0.029378254 0.4882815
14 0.41014395 -0.05 0.2712719 0.883469050 0.1884914
15 0.02782689 -0.05 0.8978331 0.082135687 0.4672694
16 0.11878306 -0.05 0.2712719 0.324060781 0.3729460
17 0.56506605 -0.05 0.2712719 1.180917005 0.1188178
18 0.47054422 -0.05 0.1929517 1.185040809 0.1180007
19 -0.05142908 -0.05 0.2712719 -0.002743819 0.5010946
20 0.06940159 -0.05 0.1929517 0.271822740 0.3928792
21 0.38968220 -0.05 0.1459596 1.150860065 0.1248949
Local Getis-Ord Gi 和 Gi*统计量
>>> localG(cdatashpt$gdp2017, listw=w)
[1] -0.05909956 1.09552796 -0.05815482 -0.09536069 -1.69368469 -1.94012537
[7] 0.69295805 0.34995778 0.96964875 -0.34538087 -0.15784709 0.51802708
[13] 0.20826225 -0.87609799 -0.19862319 -1.09970094 -1.06316301 -1.42853393
[19] 0.38484915 1.17379925 -1.43159536
attr(,"gstari")
[1] FALSE
attr(,"call")
localG(x = cdatashpt$gdp2017, listw = w)
attr(,"class")
[1] "localG"
基于残差项的moran检验
>>> ols <- lm(gdp2017 ~ kj2017 + l2017 + ks2017 + pe2017 + inex2017 + new_inc2017 + pri_en2017 + high_stu2017, data = cdatashpt)
>>> lm.morantest(ols, listw = w, alternative = "two.sided")
Global Moran I for regression residuals
data:
model: lm(formula = gdp2017 ~ kj2017 + l2017 + ks2017 + pe2017 +
inex2017 + new_inc2017 + pri_en2017 + high_stu2017, data = cdatashpt)
weights: w
Moran I statistic standard deviate = 0.95884, p-value = 0.3376
alternative hypothesis: two.sided
sample estimates:
Observed Moran I Expectation Variance
0.001873225 -0.123283278 0.017037907
散点图的绘制
>>> moran.plot(ols$residuals, w)
局部moran检验
localmoran(ols$residuals, w)
A localmoran: 21 × 5 of type dbl
Ii E.Ii Var.I Z.Ii Pr(z > 0)
1 -0.0363243420 -0.05 0.1168494 0.040006912 0.48404381
2 0.8370573121 -0.05 0.4404798 1.336560700 0.09068304
3 -1.1222105809 -0.05 0.4404798 -1.615537694 0.94690285
4 0.2373930487 -0.05 0.4404798 0.433025295 0.33249820
5 -0.1380790378 -0.05 0.1168494 -0.257667335 0.60166817
6 -0.1081663716 -0.05 0.1977570 -0.130799494 0.55203304
7 0.1159985869 -0.05 0.1977570 0.373283232 0.35446883
8 0.7082098711 -0.05 0.1977570 1.704996632 0.04409753
9 0.0612709718 -0.05 0.1168494 0.325513260 0.37239632
10 0.4204181464 -0.05 0.1977570 1.057835549 0.14506521
11 0.3774028474 -0.05 0.2786646 0.809648516 0.20907111
12 -0.0868802622 -0.05 0.1977570 -0.082933137 0.53304765
13 0.1244368071 -0.05 0.1492124 0.451580986 0.32578544
14 0.1874982314 -0.05 0.2786646 0.449903626 0.32638997
15 -0.5517955762 -0.05 0.9259254 -0.521481405 0.69898427
16 -0.1211737778 -0.05 0.2786646 -0.134827702 0.55362595
17 -0.0030386117 -0.05 0.2786646 0.088961079 0.46455642
18 -0.4168336708 -0.05 0.1977570 -0.824903760 0.79528688
19 -0.0539797929 -0.05 0.2786646 -0.007539102 0.50300764
20 -0.3916838150 -0.05 0.1977570 -0.768348944 0.77886005
21 -0.0001822581 -0.05 0.1492124 0.128967879 0.44869153
其他相关检验类似,只需将变量替换为残差项即可,不再演示。此外,这里仅演示了各命令的常见用法,需要具体了解的话,可以点击「阅读原文」,这里给出了各命令的详细说明。

更多精彩内容,扫码关注微信公众号!
使用R进行空间自相关检验的更多相关文章
- R笔记 单样本t检验 功效分析
R data analysis examples 功效分析 power analysis for one-sample t-test单样本t检验 例1.一批电灯泡,标准寿命850小时,标准偏差50,4 ...
- 【R】正态检验与R语言
正态检验与R语言 1.Kolmogorov–Smirnov test 统计学里, Kolmogorov–Smirnov 检验(亦称:K–S 检验)是用来检验数据是否符合某种分布的一种非参数检验,通过比 ...
- twoway 系列命令绘制地图
twoway 系列命令绘制地图 ❝ 在谈到用stata绘制地图时,很多人首先想到的是spmap命令.其实,最常见的twoway系列命令就可以完成我们的大多数绘图需求. 对于spmap命令的使用,在线资 ...
- R 误差自相关与DW检验
R语言进行DW检验: library(lmtest) dw = dwtest(fm1) > dw Durbin-Watson test data: fm1 DW = 2.4994, p-valu ...
- (转)R空间数据处理与可视化
前言 很多朋友说在R里没法使用高德地图,这里给出一个基于leaflet包的解决方法. library(leaflet) # 添加高德地图 m <- leaflet() %>% addTil ...
- 多元线性回归检验t检验(P值),F检验,R方等参数的含义
做线性回归的时候,检验回归方程和各变量对因变量的解释参数很容易搞混乱,下面对这些参数进行一下说明: 1.t检验:t检验是对单个变量系数的显著性检验 一般看p值: 如果p值小于0.05表示该自 ...
- 基于R语言的ARIMA模型
A IMA模型是一种著名的时间序列预测方法,主要是指将非平稳时间序列转化为平稳时间序列,然后将因变量仅对它的滞后值以及随机误差项的现值和滞后值进行回归所建立的模型.ARIMA模型根据原序列是否平稳以及 ...
- R语言:克里金插值
基于空间自相关,R语言克里金插值 library(gstat) Warning message: In scan(file = file, what = what, sep = sep, quote ...
- 时间序列 R 读书笔记 04 Forecasting: principles and practice
本章開始学习<Forecasting: principles and practice> 1 getting started 1.1 事件的可预言性 一个时间能不能被预言主要取决于以下三点 ...
随机推荐
- day18-5个内置方法
# 1. __str__方法: 必须return class Goods: def __str__(self): return 'apple' g = Goods() print(g) #apple, ...
- 倾斜摄影数据转cesium 3D tiles工具介绍
软件操作:http://jingyan.baidu.com/article/3aed632e3912c8701080912c.html 软件测试数据: 数据,油库链接: http://pan.baid ...
- why rpc
why rpc 单体应用业务复杂, 大集群部署时对数据库的连接是个考验, 维护这个应用也比较费劲(一群人维护,容易代码冲突) 拆分后 各服务之间的接口依赖不能使用httpClient来搞,一是效率太低 ...
- AngularJS前端以ArrayBuffer类型请求后端数据以生成文件时,出现异常的处理
.error(function(error){ var decodedString = String.fromCharCode.apply(null, new Uint8Array(error)); ...
- JarvisOJ level3_x64
这一题是和前面x86的差不多,都是利用了同一个知识点,唯一的区别就是使用的堆栈地址不同,x86是直接使用堆栈来传递参数的,而x64不同 x64的函数调用时整数和指针参数按照从左到右的顺序依次保存在寄存 ...
- Halcon算子函数
Chapter_1_:Classification 1.1 Gaussian-Mixture-Models 1.add_sample_class_gmm 功能:把一個訓練樣本添加到一個高斯混合模型的 ...
- Docker的自动构建镜像
Dockerfile自动构建docker镜像类似ansible剧本,大小几kb手动做镜像:大小几百M+ dockerfile 支持自定义容器的初始命令 dockerfile主要组成部分: 基础镜像信息 ...
- 12月18日风险投资速递:Facebook收购实时体育数据提供商Sport Stream
国内公司 1.手游公司成都掌沃无限获得近千万元天使投资 成都掌沃无限成立于2013年,是一家新成立的手机游戏开发商,创始人及CEO张涛拥有超过10年的游戏行业从业经验和连续创业经历,其首款游戏产品为& ...
- Laravel Study(使用 Laravel )
開始 伺服器及相關工具安裝自行建立,在伺服器跟目錄下 有兩種方式建立 Laravel 專案,這裡使用 composer 建立專案 使用 composer 要在 PHP 5.3.2 以上才能使用 com ...
- Oracle的LOB(CLOB)大字段以及(SYS_LOB***$$)清理
文章结构如下: 1.背景: 生产上查询那些大表然后进行清理,然而发现有SYS_LOB0000093441C00002$$这中表段占用30G(只保留一个月,如果保留更久会更大). 2.LOB介绍 Ora ...