相性の悪い生産条件を統計的に見つける(Python)
製品にもよりますが、相性の悪い生産条件というものもあったりします。いい例が思いつかないのですが、設備A1で生産したものを次の工程で設備B1に投入する場合は問題無いのに、設備B2に投入すると歩留まりが悪化するなどのケースでしょうか。
下記のプログラムは、こんな統計処理もあって良いんじゃないかと思ったので、思いつきで書いてみました。案外処理が難しかったので、備忘録的に残しておこうと思います。
少し結果が見にくいかもしれませんが、パラメータ同士の組み合わせが不良率にどう影響するかを集計しています。
import pandas as pd import itertools df = pd.DataFrame({ "説明変数1": ["A", "A", "A", "B", "B"], "説明変数2": ["C", "C", "D", "D", "C"], "説明変数3": ["E", "E", "F", "F", "E"], "生産数": [100, 200, 300, 100, 100], "不良数": [2, 1, 3, 1, 5], "不良率": [0.02, 0.005, 0.01, 0.01, 0.05] }) l = [] for grp in itertools.combinations(["説明変数1", "説明変数2", "説明変数3"], 2): tmp = df.groupby(grp).sum().loc[:, ['生産数', '不良数']] tmp.index = tmp.index.rename(['説明変数A', '説明変数B']) l.append(tmp) group = pd.concat(l).sort_index() group["不良率"] = group["不良数"] / group["生産数"] print(group) # 生産数 不良数 不良率 #説明変数A 説明変数B #A C 300 3 0.01 # D 300 3 0.01 # E 300 3 0.01 # F 300 3 0.01 #B C 100 5 0.05 # D 100 1 0.01 # E 100 5 0.05 # F 100 1 0.01 #C E 400 8 0.02 #D F 400 4 0.01