こんにちは、みんな、
私には、自動車業界で供給品質のエンジニアと一緒に働いている顧客がいます。 それらには、部品番号の列、その他のカテゴリの列、暫定的な承認日を示す列、実際の承認日を示す列、および手動で入力された列を含む大きなPPAP(生産部品承認プロセス)スプレッドシートがあります。暫定的な日付を逃した理由を説明します。 お客様の目標は、次のことができるようにすることです。
1)次の部品番号が暫定日までに実際に承認されるかどうかを予測します
2)部品番号が暫定承認日を下回っているか上回っているかを視覚化します(何日まで)
私が説明したスプレッドシートのようなサンプルデータセットを誰かが持っているかどうか疑問に思いましたか? 関連するデータセットを見つけるのに苦労しています。 JMPテーブルを取得したら、テキストエクスプローラー、グラフビルダー、および信頼性/サバイバルメニューの一部のプラットフォームをデモできるようです(機能させるには、打ち切りを反転する必要がある場合があります)。 他に何か提案はありますか?
一番、
クロービス
@cweisbartあなたはへのオンラインアクセスを取得することを検討するかもしれませんAIAGのPPAPドキュメント。 あなたが一緒に働いている人々が自動車産業にいるなら、これは彼らが働いている文書である可能性があります。 この業界に供給している半導体の人々が測定システム分析を実行する必要があったとき、私は同様の経験をしました(同じアイデア、異なる標準文書)。
Ianに感謝します。先日、あなたと非常によく似たテーブルを作成することになりました。 不足しているのは、手動で入力されたテキストデータだけです。 DateDifference応答の予測子として一般的な用語のいくつかを使用するのはクールです。 しかし、デモ中に複数のテーブルを用意することを考えています。 日付の操作とグラフ化/集計を示すためのこれと同様の表、次にテキストエクスプローラーの利点を示すためのChipsJMPファイルのようなもの。
もちろん、データをシミュレートしてから、興味深い物語をサポートするように調整するのは簡単です。 これは、あなたが言及した単純なもののいくつかを示すのに役立つかもしれません. 言うまでもなく、かなり古いコードです。
NamesDefaultToHere(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,
"Continuous",
Format( "Best", 12 ),
Formula( DateDifference( :In Date, :Out Date, "Day" )),
);