简介
shapley2是一款在回归命令后估计shapley值的Stata社区命令。该命令采用Shorrocks-Shapley分解法对普通最小二乘法(OLS)回归中的R平方等估计统计量进行可加性分解,以此量化各回归变量的相对贡献度。该命令属于后估计命令范畴,需在完成模型估计后立即执行。
安装
ssc install shapley2
演示
webuse auto,clear //使用系统数据 reg price mpg headroom trunk estimates store reg1 shapley2, stat(r2) estimates restore reg1 //重新激活回归结果 shapley2, stat(r2) group(mpg, headroom trunk) //分组的夏普利分解 ***有序logit回归 ologit rep78 mpg headroom trunk estimates store reg2 shapley2, stat(r2_p) estimates restore reg2 //重新激活回归结果 shapley2, stat(r2_p) group(mpg, headroom trunk) //分组的夏普利分解
不足
模型适用性边界
经实证验证,本程序在普通最小二乘法(OLS)、Probit、Logit及有序Logit模型框架下具有稳定性能。在扩展应用场景时需注意:该算法仅适用于回归因子与参数一一对应的模型架构(如标准线性/非线性回归模型)。对于多重参数模型(如多项Logit模型mlogit),其理论适用性尚未确立且程序将终止执行。此限制源于分组变量在不同类别间的参数差异导致边际贡献无法直接加总。
因子变量处理机制
当前版本暂不支持因子变量语法(fvvarlist),包括常用的i.var虚拟变量生成方式。该限制主要源于因子变量自动扩展机制与Shapley值权重计算的兼容性问题。对于因变量的前导/滞后算子(F.、L.),虽已实现技术突破,但建议研究者优先通过手动创建时序变量(如gen lag_y = L.y)确保计算精度。此方法已在面板数据分析中得到验证,可规避自动扩展可能引发的变量识别错误。
区别
shapley vs. shapley2
1. 计算效率维度
- Shapley2算法在保持结果一致性的前提下(可能存在微小数值差异),显著提升了计算效率。尽管如此,当模型右侧变量超过20个时,计算复杂度仍将显著增加。该特性已在健康经济学领域关于医疗支出决定因素的蒙特卡洛模拟中得到验证。
2. 分组分解功能
- Shapley2创新性地引入变量组分解机制,允许研究者将多个理论维度相关的解释变量整合为变量组(如将教育年限、学位等级合并为"教育资本"复合变量),进而计算变量组的联合边际贡献。此方法不仅增强了解释效度,还可通过降低维度加速计算进程。
3. 后估计兼容性
- Shapley2作为专业化后置命令程序,可直接从OLS、Probit等基础估计结果中自动提取模型设定参数。此特性已广泛应用于卫生经济学研究中EQ-5D效用值的方差分解,以及劳动经济学中人力资本要素的贡献度测度。
特别需要指出的是,所有四类分解指标均以矩阵形式储存于估计结果中(通过ereturn list命令可查看完整存储值)。该设计便于研究者结合estout等命令生成符合国际期刊规范的LaTeX格式结果表格,具体应用范例可参见《计量经济学报》最新刊载的医疗资源分配效率研究论文。
联系
作者:Florian Wendelspiess Chavez Juarez
邮箱:florian@chavezjuarez.com
支持:https://github.com/SultanOrazbayev/shapley2
其他
相关Stata社区命令包括:shapley, rego, shapleyx, adecompt, domin, domme