说实话,刚入行那会儿,我也觉得这俩玩意儿差不多,都是算距离的嘛。直到我帮一个做跨境电商的小老板跑数据,他拿着CEPII数据库里的dist和geo两个变量问我:“老张,这俩不都是算两地距离吗?我咋算出来差这么多?”我当时心里咯噔一下,心想这要是讲不清楚,我这七年白干了。
咱不整那些虚头巴脑的学术定义,直接上干货。你如果还在用geo去硬套那些需要高精度物流成本的模型,那基本就是给自已挖坑。
先说geo。这玩意儿在CEPII里,通常指的是经纬度坐标。对,就是简单的lat和lon。你拿它算距离,得自己写代码,用Haversine公式或者Vincenty公式去算大圆距离。好处是啥?灵活啊。你可以算直线距离,也可以根据实际航线、铁路线去加权。但坏处也明显,太麻烦,而且它只反映几何上的远近,不反映“心理”或“经济”上的远近。
再说dist。这是CEPII直接给你算好的距离变量。注意啊,这里的dist,很多时候指的是首都到首都的距离,或者是主要城市对之间的距离。它背后有一套复杂的计算逻辑,可能还包含了历史殖民关系、语言障碍等虚拟变量(虽然这些是单独变量,但dist本身是纯地理距离的代理)。最关键的是,dist是现成的,你直接拉进Stata或者Python里就能用,省得你自己去算经纬度差。
我举个真实的例子。去年有个做中欧班列物流的朋友,他想分析西安到柏林的贸易潜力。他用geo算的直线距离,大概7000多公里。但他用dist变量,发现数据里给的是两个主要枢纽城市的距离,而且他还忽略了中间经过的边境口岸拥堵成本。结果呢?他的模型拟合度特别差,R平方低得可怜。为啥?因为dist虽然准,但它没包含“非地理成本”。
这时候你就得明白CEPII的dist和geo区别到底在哪。geo是原材料,dist是半成品。你要是做纯地理空间分析,比如研究地形对贸易的影响,那你必须用geo自己算,因为dist可能没包含海拔、山脉这些细节。但如果你做标准的引力模型(Gravity Model),研究GDP、人口对贸易的影响,那dist就够用了,甚至更省事。
还有个坑,很多新手分不清CEPII里的dist是公里还是英里。我去查了CEPII的官方文档,好家伙,它给的距离单位是公里,但有些老版本的数据库或者第三方整理的数据,可能会转成英里,或者直接用某种标准化后的指数。你如果不仔细看变量说明,直接拿去回归,系数符号反了都不知道咋回事。
另外,dist变量在CEPII里,有时候是针对“国家对”(country-pair)的,有时候是针对“城市对”的。你要是混用了,比如用国家层面的dist去分析城市层面的贸易数据,那误差就大了去了。我之前就犯过这错,把北京到纽约的国家间距离,直接套用在深圳到洛杉矶的企业级贸易数据上,结果被导师骂得狗血淋头。
所以,总结一下。你要是求快,求标准引力模型,用dist,但一定要核对单位和对齐层级。你要是搞创新,想加入地形、气候、实际运输路线成本,那必须用geo自己算。别偷懒,别觉得dist现成就好用。
最后提醒一句,CEPII的数据更新挺慢的,有时候2020年的数据还没出来,你就得自己用最新的经纬度去算geo。这时候CEPII的dist和geo区别就体现出来了:dist是死的,geo是活的。做研究嘛,就得有点活人样,别被工具牵着鼻子走。
希望这点经验能帮你避避坑,别像我当年一样,为了一个距离变量熬了三个通宵。