マハラノビス距離

概略

マハラノビス距離を使って正常さ加減を見えるようにします
製品の品質管理に使ったり設備の状態管理に使ったりすることが期待できます
(ただし、どのように違うかを見えるようにするものではありません)

マハラノビス距離とは

マハラノビス距離の計算から得られる数値は、基準となるデータ群(単位空間)からどれぐらい離れているかという数値が得られます
基準データには品質を見るのであれば寸法や重量や抵抗値などの項目を対象にして、設備の状態を見るのであればタクトタイムや電流値やエア圧などを対象に基準データ群を作成することになります(このFBでは項目数は100個まで対象にできます)
正常な時の各データを収集して基準のデータ群(単位空間)として登録します

例えば、XとYの2つの項目を対象として360点の正常データを登録しグラフで赤点をプロットしたものが下図になります

MahalanobisDistance

赤い点のデータ群が単位空間になります
それに対して黄色の点と橙色の点は検査対象のデータとします
黄色と橙色の点は赤い点の平均(中心)からは同じ距離にありますが、マハラノビス距離で計算すると
黄色=2.4
橙色=23.0
というような数値の違いが出ます
この場合、橙色のXの値が大きいにも関わらずYの値が小さいので何らかの正常ではない要因があると判断します

ここでは2つの項目を対象として計算しましたが、実際は複数の項目を対象に計算をして「正常らしさ」を数値化します

シンボル

MD_MakeUnitSpace
単位空間を生成します
Symbol
入出力
UnitData = 単位データ
StdData = 標準化データ
UnitAveAry = 単位空間データ平均
UnitSdAryData = 単位空間データ標準偏差
CovMatrix = 単位空間共分散行列
InvCovMatrix = 単位空間共分散逆行列
入力
UnitNum = 単位空間データ項目数
DataNum = 単位空間データ数
Multico = 多重共線性チェック有
Sigma = 標準偏差σチェック有

入出力変数の単位データ(UnitData)と入力変数に値を入れ実行します
実行すると入出力変数の単位データ(UnitData)以外の値が出力されます

MD_CalcMD
MD_MakeUnitSpaceで作成した単位空間から信号データ(SignalData)のマハラノビス距離を求めます
Symbol
入出力
SignalData = 信号データ
UnitAveAry = 単位空間データ平均
UnitSdAry = 単位空間データ標準偏差
InvCovMatrix = 単位空間共分散逆行列
入力
UnitNum = 単位空間データ項目数
出力
MD = マハラノビス距離

入出力変数の信号データ(SignalData)と入力の単位空間データ項目数(UnitNum)に値を入れ、さらに、MD_MakeUnitSpaceで作成した単位空間データ平均(UnitAveAry)と単位空間データ標準偏差(UnitSdAry)と単位空間共分散逆行列(InvCovMatrix)の変数をセットして実行します

ダウンロード

SampleMahalanobis.csm2