Sepal.Length -0.8348248これから得られた判別式は確かにresult <- predict()のresult$xと一致します。
Sepal.Width -1.9492103
Petal.Length 1.5201382
Petal.Width 4.1007255
定数項: -2.774433
No.12443 Re: 判別式と判別得点について 【青木繁伸】 2010/04/13(Tue) 07:44
そのやり方で判別するなら,分割点は,0.9119362 でしょう。
result$x の群別平均値は
INDICES: versicolor
[1] -1.215915
---------------------------------------------------------
INDICES: virginica
[1] 3.039787
分割点は,両者の中点 0.9119362。前もって,この値を引いておけば,正負で判別することになります。あなたの求めた「定数項:-2.774433」がその役割を果たしていないのです。
なお,prior 引数とか,predict の返す posterior も確認しておくと良いでしょう。
No.12449 Re: 判別式と判別得点について 【のりぶ】 2010/04/13(Tue) 21:49
青木先生
ご回答頂きましてありがとうございます。
てっきりresult$xの正負で判別できるものと勘違いしていました。
正負で判別する場合はresult$x から
apply(判別分析結果$means%*%判別分析結果$scaling,2,mean) を引いた値の正負で
判別すると理解致しました。
先に弊方が提示した例で確かにそうなることを確認しました。
ところが,現在対象としているデータでは正負の値とresult$classが一致しません。
この場合,(計算間違いは兎も角として)他にどのような要因が考えられますでしょうか。
ldaの判別結果と一致する判別式が知りたいだけなのですが・・。
No.12450 Re: 判別式と判別得点について 【青木繁伸】 2010/04/13(Tue) 21:57
繰り返しになりますが,
prior 引数とか,predict の返す posterior も確認しておくと良いでしょう。
MASS:::predict.lda で,predict が何をやっているか見ることができますよ。
posterior は,要するに各ケースがどの群に属するかを表すベイズ確率ですx <- iris[51:120,]
x$Species <- factor(x$Species)
library(MASS)
result <- predict(lda(x$Species~., x))
centroids <- as.matrix(by(result$x, x$Species, mean), 2) # 各群の重心
k <- 2
n.i <- c(50, 20)
d <- sapply(1:k, function(i) colSums((t(result$x)-centroids[i,])^2)) # 重心までの二乗距離
p.Bayes <- t(t(exp(-d/2))*n.i)
p.Bayes <- p.Bayes/rowSums(p.Bayes) # ベイズ確率
head(p.Bayes)
● 「統計学関連なんでもあり」の過去ログ--- 043 の目次へジャンプ
● 「統計学関連なんでもあり」の目次へジャンプ
● 直前のページへ戻る