楼主: SONGSST
6115 5

[空间经济学] 学习总结——利用R语言生成空间距离矩阵,并利用空间宾格模型进行回归 [推广有奖]

  • 0关注
  • 4粉丝

已卖:6份资源

本科生

31%

还不是VIP/贵宾

-

威望
0
论坛币
9 个
通用积分
5.1599
学术水平
1 点
热心指数
1 点
信用等级
0 点
经验
1003 点
帖子
25
精华
0
在线时间
118 小时
注册时间
2018-10-22
最后登录
2025-10-21

楼主
SONGSST 学生认证  发表于 2019-1-7 19:38:15 |AI写论文

+2 论坛币
k人 参与回答

经管之家送您一份

应届毕业生专属福利!

求职就业群
赵安豆老师微信:zhaoandou666

经管之家联合CDA

送您一个全额奖学金名额~ !

感谢您参与论坛问题回答

经管之家送您两个论坛币!

+2 论坛币

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)
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

关键词:空间经济学 R语言 Stata

沙发
枇杷琵琶 发表于 2019-3-9 16:21:56
感谢您的分享

藤椅
墨龙_居士 发表于 2019-12-14 09:43:01
和某公众号上的一模一样

板凳
太极无极 在职认证  发表于 2019-12-15 01:36:27
感谢楼主的无私分享

报纸
lonestone 在职认证  发表于 2020-3-28 16:22:29
谢谢楼主的分享

地板
牛奶面包会有的 发表于 2020-11-14 16:47:13
你好,请问为什么我已经导入了那两个包还是说没有shp2mat这个函数

您需要登录后才可以回帖 登录 | 我要注册

本版微信群
jg-xs1
拉您进交流群
GMT+8, 2025-12-25 13:02