No.03803 関数mahalanobis  【suzuki】 2007/06/29(Fri) 09:40

http://www1.doshisha.ac.jp/~mjin/R/17.html
Rにはマハラノビス距離を求める関数mahalanobisがあるそうですので,
http://aoki2.si.gunma-u.ac.jp/R/maharanobis.html
で定義されている関数 mahalanobis の名称変更を提案します。(例えば,mahalanobis2 など)

また,以下の修正をお願い致します。
修正前
x[i,] %*% solve(ss) %*% x[i,]) # マハラノビスの平方距離
修正案
dif[i,] %*% solve(ss) %*% dif[i,]) # マハラノビスの平方距離

実行例
> dat.m = apply(dat, 2, mean)
> n = nrow(dat)
> dat.v = var(dat)*(n-1)/n
> mahalanobis(rbind(c(1, 2, 5, 3), c(3, 1, 4, 1)), dat.m, dat.v)
[1] 2.000707 8.637195

> mahalanobis2(dat, rbind(c(1, 2, 5, 3), c(3, 1, 4, 1)))
d2 P
1 2.000707 0.73562876
2 8.637195 0.07083601

No.03804 Re: 関数mahalanobis  【青木繁伸】 2007/06/29(Fri) 10:26

ありがとうございます。結局
# マハラノビスの距離による基準群への帰属確率
Mahalanobis <- function(dat, # 基準群のデータ行列
x) # 所属確率を計算するデータ行列
{
dat <- subset(dat, complete.cases(dat)) # 欠損値を持つケースを除く
n <- nrow(dat) # ケース数
p <- ncol(dat) # 変数の個数
ss <- var(dat)*(n-1)/n # 分散・共分散行列
inv.ss <- solve(ss) # 分散共分散行列の逆行列
m <- colMeans(dat) # 各変数の平均値
dif <- t(t(x)-m) # 平均値からの偏差
d2 <- apply(dif, 1,
function(z) z %*% inv.ss %*% z) # マハラノビスの平方距離
P <- pchisq(d2, p, lower.tail=FALSE) # 所属確率
return(data.frame(d2=d2, P=P))
}
としました。

No.03810 Re: 関数mahalanobis  【suzuki】 2007/06/30(Sat) 05:40

対応ありがとうございます。
http://aoki2.si.gunma-u.ac.jp/R/maharanobis.html
におけるMahalanobisのソースが消えています。

現在,マハラノビスの距離を用いた判別分析(300群への帰属の判定)を行っています。
手法の評価には,正判別率(誤判別率)が一般に用いられますが,
手法の評価に,マハラノビス平方距離の(300群のマハラノビス平方距離の平均と標準偏差から算出される)「標準得点(z得点)」または「順位」を用いるのは妥当でしょうか?
誤判別された場合でも,マハラノビス平方距離が(300群の中で)相対的に小さい場合(z得点が-2以下,または順位が10位以内など)には,正解に近いことを示したいと考えます。
いかがでしょうか?あるいは他にもっと良い評価方法をご存知でしたらご教授ください。

No.03815 Re: 関数mahalanobis  【青木繁伸】 2007/06/30(Sat) 21:15

300もの群への判別とは,尋常じゃないですね。

No.03841 Re: 関数mahalanobis  【suzuki】 2007/07/08(Sun) 06:05

複数の群を統合し,群数を減らしました。「マハラノビスの距離による基準群への帰属確率」を用いて判別分析を行う 場合,カットオフ値は何%に設定すべきでしょうか?有意水準のように5%,1%,0.1%などを用いるべきでしょうか?あるいは適切なカットオフ値を設定 するための手法は存在するのでしょうか?
http://www.thermo.com/com/cda/resources/resources_detail/1,2166,13324,00.html
In theory, samples that have a Mahalanobis distance of 3 or greater have a probability of 0.01 or less and can be classified as non-members of the group. Samples that have distances less than 3 are then classified as members. In practice, others have found a Mahalanobis distance of 10-15 works better as a maximum variance for classification33. However, the determination of the cutoff value depends on the application and the type of samples.

● 「統計学関連なんでもあり」の過去ログ--- 040 の目次へジャンプ
● 「統計学関連なんでもあり」の目次へジャンプ
● 直前のページへ戻る