全部版块 我的主页
论坛 计量经济学与统计论坛 五区 计量经济学与统计软件 Stata专版
1734 4
2020-04-19
采用附件里的这个文件的方法对管理层权力进行熵权法处理,但是处理完之后发现。每次运行代码之后所得到的结果都会发生变化。请问这是什么原因呀?在我的代码里好像也没用到什么随机的东西,最多也就是有几个循环。为什么会发生变化呢?
drop BOARD_NUM

bysort YEAR: gen N_Y = _n
bysort Stkcd:gen N_Stk = _n
egen NY = count(N_Y) if N_Y == 1 // 11年
sort NY
egen NS = count(N_Stk) if N_Stk == 1 // 3089个公司代码
sort NS
drop NY NS
foreach x of varlist Structure_power Hmanage_holding STK_SEP MANAGERS_N tenure DEGREE_CEO BOARD internal_rate {
egen max_`x' = max(`x')
gen Norm_`x' = `x' / max_`x'
drop max_`x'
egen sum_Norm_`x' = sum(Norm_`x')
gen y_`x' = Norm_`x' / sum_Norm_`x'  
//  保留
drop Norm_`x' sum_Norm_`x'
gen T_`x' = sum( y_`x' * ln( y_`x'))
gen e_`x' = -ln(11*3089) * T_`x'
gen g_`x' = 1 -e_`x'
drop e_`x' T_`x'
}

egen sum_g = rowtotal(g_tenure g_internal_rate g_Structure_power g_STK_SEP g_MANAGERS_N g_Hmanage_holding g_DEGREE_CEO g_BOARD)
foreach x of varlist Structure_power Hmanage_holding STK_SEP MANAGERS_N tenure DEGREE_CEO BOARD internal_rate {
gen w_`x' = g_`x' / sum_g
}
drop sum_g
foreach x of varlist Structure_power Hmanage_holding STK_SEP MANAGERS_N tenure DEGREE_CEO BOARD internal_rate {
drop g_`x'
}
foreach x of varlist Structure_power Hmanage_holding STK_SEP MANAGERS_N tenure DEGREE_CEO BOARD internal_rate {
gen Score_`x' = y_`x' * w_`x'
}
egen Score = rowtotal(Score_Structure_power Score_Hmanage_holding Score_STK_SEP Score_MANAGERS_N ///
Score_tenure Score_DEGREE_CEO Score_BOARD Score_internal_rate)
gen Score1 = Score * 1000
drop Score
rename Score1 Score
keep Stkcd YEAR Score
sort Stkcd YEAR
save $path/熵权法管理层权力.dta,replace

附件列表
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

全部回复
2020-4-19 16:46:51
你的前两行数据就会出现不稳定的结果
复制代码
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

2020-4-19 17:18:19
你那里看到是不同的了
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

2020-4-21 18:39:11
ritaing 发表于 2020-4-19 16:46
你的前两行数据就会出现不稳定的结果

我又根据文献修改了一下我的代码。但是有些步骤依然需要用bysort生成变量。。是不是不能用bysort去生成啊?比如下面这个循环,是不是问题就出在bysort上呢,您提到的那两个只是我用来看数据特征的其实可有可无,我删除之后根据文献又修改了一下代码依然会变?以及您这样在页面中打出的代码是怎么实现的呀



foreach x of varlist Structure_power Hmanage_holding STK_SEP MANAGERS_N tenure DEGREE_CEO BOARD internal_rate {


bysort YEAR:egen max_`x' = max(`x')


bysort YEAR:egen min_`x' = min(`x')


gen Norm_`x' = (`x' - min_`x')/ ( max_`x' - min_`x')


drop max_`x' min_`x'


bysort YEAR:egen sum_Norm_`x' = sum(Norm_`x')


gen y_`x' = Norm_`x' / sum_Norm_`x'  
//  保留


drop Norm_`x' sum_Norm_`x'


bysort YEAR:gen T_`x' = sum( y_`x' * ln( y_`x'))


bysort YEAR:gen e_`x' = -ln(_N) * T_`x'


gen g_`x' = 1 -e_`x'


drop e_`x' T_`x'
}


二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

2020-4-21 18:39:48
蓝色 发表于 2020-4-19 17:18
你那里看到是不同的了
我同一个代码执行了好几遍 然后就看了第一行的数据 同一个年份同一个公司。生成的值就不停的在变。。
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

栏目导航
热门文章
推荐文章

说点什么

分享

扫码加好友,拉您进群
各岗位、行业、专业交流群