スピーカー | トランスクリプト |
| ミア・スティーブンス | JMPディスカバリーサミットへようこそ。 私はMiaStephensであり、JMP製品マネージャーです。 そして、システムエンジニアであるJordanHillerが加わりました。 そして今日は、データキュレーションワークフローの自動化についてお話します。 |
| そして、これは参考のための要約です。私はそれについて話すつもりはありません。 |
| そして、この話を2つの部分に分けます。 それを開始して、分析ワークフローについて話します |
| データの作成、つまりデータキュレーションとはどういう意味かについて話します。 そして、データの潜在的なデータ品質の問題を特定する方法を見ていきます。 |
| そして、それをヨルダンに引き渡し、ヨルダンは再現性の必要性について話します。 |
| 彼は、データキュレーションのチートシートを共有し、JMPでデータをキュレートする方法を示します。 |
| アクションレコーダーと拡張ログ。 |
| それでは、分析ワークフローについて説明しましょう。 |
| それはすべて、私たちが解決しようとしているビジネス上の問題を抱えていることから始まります。 |
| そしてもちろん、データをコンパイルする必要があります。さまざまなソースからデータをコンパイルして、JMPにデータを取り込むことができます。 |
| そして最後に、私たちは結果を共有し、私たちの発見を他の人と伝えることができる必要があります。 これはたぶん一回限りのプロジェクトかもしれませんが、 |
| しかし、多くの場合、繰り返す分析があります。 それで、この講演で扱われる中心的な質問は、あなたはあなたの結果を簡単に再現できるかということです。 |
| 他の人があなたの結果を再現できますか? または、新しいデータがある場合、またはデータを更新した場合、分析、特にこれらの新しいデータのデータキュレーション手順を簡単に繰り返すことができますか? これが、この講演で取り上げていることです。 |
| しかし、データキュレーションとは正確には何ですか? |
| そして、なぜ私たちはそれについて心配する必要があるのですか? |
| データキュレーションとは、データが分析的発見を促進するのに役立つことを保証することです。 基本的に、私たちは対処しようとしている問題を解決できる必要があります。 |
| そして、それは主にデータの編成、データ構造、そしてデータのクリーンアップに関するものです。 |
| データで発生する可能性のある問題について考えると、それらは4つの一般的なカテゴリに分類される傾向があります |
| 書式が正しくない、データが不完全である、データが欠落している、データが汚れている、または乱雑である可能性があります。 |
| そして、これらの問題について話すのを助けるために、STIPSからいくつかのコンテンツを借ります。 また、STIPSに慣れていない場合は、STIPSが無料のコースである産業問題解決のための統計的思考です。 |
| そして、これは7つの独立したモジュールに基づくコースであり、2番目のモジュールは探索的データ分析です。 |
| また、探索的データ分析とデータキュレーションの反復的でインタラクティブな性質のため、このモデルの最後のレッスンは...このモジュールの分析用データ準備と呼ばれるため、このレッスン全体を通してこのレッスンから多額の借用をしています。 |
| これらの問題のそれぞれを分解してみましょう。 書式が正しくありません。 間違ったフォーマットとはどういう意味ですか? さて、これはあなたのデータが分析のために間違った形式または間違ったフォーマットにあるときです。 これは、データテーブル全体に当てはまります。 だから、例えば、あなたは持っているかもしれません |
| と呼ばれる...データは別々の列に保存されますが、実際には1つの列に保存されたデータが必要です。 |
| または、データが別々のデータテーブルにあり、データテーブルを連結するか、更新するか、結合する必要がある可能性があります。 |
| 個々の変数に関連付けることができます。 したがって、たとえば、モデリングタイプが間違っている可能性があります。 または、データテーブルに日付がある場合、日付の列があり、日としてフォーマットされていない可能性があるため、分析でこれらが日付データであると認識されない場合があります。 |
| 書式設定も表面的なものにすることができます。 したがって、たとえば、大きなデータテーブルを処理している場合、多くの列がある可能性があります... |
| 名前があるかもしれません...変更したいかもしれない実際には認識できない列名。 |
| 少し管理しやすくするためにグループ化する必要のある列がたくさんある場合があります。 |
| 応答列がデータテーブルの最後にある可能性があり、それを上に移動することをお勧めします。 したがって、外観上の問題が必ずしも分析の邪魔になるわけではありませんが、これらの問題のいくつかに対処できれば、分析を少し簡単にすることができます。 |
| 不完全なデータとは、データが不足している場合です。 これは、重要な変数に関するデータが不足している可能性があります。 したがって、たとえば、問題を解決するための基本的な変数に関するデータをキャプチャしていない可能性があります。 また、変数の組み合わせに関するデータが不足している可能性もあります。 |
| したがって、たとえば、相互作用を推定するのに十分な情報がない場合があります。 |
| または、関心のあるターゲット変数が不均衡である可能性があるため、欠陥などを調査している可能性があります。 それはあなたの観察のわずか5%かもしれません |
| 欠陥のためであり、十分なデータがない可能性があります。ご存知のように、データのサブセットはごくわずかである可能性があります。 |
| 欠陥が存在する場所。 欠陥の潜在的な原因を理解するのに十分なデータがない可能性があります。 また、サンプルサイズが十分に大きくない可能性があるため、適切な推定値を得るのに十分なデータがないだけです。 |
| データが欠落しているのは、変数の値が欠落している場合であり、これにはいくつかの異なる形式があります。 |
| データが欠落していて、データが...欠落がランダムではない場合、これは深刻な問題を引き起こす可能性があるため、推定にバイアスがかかっている可能性があります。 |
| 完全にランダムにデータが欠落している場合、少数の観測値が欠落しているだけであれば問題にはならない可能性がありますが、多くのデータが欠落している場合は問題になる可能性があります。 |
| ダーティで乱雑なデータは、観測値または変数に問題がある場合です。 したがって、値が正しくない可能性があります。値は単に間違っています。 |
| 矛盾がある可能性があります。 したがって、たとえば、人々が物事を異なる方法で入力すると、タイプミスや誤植が発生する可能性があります。 |
| 値が不正確である可能性があります。 したがって、たとえば、測定システムに問題がある可能性があります。 エラーが発生したり、タイプミスが発生したり、データが古くなったりする可能性があります。 |
| 廃止されたデータとは、たとえば、使用されなくなった施設やマシンに関するデータがある場合です。 |
| データが古くなっている可能性があるため、2〜3年前のデータがある可能性がありますが、その期間のどこかでプロセスが変更されている可能性があります。 |
| つまり、これらの履歴データは、現在の現在のプロセスに関連していない可能性があります。 データが検閲されるか、切り捨てられる可能性があります。 |
| 本質的に同じ情報を含む列である冗長列を持つことができます。 または、観測が重複している可能性があります。 |
| そのため、ダーティまたは乱雑なデータはさまざまな形をとることがあります。 |
| では、潜在的な問題をどのように特定しますか? |
| さて、良い出発点はあなたのデータを調査することです、そして実際、問題を特定することはあなたをデータ調査そして分析に導きます。 また、データの調査を開始すると、分析で問題を引き起こす可能性のあるものを特定し始めます。 |
| したがって、良い出発点は、明らかな問題がないかデータテーブルをスキャンすることです。 |
| したがって、このトークの残りの部分では、コンポーネントと呼ばれる例を使用します。これは、STIPSコースの例です。 |
| 会社が小さな部品を生産していて、それらが歩留まりに問題を抱えている場合。 したがって、データが収集され、369のバッチがあります。 キャプチャされた15の特性があり、これらのデータを使用して、低収量の潜在的な根本原因を理解するのに役立てたいと思います。 |
| したがって、データテーブル自体を調べ始めると、どのような種類のデータ品質の問題が発生する可能性があるかについて、いくつかの手がかりがあります。 そして、本当に素晴らしい出発点です(そしてこれはJMP 15で追加されました) |
| isisはヘッダーグラフです。 ヘッダーグラフが大好きです。 ヒストグラムを表示する連続変数がある場合は、分布の中心と形状および広がりを確認できます。 |
| また、値の範囲も表示されます。 カテゴリデータがある場合は、最も人口の多い棒の値を含む棒グラフが表示されます。 それでは、これらのいくつかを見てみましょう。 バッチ番号から始めましょう。 したがって、バッチ番号はヒストグラムを示しており、実際には形状が均一です。 |
| おそらく識別子である何かにバッチ番号を付けるので、すぐに、これらのデータがおそらく正しくコーディングされていないことがわかります。 |
| この分布は大きく歪んでおり、最小値が-6であることがわかります。これにより、負のスクラップ数を持つ可能性について質問する可能性があります。 |
| プロセスは別のものです。 基本的に2つのバーがあり、実際には2つの値のみのヒストグラムが表示されています。 |
| そして、これらの列グラフ、これらのヘッダーグラフを見ていると、列パネルを見ることができます。 |
| たとえば、バッチ番号、部品番号、およびプロセスがすべて連続としてコード化されていることは簡単にわかります。 データをJMPにインポートするときに、JMPが数値を検出すると、これらの列は自動的に数値連続としてコーディングされます。 したがって、これらは私たちが変更したいと思うかもしれないものです。 |
| データ自体も確認できます。 したがって、たとえば、湿度を見るとき(そして、データを見るときはコンテキストが非常に重要です)、湿度は連続データであると私たちが考えるものです。 |
| しかし、ここにはN / Aがあるフィールドがいくつかあります。 |
| 英数字データがある場合、数値列にテキストデータがある場合、データをJMPにプルすると、列は名義としてコード化されます。 したがって、これはすぐに修正する必要があることがわかります。 |
| また、他の列を確認することもできます。 したがって、たとえば、サプライヤの場合、いくつかの値が欠落していることがわかります。 JMPにデータをプルするとき、 |
| カテゴリデータのセルが空の場合、値が欠落していることがわかります。 一貫性のないエントリがいくつかあることがわかります...データの入力方法に一貫性がありません。 |
| そのため、データの潜在的な問題について深刻な手がかりを得ています。 |
| すべての点に注意してください。 温度は連続変数であり、ドットが表示されている場合は、値が欠落していることを示しています。 したがって、温度は私の分析にとって非常に重要なものであり、これは問題になる可能性があります。 |
| これの自然な拡張は、一度に1つの変数でデータの探索を開始することです。 最初にデータを見始めたいときに私のお気に入りのツールの1つは、列ビューアーです。 また、列ビューアには、選択した変数の数値の要約が表示されます。 |
| 値が欠落している場合は、NMissing列があります。 ここでは、369個の温度値のうち265個が欠落していることがわかります。したがって、これは、分析で温度が重要になると考える場合、ここでの重大なギャップです。 |
| また、奇妙な値があるかどうかもわかります。 したがって、廃棄された数と廃棄率についてMinsやMaxesのようなものを見ると、負の値があります。 そして、これが実行可能でない場合は、データまたはデータ収集システムに問題があります。 |
| また、変数の誤ったコーディングを確認するのも非常に簡単です。 したがって、たとえば、おそらく名目としてコード化されるべき施設とバッチ番号は、平均と標準偏差を報告していました。 |
| そして、これについて考える良い方法は、平均バッチ番号または(部品番号が他の変数であった)または部品番号を持つことが物理的に不可能な場合、これらを連続ではなく名目変数に変更する必要があるということです。 |
| ディストリビューションは、私が最初にデータに慣れたときに次に行く場所です。 |
| また、分布は、連続データがある場合、データの形状、中央揃え、および広がりを理解することを可能にしますが、いくつかの異常な値があるかどうかも確認できます。 |
| カテゴリデータの場合、レベルの数も確認できます。 したがって、たとえば、顧客番号。 顧客番号が重要な変数または潜在的に重要である場合、 |
| 顧客番号にはたくさんのレベルや値があります。 データを準備するときに、これらを4つまたは5つのバケットにまとめて、データがあまりない顧客向けに別のカテゴリにまとめたいと思うかもしれません。 |
| 湿度。 列にN / Aがあると問題が発生します。 ヒストグラムの代わりに棒グラフが表示されます。 |
| サプライヤーのデータで、私たちが見ているものを簡単に確認できます。 たとえば、Cox IncとCox、Andersonは3つの異なる方法で綴られ、Hershは3つの異なる方法で綴られています。 |
| 速度については、速度については、約60から140までのマウンド分布があることに注意してください。ただし、一番下に、1つまたは2つの値があることがわかります。 |
| これはほぼゼロに近く、これは...データ入力エラーである可能性がありますが、間違いなく調査したいものです。 |
| これの拡張は、一度に2つの変数でデータの調査を開始することです。 したがって、たとえば、グラフビルダーまたは散布図を使用します。 |
| また、変数を一度に2つ見ると、パターンがわかり、複数の変数と交差する異常なパターンをより簡単に確認できます。 |
| したがって、たとえば、スクラップ率とスクラップ数を見ると、いくつかのバンドがあることがわかります。 そして、このパターンを説明できる何かがデータテーブルにある可能性があります。 |
| この場合、バンディングはさまざまなバッチサイズに起因するため、この紫色のバンドは、バッチサイズが5,000の場所です。 |
| また、バッチサイズが小さい場合よりも、バッチサイズが大きい場合のスクラップの機会がはるかに多くなります。 ですから、それは理にかなっているかもしれませんが、私はまた、意味をなさない何かを見ています。 これらの2つの値は、ここでは負の範囲にあります。 |
| したがって、2次元でデータを見ると、これらを簡単に確認できます。 |
| 列スイッチャーとデータフィルターを使用して、グラフに次元を追加できます。 |
| これはまた、潜在的な分析につながるので、スクラップ率に関連する可能性のある重要なxが何であるかを理解することに興味があるかもしれません。 |
| 同時に、データ品質の問題または潜在的な問題を確認します。 したがって、スクラップ率については、圧力とスクラップ率の間に正の関係があるように見えます。 |
| 関係が多すぎるようには見えません。 スクラップ率と温度の関係はかなりフラットなので、ここではあまり進んでいません。 |
| しかし、速度に注意してください。 負の関係がありますが、上部にはこれら2つの値があります。ヒストグラムで見た1つの値ですが、目立つように見える2番目の値があります。 |
| したがって、この60前後の値は単に外れ値である可能性がありますが、有効なポイントである可能性があります。 ここで0に近いこの点が有効かどうか疑問に思うでしょう。 |
| そこで、データテーブルを確認しました。 一度に1つの変数でデータを調べました。 一度に2つの変数でデータを調べましたが、これらすべてがデータ探索にぴったりと適合し、分析につながります。 |
| このコースまたはこの講演の範囲を超えている、使用する可能性のあるより高度なツール(たとえば、外れ値の調査、欠落の調査)があります。 |
| また、データの分析を開始すると、追加の問題を特定できる可能性があります。 したがって、たとえば、カテゴリ変数のカテゴリがたくさんある場合 |
| 相互作用を回帰モデルに適合させようとすると、JMPが実際にはこれを実行できないという警告を表示することがわかります。 したがって、データの分析を開始すると、このプロセス全体が反復され、プロセス全体で潜在的な問題を特定できます。 |
| 重要なのは、データを見ているときに発生する問題をメモしておくことです。 そして、これらのいくつかは |
| 進行中に修正されるため、値を非表示にしたり除外したり、形状を変更したり、データを再クリーンアップしたりできますが、新しいデータを収集する必要があると判断する場合があります。 データ自体の信頼性を高めるために、DOEを実施することをお勧めします。 |
| この分析を繰り返すことを知っている場合、または他の誰かがこの分析を繰り返したいと思う場合は、 |
| 次に、再現性を持たせるために、実行しているステップを確実にキャプチャする必要があります。 他の誰かがあなたの結果を再現することができます、またはあなたは後であなたの分析を繰り返すことができます。 だから、これは私がそれをヨルダンに引き渡すつもりであり、ヨルダンは |
| 再現可能なデータキュレーションについて話します。 |
| ジョーダン・ヒラー | さて、ありがとう、ミア。 |
| こんにちは、ジョーダン・ヒラーです。 私はJMPのシステムエンジニアです。 少し掘り下げて、再現性についてもう少し話しましょう |
| あなたのデータキュレーションのために。 |
| ミアはこのアイデアを非常にうまく紹介しましたが、もう少し詳しく説明しましょう。 ここでの考え方は、簡単に再実行できるようにしたいということです。 |
| 分析用のデータを準備するために使用するすべてのキュレーションステップ。これを行うことには、3つの主な利点があります。 1つ目は効率です。 データが変更され、将来、新しいデータに対してこれらのキュレーション手順を再生する必要がある場合は、 |
| すべてのポイントアンドクリックアクティビティを繰り返し実行するよりも、ワンクリックスクリプトで1回実行する方がはるかに効率的です。 精度は2番目の利点です。 ポイントアンドクリックはエラーが発生しやすい可能性があり、スクリプトにすることで正確な再現を保証します。 |
| そして最後にドキュメントですが、これはおそらく過小評価されています。 スクリプトがある場合は、その手順が文書化されています |
| 取った。これは、必然的にこのプロジェクトを再訪し、このデータを準備するために私が何をしたかを覚えておく必要があるときに、後で再訪できるパンくずリストです。 |
| そのスクリプトを持つことは大きな助けになります。 そこで、今日はケーススタディを行います。 これらの再現可能なデータキュレーションスクリプトの1つを生成する方法を紹介します |
| ポイントアンドクリックのみを使用します。 そして、それを可能にするテクノロジーは、JMP16の新しいものです。 拡張ログにあるのは、拡張ログとアクション記録です。 |
| これが私たちがやろうとしていることです、私たちはポイントアンドクリックでいつものようにデータキュレーション活動を実行するつもりです。 これを行うと、 |
| 必要なスクリプト、コンピューターコード(JSLコード、JMPスクリプト言語のJSLと呼ばれます)は自動的にキャプチャされます |
| 新しい拡張ログで。 そして、ポイントアンドクリックによるキュレーションが完了したら、そのコードを取得して保存するだけです。 少しだけ強くするために、いくつかの調整と変更を加えたい場合がありますが、その部分はオプションです。 |
| さて、これはあなたが使用できるチートシートです。 これは、最も一般的なデータクリーニングアクティビティの一部です |
| そして、JMP 16で、パンくずリストの痕跡を残すような方法で、JSLスクリプトを拡張ログに残すような方法でそれらを実行する方法。 つまり、行の操作、列の操作などをカバーします。 |
| データテーブルを変更する方法、すべてのデータクリーニング操作、およびポイントアンドクリックでそれを行う方法。 |
| したがって、これはデータクリーニングに必要なすべてのリストではなく、拡張ログにキャプチャされるすべてのリストでもありませんが、これはここで最も重要なことです。 |
| では、Miaが導入したComponentsファイルを使用してケーススタディに進み、拡張ログを使用してJMP16でデータキュレーションスクリプトを作成しましょう。 |
| これがJMP16です。 これはJMP16のアーリーアダプタープログラムの最後のバージョンであるため、これはプレリリースであることに注意してください。 ただし、これはJMP16の実際のリリースバージョンと非常によく似ていると確信しています。 |
| したがって、ログにアクセスするには、 |
| ここでお見せします。 以前のバージョンのJMPのログに慣れている場合、これは異なって見えます。 これらの2つのパネルに分かれています。 |
| さて、上部にメッセージパネル、下部にコードパネルがあります。 ここで少し時間を過ごします。 これがどのようなものかをお見せしますが、ファイルのインポートやこの列の削除などの簡単なアクティビティを実行する場合は、簡単なプレビューを表示します。 |
| 私が行った2つの手順(データのインポートと列の削除)が、このメッセージパネルに一覧表示されていることがわかります。 |
| コード、つまり再現可能なデータキュレーションスクリプトに必要なJSLコードは、この下部パネルのここにあります。 そして |
| 非常にエキサイティングなことです。このコードを持っていて、ポイントしてクリックするだけで必要なときにいつでも取得できることは、JMP16の大きなメリットです。 |
| したがって、JMP 16では、この新しい拡張ログビューはデフォルトでオンになっています。 古いバージョンのログ、つまり単純なテキストログに戻りたい場合は、ここのJMP設定セクションで行うことができます。 新しいがあります |
| ログのセクションがあり、必要に応じて、ログの古いテキストビューに戻すことができます。 JMP 16をインストールするときのデフォルトは拡張ログであり、これらの他の機能のいくつかについては、後でケーススタディで説明します。 |
| 了解しました。クリアします。 |
| 今のところ、赤い三角形からのログ。 ログをクリアして、ケーススタディから始めましょう。 Miaがあなたと共有していたコンポーネントデータをインポートしましょう。 このcsvファイルから始めます。 |
| そう |
| ドラッグするだけで、最も単純な種類のインポートを実行します。 ああ、私は持っていました...私はそれのバージョンをすでに開いていました。 すみません、古いバージョンを閉じることから始めましょう |
| もう一度ログをクリアします。 |
| さて、簡単なインポート |
| JMPウィンドウにドラッグします。 これで、369個のバッチを含むそのファイルコンポーネントAができました。次に、データクリーニングアクティビティを続行します。 オンにします |
| ヘッダーグラフ。 そして、最初に確認できるのは、ファシリティ列にはFabTechという1つのエントリと1つの値しかないため、バリエーションはなく、ここでは興味深いものは何もないということです。 右クリックして削除し、列を削除します。 |
| 繰り返しになりますが、これは拡張ログに記録されるときにキャプチャされます。 |
| さて、他に何がありますか? 表の終わり近くにあるこのスクラップ率の列が私たちにとって非常に重要であり、表の前の方に表示したいと思います。 4番目の位置に移動します |
| 列パネルでそれをつかみ、顧客番号の直後にドラッグします。 そこに行きます。 |
| Miaは、主にN / Aが原因で、この湿度列がインポート時に誤って表示されると述べました。 |
| 文字変数として入力される原因となっているアルファベット文字。 それでは、それを修正しましょう。 右クリックして列情報に移動します。 |
| データ型を文字から数値に変更し、モデリングタイプを名義から連続に変更します。 [OK]をクリックします。 ここのログをクリックしてみましょう。キャプチャされた4つのステップがあり、続行します。 |
| さて、次は何ですか? 連続から名目に変更する必要があるいくつかの変数があります。 それらは、バッチ番号、部品番号、およびプロセスです。 そのうちの3つを選択したら、右クリックして連続から公称に変更します。 |
| そして、それらはすべて修正されました。 |
| また、これらの3つのステップがログに記録されていることがわかります。 |
| 大丈夫、他に何が? 他に少し化粧品、このコラム、プレッシャー。 私のエンジニアはその列名をPSIとして表示したいので、その列を選択してPSIと入力するだけで変更します。 そこからタブで移動して、別の場所に移動します。 これもログに記録されます。 |
| サプライヤー。 Miaは、一貫性のないスペルがいくつかあることを示しました。 おそらくここの値が多すぎます。 文字値を修正する必要があります。 列に不正確で一貫性のない文字値がある場合は、再コード化ツールを検討してください。 |
| 再コーディングツールは、これに対処するための非常に効率的な方法です。 したがって、サプライヤを右クリックして、再コーディングします。 |
| そして、これらを適切にグループ化しましょう。 いくつかの赤い三角形のオプションから始めます。 すべての値をタイトルケースに変換してみましょう。 |
| また、その空白をトリミングして、不整合な間隔を修正しましょう。 それはすでにいくつかの問題を修正しました。 他のすべてを手動で修正しましょう。 アンダーソンをグループ化します。 Coxesをグループ化します。 |
| Hershesをグループ化します。 TrutnaとWorleyは、単一のカテゴリですでに正しいです。 そして、私が行う最後の修正は、あなたが知っているように、空白または欠落しているものとしてリストされているものです、私はそれらに明示的に与えます |
| ここにラベルがありません。 |
| 了解しました。[再コード化]をクリックすると、 |
| これらの修正をサプライヤ2という新しい列に追加しました。 |
| 1、2、3、4、5、6のカテゴリが修正され、折りたたまれています。 |
| 良い。 |
| さて、計算をしましょう。 ここでは、バッチサイズと廃棄された数を使用して歩留まりを計算します。 |
| 正しい。 そして、ええ、私はこれが少し冗長であることを理解しています。 すでにスクラップ率があり、歩留まりは1マイナススクラップ率ですが、議論のために実行します |
| 計算。 したがって、そのyield列を廃棄された数値の直後に挿入したいので、廃棄された数値を強調表示してから、列メニューに移動し、新しい列を選択します。 |
| これをyieldと呼びます。 |
| そして、選択した列の後に、数値を破棄した後に新しい列を挿入し、歩留まりを計算する式を与えましょう。 |
| 良いユニットの数が必要です。 これは、バッチサイズから廃棄された数を引いたものになります。 |
| これが良いユニットの数であり、その全体をで割るつもりです。 |
| バッチサイズ。 |
| 良好なユニットの数をバッチサイズで割ったものが、歩留まりの計算です。 |
| そして、[OK]をクリックします。 |
| 私たちの新しいがあります |
| 歩留まり列。 スクラップ率が1マイナスであることがわかります。 それは...それは良いことです。今のところ、100%を超える歩留まりがあるという事実は無視しましょう。 |
| さて、ほぼ完了です。 さらにいくつかの変更。 2つのプロセスがあり、今のところ、プロセス1とプロセス2のラベルが付けられていることに気づきました。 |
| それはあまり説明的ではなく、あまり役に立ちません。 よりわかりやすいラベルを付けましょう。 プロセス1、生産プロセスと呼びます。プロセス2では、実験的と呼びます。 したがって、これは再コーディングではなく、値ラベルを使用して行います。 列情報に入ります |
| 1と2に値ラベルを割り当てます。 |
| この列の1つは、生産を表します。 |
| それを追加します。 |
| そして2つは実験的なものです。 |
| それを追加します。 |
| [OK]をクリックします。 良い。 ヘッダーグラフには1つと2つが示されていますが、ここのデータテーブルには生産と実験が示されています。 |
| スクリプトを保存する前の最後のステップです。 議論のために、私はデータにのみ興味があるとしましょう...真空がオフのときにのみ分析を進めたいと思います。 |
| そうです、データをサブセット化して、バキュームがオフになっている行のみを含む新しいデータテーブルを作成します。 真空がオフになっているこれらのセルの1つを右クリックしてそれを行います |
| 一致するセルを選択します。 |
| これにより、真空がオフになっている313行が選択されます。 次に、テーブルサブセットに移動します。 |
| vac_offという名前の新しいデータテーブルを作成します。 |
| [OK]をクリックします。 |
| 了解しました。これが、真空がオフになっているデータのみを表示する313行の新しいデータテーブルです。 |
| これで終わりです。 すべてのデータキュレーションを完了したので、戻ってログに戻り、現在のデータについてもう少し学びましょう。 |
| さて、これらのすべてのステップに加えて、私が意図していなかったいくつかのステップが、ここのログに記録されています。 |
| ここを見てください、私たちは持っています...すべての行は私たちが実行するステップの1つです。 |
| ある時点で行の選択をクリアしたなど、無関係なものもいくつかあります。 私は本当にそうする必要はありませんでした...私は本当にスクリプトのその部分を作る必要はありません。 |
| 選択した行をクリアするので、それを削除しましょう。 それを右クリックし、そのアイテムをクリアして削除します。 それは良い。 |
| さて、ここにメッセージがあり、ここにJSLコードがあります。 起源と結果に注目したいと思います。 これはかなり気の利いたものです。 |
| ステップを実行するときはいつでも、ポイントアンドクリックでアクションを実行するときはいつでも、そのアクションを実行するものがあり、結果として生じるものがあります。 それが起源と結果です。 したがって、たとえば、ファシリティ列を削除したとき... |
| まあ、それは悪い例かもしれません...代わりに湿度の列情報を変更することを選択しましょう。 起源、私たちがそれをしたこと |
| コンポーネントAテーブルであり、ここにデータテーブルとしてリストされていることがわかります。 カーソルを合わせると、[コンポーネントAを前面に表示]と表示されているので、それをクリックすると、[コンポーネントA]テーブルが表示されます。 非常に素晴らしい。 |
| そして、その結果は、湿度カラムに対して行ったことです。 湿度を変えました。 データ型は数値型、モデリング型は連続型に変更しました。 こちらをご覧ください。 |
| ここをクリックして湿度の列に移動すると、ハイライト表示され、選択されます。 JMPが湿度列を選択します。 |
| 最後の1つが青になることを除いて、どこでも緑。 これは、さまざまなデータテーブルでのアクティビティを追跡するのに役立ちます。 これらのアクティビティはすべて、コンポーネントAのデータテーブルで実行しました。 |
| 最後のアクティビティでは、コンポーネントAデータテーブルでサブセットを実行しました。その結果、vac_offという新しいデータテーブルが作成されました。 したがって、vac_offは青色で表示されます。 そうです、私たちはあなたが物事を追跡するのを助けるためにそれらの色を使うことができます。 |
| 了解しました。ここでログに表示したい最後の機能は...それです |
| 非常に長い一連のステップがあり、1つだけを見つける必要がある場合は、このフィルターボックスを使用して見つけることができます。 サブセットを見つけたいとしましょう。 そこにそれがある。 サブセットデータテーブルが見つかり、必要なコードに直接アクセスできます。 |
| さて、これは...これが私たちに必要なすべてです。 データキュレーションの手順がキャプチャされました。 再現可能なデータキュレーションスクリプトを作成するために必要なことは、赤い三角形に移動することだけです。スクリプトを新しいスクリプトウィンドウに保存します。 |
| インポートステップ、列の削除ステップ、スクラップレートステップの移動。 これらの手順はすべて、スクリプトに含まれています。 |
| スクリプトを読むのに役立つ構文の色付けがあります。 これらの有益なコメントはすべて、これらの各ステップで何をしていたかを正確に示しています。 |
| そうです、これがすべてです。 これが私たちに必要なすべてであり、私はこれを保存するつもりです。 インポートしてクリーンとしてデスクトップに保存します...コンポーネントのインポートとキュレートと呼びましょう。 |
| そうです、それが私たちの再現可能なデータキュレーションスクリプトです。 したがって、JMPホームウィンドウに戻って、新しいスクリプト以外のすべてを閉じるとしたら、 |
| これらのデータキュレーション手順を再生する必要がある場合は、次のようにします。 スクリプトファイルを開いたところ、[スクリプトの実行]ボタンをクリックして実行できます。 データを開き、すべてのクリーニングを実行し、サブセット化を実行して、313行の新しいデータファイルを作成します。 |
| これを新しいデータで再生する必要があると想像してみましょう。 |
| コンポーネントファイルの別のバージョンがあります。 これはコンポーネントBと呼ばれます。 さらに50行あるため、369行ではなく419行になります。 ご存知のように、さらに50バッチのプロセスを実行し、さらに多くのデータがあると想像してください。 |
| したがって、これはコンポーネントBと呼ばれ、このスクリプトをコンポーネントBで実行したいと思います。 ただし、スクリプト全体で、コンポーネントAが複数回呼び出されていることに気付くでしょう。 したがって、コンポーネントAを検索して置換し、コンポーネントBに変更するだけです。次に進みます。 編集します。 |
| 探す。 |
| コンポーネントAが見つかり、コンポーネントBに置き換えます。すべてを置き換えます。 15回のオカレンスが置き換えられました。 |
| あなたはこことここでそれを見ることができます。 |
| そして今、私たちは単にスクリプトを再実行し、それはデータの新しいバージョンにあります。 あなたはそれがより多くの行を持っているのを見ることができます、実際、それはオフでした。 以前は313でしたが、現在は358です。 |
| 了解しました。新しいデータに対して実行できる再現可能なデータキュレーションスクリプトです。 |
| さて、これがもう一度その虎の巻です。 これは、トークで保存する資料に含まれているので、これにアクセスして見つけることができます。 そして、これは、データキュレーションをポイントアンドクリックして、再生可能で再現性のある優れたデータキュレーションスクリプトを残す方法を示しています。 |
| 私たちが作成したスクリプトでは、コーディングをまったく行う必要はありませんでしたが、使用できる4つのヒントをいくつか紹介します。 |
| スクリプトを少しだけ強化します。 最初のヒントは、スクリプトの先頭にこの行を挿入することです。 すべてのスクリプトに対して行うのは良いことです。 デフォルトの行名をここに挿入するだけです。 |
| これは、スクリプトが他のスクリプトと相互作用するのを防ぐためです。 これは名前空間の衝突と呼ばれ、それが何をするのかを実際に理解する必要はありません。それを実行するだけです。 それは良いことです。 それは良いプログラミングの習慣です。 |
| 2番目のヒントは、JSL式の間にセミコロンがあることを確認することです。 |
| 拡張ログはこれを自動的に実行します。 すべてのステップの間に必要なセミコロンを配置します。 ただし、自分で変更を行う場合は、それらのセミコロンが適切に配置されていることを確認する必要があります。 だから賢い人に一言。 |
| コメントを追加します。 |
| コメントは、プログラムにメモを残し、プログラムを台無しにしないような方法でコメントを残すための方法です。 それはする方法です |
| JSLインタプリタによって解釈されないものをプログラムに残します。 また、拡張ログがあなたに残されているというメモがあります...拡張ログへのアクションの記録はあなたに残されていますが、必要に応じて、それらを変更して追加することができます。 それで、ここにコメントについての要点があります。 |
| 一般的な形式は2つのスラッシュであり、スラッシュに続くすべてがコメントです。 したがって、行の先頭または行の終わりでそれを行うことができます。 したがって、インタープリターはこのX = 9 JSL式を実行しますが、スラッシュの後のすべてを無視します。 |
| コメントが長い場合は、この形式を使用することもできます。この形式は、最初が/ *、最後が* /です。 コメントを同封します。 したがって、コメントは自分用にメモを残すのに役立ちますが、JSLスクリプトのデバッグにも役立ちます。 |
| コードの行を削除して実行しないようにする場合は、前に2つのスラッシュを付けるだけで、コードのより大きなチャンクに対してそれを行う場合は、この形式を使用できます。 コメントの使い方を知っておくとよいでしょう。 |
| 最後に、データテーブルの参照を一般化するためのヒントを紹介します。 そのスクリプトを新しいファイル名コンポーネントBで実行するために、どのように検索して置換する必要があったか覚えていますか? |
| スクリプト内のデータテーブルで15個のインスタンスを変更する必要がありました。 15回ではなく、一度に変更するだけでいいのではないでしょうか。 したがって、スクリプトをより堅牢にすることができます |
| データテーブル参照を一般化することによって。 名前を使用する代わりに、JSL変数を使用してそれらのテーブル名を保持します。 これが私が話していることです。 例を示します。 |
| 左側は、拡張ログへのアクションの記録によって生成されたコードです。 |
| ビッグクラスのデータテーブルを開いています。 年齢列を操作し、それを連続モデリングタイプに変更してから、新しい計算列を作成しています。 |
| オープン時には、これを使用して年齢列の変更を実行し、ここで使用します。 |
| 非常に単純です。これをより堅牢で一般化するために必要なことです。 |
| 3つの変更を加える必要があります。 |
| ここでの最初の変更では、名前を割り当てています。 私はBCを選びました。あなたはあなたが望むものを選ぶことができます。 あなたはDTをたくさん見るでしょう。 |
| したがって、BCは、スクリプトの残りの部分でそのビッグクラスデータテーブルを参照する名前です。 だから私たちが年齢を変えたいとき |
| ageは、BCデータテーブルとそのデータテーブルのage列を意味します。 |
| ここでは、Big Classデータテーブルにメッセージを送信しています。これが、二重矢印構文の意味です。 つまり、それを一般化するだけで、新しい名前を使用してそのメッセージを送信するように一般化しています。 |
| データテーブルに。 そして、Big Class以外の名前の新しいデータテーブルでこのスクリプトを実行する必要がある場合は、これが唯一の変更です。 スクリプト内の1つの場所を変更する必要があります。 検索して置き換える必要はありません。 |
| さて、これらの4つのヒントの後で、キュレーションスクリプトを次のレベルに進める準備ができたら、次の手順をいくつか示します。 ファイルピッカーを追加できます。 コーディングはあまり必要ありません |
| 誰かがこのスクリプトを実行するときに、スクリプトを手動で編集する代わりに、実行したいファイルに移動できるように変更します。 |
| これは素晴らしいアイデアの1つです。 組織内の他のユーザーにスクリプトを配布する場合は、スクリプトをJMPアドインにまとめることができます。これにより、ユーザーはJMP内のメニューからスクリプトを選択するだけでスクリプトを実行できます。 |
| 本当に便利です。 最後に、ネットワーク上に保持しているマスターJMPデータテーブルを更新するためにこのキュレーションスクリプトをスケジュールどおりに実行する必要がある場合は、WindowsのタスクスケジューラまたはMacOSのオートマトンを使用して実行できます。スケジュール通りです。 |
| 要約すると、Miaは、データを調査し、問題を特定するために反復することによって、データキュレーションを行う方法について話しました。 |
| これらのステップを自動化すると、再現性のメリットが得られます。これらは、効率、正確さ、および作業の文書化です。 |
| JMP 16でこれを行うには、通常どおりポイントアンドクリックするだけで、データキュレーション手順が拡張ログで発生するアクション記録によってキャプチャされます。 |
| 最後に、再現可能なデータキュレーションスクリプトを作成するために、拡張ログからそのJSLコードをエクスポートおよび変更できます。 これで話は終わりです。 お手数をおかけしますが、よろしくお願いいたします。 |