Notice: On April 23, 2014, Statalist moved from an email list to a forum, based at statalist.org.
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: st: Re: Stack trick by Nicholas Cox
From
Nick Cox <[email protected]>
To
[email protected]
Subject
Re: st: Re: Stack trick by Nicholas Cox
Date
Mon, 4 Mar 2013 19:49:20 +0000
Thanks, not quite sure which specific task(s) you have in mind. But consider
sysuse auto
logit foreign mpg
regplot, jitter(1)
predict predicted
stripplot mpg, over(foreign) stack height(0.2) addplot(mspline
predicted mpg, bands(100))
where -regplot- is from SJ and -stripplot- is from SSC.
Nick
On Mon, Mar 4, 2013 at 7:33 PM, Michael Stewart
<[email protected]> wrote:
> Thanks a lot for such a nice explanation and taking time to type explain it.
> I understand it now.
> These are such a nice set of commands & are extremely useful, I hope
> one of the experienced stata programmers out there could write a user
> written program for it .!!
> Thanks a lot Nick
> Mike
>
>
> On Mon, Mar 4, 2013 at 4:50 AM, Nick Cox <[email protected]> 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
>> <[email protected]> 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/
>
>
>
> --
> Thank you ,
> Yours Sincerely,
> Mike.
> *
> * 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/
*
* 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/