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: Jittering problem
From
Nick Cox <[email protected]>
To
"'[email protected]'" <[email protected]>
Subject
RE: st: RE: Jittering problem
Date
Fri, 20 May 2011 16:28:57 +0100
Jittering has been in Stata since about Stata 2. But your program does what you need.
qui su `varlist' if `touse'
could now be
su `varlist' if `touse', meanonly
Nick
[email protected]
Fred Wolfe
Thanks, Nick. I hoped there was a simple code alteration that would do the job.
As to your suggestion, I discovered a Version 6 (circa 2000) ado file
I wrote to do this. I think this was before Stata introduced
jittering. It probably could use some updating:
*! jitter.ado adds random noise to variable usually for graphing
purposes 6/11/00
*! syntax varname,Gen(newvar),Percent(real number - default is 2%)
program define jitter
version 6.0
syntax varlist(max=1) [if] [in][,Gen(string) Percen(real 2)]
tokenize `varlist'
confirm new v `gen'
marksample touse
qui su `varlist' if `touse'
local range = (r(max) - r(min))
local prop = `percen' / 100
tempvar random
qui gen `random' = ((uniform() * 2)-1) * (`prop' * `range')
qui gen `gen' = `varlist' + `random' if `touse'
label variable `gen' "`varlist' plus `percen' % random noise"
end
jitter fatigue, g(jfatigue) p(4)
. des jfatigue
storage display value
variable name type format label variable label
-----------------------------------------------------------------------------------------------------------------------------
jfatigue float %9.0g fatigue_scale plus 4 %
random noise
Fred
On Fri, May 20, 2011 at 9:13 AM, Nick Cox <[email protected]> wrote:
> This is more portable than Fred's example if you are not a collaborator of his and thus do not share his data.
>
> sysuse auto, clear
>
> gen m = word(make, 1)
>
> scatter head rep78 if !foreign, jitter(8) ///
> || scatter head rep78 if foreign, jitter(8) scheme(bw)
>
> more
>
> scatter head rep78 if !foreign, jitter(8) mla(m) ///
> || scatter head rep78 if foreign, jitter(8) scheme(bw) mla(m)
>
> The essence of the problem appears to be that using marker labels inhibits jittering. I guess wildly that the way that jittering is implemented rules out -mla()- knowing exactly where to put the marker label, so jittering is ignored.
>
> So, I guess further that you need to pre-jitter yourself by adding random noise. An automated way to do this would use some fraction of the range of each variable multiplied by -runiform()-.
>
> Nick
> [email protected]
>
> Fred Wolfe
>
> When I use this command, the graph will be jittered:
>
> scatter fatig glb_ if ra_sev==0, jitter(8) || scatter fatig glb_ if
> ra_sev >0, jitter(8) scheme(bw).
>
> It will not be jittered when I use this command:
>
>
> scatter fatig glb_ if ra_sev==0,mfcolor(white) color(black) msize(
> medlarge) mlabel(ptglobak) jitter(8) || scatter fatig glb_ if ra_sev
>>0,mfcolor(black) xline(1.1) msize(medlarge) msymbol(circle)
> mlabel(ptglobak) jitter(8) scheme(bw).
>
> I couldn't find any discussion of this problem on the list. Any
> suggestions to make jittering work?
>
*
* 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/