简介:面向数字经济与产业经济研究的数据要素市场化水平测算资料包,覆盖2000-2024年完整区间,梳理地方数据交易平台、互联网普及率、软件业务销售收入三种主流测算路径,与徐晔等(2024)、周杰琦等(2023)、赵涛等(2020)、张辽等(2023)的研究方法相衔接。压缩包共13个文件、约9.1MB,以Excel测算表、参考文献PDF、数据来源HTML存档和使用说明TXT为主;Excel表中已整理地级市互联网普及率、中国地区数据要素化水平、数据交易平台DID等指标,PDF收录多篇相关期刊论文原文,HTML与TXT注明数据抓取来源和使用步骤。当前已有35人学习下载。无需再逐项寻找原始数据,即可用于论文复现、指标稳健性检验或教学演示,尤其适合研究数据要素市场化配置、企业数字化转型、城市经济韧性等课题的学者与分析师快速上手。
1. 数据要素市场化水平3种测算方法(2000-2024年):先想清楚要量化什么
把数据要素市场化水平量化为指数,不是学术自嗨。2000—2024年的长面板跨度大、口径杂,靠主观打分容易翻车,唯一能站得住的路线是用客观赋权法做合成。这篇拆解的三种测算方法——熵权法、改进CRITIC-TOPSIS、主成分分析(PCA)——能直接把区域层面的数据资源、流通交易、治理应用等指标压成一个可排序、可做回归的数值。适合正在写数字经济相关研究、政策评估报告,或者想给区域数据要素发展做体检的从业者。看懂这篇,你能少走很多弯路:指标怎么搭、权重怎么算、为什么有的年份分数连不起来、结果该怎么验证。
2. 把测算框架搭对:指标体系、面板结构与无量纲化
2.1 数据要素市场化水平从哪几个维度衡量
数据要素市场化水平不是单一指标能说清的。落到测算上,我一般拆成五个维度:数据资源供给、数据流通交易、数据融合应用、数据治理制度、数据产业培育。每个维度选 1~2 个可获取、可比、可量化的指标,组合成一个 8 列左右的指标矩阵。数据资源供给管“有没有”,流通交易管“流不流得动”,融合应用管“用没用起来”,治理制度管“规则全不全”,产业培育管“生态活不活”。
指标方向必须统一。下面这组指标全部为正向指标,数值越大代表市场化水平越高。实际拿数据时,如果遇到“数据安全事故数”这类负向指标,要么取倒数,要么在标准化时翻转方向,否则后面熵权法、PCA 的结果都会出乱子。
| 维度 | 典型指标(可按数据源替换) | 方向 |
|---|---|---|
| 数据资源供给 | 数据资源总量(EB)、数据中心机架数 | 正向 |
| 数据流通交易 | 数据交易平台数量(个)、数据产品挂牌数(万件) | 正向 |
| 数据融合应用 | 数字经济核心产业增加值占GDP比重(%) | 正向 |
| 数据治理制度 | 公共数据开放平台数量(个)、数据相关法规文件数(件) | 正向 |
| 数据产业培育 | 数据要素相关企业注册量(家)、数据领域专利申请数(件) | 正向 |
指标不要贪多。十几个强相关指标叠在一起,权重会被相关性稀释,结果看上去很精细,实际只是反复把同一个信息点算了好几遍。8~10 个覆盖五维度的指标,配客观赋权法,已经足够撑起一篇实证研究。指标选定后先做相关性热图,相关系数超过 0.9 的两个指标保留一个即可。
2.2 2000—2024年面板数据结构设计与缺失值思路
2000—2024 年是 25 年的长面板,常见结构是“地区 × 年份 × 指标”。假设研究 10 个地区,那么整理后的宽表应该有 250 行,每行是一个地区某一年的一组指标值。早期年份许多指标没有统计口径,直接用正式数据会缺一大片。常见做法是找代理变量回补:数据资源总量可以用互联网宽带接入端口、软件业务收入做替代,数据交易平台数量可以用信息化企业占比估算。代理变量的口径变化一定要在测算说明里写清楚,否则审阅人追问起来很难自洽。
缺失值处理我习惯分两步。第一步,对连续型指标按地区做线性插值;第二步,对插值后的列做方差检查,方差趋近于 0 的列说明插值制造了重复信息,直接剔除。要注意,2000 年前后的早期数据往往是“中间高、两头缺”,插值能补出趋势,但补不出突变。政策文件数量这类指标在 2015 年前普遍为 0,这不是缺失,是真实状态,不能拿插值强行填成平滑曲线。
面板数据的可比性是测算的前提。2000 年的 10 万元数字经济体量和 2024 年的 10 万元含义完全不同,所以做无量纲化时必须用全局的极值,而不是每年各算一套。先堆出全样本的极值,再统一映射,年份之间才能直接比。这节第 2.3 的代码会演示。
2.3 无量纲化:全局极值标准化是纵向可比的前提
熵权法和改进 CRITIC-TOPSIS 都要求指标非负且有界,最稳妥的是极值标准化。常见做法是全国所有地区、所有年份合并成一个样本池,用池子里的最大值和最小值做映射。这样 2000 年的低值不会被当年自己的极值“抬上去”,2024 年的高值也不会被压扁。
import pandas as pd import numpy as np rng = np.random.default_rng(42) regions = [f"R{i:02d}" for i in range(1, 11)] years = list(range(2000, 2025)) n = len(regions) * len(years) df = pd.DataFrame({ "region": [r for r in regions for _ in years], "year": years * len(regions), "data_volume": rng.uniform(50, 500, n), "platforms": rng.uniform(5, 80, n), "listed_products": rng.uniform(100, 5000, n), "digital_ratio": rng.uniform(5, 40, n), "open_platforms": rng.uniform(1, 80, n), "policy_count": rng.uniform(0, 60, n), "firm_entry": rng.uniform(200, 10000, n), "patents": rng.uniform(50, 3000, n), }) cols = ["data_volume", "platforms", "listed_products", "digital_ratio", "open_platforms", "policy_count", "firm_entry", "patents"] minv = df[cols].min() maxv = df[cols].max() span = maxv - minv span[span == 0] = 1 # 防止常数列除零 norm = (df[cols] - minv) / span # 若有负向指标,该列应改为 (maxv - df[cols]) / span逻辑说明:minv 和 maxv 取自全部 10 个地区、25 年所有样本,所以每年的极值标准化用的是同一个参照系。span 清零后再加回 1,是防止某个指标在某段年份全为同一数值时产生除零错误。最后得到的 norm 所有值都在 0~1 区间,且数值大小在时间维度上可横向比较。
参数说明:default_rng(42) 只是让模拟数据可复现,换成真实数据后删除即可;span[span == 0] = 1 是工程处理,如果某个指标全样本都只有一个常数,说明该指标没有区分度,最好在测算前剔除,而不是靠这行代码硬撑。正向指标用 (x - min) / (max - min),负向指标用 (max - x) / (max - min),两者混用前必须先统一方向。
3. 熵权法和改进CRITIC-TOPSIS:两套指标合成路线
3.1 熵权法逻辑与全局熵权为什么更稳
熵权法的思想很直观:某个指标在所有样本上的数值差异越大,它携带的区分信息就越多,权重就越高;如果所有地区某个指标都差不多,那它对“排序”没什么贡献,权重自然低。数据要素市场化水平这类复合指标,不同维度的指标量纲差异极大,熵权法不需要预设主观偏好,完全靠数据自身分布定权重,这是它成为测度类论文主力的原因。
实际操作中有一个容易踩的坑:很多人会把每一年的指标分别做熵权,得到 25 套权重。这样 2000 年的权重和 2024 年的权重完全不可比,因为每一年做极值标准化的参照系都不一样,算出来的熵值含义也不同。我处理 2000—2024 年长面板时,统一用全局熵权:把全部地区、全部年份作为样本池,一次算出每个指标的权重,再对每一年每一地区计算综合得分。这样得分高低反映的是该地区该年份在全球样本中的相对位置,时间维度上才连得起来。
全局熵权的代价是权重会被样本期内的大变化主导。比如 2020 年后数据交易平台数量爆发式增长,这个指标的熵值方差变大,权重就会抬升。这其实是信息量的真实体现,不是缺陷。关键要在报告中说明:权重反映的是“25 年样本期内的区分能力”,而不是“每一年各指标的相对重要性”。
3.2 用Python跑全局熵权法的完整代码
下面这段代码承接 2.3 节的 norm,直接计算全局熵权和综合得分。输入是已经正向化、极值标准化的全样本矩阵,输出是每个指标的权重和每个地区每年的综合得分。
def entropy_weight(norm_df, eps=1e-12): # 输入:全局标准化后的 N×M 矩阵 n_samples, m_cols = norm_df.shape # 每个样本占该指标总和的比重 p = norm_df / (norm_df.sum(axis=0).values + eps) # 熵值:k = 1 / ln(N) k = 1.0 / np.log(n_samples) log_p = np.log(p + eps) entropy = -k * (p * log_p).sum(axis=0) # 信息冗余度 = 1 - 熵 info = 1 - entropy # 归一化得到权重 w = info / info.sum() return w w_entropy = entropy_weight(norm) # 综合得分:加权求和,保留 region 和 year 便于后续分析 score_entropy = norm.dot(w_entropy) df["score_entropy"] = score_entropy print(pd.Series(w_entropy, index=cols).round(4))逻辑说明:p 计算的是归一化矩阵中每个单元格在该指标全部样本之和中的占比;eps=1e-12 是防止 log(0) 出现负无穷。entropy 的取值在 0~1 之间,越接近 1 说明该指标分布越均匀,区分力越差。权重 = (1 - 熵) / Σ(1 - 熵),体现“信息冗余度越大,权重越高”。
参数说明:n_samples 是样本行数,10 个地区 × 25 年 = 250。eps 只在 p 或 log_p 为 0 时发挥作用,对最终权重影响极小。这样做出的权重是全样本唯一的一组,任何年份的得分都基于同一套权重,纵向可比性由这一行保证。如果某个指标的熵接近 1,权重会趋近 0,这是熵权法的正常行为;如果出现权重小于 0.01 的指标,可以考虑直接剔除,避免综合得分被少数高权指标主导。
3.3 改进CRITIC-TOPSIS:考虑指标相关性的取值路径
熵权法只关心指标内部的离散程度,但不关心指标之间的信息重叠。两个高度相关的指标会各自分配到权重,等于同一信息被算了两次。改进 CRITIC-TOPSIS 补上了这一点:它用标准差衡量指标本身的区分度,再用“1 - 相关矩阵”衡量指标与其余指标的冲突性,区分度和冲突性相乘得到信息量,归一化后就是权重。改进之处在于把相关系数取绝对值后再做冲突性计算,避免负相关被误判为“信息重叠”。
TOPSIS 部分处理的是样本排序:在加权标准化矩阵上找到每个指标的正理想解和负理想解,计算每个地区年份到这两个解的欧氏距离,贴近度越高说明越接近理想状态。贴近度 = D− / (D+ + D−),取值在 0~1,天然适合指数化。
def critic_topsis(norm_df): # 指标标准差:区分度 std = norm_df.std(axis=0).values # 指标间Spearman秩相关系数的绝对值矩阵 corr = norm_df.corr(method="spearman").abs().values # 冲突性:该指标与其余指标的相异程度之和 conflict = (1 - corr).sum(axis=1) # 信息量 = 区分度 × 冲突性 info = std * conflict w = info / info.sum() # 加权标准化矩阵 v = norm_df.values * w # 正理想解和负理想解:这里所有指标都是正向 v_plus = v.max(axis=0) v_minus = v.min(axis=0) # 欧氏距离 d_plus = np.sqrt(((v - v_plus) ** 2).sum(axis=1)) d_minus = np.sqrt(((v - v_minus) ** 2).sum(axis=1)) # 贴近度 c = d_minus / (d_plus + d_minus) return w, c w_critic, score_critic = critic_topsis(norm) df["score_critic"] = score_critic逻辑说明:Spearman 秩相关考察的是指标排名之间的关系,对异常值比 Pearson 更稳健,适合早期年份数据质量不稳定的情况。conflict 越大说明指标与其余指标的相关性越弱,代表它能提供更多独有信息。加权标准化矩阵 v 是 norm 每列乘上对应权重,这是 TOPSIS 能配合客观权重做排序的关键一步。
参数说明:norm_df.corr(method="spearman") 计算的是列与列之间的秩相关,abs() 取绝对值后最多的是指标自身的相关数 1,所以 conflict 中至少包含一个 0,信息量不会完整归零。贴近度 c 是 250 行的一维数组,数值本身没有单位,适合做当年横向排序,但不同年份横向比较时需要再做定基指数化,见第 6 章。
3.4 两套方法怎么选
熵权法和改进 CRITIC-TOPSIS 的结果经常很接近,但权重分布差异不小。熵权法对“离散程度”敏感,指标方差大的占权重高;CRITIC 对“相关性结构”敏感,指标越独立权重越高。
| 对比点 | 熵权法 | 改进CRITIC-TOPSIS |
|---|---|---|
| 权重依据 | 指标离散度 | 离散度 + 相关冲突性 |
| 指标信息重叠 | 不处理 | 显式惩罚高相关指标 |
| 输出结果 | 加权综合得分 | 贴近度得分 |
| 年份可比性 | 全局熵权时可比 | 同一参照矩阵时可比 |
| 异常值敏感度 | 中等 | 秩相关后较稳健 |
做正式研究时,我通常把熵权法作为主结果,因为它简单、可解释、大多数读者熟悉;改进 CRITIC-TOPSIS 作为稳健性检验,如果两者排序基本一致,说明结果不是被某个方法的选择“硬做出来”的。如果两组得分的排序差异很大,先去查指标方向和数据口径,再去怀疑方法选择。方法之间互证,比单一方法反复调参更可信。
4. 第三种测算:用PCA做降维合成和数据验证
4.1 PCA测算思路与数据要素市场化水平合成的边界
PCA 的思路和熵权法完全不同。它不“分配权重”,而是把 8 个指标投影到新的正交主成分上,用少数几个主成分代表原指标的主要变异。数据要素市场化水平的指标之间普遍存在相关性,PCA 恰恰把这些重叠信息压缩成几个互相独立的成分。第一主成分往往表现为“综合水平因子”,载荷均匀为正,直接可以作为市场化水平的得分;后续主成分可能分别对应“流通活跃度”和“治理完善度”这类细分结构。
PCA 的适用边界需要说清楚:它要求指标间有较强的相关性,如果相关性太弱,压缩效率低,第一个主成分解释不了多少方差,合成后的指数就失去意义;它也要求指标方向统一,因此 PCA 的输入必须经过正向化处理,否则主成分会同时出现正负载荷,得分符号解释起来会非常别扭。
做 PCA 之前做个 Bartlett 球形检验和 KMO 检验是值得的。Bartlett 检验 p 值小于 0.05 说明相关矩阵不是单位阵;KMO 值大于 0.6 说明适合做因子分析。这一步在实证论文里几乎是审阅人必看的内容,不要跳过。
4.2 PCA的Python实现:从标准化到综合得分
和熵权法用极值标准化不同,PCA 要求 Z-score 标准化,否则量纲大的指标会主导主成分方向。先用 StandardScaler 做中心化和方差缩放,再喂给 PCA。主成分个数按特征值大于 1 的 Kaiser 准则选取,综合得分用每个主成分的方差贡献率对主成分得分加权。
from sklearn.preprocessing import StandardScaler from sklearn.decomposition import PCA # PCA 对量纲敏感,必须用 Z-score 标准化 scaler = StandardScaler() z = scaler.fit_transform(df[cols]) # 保留全部主成分,便于观察方差贡献 pca = PCA(n_components=None) scores_pca_full = pca.fit_transform(z) # 特征值和累计方差贡献率 eigenvalues = pca.explained_variance_ var_ratio = pca.explained_variance_ratio_ # Kaiser 准则:取特征值 > 1 的主成分 n_comp = int((eigenvalues > 1).sum()) # 综合得分 = 主成分得分 × 对应方差贡献率 加权 score_pca = scores_pca_full[:, :n_comp].dot(var_ratio[:n_comp]) df["score_pca"] = score_pca # 载荷矩阵:观察各指标在主成分上的方向 loadings = pca.components_.T * np.sqrt(eigenvalues)逻辑说明:fit_transform 完成标准化加主成分分解两步。特征值代表每个主成分能解释的总方差,特征值大于 1 意味着该成分至少比一个原始指标的信息量更大。综合得分用方差贡献率做加权,是为了把解释力更大的成分放得更重。loadings 是原始指标与主成分的相关系数,检查第一主成分载荷是否全部为正,是判断PCA合成合理性的关键。
参数说明:n_components=None 表示保留全部主成分,后续再按特征值截取,这样能同时输出完整方差贡献率表。var_ratio[:n_comp] 只对入选主成分归一化还是直接用原始比例加权,两种做法结论差别很大。我个人用原始比例加权,因为它保留了“未入选主成分丢弃的信息量”,得分分布更保守;如果想让综合指数更陡峭,可以先把入选成分贡献率归一化再加权,务必在说明里写清楚。
4.3 三套测算结果怎么交叉验证
三套方法都跑完后,不要急着挑一套好看的结果写进报告。先把三列得分放到一起,算两两 Spearman 秩相关系数。熵权法、CRITIC、PCA 的计算逻辑差异足够大,如果它们给出的地区排序高度一致,说明结果稳;不一致时往往能暴露数据问题。
from scipy.stats import spearmanr print("熵权 vs CRITIC:", spearmanr(df["score_entropy"], df["score_critic"]).correlation) print("熵权 vs PCA:", spearmanr(df["score_entropy"], df["score_pca"]).correlation) print("CRITIC vs PCA:", spearmanr(df["score_critic"], df["score_pca"]).correlation)经验上三组秩相关都在 0.7 以上,说明三套方法对指标分布结构的判断一致。低于 0.7 时,我的排查顺序是:先查是否有个别指标方向没翻正,再查极值标准化时是否混进了未插值的缺失值,最后检查 PCA 的载荷符号是否出现方向漂移。三套方法同时翻车一般是指标本身问题,只有一套方法翻车则是该方法对指标分布的固有敏感点,这个结论可以在报告里诚实写出来,反而增强可信度。
5. 数据要素测算的高频翻车点与排查清单
5.1 标准化后出现NaN或Inf
现象:运行熵权法时,权重输出全是 nan,报错信息可能指向 log 输入的负值或除零。数据量越大,越容易在早期年份某列全为 0 时触发。
原因:极值标准化时某指标的最大值和最小值相等,max - min 等于 0;或者标准化后出现 1 和 0 的极值,取 log(0) 产生负无穷,log_p 和 p 相乘后变成 NaN。数据要素类指标早期普遍缺失,比如数据交易平台数量在 2000 年很可能全部为 0,这就是除零的来源。
解决:标准化前先检查 span,凡小于一个极小阈值的列直接剔除或合并。若必须保留,在 span 上加一个极小值避免除零。代码参考 2.3 节的 span[span == 0] = 1,但这是兜底,不是修复。修复要做在指标设计层:早期全 0 的指标说明该指标在样本期内缺乏区分度,换代理变量比加常数更干净。
5.2 逐年熵权导致权重来回跳动
现象:2000 年某个指标权重 0.03,2010 年变成 0.2,2024 年又跌回 0.05。综合得分每年单独排序还行,但一个地区 25 年的趋势线波动剧烈,完全没法解释。
原因:每一年单独做极值标准化和熵权,参照系在不停变化。早期年份数据分布平缓,熵值接近 1,算出的权重被微小差异放大;后期制度密集出台,政策文件数量区分度上升,权重突然抬高。权重本身没有错,错在每一年用了独立的参照系,纵向不可比。
解决:严格采用全局熵权,把所有地区年份放进一个样本池计算唯一一组权重。如果担心全局权重抹平早期结构,可以报告两种结果:主结果用全局熵权,附录放逐年熵权,并明确说明附录结果不具备纵向可比性,只供同年横向参考。
5.3 熵权法出现极端权重
现象:某个指标权重超过 0.5,其余七个指标加起来不到 0.5。看起来依然科学,但综合得分几乎完全被单个指标决定,失去“复合指数”的意义。
原因:该指标在样本内的异常大值拉高了标准差,或者部分年份分布极端稀疏。数据要素相关企业注册量这类指标增长曲线陡峭,2015 年前后数量从几十跃升到几千,离散度天然碾压其它平稳指标,所以熵权法给了它超常权重。
解决:先对指标做对数变换压右偏,再进熵权法。比对数变换更保守的做法是给权重加工程截断,np.clip(w, 0.05, 0.3) 后重新归一化。截断会牺牲客观性,但能确保指数不被单指标绑架。截断后的权重必须和原始权重一起报告,让别人能复现你的处理路径。
5.4 PCA主成分符号不一致
现象:第一主成分载荷矩阵里,大部分指标是正数,唯独两三个指标是负的。综合得分高的地区,某些子维度反而排在前列,图形化显示后完全背离直觉。
原因:负向指标没有正向化,或者标准化后的方向不符合“水平越高数值越大”的统一预期。PCA 不关心指标的业务含义,只按方差方向提取成分,符号会被负向指标强行拉反。
解决:在 PCA 之前对所有指标做方向一致性检查。最稳的方法是在极值标准化阶段就把负向指标翻正,PCA 的输入和熵权法共用同一套正向化后的数据,再用 StandardScaler 做 Z-score。跑完 PCA 后,打印 loadings 第一列的符号,若负值超过两个,回到数据清洗阶段排查,而不是硬解释成分含义。
5.5 早期年份缺失值引发的序列断点
现象:2000—2005 年某些地区得分序列有个明显的“台阶式跳变”,2006 年突然抬升,与政策逻辑对不上。线性插值补过的地区,2015 年附近出现尖峰或凹陷。
原因:早期指标统计口径在 2006 年前后调整过,代理变量和数据源的覆盖范围变化导致同一条序列的前后半段没有可比性。插值补的是数值,补不了口径突变。
解决:测算前画出每年各指标的箱线图,看出明显断点的年份要做口径标记。我习惯把 2000—2024 年拆成两段做敏感性分析:前段用早期代理指标,后段用现行统计口径,两段分别测算,看排名是否稳定。如果排名在断点前后剧烈异动,大概率是口径问题,不是市场化水平真的大起大落。报告里写明断点位置,比隐瞒口径变化更稳妥。
6. 把测算结果用到论文和政策报告:定基指数与稳健性检验
三套方法算出的综合得分是绝对值,直接跨年份比较仍不够直观。我习惯先把得分转成定基指数:选择 2000 年作为基期,把每个地区当年的得分除以其 2000 年得分,再乘 100。这样得到的指数清晰表达“该地区市场化水平相对基期增长了多少倍”。2000 年得分本身为 0 的地区,需要先做平移处理,或者改用某省当年全样本均值为分母,两种做法都要在脚注写明。
定基指数之外,做个简单的三方法一致性表也很有用:把同一年度各地的排名分别按熵权法、改进 CRITIC-TOPSIS、PCA 生成三列排名,计算 Kendall W 协调系数。高于 0.8 的结果可以直接写在结论段,审阅人一眼就能看出你的结果不是方法敏感型的。协调系数低于 0.6 时,就别急着下结论,先回头检查 5.1 到 5.5 的验证流程。
我现在的习惯是:先用全局熵权做主结果,用 CRITIC-TOPSIS 复核排名,再用 PCA 识别指标冗余和潜在分组结构;如果三套方法的秩相关低于 0.7,先怀疑指标方向和口径切换,而不是动手调权重的上下界。这个顺序帮我在多个模拟项目X里避开了“方法很花哨、结论一推倒”的翻车结局。分清哪些差异来自方法、哪些来自数据质量,比找到一个最漂亮的指数数字重要得多。希望帮到你。
本文还有配套的精品资源,点击获取