cancel
Showing results for 
Show  only  | Search instead for 
Did you mean: 
  • Learn how to build custom Python data connectors and further customize JMP’s Data Connector Framework with the Python Data Connector Demo, available now in the JMP Marketplace!
  • See how to create experiments to support product design and ID useful product features. Register for June 12 webinar, 2pm US Eastern Time.

Discussions

Solve problems, and share tips and tricks with other JMP users.
Choose Language Hide Translation Bar
Anders_M
Level I

How to write a script for selecting several columns (>1000) in a data table as input for an Analysis (e.g. inverse correlations)

Hi I am new to JSL and would like to make a script for selecting multiple columns (>1000) and to use them an input for analysis. For example using the Mulitvariate analysis tool and calculating the inverse correlation.
I have made a script for selecting two columns for Bivariate analysis but how to extend it for multiple columns as used in e.g Mulitvariate analysis. 

 

I have tried to find clues at this forum but I do something wrong and I am stuck. I would be very greatful if someone could help me with this. 

 

Best Regards /Anders 

 

Names Default To Here( 1 );
dt = Open( "$SAMPLE_DATA/Big Class.jmp" );
xvar = .;
yvar = .;
win = New Window( "Example of Returning Values",
	<<Modal,
	Text Box( " Select numeric columns. " ),
	H List Box(
		Text Box( " X, Factor " ),
		x = Col List Box(
			dt, // data table reference
			all, // display all columns from the data table
 
// get the name of the selected column before the window closes

			xvar = (x << Get Selected)[1];
			Show( xvar );
			
		),
		Text Box( "Y, Response" ),
		y = Col List Box(
			dt,
			all,
			yvar = (y << Get Selected)[1];
			Show( yvar );
		)
	)
);
If (win["Button"] == 1, // if the user clicks OK...
xcol = Column( dt, xvar ); //  get the columns
ycol = Column( dt, yvar );


dt << Bivariate( Y( ycol ), X( xcol ) ); // create a Bivariate plot
//dt << Multivariate( Y(ycol), Inverse Correlations(1)); // create a Inverse Correlation Matris
// How to select several columns as input for Multivariate ( Y(???), Inverse Correlations(1));
);
Anders Mannelqvist
1 ACCEPTED SOLUTION

Accepted Solutions
txnelson
Super User

Re: How to write a script for selecting several columns (>1000) in a data table as input for an Analysis (e.g. inverse correlations)

You were headed in the right direction.  Your original script limited the Yvar to only 1 variable, and so by removing that restriction it lets one choose multiple variables, which then are transferred as a list to the Multivariate input.

Names Default To Here( 1 );
dt = Open( "$SAMPLE_DATA/semiconductor capability.jmp" );
xvar = .;
yvar = .;
win = New Window( "Example of Returning Values",
	<<Modal,
	Text Box( " Select numeric columns. " ),
	H List Box(
		
		Text Box( "Y, Response" ),
		y = Col List Box(
			dt,
			all,
			yvarList = (y << Get Selected);
			Show( yvarList );
		)
	)
);
If( win["Button"] == 1, // if the user clicks OK...
	Multivariate(
		Y( Eval( yvarList ) ),
		Estimation Method( "Row-wise" ),
		Scatterplot Matrix( 1 ),
		Inverse Correlations( 1 )
	)
);
Jim

View solution in original post

5 REPLIES 5
txnelson
Super User

Re: How to write a script for selecting several columns (>1000) in a data table as input for an Analysis (e.g. inverse correlations)

You were headed in the right direction.  Your original script limited the Yvar to only 1 variable, and so by removing that restriction it lets one choose multiple variables, which then are transferred as a list to the Multivariate input.

Names Default To Here( 1 );
dt = Open( "$SAMPLE_DATA/semiconductor capability.jmp" );
xvar = .;
yvar = .;
win = New Window( "Example of Returning Values",
	<<Modal,
	Text Box( " Select numeric columns. " ),
	H List Box(
		
		Text Box( "Y, Response" ),
		y = Col List Box(
			dt,
			all,
			yvarList = (y << Get Selected);
			Show( yvarList );
		)
	)
);
If( win["Button"] == 1, // if the user clicks OK...
	Multivariate(
		Y( Eval( yvarList ) ),
		Estimation Method( "Row-wise" ),
		Scatterplot Matrix( 1 ),
		Inverse Correlations( 1 )
	)
);
Jim
jthi
Super User

Re: How to write a script for selecting several columns (>1000) in a data table as input for an Analysis (e.g. inverse correlations)

You could also take a look at Column Dialog instead of building modal new window. Depending on the level of customization you need, it might be simpler to use.

 

Names Default To Here(1);
dt = Open("$SAMPLE_DATA/Solubility.jmp");
colDiag = Column Dialog(y = ColList("Y", Data Type("Numeric")));
dt << Multivariate(Y(colDiag["y"]));
-Jarmo
txnelson
Super User

Re: How to write a script for selecting several columns (>1000) in a data table as input for an Analysis (e.g. inverse correlations)

I like this a lot!

Jim
Anders_M
Level I

Re: How to write a script for selecting several columns (>1000) in a data table as input for an Analysis (e.g. inverse correlations)

Thanks Jarmo.

A good suggestion for lower level of customization and simpler use. /Anders 

Anders Mannelqvist
Anders_M
Level I

Re: How to write a script for selecting several columns (>1000) in a data table as input for an Analysis (e.g. inverse correlations)

Thanks, that's a very simple way! 

Anders Mannelqvist

Recommended Articles