在Stata中,我希望能夠根據特定變量將觀測值放入桶中,或等價地將觀測代碼編碼爲屬於某個分位數。我四處尋找可以完成這項任務的現有代碼,但並未完全找到我想要的內容。我寫了下面簡單費周折:代碼觀測屬於Stata中的分位數
program toquantiles
version 13
syntax varname [, n(integer 4)]
quietly{
local interval = 100/`n'
local binVarName = "`varlist'_quantile"
gen `binVarName' = `n'
local upper = `n'-1
forvalues i=1/`upper'{
local y = `i'*`interval'
//Abuse the egen cmd to calculate the yth percentile.
tempvar x
egen `x' = pctile(`varlist'), p(`y')
//Label this observation as belonging to the ith bin if the value of the
//var in question is greater than x.
replace `binVarName' = `n'-`i' if `varlist' > `x'
drop `x'
}
}
end
的輸出是每個觀察有一個新的變量,即基於其中它適合位數編碼爲1,2,3等varname_quantile。我的代碼看起來像是一個非常天真的方法來解決這個問題。
有沒有什麼內置的功能,做我以上做的?如果沒有,這個ado會有什麼改進來加速執行嗎?目前,它運行速度很慢。 (慢慢地,所有100個變量的總和比計算1個變量的五分位數要快得多。)非常感謝。
您是否檢查過'help xtile'? – 2014-09-24 21:14:40