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 |
Nick Cox <njcoxstata@gmail.com> |

To |
statalist@hsphsun2.harvard.edu |

Subject |
Re: st: Re: Stack trick by Nicholas Cox |

Date |
Mon, 4 Mar 2013 11:09:36 +0000 |

Note that the code could be simplified from ... cond(foreign==1, 1-0.1*(_n-1)/7, foreign+0.1* (_n-1)/7) to ... cond(foreign==1, 1-0.1*(_n-1)/7, 0.1* (_n-1)/7) as if -foreign- is not 1, the only other value of -foreign- is 0. Nick On Mon, Mar 4, 2013 at 9:50 AM, Nick Cox <njcoxstata@gmail.com> wrote: > The reference is to a Speaking Stata column in the _Stata Journal_. > This is accessible to all in > > http://stata-journal.com/sjpdf.html?articlenum=gr0004 > > The example uses Stata's auto data and can be replicated by > > sysuse auto > > bysort foreign mpg: gen foreign2 = /// > cond(foreign==1, 1-0.1*(_n-1)/7, foreign+0.1* (_n-1)/7) > > The results can be inspected. Here is enough to give a flavour of what > is produced > > . l foreign mpg foreign2 > > +---------------------------+ > | foreign mpg foreign2 | > |---------------------------| > 1. | Domestic 12 0 | > 2. | Domestic 12 .0142857 | > 3. | Domestic 14 0 | > 4. | Domestic 14 .0142857 | > 5. | Domestic 14 .0285714 | > |---------------------------| > 6. | Domestic 14 .0428571 | > 7. | Domestic 14 .0571429 | > 8. | Domestic 15 0 | > 9. | Domestic 15 .0142857 | > > <snip> > > 53. | Foreign 14 1 | > 54. | Foreign 17 1 | > 55. | Foreign 17 .9857143 | > |---------------------------| > 56. | Foreign 18 1 | > 57. | Foreign 18 .9857143 | > 58. | Foreign 21 1 | > 59. | Foreign 21 .9857143 | > 60. | Foreign 23 1 | > |---------------------------| > 61. | Foreign 23 .9857143 | > 62. | Foreign 23 .9714286 | > 63. | Foreign 24 1 | > 64. | Foreign 25 1 | > 65. | Foreign 25 .9857143 | > |---------------------------| > 66. | Foreign 25 .9714286 | > 67. | Foreign 25 .9571428 | > 68. | Foreign 26 1 | > 69. | Foreign 28 1 | > 70. | Foreign 30 1 | > |---------------------------| > 71. | Foreign 31 1 | > 72. | Foreign 35 1 | > 73. | Foreign 35 .9857143 | > 74. | Foreign 41 1 | > +---------------------------+ > > The idea is to get a y coordinate at which to plot each pair of values > in a scatter plot of -foreign- versus -mpg-. The context is that we > are plotting a logit fit from -logit foreign mpg- and we are adding > the raw data at the top and bottom of the plot as what are now often > called as rugs. > > Consider the last observation, which is the only observation with > foreign = 1 (Foreign), mpg = 41. We can just plot it as y = 1, x = 41. > > The previous two observations tie at foreign = 1, mpg = 35. If we > plotted them, the marker symbols would just be superimposed. > > So we stack them vertically. One can be plotted at y = 1, x = 35, but > the other must be nudged downwards from y = 1. > > A similar decision applies for values with foreign = 0. Pairs that > occur once only can be plotted at y = 0, x = mpg value, but ties must > be separated to be discernible. > > The general rule for this dataset -- chosen after experiment -- was > > cond(foreign==1, 1-0.1*(_n-1)/7, foreign+0.1* (_n-1)/7) > > meaning > > for foreign = 1, use y = 1 if _n == 1, 1 - 0.1/7 if _n == 2, and so on. > > for foreign = 0, use y = 0 if _n == 1, 0 + 0.1/7 if _n == 3, and so on. > > The -cond()- function handles both cases at once. -search cond, sj- > for access to a 2005 tutorial by David Kantor and myself if needed. > > What is _n here? It is crucial that the observation number _n is > counted _within_ distinct groups of -foreign mpg-. -search by, sj- for > access to a 2002 tutorial if needed. > > 7 is just a choice that works well in this dataset, or so I thought. > > There is no use of options in this code. > > Nick > > On Sun, Mar 3, 2013 at 8:10 PM, Michael Stewart > <michaelstewartresearch@gmail.com> wrote: > >> I am a novice and trying to learn stata graphics.I read Speaking Stat >> by Nick, vol 4 , number 2, page 190-215 regarding Graphing Categorical >> and compositional data. >> Nick writes a conditional statement on page 193.I could not understand >> the second option >> His cond statement is bysort foreign mpg:gen foreign2=cond(foreign==1, >> 1-0.1*(_n-1)/7, foreign+0.1*(_n-1)/7) >> I cannot understand what does 1-0.1*(_n-1)/7 and >> foreign+0.1*(_n-1)/7 compute and their purpose.I tried to read the >> article but am still at loss. * * For searches and help try: * http://www.stata.com/help.cgi?search * http://www.stata.com/support/faqs/resources/statalist-faq/ * http://www.ats.ucla.edu/stat/stata/

**References**:**st: Re: Stack trick by Nicholas Cox***From:*Michael Stewart <michaelstewartresearch@gmail.com>

**Re: st: Re: Stack trick by Nicholas Cox***From:*Nick Cox <njcoxstata@gmail.com>

- Prev by Date:
**Re: st: Generating a new date variable from another date variable** - Next by Date:
**st: Landscape tables with -estout/esttab-** - Previous by thread:
**Re: st: Re: Stack trick by Nicholas Cox** - Next by thread:
**Re: st: Re: Stack trick by Nicholas Cox** - Index(es):