Subscribe Bookmark RSS Feed

Can the amount of jittering be customized?

jacaalgo

Community Trekker

Joined:

May 10, 2013

Can anyone tell me if jittering is customizable? how do I do it?  Thanks

5 REPLIES
yvesa_roy

Community Trekker

Joined:

Feb 15, 2012

Hi,

this is not a response but another question : why, in graph builder, is it possible to define some form of jittering for dot plots (only 1 semi-continuous variable) and not (at least JMP Pro 11.1) for a scatter-plot, where jittering is the most useful?

Sunflowers will be very useful too. Just see what SPSS can do about that.

Yves Roy, France

efriedman

Community Member

Joined:

Jun 11, 2014

For scatter plots you can create a formula column with a jittered version of the actual variable.  I generally add a multiple of a random uniform and try various multipliers until I find one that looks good.


However, one cannot then draw regression lines through the jittered data.  To do that one might be able to create two separate graphs, one with the regression lines and hidden data and one with the jittered data.  I don't know whether you could overlay them in JMP but you could very carefully overlay them in something like PowerPoint.  Maybe someone can suggest a simpler way.

yvesa_roy

Community Trekker

Joined:

Feb 15, 2012

I already use the first solution for jittering but I would prefer something simpler to use. And, for the sunflowers,  there is a solution for SAS/Graph in Michael Friendly's SAS System for statistical graphics that I've been using since 1992.

For the overlay of jittered points and a regression or loess line, there is a simpler way for the Y axis only : put the unjittered and jittered y variables on the Yaxis, send the unjittered to the right Y axis, then remode the line for the left variable and the points for the right one. But I did'nt find yet a simple solution for the X axis.

Thanks anyway.

karenb

Community Trekker

Joined:

Jun 23, 2011

I got it to work as follows.

Problem: X & Y in original dataset have a lot discretization so there are occluded points.

Goal:  display the data with jitter in X and  Y but do the line-fit on the original data

Ex:  Original Dataset has N=6, notice repeating values of X & Y

Y         X            

50        1           

80        2        

80        2          

90        2           

150      8          

150      8      

   

Procedure

1.Double the number of rows, adding new rows at the bottom of the dataset equal in number to the number of rows in the original dataset. In this case, add 6 rows.

2.Create new X' and Y' columns using formulas shown at bottom to repeat the original data but also have additional rows which are off by a random jitter from the original X using 1/20th (or some other fraction) of the sd of the various data points.  Create new Group column to denote whether X' and Y' contain original or jittered results.  (Instead of capturing the 1/20 jitter multiplier in the formulas you could also create a table variable so it is easier to change the multiplier on the fly.)

Y         X             Group            X'          Y'

50       1            original           1           50

80       2            original           2           80

80       2            original           2           80

90       2            original           2           90

150      8           original           8           150

150      8           original           8           150

                           jittered      0.8675       47.178279975

                           jittered      2.0640       79.698789972

                           jittered      2.0296       79.164367702

                           jittered      2.0775       92.320672901

                           jittered      7.9297      150.14705263

                           jittered      7.7895      151.34309192

3.Hide the first 6 rows where X is not empty (not sure how to do this with a formula).  Exclude the second 6 rows where X is empty (same comment).

4.Plot Y' by X' and fit a line. Turn automatic recalc on so that you can play around with the formulas and see the effect on the line. Voila', you see only the jittered data but the line-fit is based only on the non-jittered data.

It seems you could script this and give the user dynamic control over the jittering:

script could take the original dataset and copy it to a new temp table, perform the function that I did manually to the table (double the rows, add X' and Y', do the hiding and excluding), fit a line, and give the user a way to control the multiplier used in the jitter width (I used 1/20 of orignal StdDev as the new jitter Std Dev) using a slider that sits beneath the graph and controls a constant that is used in the temp table dataset.

Formulas used:

Group = If( Is Missing( :X ), "jittered", "original")

X'  = If( Is Missing( :X ),   :X[Row() - Col Number( :X ), Empty()]     +     Random Normal() * (Col Std Dev( :X ) / 20),     :X)

Y'  = If( Is Missing( :Y ),     :Y[Row()  - Col Number( :Y ), Empty()]     +   Random Normal() * (Col Std Dev( :Y ) / 20),     :Y)

ms

Super User

Joined:

Jun 23, 2011

If using Graph Builder there may not be necessary to change the data table. In JMP 11 it's possible to add local custom transforms directly in the Graph Builder control panel.

To jitter X just right-click on the variable and select Formula..., enter an adequate transformation and and click Apply or OK to create the local variable (i.e. it can be used as a normal variable in Graph Builder but is not added to the data table). Drag both X's to the X-axis field and select points for the jittered transform and Line of Fit for the original X.

Here's the JSL version applied to KarenB's example table:

Graph Builder(

  Variables(

  X( :X ),

  X(

  Transform Column(

  "Jittered X",

  Formula( :X + Random Normal() * Col Std Dev( :X ) / 20 )

  ),

  Position( 1 )

  ),

  Y( :Y )

  ),

  Elements(

  Line Of Fit(

  X( 1 ),

  Y,

  Legend( 5 ),

  Confidence of Fit( 1 ),

  Degree( "Linear" ),

  ),

  Points( X( 2 ), Y, Legend( 6 ) )

  )

)