白话空间统计十九:热点分析(下):结果解读以及用R语言实现
前文再续,书接上一回。
上回说到通过Getis-OrdGi*对2004年美国大选进行热点分析,得出了这样一张结果:
如果没有看前面文章,就有人会掐指虾神的脖子问:为毛这么难看!人家百度的热点图多
漂亮啊!你这个为毛会这么丑!
好吧,再次强调一个说法:百度那个叫做热度图,是专门用来表示人员密集度的,和专业
的热点分析没有关系。
英文的HotSpot最早是起源于地质学中的“地幔柱”,专业的解释如下:
从软流圈或深部地幔涌起并穿透岩石圈的一股固体物质热塑性流,呈圆柱状者称地幔柱
(热柱),呈羽缕状者称地幔羽(热羽)。地幔柱(热羽柱)在洋底或地表出露时即
为热点,热点(hot spots)是地幔柱(mantle plume)的一种表现。热点上的地热
流值大大高于周围广大地区,甚至会形成孤立的火山。
好吧,我知道你们不懂。。。因为我不懂……不过,下面这张图片,就是一个著名
的热点爆发的效果:
看见了吧……哪里有一点点多的意思?概念里面的几个关键字:“在地表露出时”
、“表现”,可以看出,所谓的Hot Spot其实是一种深层次(地底几千公里)的
现象的表现。通过它,地质学家用来研究大陆板块。那么在空间统计里面,我们
也是通过它,来对某些隐藏的信息进行挖掘。
如果说这个概念太专业的话,第二个热点的说明就是你百度第一个出来的东西
“无线热点”,如下图:
看到这个概念,你再问问自己,用手机连接wifi的时候,是点越多越好么?你一次
能连多少个wifi点?作为一个潜伏在GIS圈子里面的二流计算机专业码农,虾神可以
很负责任的告诉你——你手机搜索到的wifi热点越多,就说那么地方通信质量越差
……信号之间的干扰就越严重!
所以,看过这篇博客的同学,从今天开始,再也不要把热点分析和热度图放在一起来聊了。
那么如何解读空间统计中的热点图呢?还是看我们昨天做的那张图:
我在图片上显著的标识出了一个“热点区域”(红色的)一个“冷点区域”(蓝色)的,
这个热点是什么意思呢?他的意思是,他不但本身的数值很高,而且他周边的数值也很
高,是高值和高值的聚集区。同样的,冷点表示什么呢?冷点表示的是不但本身的值很
低,旁边的值也很低,就是所谓的低值和低值的聚集区。
那么可能就有同学问我,冷点,是不是表示小布什的票数目很少呢?看下面这张图:
红色表示小布什获胜的区域,蓝色表示克里获胜的区域。
当两张图进行对比的时候,我们发现热点和获胜(选票的多少)是没有任何关系的,
唯一的关系,就是热点区域表示没有杂质的获胜。用通俗的话来说,就是:
在这个区域内,只要任何一个区域获胜,那么就可以推定,周边的区域一样会获胜。
同理,冷区也是如此。
另外,我们看看在热区和冷区中间,也就是美国中东部地区,基本上是红蓝相间,所
以在热点图上,偏向白色的“随机区域”也就是说,在这个区域内,任何一个区获得
了胜利,周边的区域依然是胜负未定状态。
好了,下面来解析一下用R语言如何生成这样的热点分析图:
#加载sp包,此包在本脚本中主要用于空间可视化。 library(sp)
#加载spdep包,此包用于定义空间关系和实现Getis-Ord Gi* 算法 library(spdep)
#生成空间关系矩阵 W_cont_el <- poly2nb(data, queen=T) #定义空间关系为共点共边即为邻近,即Queen's Case W_cont_el_mat <- nb2listw(W_cont_el, style="W", zero.policy=TRUE)
#定义数据投影为WGS84(EPSG:4326) proj4string(data) <- CRS("+init=EPSG:4326")
#执行Getis-Ord Gi*算法,这里叫做localG,全称就是(local Getis-Ord G 局部Getis-ord G指数) lg1 <- localG(data$Bush_pct, listw=W_cont_el_mat, zero.policy=T)
#将计算完成的Getis-Ord Gi*指数(Z得分)赋值给数据里面的lg1属性 data$lg1 <- lg1[]
#定义可视化色带,这里用蓝色-白色-红色这样的色带图 lm.palette <- colorRampPalette(c("blue","white", "red"), space = "rgb")
#可视化图形 spplot(data, zcol="lg1", col.regions=lm.palette(20), main="Getis-Ord Gi* (z scores)", pretty=T) |
最后数据和脚本,在以下地址:
http://ncportal.esrichina.com.cn/arcgis/home/item.html?id=8902a0c95de34deaa2db82dc8b4c31f8