按十分位数创建两组之间差距的箱线图
Creating box plots of the gap between two groups by deciles
我使用 Stata,我有两个不同组的数学成绩:A
和 B
。
我想看看每个十分位数中两组之间存在的差距。此外,我想为每个十分位数绘制一个箱线图(我想要 10
个箱线图,每个十分位数一个,显示组成绩之间的差距)。
我首先做的是使用 xtile
计算两个组的十分位数:
xtile decileA= mat if group==1, nq(10)
xtile decileB= mat if group==0, nq(10)
但是,A
组和 B
组的观测值数量和分布都不相同。我想计算每个十分位数和组的分位数,然后减去它们以获得每个四分位数的每个十分位数的差异,以创建箱线图。但是我不知道之后如何继续创建图表,并且鉴于我在每组十分位数中有不同数量的观察,我不知道这样做是否正确。
如果我尝试使用 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。
当然有一种方法可以通过一些努力来完成你想要的,但如果目标是在每个十分位数的两组之间进行比较,并带有一些可变性的概念,你可以很容易地从同步分位数回归及其产生的 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))
这产生了一个图表,显示外国来源与更高的十分位数的更大价格相关联,最高十分位数除外,尽管 none 考虑到 CI 的重叠程度,这里的差异可能很重要:
您甚至可以像这样进行正式的假设检验,证明效果相等:
. 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 个百分位数的影响是相同的,即使点估计具有相反的符号但大小相似。
我使用 Stata,我有两个不同组的数学成绩:A
和 B
。
我想看看每个十分位数中两组之间存在的差距。此外,我想为每个十分位数绘制一个箱线图(我想要 10
个箱线图,每个十分位数一个,显示组成绩之间的差距)。
我首先做的是使用 xtile
计算两个组的十分位数:
xtile decileA= mat if group==1, nq(10)
xtile decileB= mat if group==0, nq(10)
但是,A
组和 B
组的观测值数量和分布都不相同。我想计算每个十分位数和组的分位数,然后减去它们以获得每个四分位数的每个十分位数的差异,以创建箱线图。但是我不知道之后如何继续创建图表,并且鉴于我在每组十分位数中有不同数量的观察,我不知道这样做是否正确。
如果我尝试使用 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。
当然有一种方法可以通过一些努力来完成你想要的,但如果目标是在每个十分位数的两组之间进行比较,并带有一些可变性的概念,你可以很容易地从同步分位数回归及其产生的 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))
这产生了一个图表,显示外国来源与更高的十分位数的更大价格相关联,最高十分位数除外,尽管 none 考虑到 CI 的重叠程度,这里的差异可能很重要:
您甚至可以像这样进行正式的假设检验,证明效果相等:
. 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 个百分位数的影响是相同的,即使点估计具有相反的符号但大小相似。