Stata:我和她离多远?基于百度地图API的地理距离计算

发布时间:2021-01-07 阅读 328

Stata连享会   主页 || 视频 || 推文 || 知乎

温馨提示: 定期 清理浏览器缓存,可以获得最佳浏览体验。

New! lianxh 命令发布了:
随时搜索连享会推文、Stata 资源,安装命令如下:
. ssc install lianxh
使用详情参见帮助文件 (有惊喜):
. help lianxh

课程详情 https://gitee.com/arlionn/Course   |   lianxh.cn

课程主页 https://gitee.com/arlionn/Course

作者: 冷萱 (西南财经大学)
邮箱: lx@smail.swufe.edu.cn


目录


Stata 功能的强大不只是在于经济学中的因果推断,同时也能兼顾一些其他软件的功能,如用 ArcGIS 计算不同企业 (学校) 之间的距离。本文主要介绍如何通过 Stata 计算不同学校之间的距离。在此之前,也需要一些准备工作,如申请百度秘钥和数据整理。如果学会了计算不同学校的距离,那么将工业企业地理位置转换为经纬度,以及进行相关距离测算也就变得容易了。

在正式分析之前,我们需要准备如下材料:

1. 申请秘钥

首先,我们需要在「百度地图开放平台」申请秘钥,具体操作详见「百度地图 api 密钥获取」。秘钥的主要作用是通过调取百度地图将地理信息转换为经纬度,并且个人用户每天有一定的额度限制,但也能满足一般科研需求。感兴趣的读者可自行申请。

2. 数据整理

本节数据整理主要分为两部分内容:

  • 将原始 Excel 数据导入 Stata 中,并对数据进行整理;
  • 生成高校对应矩阵。

2.1 原始数据清洗

为了后续方便,本文分析对象仅为教育部部属高校。具体代码如下:

*数据地址:https://gitee.com/arlionn/data/blob/master/data01/W020200709292792106069.xls
clear all 
import excel "W020200709292792106069.xls", sheet("sheet1") clear
nrow 3   //将第3行设置为变量名
drop if  学校名称 ==""
keep if 主管部门=="教育部" //仅保留部属高校
drop 备注
destring _all ,replace
format  学校标识码   %15.0f 
compress

2.2 生成高校经纬度

在原始数据整理好后,通过 cngcode 命令生成高校对应的经纬度。命令语法如下:

cngcode, baidukey(string) [options]
  • 其中,baidukey(string) 指定申请的百度秘钥;
  • [option] 主要选项又包括:
    • address(varname) 指定包含地址字符串的变量;
    • lat(varname) long(varname) 指定输出的经纬度变量名。

具体而言,本文分析对应的命令如下:

. ssc install cngcode, replace
. cngcode, baidukey(DfsFvAXxxEVCElaB69iLXEen7OKOt9gB) ///
           lat(startlat0) long(startlng0)  address(学校名称 )
. save university.dta,replace 

执行上述命令后会生成两个变量分别为 startlat0startlng0。需要注意的是,经纬度是根据变量 学校名称 生成。

2.3 数据结构转换

在原始数据清洗后,得到 76 所部属高校。本文的目的在于分析第 1 所高校与其他 75 所高校之间的距离,第 2 所高校与其他 75 所高校的距离。因此,需要将数据进行转换,使 76×1 的数据集变为 76×76 的数据集,使用到的命令为 cross

clear all 
use "university.dta",clear 
rename (学校名称 startlng0 startlat0) (name  startlng0 startlat0)
save name, replace 

use "university.dta",clear 
rename (学校名称 startlng0 startlat0) (学校名称  startlng1 startlat1)
cross using "name.dta"

最终,我们将得到 76×76 个样本值,具体如下图所示:

3. 距离测算

在完成以上数据整理工作后,距离计算就显得轻而易举了。我们使用 geodist 命令即可实现,并且可以指定新生成的距离变量为 distance

. ssc install geodist, replace

. geodist startlat1 startlng1 startlat0 startlng0, gen(distance)
. save distance, replace

4. 完整命令

clear all 
import excel "W020200709292792106069.xls", sheet("sheet1") clear

nrow 3   //将第3行设置为变量名
drop if  学校名称 ==""
keep if 主管部门=="教育部" //仅保留部属高校
drop 备注

destring _all ,replace
format  学校标识码   %15.0f 
compress
cngcode, baidukey(DfsFvAXxxEVCElaB69iLXEen7OKOt9gB) lat(startlat0) long(startlng0)  address(学校名称 ) //生成经纬度
save university.dta,replace 

clear all 
use university.dta,clear 
rename (学校名称 startlng0 startlat0) (name  startlng0 startlat0)
save name, replace 

use university.dta,clear 
rename (学校名称 startlng0 startlat0) (学校名称  startlng1 startlat1)
cross  using "name.dta"

geodist startlat1 startlng1 startlat0 startlng0, gen(distance)  //计算距离
save distance, replace

5. 相关推文

Note: 产生如下推文列表的命令为:
lianxh 地理 API 地图, m
安装最新版 lianxh 命令:
ssc install lianxh, replace

相关课程

连享会-直播课 上线了!
http://lianxh.duanshu.com

免费公开课:


课程一览

支持回看

专题 嘉宾 直播/回看视频
最新专题 因果推断, 空间计量,寒暑假班等
数据清洗系列 游万海 直播, 88 元,已上线
研究设计 连玉君 我的特斯拉-实证研究设计-幻灯片-
面板模型 连玉君 动态面板模型-幻灯片-
面板模型 连玉君 直击面板数据模型 [免费公开课,2小时]

Note: 部分课程的资料,PPT 等可以前往 连享会-直播课 主页查看,下载。


关于我们

  • Stata连享会 由中山大学连玉君老师团队创办,定期分享实证分析经验。直播间 有很多视频课程,可以随时观看。
  • 连享会-主页知乎专栏,300+ 推文,实证分析不再抓狂。
  • 公众号关键词搜索/回复 功能已经上线。大家可以在公众号左下角点击键盘图标,输入简要关键词,以便快速呈现历史推文,获取工具软件和数据下载。常见关键词:课程, 直播, 视频, 客服, 模型设定, 研究设计, stata, plus, 绘图, 编程, 面板, 论文重现, 可视化, RDD, DID, PSM, 合成控制法

连享会主页  lianxh.cn
连享会主页 lianxh.cn

连享会小程序:扫一扫,看推文,看视频……

扫码加入连享会微信群,提问交流更方便

✏ 连享会学习群-常见问题解答汇总:
https://gitee.com/arlionn/WD

New! lianxh 命令发布了:
随时搜索连享会推文、Stata 资源,安装命令如下:
. ssc install lianxh
使用详情参见帮助文件 (有惊喜):
. help lianxh