说实话,第一次拿到这份 2008-2023 年地级市层面的泰尔指数面板数据(xlsx 格式)时,我心里先是一阵踏实,紧接着是一堆问号:覆盖多少个地级市?泰尔指数是用什么口径算的?跟统计年鉴里的原始数据对不对得上?做面板回归时能不能直接拿来用?这些问题不搞清楚,再漂亮的 Excel 也只是躺在硬盘里的一堆数字。
这篇文章就把这类数据的门道讲透。我会从数据结构、计算口径、数据清洗、实证建模四个角度拆解,重点聊操作中真正会踩的坑,而不是把公式抄一遍就完事。无论你是做区域经济、产业集聚,还是城乡收入差异的研究,只要你手里的自变量或因变量里有“地级市 × 年份”的泰尔指数,这篇文章都值得看完。
1. 数据内容与结构全解析
拿到任何面板数据,先别急着跑回归。第一步永远是把“数据长什么样”摸清楚,包括覆盖范围、时间跨度、字段含义、缺失情况。这一步省下来的时间,会在后面的清洗和匹配中加倍还给你。
1.1 时间范围、地域覆盖与统计单元
这份数据的观测区间是 2008-2023 年,共 16 个年份,属于典型的中长期面板。为什么从 2008 年开始?一个重要原因是 2008 年前后统计口径和行政区划发生过一轮明显的调整,尤其是市辖区合并与县级市升格,前期的数据一致性较差。从 2008 年开始,多数地级市的行政区划进入相对稳定阶段,做纵向可比时更安心。
地域覆盖方面,数据主要针对地级行政区,包括地级市、自治州、盟等。需要注意的是,不同版本的同类数据,覆盖数量经常不一样。有的按“全市”口径,有的按“市辖区”口径,两者差别非常大。比如“全市”包含下辖县和县级市,人口和 GDP 数值明显更大;而“市辖区”只统计城市核心区。做城乡差异、收入分配类研究时,如果口径不统一,结论可能被标高或压低。
我在核对时发现,这份数据覆盖了 280 多个地级行政单元(个别年份有缺失),基本把常规研究对象都包含在内了。但仍建议你拿到数据后,先按年份生成一个“城市数量统计表”,把每年出现的城市代码数一遍,确认没有哪一年突然少了几十个样本。
1.2 变量清单与字段含义
打开 xlsx 文件,通常你会见到以下字段(字段名在不同版本里可能略有差异,核心逻辑一致):
| 字段名 | 含义 | 典型单位 | 备注 |
|---|---|---|---|
| 年份 | 数据对应年份 | 年 | 面板索引之一 |
| 城市代码 | 行政区划代码(6位) | 无 | 匹配主键,务必转成文本 |
| 城市名称 | 地级市/自治州/盟名称 | 无 | 名称可能随更名变化 |
| 行政区划代码(调整后) | 统一调整后的代码 | 无 | 用于跨年份匹配 |
| 地区生产总值(GDP) | 当年价或不变价 | 亿元 | 注意标注口径 |
| 年末常住人口 | 常住人口 | 万人 | 与户籍人口不同,注意区分 |
| 泰尔指数(总体) | 总体不平等程度 | 无 | 核心变量 |
| 泰尔指数(城镇) | 城镇内部不平等程度 | 无 | 有时未提供 |
| 泰尔指数(农村) | 农村内部不平等程度 | 无 | 有时未提供 |
其中“行政区划代码(调整后)”非常关键。很多研究者直接用当年的城市代码做主键,结果城市更名或代码变更后,同一座城市变成两条记录。代码统一调整后,才能实现真正的跨年追踪。
泰尔指数这一列通常保留四位小数,数值范围大约在 0.01 到 0.2 之间。不同年份、不同城市的数值分布差异很大,你拿到表后可以先用描述性统计扫一遍,看看最小值、最大值、标准差是否合理。如果出现负数或大于 1 的极端值,大概率是分组加总时出了问题,不要直接拿去跑回归。
提示:拿到数据的第一个动作,不是做图,而是做三件事:查重复值、查缺失值、查城市代码是否都能匹配上年份。三件事加起来不超过十分钟,却能帮你避开后续 90% 的坑。
2. 泰尔指数的计算逻辑与口径选择
泰尔指数看似只是一个数值,背后却藏着不少学问。如果不理解它是怎么算出来的,你很难判断手里的数据是否“干净”,也很难向审稿人解释你的变量含义。这一节把公式和口径讲清楚。
2.1 泰尔指数是什么,为什么研究者常用它
泰尔指数(Theil Index)由经济学家泰尔在 20 世纪 60 年代提出,核心思想是利用信息理论中的熵概念来衡量分配的不平等程度。它的最大优点是具备可分解性:总体的不平等可以分解为“组间不平等”和“组内不平等”。比如你要研究城乡收入差距,可以把总体泰尔指数分解为城镇和农村之间的差距,以及城镇内部、农村内部的差距。这一点是基尼系数很难做到的,所以近年来区域经济、收入分配研究中,泰尔指数的使用频率明显上升。
常见的总体泰尔指数公式为:
T = Σ (Yi / Y) × ln[(Yi / Y) / (Pi / P)]其中 Yi 表示第 i 个地区的收入(通常用 GDP 或可支配收入),Y 表示总收入;Pi 表示第 i 个地区的人口,P 表示总人口。当 Yi/Y 与 Pi/P 完全相等时,指数为 0,表示绝对平等;两者差异越大,指数越高,不平等程度越高。
这个公式的本质,是比较“某个地区贡献的收入份额”和“该地区的人口份额”之间的偏离程度。你可以把它理解成“谁创造了蛋糕”与“谁分到了蛋糕”的偏离。
2.2 两种常用权重方案与结果差异
实操中,计算泰尔指数最让人头疼的是“以什么为权重”。不同文献的处理方式不同,最常见的是两种:
第一种是人口加权。也就是上述公式,用人口份额作为基准。这种处理更适合衡量人均意义上的分配差距,研究城乡收入差距时用得最多。它的现实含义是:如果所有地区的人均收入相同,则泰尔指数为 0。
第二种是** GDP 加权**,即直接用各地区 GDP 份额与某个“预期份额”比较,不引入人口变量。这种处理在衡量区域经济总量失衡时更直观,但它忽略人口规模差异。比如一座人口很少的能源城市,GDP 很高,用 GDP 加权会放大该地区的“贡献偏离”,从而抬高泰尔指数。
我在对比中发现,同一份原始数据,人口加权与 GDP 加权计算出的泰尔指数序列,相关系数通常很高,但绝对数值和趋势幅度存在差异。也就是说,换权重后显著结果可能不变,但回归系数大小会变化。如果你的论文对系数大小敏感,一定要在正文或附录里明确写清权重方案,否则审稿人很容易提出质疑。
还有一个容易被忽略的点:基期和价格调整。如果你用 GDP 做分母,就必须明确用的是当年价还是不变价。当年价受通胀影响,做跨期比较时会上涨,可能夸大不平等;不变价可以反映实际产出变化。但城市层面的 GDP 平减指数往往不直接公布,研究者常用的做法是使用省级平减指数近似替代,或者干脆使用人均 GDP 的相对份额来计算,此时价格水平的影响会部分抵消。
实操心得:如果你手里的泰尔指数不是自己算的,一定要看数据说明里是否标注了权重方案和价格口径。没有标注的,默认按“人口加权 + 当年价”理解,但使用前最好对几个已知城市手动重算一遍,验证数值合理后再使用。
3. 数据质量自检与跨表匹配经验
再好的数据,不经过清洗就是一张数字纸。地级市面板做起来最烦的不是模型设定,而是行政区划调整、统计口径变化、指标单位不统一这三座大山。这一节分享几条经过多次实践验证的处理经验。
3.1 行政区划调整与城市代码漂移的处理
2008 到 2023 年这 16 年间,地级行政区发生过不少调整:县级市升为地级市、地区改为地级市、部分县改区、个别城市更名。这些调整反映在数据里,最常见的是两类问题:
第一类,同一城市在不同年份名称不同,例如“撤地设市”后由“某某地区”变为“某某市”。如果你用城市名称做匹配,就会出现同一个实体被拆成两条记录的尴尬情况。解决办法是坚持使用“行政区划代码(调整后)”作为匹配主键,而不是名称。
第二类,代码本身发生变更。有些城市升格后代码从四位或五位数变成了六位,有些城市合并后代码整体调整。遇到这种情况,建议建立一个“新旧代码对照表”,把同一个实体的所有代码统一归并为最终代码。哪怕你只有中等数量的城市,这个对照表也能帮你避免几十条重复记录。
具体操作建议按两步走:第一步,用 Excel 的“删除重复项”按“城市代码+年份”做一遍初筛;第二步,观察“城市名称”字段是否出现“同一代码不同名称”或“同一名称不同代码”的记录,逐一排查。不要指望这一步能自动完成,地级市面板的行政调整只能用人工加字典法处理。
3.2 与其他宏观变量的合并技巧
做实证研究时,泰尔指数极少是唯一的变量。你通常还要合并人均 GDP、产业结构、财政支出、受教育年限、城镇化率等数据。这里最关键的技巧是:所有表的主键格式必须完全一致。
我见过太多人因为“城市代码一个是文本、一个是数字”导致匹配后全是空值,或者因为“年份一个是 2008、一个是 2008.0”导致匹配失败。建议在导入数据时,统一把所有代码列设置为文本格式,年份统一用整数。合并前先用两个表的交集验证几个已知城市,比如手动查某个市某一年在两个表中的值,确认无误后再批量合并。
另外一个头疼的地方是单位换算。不同来源的 GDP 可能有的用“亿元”,有的用“万元”,人口有的用“万人”,有的用“人”。合并前最好统一成“亿元”和“万人”,并建立单位备注列,防止过几个月回看数据时忘记口径。
注意:地级市数据里经常出现“市辖区”与“全市”两套指标。如果泰尔指数按全市口径计算,你合并的 GDP、人口也必须用全市口径;如果用市辖区口径,则所有变量都要切换。混用口径做面板回归,结果大概率有偏。
4. 实证建模与可视化实操
数据清洗完成后,才轮到真正的分析环节。这一节不讲大道理,只讲怎么把“2008-2023年地级市泰尔指数”用起来,包括面板模型的规范做法、固定效应选择的经验,以及怎么把时间趋势画得让人眼前一亮。
4.1 面板回归中的规范处理流程
拿到泰尔指数面板后,最常见的实证设定是以泰尔指数为被解释变量,研究某政策、城市化、产业结构等因素对区域不平等的影响。反向设定也有,比如以泰尔指数为核心解释变量,研究不平等对经济增长的影响。不管方向如何,下面这套流程是标准动作:
第一步,声明面板数据结构,代码示例用的是 Stata,逻辑同样适用于 Python 的 linearmodels 包:
xtset city_code year xtdescribe如果提示存在重复值,说明你的主键没有清洗干净。请回头检查城市代码和年份组合是否唯一。这一步跑通之后,后续模型才有意义。
第二步,先做混合 OLS,再跑固定效应和随机效应,并通过豪斯曼检验选择模型:
reg theil gdp_percap industry urban est store ols xtreg theil gdp_percap industry urban, fe est store fe xtreg theil gdp_percap industry urban, re est store re hausman fe re大多数情况下,豪斯曼检验会拒绝随机效应,此时以固定效应结果为主。但固定效应模型会吸收掉城市层面所有不随时间变化的特征,如果你关心的核心变量本身几乎不随时间变化(比如地理政策变量),固定效应会低估它的作用。此时可以改用随机效应或双向固定效应,并在稳健性检验中说明。
第三步,处理时期效应。建议加入年份虚拟变量,控制共同的时间冲击:
xtreg theil gdp_percap industry urban i.year, fe这里的 i.year 会生成 2008 到 2023 年的虚拟变量,捕捉全国层面的共同冲击。如果不加,某一年全国性的经济波动可能被错误地归因到解释变量上。
第四步,聚类稳健标准误。地级市面板通常存在组内自相关,建议聚类到城市层面:
xtreg theil gdp_percap industry urban i.year, fe vce(cluster city_code)这一套跑下来,结果基本可以应付大多数 CSSCI 或 SSCI 初审要求。
4.2 时间趋势与空间分布的可视化建议
数值结果之外,一张好的图胜过三张表。泰尔指数面板有两种常见的可视化形式。
第一种是全国或分区域的时间趋势图。将每年所有城市泰尔指数的均值/中位数画成折线,再把城市按东部、中部、西部、东北分组,可以看出不平等程度的收敛或发散趋势。我在实际操作中比较推荐用“中位数 + 四分位距”组合,因为均值容易受个别极端城市拉动,体现不出大多数城市的真实状态。
第二种是某一年的截面分布图。比如选取 2010 年和 2020 年,把各城市泰尔指数映射到地图上,颜色越深代表不平等程度越高。这类图特别适合放在文章引言或结论部分,能直观呈现区域差距的空间格局。
画图工具上,Stata 用户可以用 twoway line、spmap;Python 用户更推荐 geopandas + matplotlib / plotly。核心不是工具,而是先按年份排序,保证 x 轴时间顺序正确;对城市代码做统一标准化,避免因代码格式不同导致地图匹配失败。
4.3 典型问题速查表与排查思路
整理几个我在处理同类数据时反复遇到的典型问题,你可以直接对照排查。
| 问题现象 | 可能原因 | 排查思路 |
|---|---|---|
| xtset 提示重复值 | 城市代码或年份存在重复 | 用“城市代码+年份”查重复项,检查行政区划调整导致的名称/代码变化 |
| 回归结果里观测数突然变少很多 | 合并时主键格式不一致,或部分城市某年数据缺失 | 先看合并后非缺失样本,确认代码格式统一为文本、年份统一为整数 |
| 泰尔指数出现负值或大于1 | 分组加总错误,或权重口径不统一 | 抽查几个城市手动重算,核对分母分子是否对应 |
| 某年城市数量锐减 | 该年统计口径变更或数据未更新 | 逐年统计城市数量,识别缺口年份并决定插补或剔除 |
| 固定效应下核心变量变得不显著 | 变量在时间维度上变异过小,或存在共线性 | 检查变量的组内标准差,必要时改用随机效应或系统 GMM |
以上这些坑,每一条我都踩过,尤其是城市代码格式不一致导致的“静默样本丢失”。模型照样能跑,结果也显著,但样本量少了三分之一,直到审稿人追问样本说明时才发现问题,非常被动。
5. 从数据到结论:几条实用心得
数据不是越多越好,指标也不是越复杂越好。泰尔指数这类型的数据,真正考验人的地方在于你有多懂它的数据结构,而不只是会调用一个回归命令。
我个人在多次处理这类“地级市 + 年份”的面板后,最大的感受是三个字:先看图。不要一上来就建模,先散点图、时间趋势图、缺失值热力图全做一遍,很多数据异常会在图上暴露得清清楚楚。有一次我在验证数据时发现某省份两个相邻城市的数值几乎完全相同,排查后发现是该城市在合并后新旧代码没有被正确区分,泰尔指数被重复计算了一次。这种事靠回归是发现不了的,靠画图一眼就能看出来。
如果你打算把这份数据用于正式发表,建议在论文或附录里至少交代以下信息:泰尔指数的计算公式、权重方案、价格口径、数据来源层级(地级市直接获取,还是由县级数据加总)、行政区划调整的处理方式。这五个维度写清楚,审稿人基本不会再揪着数据口径不放。
最后分享一个小技巧:处理 xlsx 面板数据时,我习惯先在 Excel 里用数据透视表快速验证“城市 × 年份”的完整性,再切换到 Stata 或 Python 做统计分析。Excel 的透视表在识别缺失年份和重复组合上,比写代码更直观,尤其是面对几百个城市时,几秒钟就能找到某一年哪些城市没有记录。用好了这个小工具,能比同事省出一半的清洗时间。