
  今天,引荐一下面板数据熵权法的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 _
