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
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.
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.
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
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.
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)
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:
X( :X ),
Formula( :X + Random Normal() * Col Std Dev( :X ) / 20 )
Position( 1 )
Y( :Y )
Line Of Fit(
X( 1 ),
Legend( 5 ),
Confidence of Fit( 1 ),
Degree( "Linear" ),
Points( X( 2 ), Y, Legend( 6 ) )