通过将变量除以Stata中的IQR来创建变量

通过将变量除以Stata中的IQR来创建变量,stata,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

如何通过将变量除以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

最简单的方法就是直接使用
总结
结果:

sysuse auto, clear

quietly foreach v of var price-foreign { 
    su `v', detail 
    gen `v'q = `v' / (r(p75) - r(p25)) 
} 
如果这意味着为每个原始变量创建新变量,只是为了将四分位数或IQR保持为重复常量,那么egen
路线就太过了。但是,当您希望按组执行此操作时,
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,对于指标变量,IQR通常为0