Hi all,
I have a customer working in the automobile industry with supply quality engineers. They have a big PPAP (production part approval process) spreadsheet that has a part number columns, some other categorical columns, a column that shows the tentative date of approval, a column that shows the actual date of approval, and a manually entered column that describes the reason why the tentative date was missed. The customer's goal is to be able to:
1) Predict if an upcoming part number is going to be actually approved by the tentative date
2) Visualize if part numbers are below or above their tentative approval date (by how many days)
I was wondering if anyone had a sample data set that is somewhat like the spreadsheet I described? I'm having a hard time finding a relevant data set. It seems once I have the JMP table, I could demo the text explorer, graph builder, and some of the platforms in the reliability/survival menu (might need to invert the censoring to make it work). Any other suggestions?
Best,
Clovis
@cweisbart you might consider getting online access to AIAG's PPAP documentation. If the folks you're working with are in the automotive industry, it's likely that this is the document they're working from. I have had a similar experience when semiconductor folks supplying this industry needed to perform a measurement systems analysis (same idea, different standards document).
Of course it's easy enough to simulate data, then tune it to support an interesting narrative. This might help you to show some of teh simple stuff you mention. Needless to say, it's rather old code:
amesDefaultToHere(1);
// *************************************************************************************************
// Change me!
// *************************************************************************************************
nr = 100; // Number of rows
earliestDate = DateDMY(1, 1, 2010); // Earliest possible start date
latestDate = DateDMY(31, 12, 2010); // Latest possible start date
processTimeMu = 14; // Mean of random process time (in days)
processTimeSigma = 7; // Sigma of random process time (in days)
// *************************************************************************************************
// Make some simulated 'start date' data (time ordered)
dt1 = NewTable("In",
NewColumn("In Date", Numeric, Continuous,
Formula(RandomInteger(earliestDate, latestDate)),
Format( "ddMonyyyy h:m:s", 22, 0 ),
Input Format( "ddMonyyyy h:m:s", 0 ),
)
);
dt1 << addRows(nr);
Column(dt1, "In Date") << deleteFormula;
dt1 << Sort(By(:In Date), ReplaceTable(1));
dt1 << NewColumn("ID", Numeric, Nominal, Values((1::nr)`));
dt1 << moveSelectedColumns(:ID, ToFirst);
// Make some simulated 'end date' data (don't allow the end date to be earlier than the start date)
inVals = Column(dt1, "In Date") << getValues;
processTime = J(nr, 1, Round(RandomNormal(processTimeMu, processTimeSigma), 0); );
processTime[Loc(processTime <= 0)] = 0;
outVals = inVals + InDays(processTime);
dt2 = NewTable("Out",
NewColumn("ID", Numeric, Nominal, Values((1::nr)`)),
NewColumn("Out Date", Numeric, Continuous,
Values(outVals),
Format( "ddMonyyyy h:m:s", 22, 0 ),
Input Format( "ddMonyyyy h:m:s", 0 ),
)
);
// Join dt1 and dt2
dt3 = dt2 << Join(
With( dt1 ),
SelectWith( :ID, :In Date ),
Select( :Out Date ),
By Matching Columns( :ID = :ID ),
Drop multiples( 0, 0 ),
Include Nonmatches( 0, 0 ),
Preserve main table order( 1 ),
Output Table( "In and Out Dates" )
);
// Add a column for the process time
dt3 << New Column( "Process time in days",
Numeric,
"Nominal",
Format( "Best", 12 ),
Formula( DateDifference( :In Date, :Out Date, "Day" )),
);
Thanks Ian, I ended up creating a very similar table to yours the other day. The only thing missing is the manually inputted text data. It would be cool to use some of the common terms as predictors to the DateDifference response. But I'm thinking of just having multiple tables during demo. A similar table to this to demonstrate date manipulations and graphing/tabulate, then something like the Chips JMP file to show benefits of text explorer.