GeoDa可生成两种格式的权重文件,一为基于邻接关系的gal文件,一为基于距离远近的gwt文件。
gal文件为0-1矩阵,相邻单元赋值为1,否则为。
gwt文件计算出一定距离范围内的单元间距离。如将阈值距离设定为充分大,则可计算出所有单元两两之间的距离。
GeoDa的一个优势是,可根据单元点的经纬度坐标,计算出点与点之间的弧度距离,较之欧几里得距离更为合理。
gwt权重文件为文本格式,可用“记事本”打开。如下图所示,文件province31.gwt给出了中国31个大陆省份两两之间的距离,其第一行为文件头说明,表示有31个单元,基于shape文件Province31生成,识别单元的变量为POLY_ID。接下来共三列,第一列和第二列均为单元编号,第三列为单元间距离。如第二行表示POLY_ID值为1的单元与POLY_ID值为15的单元间距离为1.066。对于省份来说,距离计算的坐标为其质心经纬度。
利用R语言spdep包中的read.gwt2nb,可以读入将gwt数据读为nb对象。然后再利用nb2mat,可以将其转成n*n矩阵,然而这是0-1矩阵,且默认为行标准化,偏离我们的预期。
现自编R语言程序gwt2mat()将gwt文件转成n*n矩阵,其参数设定如下:
gwt2mat(gwt)
其中,gwt为文件路径。生成后,自己可以进行取距离平方倒数后的行标准化。
后面会专门开发函数swm.rownorm来进行各种情况下的行标准化。
数据和代码下载:https://pan.baidu.com/s/1ssu-7Iwhy83FKrq-R-Lp2g 密码:d8gb
领取专属 10元无门槛券
私享最新 技术干货