最近给大家分享了「经济学季刊」 2023 年 1 月 里面的「数字经济、家庭分工与性别平等」一文中的工具变量使用案例:
![]()
这个文献里面提到的两个工具变量都可以非常容易地使用 R 语言进行计算。
加载相关 R 包与读取矢量数据
首先我们加载所需的 R 包:
library(tidyverse) |
其中 tidyverse 用于数据处理,sf 用于地理计算。
以 2019 年的省市区县行政区划为例:
read_sf("2019行政区划/省.shp") %>% |
准备“八纵八横”光缆干线网络数据
关于“八纵八横”光缆干线,我找到了这样的一幅图:
![]()
然后我手工抄录了里面所有的连接线:line.csv 文件,下面我们将基于这个文件来构建矢量数据:
read_csv("line.csv") %>% |
插图
然后可以把这个矢量数据保存成 shp 文件:
linedfsf %>% |
网络节点城市是有这些:
linepointdf %>% |
使用 ggplot2 绘图展示
绘制中国地图通常使用这样的坐标参考系:
mycrs <- "+proj=aea +lat_0=0 +lon_0=105 +lat_1=25 +lat_2=47 +x_0=0 +y_0=0 +datum=WGS84 +units=m +no_defs" |
这里我想绘制一个带邻国地区的中国地图,范围是这个:
# 绘图区域 |
读取我编辑设计好的 shp 文件:
类似的文件都可以从平台上的课程:「使用 Stata 绘制中国市级地图」中获取。
read_sf("chinacity2019mini/chinacity2019mini.shp") %>% |
然后就可以绘制地图了:
library(ggspatial) |
![]()
计算各省市区县质心到“八纵八横”光缆骨干城市的距离
首先我们把所有的点集合成一个 MULTIPOINT 对象:
linepointsf$geometry %>% |
st_distance() 返回的结果就是最小距离(大圆距离):
prov_centroid %>% |
计算各省市区县质心到杭州的距离
这个就非常容易了:
city_centroid %>% |
绘制各城市到杭州的连接线网络
有时候我们会需要绘制某个城市到其他城市的辐射网络,这里以杭州为例进行演示:
# 各城市与杭州的连接线 |
![]()
点击这里跳转到 RStata 短书平台获取附件:名师讲堂|工具变量的计算:“八纵八横”光缆干线网络及其与网点城市各省市区县质心的距离
评论