首页 > 其他分享 >stata 代码实现熵值法计算 含常见问题解答

stata 代码实现熵值法计算 含常见问题解答

时间:2024-07-26 23:25:57浏览次数:17  
标签:值法 egen global 问题解答 score foreach stata standard gen

适用:面板数据均可

stata版本:无要求

例如,使用了一个10年的省级面板数据,含15个指标,现在来计算各地区的熵值法得分。其中,x1 x2 x3 x4 x6 x7 x8 x9 x11 x12 x13 x14 x15是正向指标;而x5 x10是负向指标。

1.定义面板,定义指标的正负。

tsset id year

global xlist1 "x1 x2 x3 x4 x6 x7 x8 x9 x11 x12 x13 x14 x15"

global xlist2 "x5 x10"

2.标准化

①正向指标

foreach x of global xlist1{
egen min`x'=min (`x')
egen max`x'=max (`x')
gen standard`x'=(`x'-min`x')/(max`x'-min`x')
}

②负向指标

foreach x of global xlist2{
egen min`x'=min (`x')
egen max`x'=max (`x')
gen standard`x'=(max`x'-`x')/(max`x'-min`x')
}

3.计算第i年变量j的权重

①正向指标

foreach x of global xlist1 {
	egen sum`x' =total(standard`x')
	gen w1`x'=standard`x' /sum`x'
}

②负向指标

foreach x of global xlist2 {
	egen sum`x' =total(standard`x')
	gen w1`x'=standard`x' /sum`x'
}

4.信息熵与冗余度

①正向指标

by id, sort: egen m1 =count (year)
foreach x of global xlist1{
	**(归一化处理)
	gen w`x'=w1`x'+0.0000000001  
	egen e1`x'=total (w`x' * log(w`x'))
	gen d`x'=1+1/log(m1)*e1`x'
}

②负向指标

by id, sort: egen m2 =count (year)
foreach x of global xlist2{
	gen w`x'=w1`x'+0.0000000001
	egen e1`x'=total (w`x' * log(w`x'))
	gen d`x'=1+1/log(m2)*e1`x'
}

5.计算权重(需要改的地方)

gen sumd1 =dx1+dx2+dx3+dx4+dx5+dx6+dx7+dx8+dx9+dx10+dx11+dx12+dx13+dx14+dx15

foreach x of global xlist1{
	gen w2`x'=d`x' /sumd1
}
foreach x of global xlist2{
	gen w2`x'=d`x' /sumd1
}

需要更改的地方就是第一排,改成自己的指标。

6.计算总指数(需要改的地方)

foreach x of global xlist1{
    gen score_`x'=standard`x' * w2`x'
}
foreach x of global xlist2{
    gen score_`x'=standard`x' * w2`x'
}

gen score=score_x1+score_x2+score_x3+score_x4+score_x5+score_x6+score_x7+score_x8+score_x9+score_x10+score_x11+score_x12+score_x13+score_x14+score_x15

需要更改的地方就是最后一排,改成自己的指标即可。

常见问题:

①运行完毕后,最后一列score即是熵值法最终得分。

②很多小伙伴关心的各个指标权重, w2`x'列就是权重。比如,w2x6就是x6这个指标的权重。

③该熵值严格意义来讲是截面熵值法,但也能用于面板。大家能找到的面板熵值法代码不建议用,面板熵值会让每个指标在不用地区不同年份都有不同的权重赋值,这样往往会导致结果趋势不理想。

 

标签:值法,egen,global,问题解答,score,foreach,stata,standard,gen
From: https://blog.csdn.net/qq_39760686/article/details/140726598

相关文章

  • stata 空间计量模型实证全过程
    ***描述性统计sumyx1x2x3x4logout,save(Descriptive)wordreplace:sumyx1x2x3x4//***输出描述性统计结果,点击Descriptive.rtf,即可出现word版本的描述性统计表***空间相关性检验(莫兰检验)clearcd"C:\ProgramFiles(x86)\Stata14\ado"//定义路径,自己建立......
  • 【数学建模】——多领域资源优化中的创新应用-六大经典问题解答
    目录题目1:截取条材题目 1.1问题描述1.2数学模型1.3求解1.4解答题目2:商店进货销售计划题目2.1问题描述2.2数学模型2.3求解2.4解答题目3:货船装载问题题目3.1问题重述 3.2数学模型3.3求解3.4解答题目4:城市消防站选址问题 题目4.1问题重述4.2......
  • 线性插值法的MATLAB实现——对股票非交易日缺失数据进行插值
    1.为什么要处理非交易日股票缺失数据  由于在计算无风险利率时,常常使用国债利率,但国债利率按360天计息,因此股票收益率需要和债券计息相匹配,所以需要对股票缺失数据进行插值。2.为什么使用线性插值法  当数据点之间距离很短时,就可以近似认为两点间可以用直线连接。类......
  • NSIS 之 NsDialogs 常见问题解答
    如何启用/禁用控件使用标准NSIS EnableWindow 命令。NSDialogs允许您弹出通过 ${NSD_Create*} 创建的控件的 hwnd (句柄)。EnableWindow 将 hwnd 作为其参数之一。通过它,您可以轻松启用/禁用控件。  !include"nsDialogs.nsh"!include"winmessages.nsh"!incl......
  • Kithara常见问题解答
    目录通用问题我的内核驱动程序已经签名了吗?是否可以在打开驱动程序时防止显示介绍窗口?Windows7仍然支持吗?错误0x10142422(`KSERROR_CANNOT_START_KERNEL`)在`KS_openDriver`时出现?错误10145241(KSERROR_CANNOT_START_KERNEL)在KS_openDriver时出现?可以在C#应用程......
  • 似不相关回归模型及 Stata 具体操作步骤
    目录一、引言二、似不相关回归模型原理三、数据四、Stata操作步骤五、结果解读六、注意事项代码附录一、引言似不相关回归(SeeminglyUnrelatedRegression,SUR)模型在处理多个相关方程的回归分析中具有重要作用。它能够更有效地利用方程之间的相关性,从而提供更精......
  • A股羊群效应CSSD CSAD数据与Stata代码数据(2000-2023)
    数据来源参考马丽老师(2016)的做法,股价数据来源于东方财富网,采用上证180指数及构成上证180指数样本股日收盘价数据作为样本。上证180指数自2002年7月1日起正式发布,其样本股是在所有 A 股股票中抽取最具市场代表性的180种样本股票,市值占总市值的比重很大,能够反映上海证券市场的......
  • 【Stata双重差分模型】双重差分DID的具体操作步骤
    目录一、简介二、数据准备数据收集:数据清洗:变量定义:三、模型构建四、实证分析描述性统计:平行趋势检验:双重差分估计:安慰剂检验:异质性分析:五、结果解读与讨论六、结论与展望七、DIDI扩展内容八、附录一、简介双重差分法(DID)是一种经济学中常用的计量方法,用于......
  • 前端二进制取值法之权限判断
    定义的是一个工具类,类名为CommonUtility,里面有一个名为isConfigurable的静态方法。该方法有两个参数,字段field和掩码writeMask,它们都是数字。此外,代码段还定义了一个名为WriteMask的常量对象,它映射了一些特定字段和它们在二进制层面上对应的值。isConfigurable函数通过位......
  • 会前会后系统Q&A:董事会管理工具相关问题解答
    不同企业在购买董事会管理工具时,都会带有不同的功能需求,希望能够借此提升本企业的董事会管理效率和质量。作为垂直领域的专业SaaS工具,会前会后针对董事会的工作流程研发,符合董事会成员的使用系统,在董事履职、董事会管理中提供颇多助力。下面是关于会前会后系统董事会管理工具......