在 Stata 中创建变量的最高和最低四分位数
to create highest & lowest quartiles of a variable in Stata
这是我用来根据 4 个四分位数划分一个 Winsorised 和居中变量(num_exp
,表示有经验的经理的数量)的 Stata 代码,然后生成其中的最高和最低四分位数虚拟变量:
egen quartile_num_exp = xtile(WC_num_exp), n(4)
gen high_quartile_numexp = 1 if quartile_num_exp==4
(1433 missing values generated);
gen low_quartile_num_exp = 1 if quartile_num_intlexp==1
(1062 missing values generated);
谢谢大家 - 这是link
https://dl.dropboxusercontent.com/u/64545449/No%20of%20expeienced%20managers.dta
我确实尝试了 Aspen Chen 和 Roberto 的建议 - Chen 创建高四分位数假人的方法给出了与我之前和 Roberto 相同的结果 - 对于相同的行,两个四分位数都显示为 1 - 这怎么可能?
这里忘了说了,确实有很多关系——原来的变量W_num_exp
的取值范围是0到7,均值为2.126618,我从[=32=的每次观察中减去] 得到 WC_num_exp.
tab high_quartile_numexp shows the same problem I originally had
le_numexp | Freq. Percent Cum.
------------+-----------------------------------
0 | 1,433 80.64 80.64
1 | 344 19.36 100.00
------------+-----------------------------------
Total | 1,777 100.00
此外,我检查了 egenmore
已经安装在我的 Stata 版本 13.1
我不明白的是为什么基于最高四分位数的虚拟变量没有低于它的 75% 的观测值(我总共有 1777 个观测值):根据我的理解,这个虚拟变量应该是 cut -off 点以上正好是总数的 25%。的观察结果应该是谎言(我们可以看到它只包含 19.3% 的观察结果)。
我在为 high_quartile low_quartile 虚拟变量编写正确的 Stata 代码时做错了什么吗?
考虑以下代码:
clear
set more off
sysuse auto
keep make mpg
*-----
// your way (kind of)
egen mpg4 = xtile(mpg), nq(4)
gen lowq = mpg4 == 1
gen highq = mpg4 == 4
*-----
// what you want
summarize mpg, detail
gen lowq2 = mpg < r(p25)
gen highq2 = mpg < r(p75)
*-----
summarize high* low*
list
现在查看列表以查看发生了什么。
参见help stored results
。
提供的数据集回答了这个问题。考虑表格:
. tab W_num_exp
num_execs_i |
ntl_exp, |
Winsorized |
fraction |
.01 | Freq. Percent Cum.
------------+-----------------------------------
0 | 297 16.71 16.71
1 | 418 23.52 40.24
2 | 436 24.54 64.77
3 | 282 15.87 80.64
4 | 171 9.62 90.26
5 | 109 6.13 96.40
6 | 34 1.91 98.31
7 | 30 1.69 100.00
------------+-----------------------------------
Total | 1,777 100.00
当且仅当存在累积百分比为 25、50、75 的值时,才能在 4 个基于四分位的 bin 中的每一个中提供完全相等的数字。不存在这样的值。您必须使用近似值。近似值可能很糟糕,但唯一的选择是将具有相同值的观察值任意分配给不同的 bin 以平衡频率,这在统计上是站不住脚的。
(对于 4 个 bin 等,观察的数量需要是 4 的倍数,对于完全相等的频率也是一个复杂问题,这对小数据集来说很难,但这不是这里的主要问题。)
这是我用来根据 4 个四分位数划分一个 Winsorised 和居中变量(num_exp
,表示有经验的经理的数量)的 Stata 代码,然后生成其中的最高和最低四分位数虚拟变量:
egen quartile_num_exp = xtile(WC_num_exp), n(4)
gen high_quartile_numexp = 1 if quartile_num_exp==4
(1433 missing values generated);
gen low_quartile_num_exp = 1 if quartile_num_intlexp==1
(1062 missing values generated);
谢谢大家 - 这是link
https://dl.dropboxusercontent.com/u/64545449/No%20of%20expeienced%20managers.dta
我确实尝试了 Aspen Chen 和 Roberto 的建议 - Chen 创建高四分位数假人的方法给出了与我之前和 Roberto 相同的结果 - 对于相同的行,两个四分位数都显示为 1 - 这怎么可能?
这里忘了说了,确实有很多关系——原来的变量W_num_exp
的取值范围是0到7,均值为2.126618,我从[=32=的每次观察中减去] 得到 WC_num_exp.
tab high_quartile_numexp shows the same problem I originally had
le_numexp | Freq. Percent Cum.
------------+-----------------------------------
0 | 1,433 80.64 80.64
1 | 344 19.36 100.00
------------+-----------------------------------
Total | 1,777 100.00
此外,我检查了 egenmore
已经安装在我的 Stata 版本 13.1
我不明白的是为什么基于最高四分位数的虚拟变量没有低于它的 75% 的观测值(我总共有 1777 个观测值):根据我的理解,这个虚拟变量应该是 cut -off 点以上正好是总数的 25%。的观察结果应该是谎言(我们可以看到它只包含 19.3% 的观察结果)。
我在为 high_quartile low_quartile 虚拟变量编写正确的 Stata 代码时做错了什么吗?
考虑以下代码:
clear
set more off
sysuse auto
keep make mpg
*-----
// your way (kind of)
egen mpg4 = xtile(mpg), nq(4)
gen lowq = mpg4 == 1
gen highq = mpg4 == 4
*-----
// what you want
summarize mpg, detail
gen lowq2 = mpg < r(p25)
gen highq2 = mpg < r(p75)
*-----
summarize high* low*
list
现在查看列表以查看发生了什么。
参见help stored results
。
提供的数据集回答了这个问题。考虑表格:
. tab W_num_exp
num_execs_i |
ntl_exp, |
Winsorized |
fraction |
.01 | Freq. Percent Cum.
------------+-----------------------------------
0 | 297 16.71 16.71
1 | 418 23.52 40.24
2 | 436 24.54 64.77
3 | 282 15.87 80.64
4 | 171 9.62 90.26
5 | 109 6.13 96.40
6 | 34 1.91 98.31
7 | 30 1.69 100.00
------------+-----------------------------------
Total | 1,777 100.00
当且仅当存在累积百分比为 25、50、75 的值时,才能在 4 个基于四分位的 bin 中的每一个中提供完全相等的数字。不存在这样的值。您必须使用近似值。近似值可能很糟糕,但唯一的选择是将具有相同值的观察值任意分配给不同的 bin 以平衡频率,这在统计上是站不住脚的。
(对于 4 个 bin 等,观察的数量需要是 4 的倍数,对于完全相等的频率也是一个复杂问题,这对小数据集来说很难,但这不是这里的主要问题。)