有没有人知道是否有更好的方法可以让前25%最富有的女性退步?我的代码首先找到25%最富有女性的收入截止值,然后对回归中if
子句中的数字进行硬编码。是否可以在if
子句中编码百分位数,这样如果我更改数据集,则不必检查和调整硬编码部分?
这是我的代码。
/*
Predict medical expenditures for the 25 % richest females
with and without supplementary expenditures
*/
centile(income) if female == 1, centile(25,75)
regress ltotexp suppins phylim actlim totchr age female income if female == 1 & income > 24, vce(robust)
答案 0 :(得分:1)
Stata将其许多命令的结果存储在r()
(和e()
)中。请参阅help r
和[U] 18.8 Accessing results calculated by other programs,并注意许多命令帮助文件底部的部分,说明r()
中存储的结果。例如,在centile
的情况下,help centile
表示:
centile stores the following in r(): Scalars r(N) number of observations r(n_cent) number of centiles requested r(c_#) value of # centile r(lb_#) #-requested centile lower confidence bound r(ub_#) #-requested centile upper confidence bound
所以一个选项是(使用系统数据集):
sysuse auto , clear
// using centile
centile price if foreign , centile(25 75)
local pctile = r(c_2)
regress mpg weight if foreign & price > `pctile' , vce(robust)
但是,更明确的选择是从summarize
:
sysuse auto , clear
// using summarize
summarize price if foreign , detail
local pctile = r(p75)
regress mpg weight if foreign & price > `pctile' , vce(robust)
如果需要,可以在local
宏pctile
中存储结果,以便稍后引用它。
您甚至可以更进一步,并在您的文件开头定义百分位截止值:
local pctilecutoff = 75
sysuse auto , clear
// using summarize
summarize price if foreign , detail
local pctile = r(p`pctilecutoff')
regress mpg weight if foreign & price > `pctile' , vce(robust)