Bookmark and Share

Notice: On April 23, 2014, Statalist moved from an email list to a forum, based at

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

Re: st: graphing estimates and confidence intervals

From   Alan Neustadtl <>
To   Statalist <>
Subject   Re: st: graphing estimates and confidence intervals
Date   Fri, 10 May 2013 14:54:12 -0400

As usual, Nick Cox's canonical replies are tremendously useful to both
teach and remind us of how to approach a number of Stata problems.  Thank
you for your comments.

I add another approach using -marginsplot- as in the following example:

sysuse auto
regress mpg i.for
margins i.for
marginsplot, recast(scatter)


On Fri, May 10, 2013 at 8:52 AM, Nick Cox <> wrote:
> Two recent threads both centred on graphical display of estimates
> together with confidence intervals: The start points were
> This post is intended mainly as a kind of broad-brush overview of the
> question. It also adds some detail omitted from those threads. In
> turn, naturally, please comment if I miss anything of importance or
> interest.
> The main idea is that while estimates can be plotted easily with
> -twoway scatter- or -graph dot- you are in practice going to find it
> difficult to show confidence intervals directly other than by -twoway
> rcap-. (It's only convention that might inhibit you from using -twoway
> rspike- instead.) It follows that you need to focus on using -twoway-.
> Bluntly, -graph dot- (or -graph bar- for those so inclined) is a dead
> end here.
> There are two broad strategies.
> 1. You can build your own command by assembling a composite -twoway-
> call using -scatter- for the point estimates and -rcap- for the
> intervals. This can be combined, with increasing difficulty, with
> showing different results for different groups on one or more levels.
> An example to explain levels here: using sex as a classifier gives one
> level and using race or region or both would add one or two more
> levels.
> With one level you will presumably just want to plot your grouping
> variable on one of the axes.
> With two or more levels, using -by()- is the easiest approach to add
> an extra level of classification, but just adding spacing can be as or
> more effective. Sometimes with -by()- there is too much scaffolding
> and too much loss of real estate.
> If you have any group variable that is string, things are easier if
> you -encode- it or use -egen, group()- to produce an equivalent
> numeric variable with value labels.
> 2. Alternatively, you can look for a command that does all that for
> you. The commands differ in whether they expect that you already have
> the estimates (point and interval) or they will undertake to do that
> calculation for you. The more standard the calculation, the more
> likely that a canned command already exists.
> -serrbar- is an old official command which doesn't do much but may
> match simple needs. My impression is that it is little known, but that
> may be because it is little mentioned, and that in turn because it is
> of little use.
> -dotplot- is an official command which supports display of mean +/-
> SD. It's worth knowing that, but it's unlikely to be what you want
> under this heading.
> -ciplot- is an oldish user-written command (SSC, Nick Cox). Its basic
> idea is to call up -ci- repeatedly and then plot the results. There is
> support for multiple groups and multiple variables. If it doesn't go
> as far as you want, the bad news is that I have no interest in
> developing it, but it's more flexible than any official command I can
> recall. For example,
> sysuse auto
> ciplot foreign , binomial jeffreys by(rep78)
> shows how you can reach through to -ci-.
> -stripplot- (SSC, Nick Cox) was mentioned in recent posts. Its display
> of confidence intervals is based on exactly the same idea as -ciplot-,
> to call up -ci- for the calculations. Its philosophy is to show the
> raw data too, although nothing beyond an ectoplasmic sense of my mild
> disapproval stops you suppressing the data display with e.g
> -ms(none)-.
> -eclplot- (SSC also SJ, Roger Newson) is another user-written command,
> and one characteristically well thought out, documented and
> maintained. It's not competing because it is focused on a different
> case, in which you already have estimates and confidence limits to
> hand; other programs of Roger's are of much help in assembling and
> analysing such results.
> I want to flag strongly the scope for using -statsby- in this
> territory, which I wrote up in
> SJ-10-1 gr0045  . . . . . . . . . . . . . Speaking Stata: The statsby strategy
>         . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .  N. J. Cox
>         Q1/10   SJ 10(1):143--151                                (no commands)
>         demonstrates the use of statsby to prepare a reduced
>         dataset for subsequent graphing
> .pdf freely available at
> Confidence intervals are a major example. (That paper was inspired by
> a single throw-away remark by Vince Wiggins. It was one of many
> occasions in which deciding to write about something made me aware of
> something in Stata I was underestimating.)
> I would also like to mention a general discussion of graphical technique in
> SJ-8-2  gr0034  . . . . . . . . . .  Speaking Stata: Between tables and graphs
>         (help labmask, seqvar if installed) . . . . . . . . . . . .  N. J. Cox
>         Q2/08   SJ 8(2):269--289
>         outlines techniques for producing table-like graphs
> .pdf freely available at
> Nick
> *
> *   For searches and help try:
> *
> *
> *
*   For searches and help try:

© Copyright 1996–2017 StataCorp LLC   |   Terms of use   |   Privacy   |   Contact us   |   Site index