Bookmark and Share

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/


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