通过在 Stata 中将变量除以 IQR 创建变量
Create a variable by dividing a variable by IQR in Stata
如何通过将变量除以 IQR 来创建变量?我已经做了很长一段时间如下。
示例数据和代码如下:
use http://www.ats.ucla.edu/stat/stata/notes/hsb2, clear
foreach var of varlist read-socst {
egen `var'75 = pctile(`var'), p(75)
egen `var'25 = pctile(`var'), p(25)
gen `var'q =`var'75 - `var'25
drop `var'75 `var'25
}
gen readI = read/readq
gen sciI = science/scienceq
最简单的方法就是直接使用summarize
结果:
sysuse auto, clear
quietly foreach v of var price-foreign {
su `v', detail
gen `v'q = `v' / (r(p75) - r(p25))
}
如果 egen
路线意味着为每个原始变量创建新变量,只是为了将四分位数或 IQR 保持为重复常量,那就太过分了。但是当您想按组执行此操作时,egen
就派上用场了:
bysort foreign: egen mpg_upq = pctile(mpg), p(75)
by foreign: egen mpg_loq = pctile(mpg), p(25)
gen mpg_Q = mpg / (mpg_upq - mpg_loq)
请注意,IQR 可以为 0,对于指示变量通常为 0。
如何通过将变量除以 IQR 来创建变量?我已经做了很长一段时间如下。
示例数据和代码如下:
use http://www.ats.ucla.edu/stat/stata/notes/hsb2, clear
foreach var of varlist read-socst {
egen `var'75 = pctile(`var'), p(75)
egen `var'25 = pctile(`var'), p(25)
gen `var'q =`var'75 - `var'25
drop `var'75 `var'25
}
gen readI = read/readq
gen sciI = science/scienceq
最简单的方法就是直接使用summarize
结果:
sysuse auto, clear
quietly foreach v of var price-foreign {
su `v', detail
gen `v'q = `v' / (r(p75) - r(p25))
}
如果 egen
路线意味着为每个原始变量创建新变量,只是为了将四分位数或 IQR 保持为重复常量,那就太过分了。但是当您想按组执行此操作时,egen
就派上用场了:
bysort foreign: egen mpg_upq = pctile(mpg), p(75)
by foreign: egen mpg_loq = pctile(mpg), p(25)
gen mpg_Q = mpg / (mpg_upq - mpg_loq)
请注意,IQR 可以为 0,对于指示变量通常为 0。