新版白话空间统计(5):莫兰指数之计算详解[通俗易懂]

新版白话空间统计(5):莫兰指数之计算详解[通俗易懂]上次我们简单的介绍了一下学渣莫兰同学的逆袭之旅,梦想成为一个数学家的他最后阴差阳错的成为了一个统计学家,所以虾神不禁陷入沉思:好了,不说数学了,我们今天继续来说莫兰指数。我们先来看看莫兰…

大家好,又见面了,我是你们的朋友全栈君。

CSDN的被爬虫专用声明:虾神原创,公众号\知乎:虾神说D

转发、转载和爬虫,请主动保留此声明。

上次我们简单的介绍了一下学渣莫兰同学的逆袭之旅,梦想成为一个数学家的他最后阴差阳错的成为了一个统计学家,所以虾神不禁陷入沉思:

新版白话空间统计(5):莫兰指数之计算详解[通俗易懂]

好了,不说数学了,我们今天继续来说莫兰指数。

我们先来看看莫兰指数的原理。

先看看下面这样一个属性数据的相关分析图,假设这是四个城市的房价数据——

当北京连续三个月上升的时候,石家庄也连续三个月上升,这样我们就可以认为(在本次分析中)北京和石家庄的房价是正相关的,所以我们记为1。

同样,北京上升的同时,太原连续三个月下降,就认为是负相关,记为-1。

北京上升,但是天津有升有降,那么这样就可以他们之间是不相关,记为0

类推,西安,正相关,记为1。

新版白话空间统计(5):莫兰指数之计算详解[通俗易懂]

属性相关性的分析非常容易,那么到了空间自相关应该怎么办呢?虽然莫兰提出莫兰指数的时候,所谓的地理学第一定律还没有被发布(1950年,托布勒还在读大学,莫兰同学已经是牛津大学的讲师了),但是莫兰在随机概率的研究中发觉,空间分布对动物种群研究的重要性,所以开创性的在相关性研究中,加入了空间相邻的参数,如果加入空间关系,就会得到这样一个空间权重关系:

新版白话空间统计(5):莫兰指数之计算详解[通俗易懂]

之后,四个城市之间的空间权重矩阵就应该是:

新版白话空间统计(5):莫兰指数之计算详解[通俗易懂]

那么,最简单的对二者之间,做一个乘法,就得到这样一个值(与北京的空间自相关):

新版白话空间统计(5):莫兰指数之计算详解[通俗易懂]

可以看见,空间关系就两种:相关 or 不相关,属性有三种:正、负、无,所以乘积就得到三种情况:

新版白话空间统计(5):莫兰指数之计算详解[通俗易懂]

这就是莫兰指数的原理:属性与空间关系的乘积,得到最终的空间上的相关性。空间关系在自相关分析里面,起到的作用就是判定是否有关系,空间上不相关,那么属性再相关也没有用。

在这个例子里面,北京被认为与太原有临近关系,而他们的属性又正好是负相关,所以空间加权之后,就认为是空间负相关,再按照空间分布模式的规则,两个蹲在一起的,属性不相似,那就是所谓的离散关系。

而北京与石家庄在空间上也有临近关系,而且属性相似,为正相关,所以加权之后被计算为空间自相关,在自己身边有相似的伙伴,就是所谓的聚集模式。

下面我们来看看那莫兰当年给莫兰指数定义的计算公式:

新版白话空间统计(5):莫兰指数之计算详解[通俗易懂]

好吧好吧,数学公式就不写了,有兴趣的同学见(以后可能会有的)黑话空间统计学算法篇里面的内容。我只是简单说说莫兰指数如何进行计算的基础过程:

第一件事就是计算出所有要素之间的空间关系,形成空间关系矩阵,不过用矩阵来进行存储的话,有足足50%+的浪费,所以所有的计算莫兰指数的软件,都用的稀疏矩阵来进行记录的,比如上面那个矩阵,记录的方式就是:


北京:天津、石家庄、太原

天津:北京、石家庄、太原

石家庄:北京、天津,太原

太原:北京、天津、石家庄

西安:(空)


然后以此对有关系的城市之间进行计算,因为莫兰指数计算的是截面数据,所以不可能会出现多个时间片段的数据,单个数值之间,怎么进行相关性对比呢?答案就是用属性值与平均数之间的差(离差)来进行判定。

总所周知,离差是衡量数据分布离散程度的一种非常有效的指标,所以莫兰在这里用每个要素与相邻要素的离差乘积,然后乘以空间关系系数,作为分子,然后用所有数据的离差平方和作为分母,计算出所有数据之间的离散程度来,接下去用总的要素数量除以所有空间关系权重的和,来作为总体系数权重,把二者相乘,就得到了结果,用公式表达就是:

新版白话空间统计(5):莫兰指数之计算详解[通俗易懂]

好吧,我食言了……

新版白话空间统计(5):莫兰指数之计算详解[通俗易懂]

从这个公式可以看出,每个要素会和与自身有空间临近关系的要素进行计算——没有临近关系,比如上面示例里面的西安,空间相关系数为0,结果自然都是0了。

从这个数学公式上面看来,莫兰同学当年的设计非常的精巧,虾神这种数学学渣到现在读到这个公式都觉得颇为惊艳,我们来感受一下这个公式的美:

假设所有的数值的平均数是10的话:

北京的数值是50

天津的数值是5

北京的离差就是40,而天津的离差就是-5,二者的乘积就是-200

那么如果:

北京的数值是50,

石家庄的数值是40,

北京的离差还是40,石家庄的离差就是30,二者离差的乘积就是1200

换一个更小的数值的话:

比如太原的数值是5

石家庄的数值是3

二者的离差就是-5和-7,得到的乘积就是35,还是正值。

那么从这个算法我们可以看见,两个值同时大于或者小于均值,就能得到正值,而被均值正好切开的两个值,就会得到负值——与参与计算的数值与均值偏离越大,得到的结果的绝对值就越大,所以空间上有关系的,而且有彼此接近的数值,表达成了聚集分布,而反之亦然。

高值周边聚集高值或者低值周边聚集低值,都计算为正——表示为聚集,而高低值相互交错,那么就会计算为负,表示为离散。如果有正有负,相互抵消为0,那么就表达为随机。

而公式中的分子部分,是通过方差进行归一化,因此最终该指数的值将落在 -1.0 到 +1.0 的区间内。

新版白话空间统计(5):莫兰指数之计算详解[通俗易懂]

这就是可怕的数学家啊……天地为炉,造化为工,阴阳为炭,万物为铜

读懂了这个公式之后,给一张纸一支笔,就能够手算了,不过十个八个要素,咬咬牙能算出,但是给你180个要素来计算,估计你就要抓瞎了,所以最简单的方式,就是用现成的工具来实现,比如ArcGIS,所以下一章,我们看看在ArcGIS里面,如何利用现成的工具来进行莫兰指数的计算。

(待续未完)

CSDN的被爬虫专用声明:虾神原创,公众号\知乎:虾神说D

转发、转载和爬虫,请主动保留此声明。

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

发布者:全栈程序员-用户IM,转载请注明出处:https://javaforall.cn/153081.html原文链接:https://javaforall.cn

【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛

【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...

(0)
blank

相关推荐

  • C++学习——动态内存分配「建议收藏」

    C++学习——动态内存分配「建议收藏」文章目录何为静态内存分配?为什么需要动态内存分配解决方法:动态内存分配动态申请内存操作符 newnew 类型名T(初始化参数列表)释放内存操作符deletedelete 指针名p注意问题内存泄露举例申请和释放动态数组动态创建多维数组何为静态内存分配?通常定义变量(或对象),编译器在编译时可以根据该变量(或对象)的类型知道所需内存空间的大小,从而系统在适当的时候事先为他们分配确定的存储空间。这种…

  • ubuntu16.04安装cuda9.0(ubuntu18安装nvidia驱动)

    (安装:NVIDIA-384+CUDA9.0+cuDNN7.1)Ubuntu下安装CUDA需要装NVIDIA驱动,首先进入NVIDIA官网,然后查询对应NVIDIA驱动是否支持你电脑的型号。第一步、安装NVIDIAGPU驱动去NVIDIA官网查询是否支持我电脑的GPU如下 可以看出:GeForce700MSeries(Notebooks):GeForceGTX…

  • nginx一个端口配置多个项目_映射地址怎么设置

    nginx一个端口配置多个项目_映射地址怎么设置Nginx默认的80端口如果想要同时配置多个项目,让项目实现不需要指定端口号即可访问,按照如下配置即可更多精彩更多技术博客,请移步IT人才终生实训与职业进阶平台-实训在线前置内容使用Nginx部署Vue项目这片笔记里面介绍了如何使用Nginx部署项目找到对应项目的Nginx配置一般比较规范的配置方式是为每个单独的项目创建.conf文件,如…

  • 《前端运维》一、Linux基础–06Shell流程控制

    这章我们来学习下流程控制,简单来说就是逻辑判断和循环的写法。并不复杂,我们来简单地看下。1、if语句shell的if语句有两种写法,一种是shell脚本式的,一种是命令式的。ifconditi

  • GraalVM在Facebook大量使用,性能提升显著!「建议收藏」

    GraalVM在Facebook大量使用,性能提升显著!「建议收藏」翻译自https://medium.com/graalvm/graalvm-at-facebook-af09338ac519Facebook正在使用GraalVM来加速其Spark的工作负载,并减少内存和CPU的使用。请继续阅读,了解它们的迁移故事、性能改进结果和未来计划。Facebook背后的技术拥有28亿月活跃用户的Facebook是世界上访问量最大的平台之一。为了保证在这种负载下的可靠性和高性能,工程团队采用了多种技术,包括Java、JavaScript、FlowHack、PHP、Pyt.

  • 如何从零开始学android?

    如何从零开始学android?不知不觉进入软件开发这一行业已经8年了,回想起刚毕业在深圳一个月拿着2000的工资,还要在休息时间自学android,感觉那段时光真的是大学毕业后最充实的一段时光了;努力总会有结果的,第二年涨到5000,第三年跳槽回郑州给了我7500,主要是离家近,父母年纪大了,给的钱少点无所谓,起码能经常回家看看。回忆到此结束,之前看到有人在悟空问答提问怎么从零开始学android这个问题,但是限于爪机无力…

发表回复

您的电子邮箱地址不会被公开。

关注全栈程序员社区公众号