用十进制创建两组之间差距的箱形图

问题描述 投票:1回答:1

我和Stata一起工作,我有两个不同组的数学成绩:AB

我想看看每个十分位数中两组之间存在的差距。另外我想为每个十分位做一个这个间隙的盒子图(我想要有10盒子图,每个十分位一个显示组成绩之间的差距)。

我最初做的是使用xtile为两组计算十分位数:

xtile decileA= mat if group==1, nq(10)

xtile decileB= mat if group==0, nq(10)

但是,AB组没有相同数量的观测值,也没有相同的分布。我想到计算每个十分位数和组的分位数,并减去它们以获得每个四分位数的每个十分位数的差异以创建箱线图。但我不知道如何继续创建图表,并且鉴于我在每个组十进制中有不同数量的观察,我不知道这样做是否正确。

如果我尝试使用pctile命令并计算每个十分位数的差异,我会丢失每个十分位数内的数据的所有差异。我只得到中位数差异,而不是我想要的所有分位数。

例:

pctile decileA= mat if group==1, nq(10)

pctile decileB= mat if group==0, nq(10)

gen qdiff= decileA- decileB if _n<10

gen qtau=_n/10 if _n<10 

graph box qdiff, over(tau)

我想知道是否有办法做我想要的图表?

交叉张贴在Statalist

stata boxplot
1个回答
1
投票

肯定有一种方法可以通过一些努力来实现你想要的东西,但是如果目标是在每个十分位数的两个组之间进行比较,并且有一些可变性的概念,你可以通过同时的分位数回归和它产生的SE:

sysuse auto, clear

sqreg price i.foreign, quantile(.1 .2 .3 .4 .5 .6 .7 .8 .9)

margins, dydx(foreign) ///
predict(outcome(q10))  ///
predict(outcome(q20))  ///
predict(outcome(q30))  ///
predict(outcome(q40))  ///
predict(outcome(q50))  ///
predict(outcome(q60))  ///
predict(outcome(q70))  ///
predict(outcome(q80))  ///
predict(outcome(q90))  ///
post

marginsplot, yline(0) xlab(, grid) ylab(#10, grid angle(90))

这会产生一个图表,显示外国来源与较高十分位数的较高价格相关联,但最高十分位数除外,但鉴于CI重叠多少,这些差异在这里可能不显着:

enter image description here

你甚至可以进行正式的假设检验,效果如下:

. test _b[1.foreign:9._predict] =  _b[1.foreign:8._predict]

 ( 1)  - [1.foreign]8._predict + [1.foreign]9._predict = 0

           chi2(  1) =    3.72
         Prob > chi2 =    0.0537

有74辆汽车,我们不能拒绝对80和90百分位数的影响是相同的,即使点估计具有相反的符号但相似的幅度。

© www.soinside.com 2019 - 2024. All rights reserved.