回归百分位数

时间:2015-11-16 22:46:31

标签: regression stata

有没有人知道是否有更好的方法可以让前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)

1 个答案:

答案 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)

如果需要,可以在localpctile中存储结果,以便稍后引用它。

您甚至可以更进一步,并在您的文件开头定义百分位截止值:

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)