楼主: Joker92716
1732 4

[编程问题求助] 为什么我的代码得出的结果每次运行都会发生变化?谢谢! [推广有奖]

  • 0关注
  • 0粉丝

大专生

11%

还不是VIP/贵宾

-

威望
0
论坛币
6 个
通用积分
0.0600
学术水平
0 点
热心指数
0 点
信用等级
0 点
经验
89 点
帖子
6
精华
0
在线时间
77 小时
注册时间
2019-11-12
最后登录
2021-4-25

楼主
Joker92716 学生认证  发表于 2020-4-19 14:12:00 |AI写论文

+2 论坛币
k人 参与回答

经管之家送您一份

应届毕业生专属福利!

求职就业群
赵安豆老师微信:zhaoandou666

经管之家联合CDA

送您一个全额奖学金名额~ !

感谢您参与论坛问题回答

经管之家送您两个论坛币!

+2 论坛币
采用附件里的这个文件的方法对管理层权力进行熵权法处理,但是处理完之后发现。每次运行代码之后所得到的结果都会发生变化。请问这是什么原因呀?在我的代码里好像也没用到什么随机的东西,最多也就是有几个循环。为什么会发生变化呢?
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

二维码

扫码加我 拉你入群

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

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


沙发
ritaing 发表于 2020-4-19 16:46:51
你的前两行数据就会出现不稳定的结果
  1. bysort YEAR: gen N_Y = _n  //结果会是随机的
  2. bysort Stkcd:gen N_Stk = _n //同上
复制代码

藤椅
蓝色 发表于 2020-4-19 17:18:19
你那里看到是不同的了

板凳
Joker92716 学生认证  发表于 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'
}


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

您需要登录后才可以回帖 登录 | 我要注册

本版微信群
加好友,备注jltj
拉您入交流群
GMT+8, 2026-2-8 17:19