2023-07-10 18:15:26
今天,引荐一下面板数据熵权法的Stata代码。工具变量https://www.macrodatas.cn/马克数据网,【让数据整理不再重复,让专注的人更专注】-专业的计量经济学的实证数据共享平台,包括论文复刻、省市县面板数据、工具变量等!
*由群友@美丽的Aromas分享。
*自定义函数
cap program drop EWM
program define EWM
args var statue rn
var:待处理的变量,statue=±1分别表示正向指标和负向指标,rn:r年与n个观测值的乘积
quietly{
*===第一步:标准化
var'
scalar min=r(min)
scalar max=r(max)
g var'-min)/(max-min)
if
var'sd=1-`var'sd
}
*===第二步:指标归一化
?var'sds=`var'sd+0.00000001 ?//添加偏移量
egen var'sds)gen var'sds / `var'sds_sum
*===第三步:计算信息熵
var'sij=-1/ln(var'sdw*ln(
var's=sum(`var'sij)
*===第四步:计算信息熵的冗余度
var'g=1-`var's
*===第五步:清除多余变量 只保留var'ddrop var'sdw `var'sds_sum var'_s }
end
*主函数
*【1】求`var'_d
*调用EWM程序,依次输入三个参数var statue rn, 注:负向指标会提示文字*放入指标(除第5个为负向指标外,其他都是正向指标
EWM var1 1 270
EWM var2 1 270
EWM var3 1 270
EWM var4 1 270
EWM var5 -1 270
EWM var6 1 270
EWM var7 1 270
EWM var8 1 270
EWM var9 1 270
EWM var10 1 270
【2】差异系数归一化,求权重w
gen sum_d=var1_d+var2_d+var3_d+var4_d+var5_d+var6_d+var7_d+var8_d+var9_d+var10
forvalues i=1/10{
gen wi'_d/sum_d
}drop sum_d
*展示权重
*list w* in 1
*【3】最终变量测度
gen Y=var1_sdw1+var2_sdw2+var3_sdw3+var4_sdw4+var5_sdw5+var6_sdw6+var7_sdw7+var8_sdw8+var9_sdw9+var10_sdw10
drop _