R语言处理部分:
1、setwd
用于设置当前工作目录,可直接利用快捷键“Ctrl+shift+H”完成
2、引用外部函数
在定义好工作目录后,将要引用的函数放在该目录下,然后利用source(‘xxx’)来完成函数的引用
3、利用网上的shp2mat函数完成shp文件中省份面或者是点间距离矩阵的求解
- 定义好工作区后,引入包
library(matpools)
Library(spdep)
- 若要制作省份的邻接矩阵
#1 元素取值为0-1
#1.1 省份面
#1.1.1 基于queen邻接关系设定邻居,赋值为1
> pmat1 <- shp2mat("shp文件名")
#1.1.2 将距离最近的3个单元设为邻居,赋值为1
> pmat2 <- shp2mat("shp文件名",k=3)
#1.1.3 将500公里以内的单元设为邻居,赋值为1
> pmat3 <- shp2mat("shp文件名", td=500)
#1.2 省会点
#1.2.1 基于泰森多边形邻接关系设定邻居,赋值为1
> cmat1 <- shp2mat("shp文件名")
#1.2.2 将距离最近的3个单元设为邻居,赋值为1
> cmat2 <- shp2mat("shp文件名",k=3)
#1.2.3 将500公里以内的单元设为邻居,赋值为1
> cmat3 <- shp2mat("shp文件名", td=500)
- 制作距离矩阵
#2 元素取值为距离,这里基于经纬度计算弧度距离,以km为单位
#2.1 省份面
#2.1.1 给出所有单元间距离
> pmat1 <- shp2mat("province31_shp\\province31", type="d")
#2.1.2 给出最近三个邻居的距离
> pmat2 <- shp2mat("province31_shp\\province31", type="d", k=3)
#2.1.3 给出500公里范围内的邻居距离,如无邻居则用距离最近的单元替代
> pmat3 <- shp2mat("province31_shp\\province31", type="d",td=500)
#2.2 省会点
#2.2.1 给出所有点对间距离
> cmat1 <- shp2mat("capitals31_shp\\capitals", type="d")
#2.2.2 给出最近三个点的距离
> cmat2 <- shp2mat("capitals31_shp\\capitals", type="d", k=3)
#2.2.2 给出500公里范围内的邻居距离,如无邻居则用距离最近的点替代
> cmat3 <- shp2mat("capitals31_shp\\capitals", type="d",td=500)
#给距离矩阵行列赋名并写出权重矩阵////这里要注意NAME是dbf文件中对应的标签名称,网上下载的shp文件有些有NAME有些只有序号。
> unit.names <- provinces@data$NAME
> dimnames(pmat1) <- list(unit.names, unit.names)
> write.csv(pmat1, "province31_distance.csv")
> unit.names <- capitals@data$NAME
> dimnames(cmat1) <- list(unit.names, unit.names)
> write.csv(cmat1, "capital31_distance.csv")
STATA部分
在制作好距离矩阵后,需要在stata中分析
注意的地方:空间权重矩阵需要标准化!
spatwmat using sph.dta, name(W)standardize
然后设置好面板数据
xtset place_n t
进行回归
xsmle ln_y_HP xit ln_x_CPI ln_x_inv ln_x_csp,wmat(W) model(sdm) durbin(xit) robust nolog noeffects fe
shp2mat.rar
(12.22 MB)



雷达卡




京公网安备 11010802022788号







