新版白话空间统计(27):从离散点到密度图

点的密度是点分析中一个很重要的方向,有大量的点数据的空间表达,基本上都是通过密度图来进行体现的,比如百度热力图:

又或者是交通车流量热力图:

空间点密度分析,把海量离散的点,变成高度抽象的综合性描述数据,这也是统计学的天赋技能之一。

如果说,这是互联网地图里面,最让人喜闻乐见的一种空间分析模式(或者是看热闹的同学就认为是一种漂亮的可视化方式也行),让以百度热力地图为代表的这种可视化方式,成为了即缓冲查询和路径分析之后,最为广大人民群众所熟知的一种空间分析方式。

既然这个东西这么好用(颜值即正义),所以虾神决定花一定的篇幅,来把密度分析这个东西从头到尾讲一遍。不过文章也仅仅是作为科普和入门,更深入的东西,需要大家自己去研究和探索。

首先,我们来简单看看密度这个概念——中学物理说得很清楚了,单位体积内的质量就叫做密度:而且最重要的一点,密度不是绝对数值,而是一个相对值。

比如物理上面的密度,都是以水为基准单位的,如果说水的密度为1(在常温常压下,单位g/cm3),那么铁的密度是7.8,这个7.8就是指与水相比较得出来的。同等体积的铁是同等体积的水的质量的7.8倍。(所有有时候,相对密度也用“比重”这个词来替代)

OK,物理上的对比非常容易,那么是不是空间上也是一样呢?实际上很多分析里面,都直接套用了物理上的一些思维,比如:人口密度,普遍的计算方法就是以平方公里为单位,来进行计算,得出的结果一般都是下面这样的示意图:

这种对比方式,可以较为明显识别世界上各个区域的人口密度情况,这种密度就是最容易做的一种密度了,直接划分网格,然后把每个网格包含多少个点(人)计数进去就可以了。

但是实际上,空间的密度的计算可能要更加复杂一点。

比如,针对上面的密度图形,提出一个问题,中国和印度,那个国家的人口密度更大?这种问题一提出来,肯定各种被喷,话说你的条件太不严谨了等等等的。。。中国东部很多地方的密度比印度还要高,但是中国还有大片西部没人的地方……这怎么比较啊。

所以不论是计算总体密度还是计算网格密度的方式,都还是在某些方面有限制……特别是用于比较的时候。

下面我们来看看古往今来,一些关于点密度计算的方式。

最简单的一种,就是借用了一维统计分析中的技术,看看下面这个例子。

如果我们有5个事件,把他们画到直线上,正好是在7、8、9、12、13,因为总的数量是20,所以总体的密度就应该是应该是5/20 = 0.25个点每单位长度。

而如果我们就整个事件分成两段,每段10个长度,那么一部分的密度就变成了0.33个点每单位,而第二段就变成了0.2个点每单位了……

再继续分成4段——第一段和最后一段,密度就变成了0,而第二段的密度是0.6,第三段的密度变成了0.4。

这种细分总体段的方法,在空间分析里面,是空间尺度的一种,不同的空间尺度下,可能得出不同的结果。所以如果将所有的点分配到线的整个长度上,是没有唯一答案的。

比如对中国人口密度的描述,总分一段肯定就是:14亿人/960万平方公里,但是如果按东西部分两段,得出的密度又不一样了……按省、按市就变化得更厉害了。

从这里可以看出一些个重要概念:

最计算的时候,采用的线段的长度(空间尺度),对密度值有着重要的影响(在物理上也是一样,用是立方厘米为标准来作为基准),而因为这个尺度可以是任意的,所以我们要想办法来去除对于这种空间尺度的依赖性。这种关于空间尺度的内容,大家可以参阅相关论文(当然,你们也可以等挖坑小能手虾神以后讲……)

那么去除尺度依赖性的方法有哪些呢?最简单的就是去细分尺度,把研究区域分割成若干段。但是切开始之后,我们会发现在分割处,我们的密度值会突然发现间断——这种情况在很多时候我们并不希望。回到最上面那张百度热力地图,它的可视化效果在内行人的眼中,观察到的最大的一个优点,就是非常平滑的过度;而如果出现了断崖式的变化的话,效果就差很远了,比如下面这种:

这样效果无疑就差很远了。

而且因为点数据的分布,还有可能出现密度为0的区域,如果密度为0,那么计算出来的密度可能有部分出现了空缺的情况,像这样:当然,这种情况是肯定有出现。

最后,我们可能会尽可能的细化——以至于进行了太多的细分,就有可能变成了二值化的区域:每个部分仅包含1或者0……这样又回到了我们最初始的状态,如下:且分成若干网格之后,每个网格要么是1(红色),要么没值是0(灰色)……

所以,挑选合适的空间尺度,在密度计算里面是最最重要的事情之一,如果没有合适的尺度,密度计算的结果会让你抓狂,而至于如何来处理,我们下次继续说。

那么如何把点变成密度图呢?在GIS里面,有很多方法来实现。比如你可以直接用ArcGIS提供的密度分析工具:

也可以直接自己做网格聚合,比如下面是地震点的数据:

我们可以预先定义和划分成100平方公里一个的网格:

然后做空间关联,把每一个点,关联到相应的空间网格上:

聚合计算(最简单的聚合就是做sum,不过既然叫做聚合,你可以去做max\min\mean\SD……为什么会有这些,我们后面在讲交通分析的时候再说。):

与ArcGIS提供的工具,做出来的结果是栅格数据不同,通过自定义格网做出来的,可以是矢量数据的密度网格,这种方式还有助于下一步进行继续分析。

待续未完。