MT法 の特徴は、MD(マハラノビスの距離の計算で使う行列を、 単位空間 のデータだけで作る点にあります。 MDは、 マハラノビスの距離 のページの定義2や定義3を使います。
単位空間のデータで行列を作ると、距離の原点が、 単位空間の中心( 平均値 )の位置になります。 そうすると、すべてのデータを、 「単位空間の中心からの距離」という、ひとつの尺度で比べられるようになります。
なお、このページの手順は、 マハラノビスの距離 を計算するところまでです。 このページの手順の後に、 MT法による異常の判定 のページがあります。
上記の説明では、具体的な計算がよくわからないかもしれません。 サンプルファイル は、Excelによる定義3の計算例です。 (標準偏差は、分母が n の関数を使います。判定したいサンプルのデータの標準化は、単位空間のデータの平均値と標準偏差を使うのがポイントです。)
Rでの計算例は下記になります。 これは定義2を使っています。 (下記は、コピーペーストで、そのまま使えます。 この例では、Cドライブの「Rtest」というフォルダに、 「Data1.csv」という名前で単位空間のデータがあり、 「Data2.csv」という名前で判定したいサンプルののデータが入っている事を想定しています。
なお、この例では、単位空間と信号空間のデータについて、読み込むファイルを分けています。 MT法の手順を学ぶには、シンプルで良いのですが、 実務では分かれていない方が便利なことが多いです。 実務向きのコードは、 Rによる異常の近傍法分析 のページにあります。
setwd("C:/Rtest") # 作業用ディレクトリを変更
Data1 <- read.csv("Data1.csv", header=T) # 単位空間のデータを読み込み
Data2 <- read.csv("Data2.csv", header=T) # 判定したいサンプルのデータを読み込み
n <- nrow(Data1) # 単位空間のサンプル数を計算
Ave1 <- colMeans(Data1) # 単位空間の各変数の平均値を計算
Var1 <- var(Data1)*(n-1)/n # 単位空間の共分散行列を計算
k <- ncol(Data1) # 変数の数を計算
MD1 <- mahalanobis(Data1, Ave1, Var1)/k # 単位空間のMDの2乗を計算
MD2 <- mahalanobis(Data2, Ave1, Var1)/k # 判定したいサンプルのMDの2乗を計算(この行に、Ave1、Var11が入っているのがポイント)
write.csv(MD1, file = "MD1.csv") # 単位空間のMDの2乗をファイルに出力
write.csv(MD2, file = "MD2.csv") # 判定したいサンプルの2乗をファイルに出力
信号空間 のデータ(異常というラベルが付いているデータ)を持っていて、それと同じ種類の異常かどうかを判定するモデルを作りたいのでしたら、 上記の「判定したいサンプルのデータ」というところに、信号空間のデータを入れてみると良いです。
信号空間のデータを、「異常」と判定できるかどうかを確認します。
モデルのロバスト性という点では、 変数の選択 をして、単位空間と信号空間の判別に意味のない変数は除いておきます。
Rの計算例を使って、変数の選択をする場合は、元のデータファイルで、「変数を削る→Rで計算」の作業を試行錯誤する必要があります。
変数の選択 をして、単位空間と信号空間のMDを明確に分ける変数を絞り込めれば、 その変数は、異常の原因に関係している変数と言えます。
MT法を 因果推論 に使う時は、変数の選択の中で気付く事が重要な情報になります。
順路 次は MT法で計算がおかしい時