How to find every test to screen a unitI'm fairly new to JMP and JSL and currently working on screening out a unit in a very large dataset. My goal is to get an output table containing a name of every test in which the unit (defined by it's ECID) has a z-score greater than 3 (or some other value I can choose). These z-scores need to be based on each tests respective distributions of passing units. Is there JMP functionality for this or a script that has been made to do something along these lines. Below is my very loose pseudocode for a script.
Pseudocode:
Requires large enough dataset to have a normal distribution for different tests (minimum 30 good units)
Subset base data table into only bin 1 units
Calculate mean and std deviation for each test using only passing units
Calculate z-score in relation to each tests' mean and std deviation
Create output table with all tests and scores that are above 3
AnalyticsData TableScriptingWindowsRe: How to find every test to screen a unitHere is a sample script, that creates the Z scores and identifies the values that are greater than 3. Is this in the direction of what you want?
Names Default To Here( 1 );
// Open Data Table: Probe.jmp
// → Data Table( "Probe" )
dt = Open( "$SAMPLE_DATA/Process Measurements.jmp" );
// Create a Bin column
dt << New Column( "Bin",
modeling type( nominal ),
set each value( If( Random Uniform( 0, 1 ) <= .8, 1, Random Integer( 2, 7 ) ) )
);
// Get column names for all continuous columns
colNames = dt << get column names( string, continuous );
For( i = 1, i <= N Items( colNames ), i++,
mean = .;
stddev = .;
// Create the Z scores for each test
dt << New Column( colNames[i] || " Z Score",
formula(
If( Row() == 1,
Mean = Col Mean( If( :Bin == 1, As Column( dt, colNames[i] ), . ) );
Stddev = Col Std Dev( If( :Bin == 1, As Column( dt, colNames[i] ), . ) );
);
Abs( :Process 1 - Mean ) / Stddev;
)
);
Column( dt, N Cols( dt ) ) << delete formula;
targetRows = dt << get rows where( As Column( dt, N Cols( dt ) ) >= 3 );
Try( As Column( dt, N Cols( dt ) ) << color cells( "red", As List( targetRows ) ) );
);Re: How to find every test to screen a unitThis is a very good starting point. Thank you for your help. I would like to adopt this script so that I can run it only on units with a specific ECID within a large dataset. If I were to run this script on every datapoint/die I will unfortunately crash JMP. How would you recommend adopting this script to allow for this?
Re: How to find every test to screen a unitI would just create a subset of the original data table and run the analysis on it.
dt = current data table();
ECIDsToTest = { "413257", "56739",...........};
dt << select where( contains( ECIDsToTest, :ECID ) );
dtToTest = dt << subset( selected columns( 0 ), selected rows( 1 ) );
// Run the Z Score analysis on the new subsetRe: How to find every test to screen a unitHi Jim,
I wasn't clear with my previous issue. I would like to find a single units z-score for every test based on the the entire dataset's distribution. Because of this, I can't just subset the ECID's of note. Secondly, I'm not sure the original script is working correctly. Upon further review, I've noticed that many of the z-scores are unlikely. There are some z-scores that are nearing triple digits.

Re: How to find every test to screen a unitPlease provide a sample input data table, and a sample of what you are expecting for your output.