cancel
Showing results for 
Show  only  | Search instead for 
Did you mean: 
The Discovery Summit 2025 Call for Content is open! Submit an abstract today to present at our premier analytics conference.
See how to use JMP Live to centralize and share reports within groups. Webinar with Q&A April 4, 2pm ET.
Choose Language Hide Translation Bar
View Original Published Thread

how to make cumulative probability plots in JMP?

r30363
Level II

How can I make cumulative probability plot like the one below? Appreciate your help.

r30363_0-1658152068599.png

 

 

36 REPLIES 36
hogi
Level XII


Re: how to make cumulative probability plots in JMP?


@hogi wrote:

@Mauro Thanks a lot for the Kudo - an also for the other 3.
With 4 Kudos this feature should be kind of save to appear in a future Jmp version  


Hm,Summary Statistics: add Cumulative Probability is still in Acknowledged state.

Seems that more Kudos are needed to trigger the development.

hogi
Level XII


Re: how to make cumulative probability plots in JMP?


@hogi wrote:

 


Hm,Summary Statistics: add Cumulative Probability is still in Acknowledged state.

Seems that more Kudos are needed to trigger the development.


Good news:

there is even an older wish toAdd CDFs to Graph Builder from 2022 - and this wish got in the queue for a future Jmp release

 

Great!

hogi
Level XII


Re: how to make cumulative probability plots in JMP?

Additional advantages of using the built-in Summary Statistics of Graph Builder:

  • For Group X / Group Y / Wrap / Page subplots, the calculation is always correct - no need to split the calculation by manually  adding columns as argmuments of the Col Aggregations:
Col Rank( var, groupbyCol, GroupXCol, GroupYCol, WrapCol, PageCol, excluded());
Col Number( var, groupbyCol, GroupXCol, GroupYCol, WrapCol, PageCol, excluded())

 

  • If a Local Data Filter is activated for the plot, GraphBuilder Summary Statistics restricts the calculation automatically to the filtered rows, the Formula in a Transform Column ignores the LDF:   Transform Column: Bug with excluded rows 
hogi
Level XII


Re: how to make cumulative probability plots in JMP?

Till cumulative probability will be available via Summary Statistics in Graph Builder (Add CDFs to Graph Builder ) ....

Plot quantile by actual can be used as a workaround:

It's similar to CDF - but with access to the data points.

 

disadvantages:
- many black points!

- no split plots

- ...

 

hogi_0-1695893723741.png

 

Names Default to Here(1);
dt = Open( "$SAMPLE_DATA/Big Class.jmp" );	
Oneway(
	Y( :weight ),
	X( :age ),
	All Graphs( 0 ),
	Plot Quantile by Actual( 1 ),
	CDF Plot( 1 ),
	Local Data Filter( Close Outline( 1 ) )
)

 

hogi
Level XII


Re: how to make cumulative probability plots in JMP?

.

hogi
Level XII


Re: how to make cumulative probability plots in JMP?


@r30363 wrote:

 if I want to do Left side  Y-axis with standard deviation, right side Y-axis with cumulative probability, how to add a right Y in graph builder


The left and right Y axis are not linked. So, after changing one of them one has to click on "reset Normal Quantile Scale" - or is there a Plot Scale Change Handler in Jmp? *)

hogi_0-1697060761062.png

 

 

 

Names Default To Here( 1 );
dt = Open( "$SAMPLE_DATA/Big Class.jmp" );
New Column( "normal Quantiles" );

Graph Builder(
	Transform Column( "Cumulative Probability", Formula( Col Rank( :height, :sex ) / (Col Number( :height, :sex ) + 1) ) ),
	Show Control Panel( 0 ),
	Variables( X( :height ), Y( :normalQuantiles ), Y( :Cumulative Probability, Position( 1 ), Side( "Right" ) ), Overlay( :sex ) ),
	Elements( Points( X, Y( 2 ) ), Smoother( X, Y( 2 ) ) ),
	SendToReport(
		Dispatch(
			{},
			"Cumulative Probability",
			ScaleBox,
			{Scale( "Normal Probability" ), Format( "Best", 12 ), Min( 0.01 ), Max( 0.99 ), Inc( 0.1 ), Minor Ticks( 1 )}
		)
	)
);
New Namespace(
	"reset"
);
reset:NormalQuantileScale = Function( {},
	myScript = (Current Report() << XPath( "//AxisBox" ))[3] << get script();
	myMin = Normal Quantile( myScript["min"] );
	myMax = Normal Quantile( myScript["max"] );
	(Current Report() << XPath( "//AxisBox" ))[2] << Min( myMin ) << Max( myMax ) << inc( 0.5 );
);
Current Report()[List Box( 2 )] << append( Button Box( "reset Normal Quantile Scale", reset:NormalQuantileScale() ) );
reset:NormalQuantileScale()
hogi
Level XII


Re: how to make cumulative probability plots in JMP?

asking for a friend/colleague:

 

With the current version of Jmp, is there an easy way to generate a split grouped probability plot?


I can generate such a plot via Graph Builder, but I have to implement a hand-made functionality which re-generates the Transform column once the user selects different columns or different entries in the Local Data Filter - and it's extremely slow! 

 

hogi_4-1697259519716.png

 

Accepting that the graph won't be as interactive as what a Jmp user is used from Graph Builder, one can use Live Distribution/Compare Groups - with a By variable. It can be much faster than Graph Builder - but there are cases where you have to wait literally "hours" till the plot shows up [see below].
The original report doesn't look like expected - but with several commands to the report (*) the plot gets almost as nice as in Minitab.

The benefit compared to the Graph Builder approach: more Distributions/scales to select from

The disadvantages compared to Minitab:
- not stable
- very slow

 

hogi_3-1697259294008.png

 

Open( "$SAMPLE_DATA/Cars.jmp" );Graph Builder(
	Transform Column(
		"CDF",
		Formula(
			Col Rank(
				:Wt,
				:Doors,
				:Year
			) / (Col Number(
				:Wt,
				:Doors,
				:Year
			) + 1)
		)
	),
	Variables( X( :Wt ), Y( :CDF ), Group Y( :Year ), Overlay( :Doors ) ),
	Elements( Line Of Fit( X, Y, ), Points( X, Y, Legend( 14 ) ) )
);

myld = Life Distribution(
	Perspective( Compare Groups ),
	Y( :Wt ),
	Grouping( :Doors ),
	Confidence Interval Method( Wald ),
	Select Distribution( Distribution, Normal ),
	Select Scale( Normal ),
	<< Show Statistics( 0 ),
	By( :Year)
);
(myld  << XPath("(//OutlineBox[text()='Statistics'])")) << Visibility( "Collapse" );
(myld << xpath("//OutlineBox[text()='Individual Group']")) << Visibility( "Collapse" );
((myld << xpath ("//RadioBox")) << parent) << Visibility( "Collapse" );
(myld << xpath("//OutlineBox[text()='Compare Distribution']//IfBox"))<< Visibility( "Collapse" );
//(myld << xpath("//OutlineBox[text()='Compare Distribution']")) <<Set Title( "" );
// current Report()[ListBox(1)] << Set Horizontal( 1 );
(myld << xpath("//OutlineBox")) <<Set Title( "" );
myABS = (myld << xpath ("//OutlineBox//AxisBox"));
Transform Each({ABList},myABs[1::Nitems(myABs)-1],ABList[2]) << Label Row(
				{Automatic Tick Marks( 0 ), Show Major Ticks( 0 ),
				Show Minor Ticks( 0 ), Show Major Labels( 0 )} );
myTEBs = (myld << xpath ("//OutlineBox//TextEditBox"));
Transform Each({TEBList},myTEBs[1::Nitems(myTEBs)-1],TEBList[2])<<Set Text( "" ) ;

 

 

hogi
Level XII


Re: how to make cumulative probability plots in JMP?

At the moment, Life Distribution is definitely the most versatile/elegant way in Jmp to create a probability plot.

The confidence intervals look very nice.

 

On the other hand, it takes a while for Life Distribution to open - depending on the number of data points, it can take hours:
TS-00122043

hogi_1-1705614388557.png

BHarris
Level VI


Re: how to make cumulative probability plots in JMP?

With a little work you can almost reproduce what you get from the Fit Y by X CDFs -- you just have to add a line and switch its connection to "Step" and Summary Statistic to "Max".  However unlike a real CDF you don't get the vertical lines at the endpoints going to 0 and 1.0.  I'm hoping this will make it into Graph Builder as a first-class citizen someday.

hogi
Level XII


Re: how to make cumulative probability plots in JMP?

With a little work?
how?

Recommended Articles

No recommendations found