追求系列化、高质量的R语言教程
空间扫描统计(spatial scan statistics)是一种探测空间聚集的方法(geographic cluster detection analysis),常用于探测低发生率疾病的空间聚集区。基本思路是定义一种统计量并计算该统计量在每个位置(区域、格点)的值,将具有一定显著性水平的位置定义为集群点。
1 符号和数据要求
本篇推文将介绍三种空间扫描方法,这里统一所使用的符号含义:
表示空间区域标识。
表示区域的风险人口数(population at risk),即可能感染该疾病的人群基数;表示所有区域的风险人口之和。
表示区域的病例数(observed number of cases),表示所有区域的病例数之和。
表示区域的期望病例数,表示全区域的期望病例数之和。是事先通过一定的加权方法计算而得的,一般可以使用。
空间扫描统计使用的数据不是矢量数据,而是一个包含如下变量的数据框:
Observed:病例数;
Expected:病例期望值;
Population:风险人口数;
x:经度的地理或投影坐标(Easting coordinate);
y:维度的地理或投影坐标(Northing coordinate)。
本篇使用的示例数据[1]如下:
library(spdep)
library(tidyverse)
data(nc.sids)
sids <- nc.sids %>%
transmute(Observed = SID74,
Expected = BIR74*sum(SID74)/sum(BIR74),
Population = BIR74,
x = x,
y = y)
head(sids)
## Observed Expected Population x y
## Ashe 1 2.2053964 1091 -81.67 4052.29
## Alleghany 0 0.9844437 487 -50.06 4059.70
## Surry 5 6.4443663 3188 -16.14 4043.76
## Currituck 1 1.0268940 508 406.01 4035.10
## Northampton 9 2.8724732 1421 281.10 4029.75
## Hertford 7 2.9351380 1452 323.77 4028.10
2 Openshaw’s GAM方法
2.1 理论基础
最早用于探测疾病发生集群点的空间扫描方法是1987年Openshaw et al.提出的地理分析机器(Geographical Analysis Machine, GAM)[2]。
该方法首先需要给定所分析位置的格点坐标。格点既可以是原始数据中的采样点,也可以是以一定步长建立的方格点。再以一定长度为半径建立圆形扫描窗口,每个格点的GAM统计量就是落入圆内的采样点的病例数之和。
前面使用表示期望病例数,它是在假定不存在空间聚集的前提下通过某种加权方法计算而得的。将看作是一个随机变量,使用表示它的数学期望,其中称为相对风险(relative risk)。在零假设情况下,所有区域的应该相等(即预先计算的期望与实际期望成比例):
其中可以是一个已知或未知的常数。
如果认为为已知常数,通常取1,即认为与实际期望相等。
根据对概率分布的假设,GAM方法又分为两种子方法,它们假设的概率分布形式分别为泊松分布和负二项分布。
假设服从均值为的泊松分布:
假设服从负二项分布。关于负二项分布,在推文负二项回归和离散型分布中有所介绍,它与泊松分布存在内在联系,是伽马-泊松混合分布的特例:
在概率分布既定的情况下,可以计算每个格点的GAM统计量的显著性水平,具体计算过程参见本篇的参考资料[2]。当显著性水平低于给定值时,该格点就被认为是集群点。这个给定显著性水平通常很小,如0.002(远小于最常使用的显著性水平0.05)。
2.2 R中的函数
本篇使用的工具包是DCluster
。主要函数如下:
opgam()
函数为探测空间集群点的主函数;一系列的
*.iscluster()
函数,分别代表不同的空间扫描方法;calculate.mle()
函数,在涉及抽样时用于计算概率分布的参数。