World Statistics Day was yesterday, but we’re celebrating all week long! This celebration means acknowledging the impact statistics has on our world. Who is your favorite statistician? Share with us who they are and why they top your favorites list.
Highlighted
aserino
Level III

Saving R-Square values from smoothing spline fit

Hi all,

 

Is there a way to save the R-Square value from the smoothing spline fit in JSL? I'd like to be able to reference it at a later point.

 

 

Thanks!

1 ACCEPTED SOLUTION

Accepted Solutions
Highlighted
txnelson
Super User

Re: Saving R-Square values from smoothing spline fit

The Output Display's Tree Structure for the output you are looking for, is different than the example I gave.  If you right click on the gray triangle beside the Bivariate Fit of NPN1 By PNP1 outline box(), and then select

     Edit==>Show Tree Structure

You can see the Tree Structure for all of the output.

Below is the script using your output

Names Default To Here( 1 );
dt = Open( "$SAMPLE_DATA/semiconductor capability.jmp" );

biv = Bivariate(
	Y( :NPN1 ),
	X( :PNP1 ),
	Fit Spline( 100000, {Line Color( {204, 121, 41} )}, {Save Predicteds})
);

// Offset into the report object and get the RSquare value
RSquare = (Report(biv)["Smoothing Spline Fit, lambda=100000"][NumberColBox(1)]<<get)[1] ;
Jim

View solution in original post

8 REPLIES 8
Highlighted
txnelson
Super User

Re: Saving R-Square values from smoothing spline fit

All display data in an output table from a JMP platform is available to JSL.  Here is a simple example that retrieves the Smoother RSquare value

Names Default To Here( 1 );
dt = Open( "$SAMPLE_DATA/semiconductor capability.jmp" );

biv = Bivariate(
	Y( :NPN1 ),
	X( :PNP1 ),
	Kernel Smoother( 1, 1, 0.343642611683849, 0 )
);

// Offset into the report object and get the RSquare value
RSquare = Num(Report(biv)["Local Smoother"][numberbox(1)]<<get text);
Jim
Highlighted
aserino
Level III

Re: Saving R-Square values from smoothing spline fit

Thanks for the reply Jim. The example you gave helps a bit, but it doesn't work exactly the same for a Fit Spline(). What's the problem with the syntax in the following..

Names Default To Here( 1 );
dt = Open( "$SAMPLE_DATA/semiconductor capability.jmp" );

biv = Bivariate(
	Y( :NPN1 ),
	X( :PNP1 ),
	Fit Spline( 100000, {Line Color( {204, 121, 41} )}, {Save Predicteds})
);

// Offset into the report object and get the RSquare value
RSquare = Num(Report(biv)["Smoothing Spline Fit, lambda=100000"][numberbox(1)]<<get text);

 

The error implies a problem with the numberbox(1).

Highlighted
cwillden
Super User

Re: Saving R-Square values from smoothing spline fit

The R-square value is contained in a number col box in this case, not a number box.  You find the container for the value you want by viewing the tree structure.  See this page for instructions on that:  https://www.jmp.com/support/help/14/view-the-display-tree.shtml

You just need to replace the last line with this:

RSquare = (Report(biv)["Smoothing Spline Fit, lambda=100000"][numbercolbox(1)]<< Get)[1];

The << Get message to the number col box will return a list of values.  You can alternatively use "<< Get As Matrix".  The [1] returns the first list item, which is the R-squared value.

-- Cameron Willden
Highlighted
aserino
Level III

Re: Saving R-Square values from smoothing spline fit

Thanks for the help!
Highlighted
txnelson
Super User

Re: Saving R-Square values from smoothing spline fit

The Output Display's Tree Structure for the output you are looking for, is different than the example I gave.  If you right click on the gray triangle beside the Bivariate Fit of NPN1 By PNP1 outline box(), and then select

     Edit==>Show Tree Structure

You can see the Tree Structure for all of the output.

Below is the script using your output

Names Default To Here( 1 );
dt = Open( "$SAMPLE_DATA/semiconductor capability.jmp" );

biv = Bivariate(
	Y( :NPN1 ),
	X( :PNP1 ),
	Fit Spline( 100000, {Line Color( {204, 121, 41} )}, {Save Predicteds})
);

// Offset into the report object and get the RSquare value
RSquare = (Report(biv)["Smoothing Spline Fit, lambda=100000"][NumberColBox(1)]<<get)[1] ;
Jim

View solution in original post

Highlighted
aserino
Level III

Re: Saving R-Square values from smoothing spline fit

Thanks for the help Jim!
Highlighted
Zihao
Level II

Re: Saving R-Square values from smoothing spline fit

If I add a "by(:SITE)" in the "Bivariate" function, then I will have five plots in the report. How can I extract all five Rsquare value and save it as a new column in the table?

 

Thanks,

Zihao

Highlighted
txnelson
Super User

Re: Saving R-Square values from smoothing spline fit

The Bivariate Platform creates a separate tree structure for each of the By levels.  To access the RSquare value, all that has to be done, is to point to the RSquare value as in the single Bivariate execution, but to add a subscript for which one of the RSquares outputs you want.  Below is a simple modification to the script, to place the RSquare values for all 5 sites into a new data table

Names Default To Here( 1 );
dt = Open( "$SAMPLE_DATA/semiconductor capability.jmp" );

biv = Bivariate(
	Y( :NPN1 ),
	X( :PNP1 ),
	Fit Spline( 100000, {Line Color( {204, 121, 41} )}, {Save Predicteds} ),
	by( :site )
);

// Offset into the report object and get the RSquare value
RSquare = {};
For( i = 1, i <= N Items( biv ), i++,
	Insert Into(
		RSquare,
		(Report( biv[i] )["Smoothing Spline Fit, lambda=100000"][Number Col Box( 1 )]
		 << get)[1]
	)
);

dtRSquare = New Table( "RSquareTable", New Column( "RSquares", values( RSquare ) ) );

 To fully understand how to deal with the Output Display Trees created by JMP, strongly suggest that you read the section on Display Trees in the Scripting Guide

     Help==>Books==>Scripting Guide

Jim
Article Labels

    There are no labels assigned to this post.