Notice: On March 31, it was **announced** that Statalist is moving from an email list to a **forum**. The old list will shut down on April 23, and its replacement, **statalist.org** is already up and running.

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

From |
"Kaulisch, Marc" <kaulisch@forschungsinfo.de> |

To |
<statalist@hsphsun2.harvard.edu> |

Subject |
st: AW: RE: AW: AW: RE: -ciplot- -eclplot- combine with box-options? |

Date |
Mon, 10 May 2010 09:52:39 +0200 |

Dear Nick, Thanks for the follow up clarifing opportunities with -stripplot-. I am not as much into Stata that I can adhoc find solutions for two nice-to-haves I would like. 1) Avoid a composite variable for including two categorical variables (comparing sex by agegroup). 2) Better interpretable graphs than those generated with by(). I might miss features of -stripplot- or Stata again. . sysuse bpwide, clear 1) Example with boxplot . graph hbox bp_before bp_after , over(sex, label(labs(vsmall))) over(agegrp, label(labs(vsmall)) sort(1) descending) 2) Example with Confidence-intervals: . tempfile tf1 tf2 . statsby mean1=r(mean) ub1=r(ub) lb1=r(lb) N1=r(N), by(agegrp) saving(`tf1'): ci bp_before . statsby mean2=r(mean) ub2=r(ub) lb2=r(lb) N2=r(N), by(agegrp) saving(`tf2'): ci bp_after . dsconcat `tf1' `tf2' . generate axis = 6 if agegrp == 3 & sex == 0 . replace axis = 5 if agegrp == 3 & sex == 1 . replace axis = 4 if agegrp == 2 & sex == 0 . replace axis = 3 if agegrp == 2 & sex == 1 . replace axis = 2 if agegrp == 1 & sex == 0 . replace axis = 1 if agegrp == 1 & sex == 1 . la de laxis 6 "60+ Male" 5 "Female" 4 "46-59 Male" 3 "Female" 2 "30-45 Male" 1 "Female" . la val axis laxis . twoway scatter axis mean1 || rcap ub1 lb1 axis, hori || scatter axis mean2 || rcap ub2 lb2 axis, hori , /// ylabel(1(1)6, labs(vsmall) nogrid val angle(hori)) /// ytitle("") /// legend(label(1 "Mean bp_before") label(2 "CI bp_before") /// label(3 "Mean bp_after") label(4 "CI bp_after") size(vsmall) rows(2) span) 3) Stripplot (!?) with Confidence intervals: * Generate axis as in solution (2) . stripplot bp_before bp_after , by(axis, compact) vertical bar boffset(0) ms(none) xsc(r(0.8 2.2)) Best regards, Marc -----Ursprüngliche Nachricht----- Von: owner-statalist@hsphsun2.harvard.edu [mailto:owner-statalist@hsphsun2.harvard.edu] Im Auftrag von Nick Cox Gesendet: Sonntag, 9. Mai 2010 19:22 An: statalist@hsphsun2.harvard.edu Betreff: st: RE: AW: AW: RE: -ciplot- -eclplot- combine with box-options? It's a pity that Marc missed a (simpler) solution with -stripplot- that requires no dataset manipulation at all. sysuse bpwide stripplot bp_before bp_after , by(sex, compact) stack vertical bar height(0.2) gets you there directly. If you really want only the c.i. bars, so that the data points are suppressed, that's perverse, but you can do it too: stripplot bp_before bp_after , by(sex, compact) vertical bar boffset(0) ms(none) xsc(r(0.8 2.2)) In short, -stripplot- for two or more variables and two or more groups requires -by()- not -over()-. As program writer, I saw no point trying to re-create a complicated set-up when -by()- does it for you for free. Nick n.j.cox@durham.ac.uk Kaulisch, Marc Okay, it seems that -statsby- does the trick together with -dsconcat- (ssc). Preliminary without labels etc: sysuse bpwide tempfile tf1 tf2 statsby mean1=r(mean) ub1=r(ub) lb1=r(lb) N1=r(N), by(agegrp) saving(`tf1') subsets total: ci bp_before statsby mean2=r(mean) ub2=r(ub) lb2=r(lb) N2=r(N), by(agegrp) saving(`tf2') subsets total: ci bp_after dsconcat `tf1' `tf2' twoway rcap ub1 lb1 agegrp || scatter mean1 agegrp || rcap ub2 lb2 agegrp || scatter mean2 agegrp Kaulisch, Marc Nick, Thanks a lot for this extensive answer. I learn a lot. I haven't had time yet to go deeper in the opportunities to work with statsby (will do this later). But experimenting with -stripplot- I come very early to an end... I would like to create a graph such as . sysuse bpwide . graph hbox bp_before bp_after, over(sex) over(agegrp), sort(1) descending) But I do not want a boxplot but a ci-bar as in stripplot... -stripplot- does not allow two vars with over. . ciplot bp_before bp_after, by(agegrp) looks closer to my interest... * * For searches and help try: * http://www.stata.com/help.cgi?search * http://www.stata.com/support/statalist/faq * http://www.ats.ucla.edu/stat/stata/ * * For searches and help try: * http://www.stata.com/help.cgi?search * http://www.stata.com/support/statalist/faq * http://www.ats.ucla.edu/stat/stata/

**Follow-Ups**:**st: RE: AW: RE: AW: AW: RE: -ciplot- -eclplot- combine with box-options?***From:*"Nick Cox" <n.j.cox@durham.ac.uk>

- Prev by Date:
**Re: st: loop over tests** - Next by Date:
**st: correlate lag variables** - Previous by thread:
**st: How to define shortest possible period with 95% of observations** - Next by thread:
**st: RE: AW: RE: AW: AW: RE: -ciplot- -eclplot- combine with box-options?** - Index(es):