【问题标题】:Creating box plots of the gap between two groups by deciles通过十分位数创建两组之间差距的箱线图
【发布时间】:2019-02-27 13:52:45
【问题描述】:

我与 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上交叉发布。

【问题讨论】:

  • 在我看来,这更像是一个统计问题,而不是严格意义上的编程问题。因此,我回答了Statalist。因此,现在有两个网站上的答案。

标签: stata boxplot


【解决方案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 重叠的程度,此处可能没有任何差异显着:

您甚至可以像这样进行效果相等的正式假设检验:

. 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 百分位数的影响是相同的,即使点估计的符号相反但幅度相似。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-05-12
    • 2018-03-22
    相关资源
    最近更新 更多