<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />完璧なデータセットはまれです。 手動で入力するとさらにそうです!幸い、JMPは、混乱を解消するのに役立つデータ管理ツールを提供しています。 以下の例は、2つの一般的な手動入力の失敗を見つけて修正するいくつかの(しかし間違いなくすべてではありません!)方法を示しています。
まず、使用するクイックデータセットを設定しましょう。 以下のスクリプトを新しいスクリプトウィンドウにコピーして、スクリプトの実行アイコンをクリックする必要があります。これらのデータが、10本の粉体塗装鋼棒に沿った10個の設定位置からのコーティング厚さ(mm)の磁気測定値を手動で入力したと想像してください。 プロセス制御により、厚さは常に1未満です。厚さ0のむき出しのコーティングされていないスポットを持つことが可能です。
//データ用務員の演習用にマトリックスとデータテーブルを設定します
名前のデフォルトはここ(( 1 ) ;
//シミュレートされたデータ収集エラーでランダム行列をロードします
rndMat = [
0.35 830 0.71 0.91 0.74 。 0.71 0.92 0.96 0.28 、
0.50 0.93 0.48 0.13 0.70 0.04 0.25 。 0.99 0.98 、
0.26 0.19 750 0.22 0.97 0.35 0.30 0.25 0.64 。 、
0.19 0.19 0.53 0.31 0.58 0.65 0.64 0.53 0.02 0.35 、
640 0.27 0.48 0.63 0.70 0.26 0.83 0.78 0.12 0.30 、
0.54 0.38 0.47 。 0.89 0.71 0.91 。 0.74 0.16 、
0.38 0.09 0.18 0.87 0.38 0.45 0.97 0.13 0.08 0.03 、
0.75 0.17 0.33 580 0.88 0.63 0.14 0.18 0.40 0.79 、
0.59 0.48 0.19 0.71 0.70 0.01 。 0.52 0.01 0.41 、
0.44 0.07 0.87 0.34 0.05 0.64 0.11 1.00 0.70 0.91
] ;
//ランダム行列からデータテーブルを作成します
dtNew =表として(( rndMat ) ;
次に、データをプロットして要約することにより、エラーを探しましょう。 この例ではデータクリーニングに重点を置いていますが、実際にはデータの基本的な理解も得ています。 分析PDD(データダミーをプロット)の前に覚えておいてください!!

配布プラットフォームは、データの異常を確認するための優れたツールです。 データセットに予想の1000倍のエントリがあることに注意してください。 私は個人的に、検査官/オペレーターが小数点以下を見逃したり、より速くするためにすべての小数点以下の桁を省略したりするデータに遭遇します! 変更を加える前に、このようなエラーをオペレーターに確認することをお勧めします。
Columns Viewerは、すばやく簡単な要約ツールです。 以下の画像は、すべての列の要約テーブルを示しています。 データに10個の欠落値があることに注意してください。 ゼロがあるべき場所に値がないことは、非常に一般的な手動入力エラーであり、私の経験では、小数点の置き忘れやドロップよりもさらに一般的です。 これは、不足しているすべての値を簡単に確認できる小さなテーブルでは簡単に思えるかもしれません。 しかし、データセットに数千または数百万行のデータがある場合の難しさを想像してみてください。 干し草の山と針が思い浮かびます。
要約統計量は、上記の配布プラットフォームを使用したのと同じ方法で使用できます。 col1-col4の最大値が予想の100倍であることに注意してください。これは、配布で学習したのと同じです。

探索的分析により、データに2種類のエラーが特定されました。 小数が欠落していて、ゼロであるはずの値が欠落しています。それでは、それらを修正しましょう!私たちのような小さなテーブルでは、データテーブルで必要な変更を手動で行うのは非常に簡単です。 これは当てはまらず、より効率的な方法が必要であると想定します。
JMPのRecodeUtilityは、データテーブルの値を変更するためのメニュー方式のオプションを提供します。 ユーティリティにアクセスするには、列を選択する必要があります。 両方のエラーは、再コード化で修正できます。


ここで、データセットに10000行と100列があると想像してください。 突然、再コード化はそれほど魅力的ではありません。 幸いなことに、JSL(JMPスクリプト言語)を使用して、問題を迅速かつ効率的に解決できます。
まず、小数点が欠落しているすべてのデータを見つけて修正しましょう。 ループを使用した手動の検索および修正ルーチンの自動化を想像するのは簡単です。 ご覧のとおり、これで作業は完了します。
この演習を単純明快に保つために、データテーブルとスクリプトウィンドウを閉じます。 以下のスクリプトを新しいスクリプトウィンドウに貼り付けて、スクリプトを実行します。
名前のデフォルトはここ(( 1 ) ;
//シミュレートされたデータ収集エラーでランダム行列をロードします
rndMat = [
0.35 830 0.71 0.91 0.74 。 0.71 0.92 0.96 0.28 、
0.50 0.93 0.48 0.13 0.70 0.04 0.25 。 0.99 0.98 、
0.26 0.19 750 0.22 0.97 0.35 0.30 0.25 0.64 。 、
0.19 0.19 0.53 0.31 0.58 0.65 0.64 0.53 0.02 0.35 、
640 0.27 0.48 0.63 0.70 0.26 0.83 0.78 0.12 0.30 、
0.54 0.38 0.47 。 0.89 0.71 0.91 。 0.74 0.16 、
0.38 0.09 0.18 0.87 0.38 0.45 0.97 0.13 0.08 0.03 、
0.75 0.17 0.33 580 0.88 0.63 0.14 0.18 0.40 0.79 、
0.59 0.48 0.19 0.71 0.70 0.01 。 0.52 0.01 0.41 、
0.44 0.07 0.87 0.34 0.05 0.64 0.11 1.00 0.70 0.91
] ;
//ランダム行列からデータテーブルを作成します
dtNew =表として(( rndMat ) ;
myCols = N列(( dtNew ) ;
にとって(( q = 1 、 q <= myCols 、 q ++、
col =カラム(( q ) ;
各行について(( col [] =
場合((
col [] >> 100 、 col [] / 1000 、 col []
) ;
場合((
不足している(( col []) == 1 、 col [] = 0 、 col []
) ;
) ;
) ;
小数点以下の桁数の削除とゼロの欠落が修正されました。この方法は正当ですが時間がかかり、データセットが大きいと遅くなる可能性があります。私の意見では、論理索引付けがより良い方法です。 JSLでは、論理インデックスはLoc()関数を使用して実行されます。 これは、伝えるよりも表示する方が少し簡単です。
テーブルとスクリプトウィンドウを閉じます(必要に応じて保存します)。次のスクリプトを新しいスクリプトウィンドウに貼り付けます。 [スクリプトの実行]をクリックします。
名前のデフォルトはここ(( 1 ) ;
//シミュレートされたデータ収集エラーでランダム行列をロードします
rndMat = [
0.35 830 0.71 0.91 0.74 。 0.71 0.92 0.96 0.28 、
0.50 0.93 0.48 0.13 0.70 0.04 0.25 。 0.99 0.98 、
0.26 0.19 750 0.22 0.97 0.35 0.30 0.25 0.64 。 、
0.19 0.19 0.53 0.31 0.58 0.65 0.64 0.53 0.02 0.35 、
640 0.27 0.48 0.63 0.70 0.26 0.83 0.78 0.12 0.30 、
0.54 0.38 0.47 。 0.89 0.71 0.91 。 0.74 0.16 、
0.38 0.09 0.18 0.87 0.38 0.45 0.97 0.13 0.08 0.03 、
0.75 0.17 0.33 580 0.88 0.63 0.14 0.18 0.40 0.79 、
0.59 0.48 0.19 0.71 0.70 0.01 。 0.52 0.01 0.41 、
0.44 0.07 0.87 0.34 0.05 0.64 0.11 1.00 0.70 0.91
] ;
//エラーの場所を見つけて、正しい値に置き換えます
rndMat [ Loc (( rndMat >> 100 )] = rndMat [ Loc (( rndMat >> 100 )] :/ 1000 ;
rndMat [ Loc ((不足している(( rndMat ))]] = 0 ;
dtNew =表として(( rndMat ) ;
結果を見てください! 2行のコードとループなしで、欠落している小数と欠落しているゼロの両方を修正しました。 ループを回避するために、正しい値で新しいデータテーブルを生成したことに注意してください。既存のテーブルを保持する場合は、データテーブルの各列に値を割り当てるためのループが必要です。私はあなたにこれをあなた自身で実験させます。

これが起こったことです。Loc(rndMat> 100)は、値が100より大きいrndMatのインデックスの行列です。rndMat [ Loc (( rndMat >> 100 )] = rndMat [ Loc (( rndMat >> 100 )] :/ 1000これらのインデックスの値を現在の値を1000で割った値に置き換えます。欠落している値をゼロに置き換えるだけなので、欠落している値を置き換えるのは簡単です。
Loc()関数の詳細については、スクリプトガイドの第7章を参照してください。 スクリプトガイドはHelp_Booksの下にあります。論理インデックスは、データクリーニングを超えた有用性があり、初めての場合は検討する価値があります。
これに運動があれば、JMPのパワーをさらに解き放つことができます。
楽しい!