空间权重矩阵构建(Stata代码)

这篇博客介绍了如何在Stata中使用spwmatrix和spatwmat命令生成多种类型的空间权重矩阵,包括基于距离的邻接矩阵、近邻数量矩阵、一阶和二阶反距离矩阵以及经济和反经济地理权重矩阵。通过putexcel命令,这些矩阵可以导出到Excel文件中供后续分析使用。
摘要由CSDN通过智能技术生成

整理了一下几个空间权重矩阵生成的Stata代码,小伙伴们仅供参考哈。

//权重矩阵生成

//安装命令spwmatrix
ssc install spwmatrix

//安装命令spatwmat
//1.输入命令 findit spatwmat
//2.点击界面链接 "sg162 from http://www.stata.com/stb/stb60"
//3.找到INSTALLATION FILES,点击 "click here to install"

//导入经纬度坐标,lat纬度,lng经度,并重命名
rename lat x     //纬度赋值x
rename lng y     //经度赋值y

//1.1 基于距离的邻接权重矩阵wbin_1、wbin

*spatwmat
//band()为邻接参数,可手动调整,band(0 10)即距离band在0~10之间的单位视为邻接,赋权重1,否则赋权重0,下述db(0 10)同理
spatwmat, name(wbin_1) xcoord(x) ycoord(y) band(0 10) binary
matrix list wbin_1            //查看权重矩阵wbin_1
putexcel set wbin_1, replace  //将权重矩阵wbin_1导入excel文件中
putexcel A1 = matrix(wbin_1)  //从A1单元格导入

*spwmatrix
spwmatrix gecon x y, wn(wbin) wtype(bin) db(0 10) cart   //wtype()为权重矩阵类型,wtype(bin)为邻接权重矩阵,其他参数可参考 help spwmatrix
matrix list wbin
putexcel set wbin, replace
putexcel A1 = matrix(wbin)

*1.2 基于近邻数量的邻接权重矩阵wnear

*spmatrix_knn
//knn(10)即距离最近的10个单位赋权重1,其他赋权重0
spwmatrix gecon x y, wname(wnear) cart knn(10)
matrix list wnear
putexcel set wnear, replace
putexcel A1 = matrix(wnear)

*1.3 计算一阶反距离权重矩阵winv
spwmatrix gecon x y, wn(winv) wtype(inv) cart alpha(1)
matrix list winv
putexcel set winv, replace
putexcel A1 = matrix(winv)

*1.4 计算二阶反距离权重矩阵winv2
spwmatrix gecon x y, wn(winv2) wtype(inv) cart alpha(2)
matrix list winv2
putexcel set winv2, replace
putexcel A1 = matrix(winv2)

*1.5 计算经济地理权重矩阵wecon
//econvar(var)为所设定的经济变量,测量经济距离,此处设定的经济变量var为peo,即各地人口数量
spwmatrix gecon x y, wn(wecon) wtype(econ) econvar(peo)
matrix list wecon
putexcel set wecon, replace
putexcel A1 = matrix(wecon)

*1.6 计算反经济地理权重矩阵winvecon
//测量反经济距离
spwmatrix gecon x y, wn(winvecon) wtype(invecon) econvar(edu)
matrix list winvecon
putexcel set winvecon, replace
putexcel A1 = matrix(winvecon)

//之后打开当前目录下各自的.xls文件,将生成的权重矩阵导入.dta文件中即可
stata中可以通过使用spatial packge中的命令来构建空间权重矩阵。常用的命令包括ares命令、aw命令、queen命令、rook命令等。 使用ares命令可以根据距离来构建权重矩阵,可以使用欧氏距离、曼哈顿距离、切比雪夫距离等。例如,使用欧氏距离构建权重矩阵的命令如下: ares distance_var, neighbors(number_of_neighbours) id(varname) 其中distance_var是距离变量,number_of_neighbours是指定的邻居个数,varname是变量名称,可以指定样本的ID或者地理编码等。 使用aw命令可以构建基于地理距离和关系的权重矩阵。例如,构建阈值为500米的权重矩阵的命令如下: aw threshold_var, neighbors(number_of_neighbours) id(varname) unit(meters) 其中threshold_var是距离变量,number_of_neighbours是指定的邻居个数,varname是变量名称,可以指定样本的ID或者地理编码等,unit(meters)指定单位为米。 使用queen命令可以构建k近邻权重矩阵。例如,构建5个最近邻的权重矩阵的命令如下: queen distance_var, neighbors(5) id(varname) 其中distance_var是距离变量,neighbors(5)是指定的邻居个数,varname是变量名称,可以指定样本的ID或者地理编码等。 使用rook命令可以构建基于道路网络的权重矩阵,例如,构建最近的3个邻居节点的命令如下: rook edge_var, nodes(3) id(varname) 其中edge_var是道路网络数据,nodes(3)是指定的邻居节点个数,varname是变量名称,可以指定样本的ID或者地理编码等。 通过以上命令可以灵活地构建不同类型的空间权重矩阵,为空间分析作准备。
评论 84
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值