Ordinal Jitter Side (JMP19 EA1's Graph Builde new option) should be used also for Logistic's and Fit Nominal's Logistic PlotWhat inspired this Wish List Request? When SE and TS members at JMP Japan watched EA1 introduction video. This is suggested by Masakazu Okada-san, SE at JMP Japan.
Please describe the new or improved feature or solution you would like to see.
Okada-san's suggestion is that we use JMP19 EA1's Ordinal Jitter Side in the Graph Builder also for the Logistic's and Fit Nominal's Logistic Plot.The Graph Builder's logistic plot plotted by JMP19 EA1's Ordinal Jitter Side options is better appearance than the Logistic's and Fit Nominal's Logistic Plot.See the difference by running the following script.
Random Reset(1111111);
n = 500;
x = J(n, 1, Round(Random Normal(),2));
y = Random Binomial(1, Squish(1 + 1.5 * x));
dt = As Table(x||y,<<COLUMN names=""></COLUMN>
What would the value be to you and/or other users if this new feature is provided? The appearance of Logistic Plot must be better.
Is this an external customer request? No.
Is there a competitive software package that has this feature or solution that we should be aware of? I don't know.
Will this impact a renewal, expansion, or adoption at a customer, and does this put an account at risk if we do not address this? No.
Basic Data Analysis and ModelingRe: Ordinal Jitter Side (JMP19 EA1's Graph Builde new option) should be used also for Logistic's and Fit Nominal's Logistic PlotNote: Graph Builder's Ordinal Jitter Position currently doesn't support for more than two levels. So, this suggestion can be applied only for Y with two levels.
Re: Ordinal Jitter Side (JMP19 EA1's Graph Builde new option) should be used also for Logistic's and Fit Nominal's Logistic Plot - Status changed to: AcknowledgedThanks for sharing this idea! Glad you like this new feature in the Graph Builder!
Re: Ordinal Jitter Side (JMP19 EA1's Graph Builde new option) should be used also for Logistic's and Fit Nominal's Logistic PlotThe ordinal jitter side does support handle more than two levels, though maybe you mean it's not a useful method for logistic. Here's an example using completely made-up curves within a custom graphics script.

Re: Ordinal Jitter Side (JMP19 EA1's Graph Builde new option) should be used also for Logistic's and Fit Nominal's Logistic Plot@XanGregg -san, Thank you for your reply. I have not noticed the usage itself at all.
If we can plot data points for the middle Y-level(s) nicely, this option might be used also for more-than-two-level data. But it seems to me difficult. Generally, the cumulative probabilities do not become the middle constant Y-coordinate(s). They are changed as reagrd to X-values. So, we need to change their Y-coordinates corresponding to X-coordinates in general cases. The following figure shows an example.

I used the following script for drawing the above plot.
Random Reset(111111);
n1 = 500;
n2 = 50;
n3 = 50;
y = J(n1,1,1) |/ J(n2,1,2) |/ J(n3,1,3);
x = y + J(n1 + n2 + n3,1,Random Logistic());
dt = As Table(y||x, <<COLUMN names=""></COLUMN>
I have no idea how we can plot data points nicely within arbitrary areas... Maybe, random jittering, which is currently used in Logistic and Fit Nominal platform is the easist way although it's not as nice as the grid dot plot. I tried to use random numbers only for the middle level(s). The following plot is an example for the above data. I think this jittering is a little bit misleading. I think we should use the consistent same jittering method for all levels.

The following script is use for the above plot.
Random Reset(111111);
n1 = 500;
n2 = 50;
n3 = 50;
y = J(n1,1,1) |/ J(n2,1,2) |/ J(n3,1,3);
x = y + J(n1 + n2 + n3,1,Random Logistic());
dt = As Table(y||x, <<COLUMN names=""></COLUMN>
The logistic plot might become more complex for more-than-two-level nominal cases. The following script shows an example of a Logistic Plot on the Logistic platform using Penguins.jmp sample data.
dt = Open("$SAMPLE_DATA/Penguins.jmp");
dt << Logistic( Y( :Species ), X( :Culmen Length ) );Re: Ordinal Jitter Side (JMP19 EA1's Graph Builde new option) should be used also for Logistic's and Fit Nominal's Logistic PlotThank you @yusuke_ono for the realistic examples.
Re: Ordinal Jitter Side (JMP19 EA1's Graph Builde new option) should be used also for Logistic's and Fit Nominal's Logistic PlotIs there any y position for the inner level that would be useful? For example, a weighted average of the center prob value for each point:

Random Reset(111111);
n1 = 500;
n2 = 50;
n3 = 50;
y = J(n1,1,1) |/ J(n2,1,2) |/ J(n3,1,3);
x = y + J(n1 + n2 + n3,1,Random Logistic());
dt = As Table(y||x, <<COLUMN names=""></COLUMN>
Re: Ordinal Jitter Side (JMP19 EA1's Graph Builde new option) should be used also for Logistic's and Fit Nominal's Logistic PlotWith color

Graph Builder(
Transform Column(
"yy",
Formula(
If(
:y == "1", 0,
:y == "3", 1,
Col Mean(
(:"Cum Prob[1]"n + :"Cum Prob[2]"n) / 2,
:y,
<<FREQ></FREQ>
Re: Ordinal Jitter Side (JMP19 EA1's Graph Builde new option) should be used also for Logistic's and Fit Nominal's Logistic Plot - Status changed to: Needs InfoRe: Ordinal Jitter Side (JMP19 EA1's Graph Builde new option) should be used also for Logistic's and Fit Nominal's Logistic Plot@XanGregg -san and @Sarah-Sylvestre -san, Sorry for delaying my reply.
I think that one of the purposes to draw the Logistic Plot is to see how well the current model is fit to data. Intuitivelly, the curves are very soft rubber straps, and the data points can move only vertically within curves. The points push rubber straps. If the logistic model fits well, the points are distributed uniformly in the vertical positions.
So, I think the points should be plotted within curves.
The following is a very artifitial example.
The Logistic Plot below shows the model is fit to data poorly because the points are not distributed uniformly in the vertical positions.
The Logistic Plot below shows the model is fit to data well because the points are distributed uniformly in the vertical positions.
The following is a script to draw the above two figures.
Random Reset(1111111);
n = 500;
x = J(n,1, Random Normal());
eta1 = x;
eta2 = 2*x + 2*x^2;
cum1 = Squish(eta1);
cum2 = Squish(eta2);
y = J(n,1,1);
For(i = 1, i <= NRow(x), i++,
u = Random Uniform();
If( u < cum1[i], y[i] = 1,
u < cum2[i], y[i] = 2,
y[i] = 3
)
);
dt = As Table(x||y, <<COLUMN names=""></COLUMN>