Stata 如何在x轴上绘制一个变量的百分位数,并根据y轴上的百分位数绘制另一个值的平均值?

Stata 如何在x轴上绘制一个变量的百分位数,并根据y轴上的百分位数绘制另一个值的平均值?,stata,collapse,Stata,Collapse,各位,一天中的好时光 在我看来,我有一个基本的问题,但在任何地方我都找不到快速解决问题的方法 我的最终目标是绘制一个这样的图:x轴上的收入分配百分位数和其他变量的平均值,比如年龄,根据y轴上的收入百分位数进行组织 在我看来,命令collapse应该能够做到这一点,但我找不到一种方法来指定任何地方的崩溃(按收入的百分位数) 我现在需要的是一行年龄和一行100%的收入值,它们匹配并代表同一个人,然后我可以按(我的新变量百分位)进行折叠,然后绘制 我很感激这可能是一个基本的问题,但我似乎找不到一个方法

各位,一天中的好时光

在我看来,我有一个基本的问题,但在任何地方我都找不到快速解决问题的方法

我的最终目标是绘制一个这样的图:x轴上的收入分配百分位数和其他变量的平均值,比如年龄,根据y轴上的收入百分位数进行组织

在我看来,命令collapse应该能够做到这一点,但我找不到一种方法来指定任何地方的崩溃(按收入的百分位数)

我现在需要的是一行年龄和一行100%的收入值,它们匹配并代表同一个人,然后我可以按(我的新变量百分位)进行折叠,然后绘制

我很感激这可能是一个基本的问题,但我似乎找不到一个方法来解决它


>非常感谢。

< P>你可以考虑在数据崩溃之前计算百分位数并将它们分组在每个百分位数范围内:

*Clear and Create Sample Data

clear *
set obs 10000
gen age = floor(uniform()*100)
gen inc = round((uniform()*100000),5)

* Create Percentiles, group by each 1 pctile range

sort inc
pctile P_inc = inc, nq(10000) genp(percent)

replace percent = ceil(percent)

* Now collapse data, Make desired plot

collapse (mean) age, by(percent)
或者,如果您想要与每个百分位关联的收入值,您可以尝试手动执行此操作:

*picking up after sort inc:

gen P = _n/100
replace P = ceil(P)

gen incPct = (inc[_n]+inc[_n+1])/2 if P[_n] < P[_n+1]
replace incPct = inc if _n == _N

collapse (mean) age (mean) incPct, by(P)
*分拣后提货公司:
gen P=\u n/100
替换P=ceil(P)
如果P[\n]

请注意,无论这两种方法如何,年龄都将在每个百分位“组”(0-1、1-2等)内的所有观察值中取平均值,因为每个百分位仅是较大数据集中的一个点。

谢谢,@ander2ed。第一个答案非常有用!第二部分,我不太明白,我必须弄清楚在gen P线中我的n除以什么,因为目前我的百分位数大约有14000个值。我会努力地盯着它,试着弄明白:)