R-EDA1によるデータ分析 | ウェブアプリR-EDA1

R-EDA1によるfactory_sensor01の分析

factory_sensor01は、工場で製造している時のデータです。 筆者の知る限りですが、こういったデータは、 その工場の秘密になっていることが普通です。 このページのデータは、筆者が典型的なパターンに近い形になるように、作ったものです。

R-EDA1

このページでは、「不良品の発生の原因は何か?」、「不具合の原因は何か?」という見方で、 R-EDA1 で分析をした事例になります。

R-EDA1は万能ではないので、EXCELも併用する方針にしています。

データの入手

factory_sensor01.csv のリンク先で、このサイト内に保存したcsvファイルをダウンロードできます。 なお、保存されているファイルは、「factory_sensor01.csv」なのですが、「factory_sensor01.xls」というファイルとしてダウンロードされ、 「拡張子がおかしい」という意味のエラーメッセージが出る場合があります。 その場合は、ダウンロードされたファイルの拡張子を「xls」から「csv」に変更すれば、問題なく使えるようになります。

R-EDA1による分析

ここからは、任意の場所にある「factory_sensor01.csv」というファイルを使っています。

集計情報の確認

R-EDA1

Temperature.C.(温度[℃])と、Control(制御)という、2つの変数があります。 Temperature.C.は、最高が、221.2℃、最低が24.0℃です。 Controlは、1と0の2つの値が入っています。

最高温度は、パンや焼菓子を焼く温度とだいたい同じです。 最低温度は、気温くらいになっています。

折れ線グラフによる全体の可視化

R-EDA1

Temperature.C.の山が繰り返していています。 このひとつの山が1回の処理を表しています。 バッチプロセスと呼ばれていて、この1回が、1個や1セットの製品の処理になります。

折れ線グラフによる全体の可視化(つづき)

R-EDA1

Normalizationをすると、Controlの変数の様子もよくわかるようになります。

R-EDA1

R-EDA1

部分的に拡大すると、2つの変数の関係がわかります。 Controlが1の間に、Temperature.C.は上がり続け、最大値のところをしばらく維持した後で、0に変わったところで、下がり始めています。

2次データの作成

波形が繰り返していることは上記からわかりましたが、それ以上はわかりそうもないです。 そこで、繰り返し1回分で集計する形で、 2次データ(特徴量) を作成します。

下図の設定ですが、まず、分析対象の変数がTemperature.C.で1列目にあるので、「Temperature.C.」は「1」にしています。 また、2列目のControlが0と1になって繰り返していることを利用したいので、「Using_01variable_in_table」を「Yes」にして、 「Column of 01variable」を「2」にしています。

設定ができると集計結果が出ます。 この結果を見て分析することもできますが、グラフで見て行きたい時は、下にある「Dwonload type 2 data」を押します。

R-EDA1

多くのデータ分析では、「1」の間が製造の品質を作るために重要なので、「0」の時を見て発見があることは少ないです。 しかし、「0」の時に起きたことが、「1」の時に影響していたり、高温の時に見えない異変が低温の時に見えたりすることがあるので、 「0」の時も特徴量にしておくと良いです。

バッチのまとめ方としては、 「11111・・・100000・・・0」で1バッチとして1行に集計する方法もありますが、 そうしてしまうと、「0」の時の異変が影響していることに気付けなくなるため、 R-EDA1では「00000・・・011111・・・1」で、1バッチとして1行に集計しています。

元のデータは「1」から始まっているため、最初のバッチは「0」の時がないことになります。 そのため、最初のバッチのn_0、Max_0、Min_0、Mean_0は欠損値になります。

2次データの分析

使っている機器によりますが、筆者の場合は、ダウンロードしたファイルは、「ダウンロード」というフォルダに保存されます。
R-EDA1

横軸を1列目にして、2列目以降の全変数との関係を散布図にします。 1列目は、バッチの順番になりますので、バッチ毎の集計データの時系列分析になります。

R-EDA1

ところどころで外れ値があることがわかります。 この後の分析ですが、例えば、「不良品が発生」、「異物が発生」といった現象が1つのバッチで起きているのでしたら、 そのバッチのタイミングがどこになるのかを調べます。 そのバッチのタイミングで、どこかで外れ値が出ているタイミングが合うのでしたら、現象と外れ値に何かの関係があると考えられます。 そうするとそれがヒントになって、機械で何が起きたのか?、機械に何をしたのか?、といった考察ができるようになって来ます。

なお、最初と最後のバッチは、1バッチ分のデータが不足していることがあり、外れ値が出やすいです。 そのため、異常のタイミングが、最初や最後のバッチにならないように、データを用意するのがコツになります。

1次データを再び見てみる

2次データで最高温度に違い出ていますので、改めて最初のデータをグラフにしてみます。 そして、上の方を拡大します。
R-EDA1

R-EDA1

すると、確かに2バッチ目は最高温度が他のバッチよりも高いことがわかります。

2次データを作ると、元のデータでは気付きことが難しいことに簡単に気付けます。 そうしてから、元のデータを見直すと、何が起こっているのかの理解が深まります。

0-1の変数がない場合

factory_sensor01は、Temperature(温度)の変数の他に、Controlという変数があり、これが0と1になっていて、バッチの繰り返しがわかるため、バッチ毎の集計に使っています。

機械によるのですが、Controlのような変数は、文字通りControl(制御)の状態を表す変数として、記録されていることがあります。

このような変数がなく、Temperatureだけの場合は、Temperatureの繰り返しの仕方を利用します。

まず、「Using_01variable_in_table(0-1の変数を使う)」を「No」にします。 また、「Column to divide 0 or 1(0と1に分けるための変数の列)」を、Temperature.C.の列の「1」にします。 そして、「Value to divide 0 or 1」に、温度で分けるための数字を入れます。 例えば、「50」にした場合が、下図になります。 「50」にすると、50より高い間が「1」になり、低い間が「0」になる変数を新しく作ります。

R-EDA1

この機能は、0-1の変数がない場合だけでなく、注目したい区間をうまく切り出す方法として使うこともできます。

もっと複雑な分析する場合

R-EDA1で作ることができる2次データ(特徴量)は、組み込み関数で簡単に作ることができるものです。 これだけでも役に立つ場面はたくさんあります。

ただ、もっと複雑な現象になると、「R-EDA1で簡単に」という訳には行かなくなり、R、Python、VBAなどを使ってプログラミングをして、有効な2次データを作る必要があります。

もっと複雑な波形を分析する場合

実際の工場のデータは、もっと複雑な波形をしていて、その波形の形に製造上の意味があることもあります。 温度にいくつかの段階があったり、温度の下げ方が重要なこともあります。

もっと多くの変数が関係する場合

温度に関係する変数がある場合、例えば、「0から1に変わったタイミングのその変数の値」という特徴量が有効なことがあります。

R-EDA1以外の例

もっと大きなデータを分析する場合

factory_sensor01は、約3000行のデータです。 これくらいでも、2次データの作成に数秒かかることがあります。(処理速度の改善は、今後の課題と思っています。)

実際のセンサーデータは、これよりも桁が多いことが普通ですが、いきなり全部を試さない方が良いです。

「問題が起きている時と、起きていない時」のようにして、分析する期間を絞り込んだ方が、効率的で確実に分析できます。

大きなデータを処理する場合のコツとしては、csvファイルを読み込んだ後で、変数の番号などを指定する順番ではなく、 指定が終わってから、最後にcsvファイルを読み込んだ方が良いです。 そうしないと、R-EDA1は、設定の値が変わるごとに再計算を開始するため、ただでさえ時間のかかる処理が次々と命令されてしまい、フリーズします。






Tweet データサイエンス教室