一、测试数据介绍
在ArcGIS中创建栅格大小为500m的7×7的渔网,如下图。
对每个矢量的图层进行赋值,为了使得每个像元的值有所区别,在ArcGIS中使用以下代码。
import random
data = random.sample(range(0, 100), 100)
rec=0
def Increment():
global rec
global data
Start = 1 #初始值
Interval = 1 #间隔值
if (rec == 0):
rec = Start
else:
rec = rec + Interval
data_rec=data[rec]
return data_rec
最终创建字段long3和long4,这里对应的列long3和long4对应的值都是不一样的,同时这里把它的范围设定为1-100。
把矢量依据字段long3和long3分别转换为像元大小为500m,7×7的栅格,即long3.tif和long4.tif。
二、统计学知识介绍
1、Pearson相关系数
用于度量两个变量X和Y之间的相关程度(线性相关),其值介于-1与1之间,定义为两个变量的协方差除以他们的标准差之积:
计算公式
适用范围:
- 两个变量的标准差都不为零
- 两个变量之间是线性关系,都是连续数据。
- 两个变量的总体是正态分布,或接近正态的单峰分布。
- 两个变量的观测值是成对的,每对观测值之间相互独立。
注意事项:
- 积差相关系数适用于线性相关的情形,对于曲线相关等更为复杂的情形,积差相关系数的大小并不能代表相关性的强弱。
- 样本中存在的极端值对Pearson积差相关系数的影响极大,因此要慎重考虑和处理,必要时可以对其进行剔出,或者加以变量变换,以避免因为一两个数值导致出现错误的结论。
- Pearson积差相关系数要求相应的变量呈双变量正态分布,注意双变量正态分布并非简单的要求x变量和y变量各自服从正态分布,而是要求服从一个联合的双变量正态分布。 (第三条相对比较宽松,违反时系数的结果也是比较稳健的)
结果解释:
·|r|>0.95 存在显著性相关;
·|r|≥0.8 高度相关;
·0.5≤|r|<0.8 中度相关;
·0.3≤|r|<0.5 低度相关;
·|r|<0.3 关系极弱,认为不相关
相关性的说明参考知乎文章:相关性分析
三、统计软件中分析
1、在EXCEL中分析
把long3.tif和long4.tif的对应的值弄成excel表。在excel里计算它的相关性。
以long3的值为x,以long4的值为y,计算相关性,r方。如下图是它的一个相关性的散点图。
同时计算long3(x)和long4(y)的一个显著性水平。
红色框中框选的数字就是显著性的水平。
2、在SPSS中分析
参数设置
从下图中可以看出,结果和excel中的分析是一样的。
四、QGIS中做相关性分析
工具位置
加入对应的图层进行分析。
在自己的电脑上找到分析的结果。可以看到分析结果和之前分析的结果是一样的。但是这里分析的只有相关性。
五、在ArcGIS中做相关性分析
在ArcGIS中使用Band Collection Statistics计算相关性是错误的。
这里的相关系数大于1了,而且协方差计算得也不对。详细见文章。
但是在ArcGIS中用Principal Components计算的相关是正确的。
六、在GEE中分析
在GEE中也可以分析,首先计算两个图层的相关性和显著性水平。note:在GEE中一定要设置好像元大小,经过计算,发现当设置大于栅格自身的大小时计算结果会不同,而设置像元小于自身大小时计算结果是一致的。
下图是它识别的一个结果,结果也是和前面识别的结果是一致的。
当然在GEE中也是可以计算它的斜率和截距。
可以在下图中看到它的截距也是一样的。
七、在R中分析
见具体的代码
# Import packages
library(raster)
library(tidyverse)
# Load data
long3 <- raster(file.path("D:\\Program Files (x86)\\pytemp\\R language\\cor analysis\\long3.tif"))
long4 <- raster(file.path("D:\\Program Files (x86)\\pytemp\\R language\\cor analysis\\long4.tif"))
# Overlay 2 rasters and create the data frame
overlay <- stack(long4, long3)
overlay <- data.frame(na.omit(values(overlay)))
names(overlay) <- c("long4", "long3")
# correlation test 两个的换一下也是一样的。
cor.test(overlay[,1], overlay[,2])
# linear regression (alternative) 两个值换一下是不一样的 对应的是y-x
linear <- lm(overlay[,2] ~ overlay[,1])
summary(linear)
#source url:https://www.analyticsvidhya.com/blog/2021/05/image-raster-analysis-spatial-correlation/
可以看到这里的相关性和显著性也是一样的。
在R中也可以计算long3(x)和long(y)的方程关系,如下图,0.2813代表斜率,而34.1290代表截距。
文章所所的资料
ArcGIS相关性分析的证明文件(long3和long4)