No.20103 PLS-DAについて  【やま】 2013/07/25(Thu) 17:30

こんにちは。
やまと申します。

PLS-DAのスコアプロットに関して質問があります。

現在,caretパッケージのplsda関数を使用して解析を行っています。
この関数により,Loadingは求めることができたのですが,スコアを求めることができません。テストとしたデータのスコアは,どのように算出されるのでしょうか。

よろしくお願い致します。

No.20104 Re: PLS-DAについて  【青木繁伸】 2013/07/25(Thu) 17:47

使ったことないけど,plsda が返すオブジェクトを str でみると,scores 要素なんでは?
> set.seed(4649)
> (x <- matrix(sample(100, 12, replace=TRUE), 4))
[,1] [,2] [,3]
[1,] 96 76 21
[2,] 85 10 48
[3,] 3 71 19
[4,] 73 75 98
> (y <- factor(c(1,1,2,2)))
[1] 1 1 2 2
Levels: 1 2
> ans <- plsda(x, y, ncomp=2, probMethod="Bayes")
> ans$scores
Comp 1 Comp 2
1 -26.72900 -22.19605
2 -38.32675 2.31466
3 45.27848 -35.20478
4 19.77727 55.08616
attr(,"class")
[1] "scores"
scores 関数で取り出すこともできるようだ。
> scores(ans)
Comp 1 Comp 2
1 -26.72900 -22.19605
2 -38.32675 2.31466
3 45.27848 -35.20478
4 19.77727 55.08616
attr(,"class")
[1] "scores"
答えが分かっているデータを分析してみると,確証が得られますね。(というか,そうでなければ,安心して使えませんが)

No.20106 Re: PLS-DAについて  【やま】 2013/07/26(Fri) 06:17

青木先生

早速のご回答ありがとうございます。
また,実例を示していただき,ありがとうございます。
scores関数があるとは,知りませんでした。

PLS-DAは,例題中のyにあたる数値が未知のデータが,1と2のどちらに属するかを判別する手法であると,私は認識しています。引き続き,PLS-DAについて学び,未知データのスコアプロットを作成してみたいと思います。

No.20108 Re: PLS-DAについて  【青木繁伸】 2013/07/26(Fri) 18:41

plsda と prcomp で,iris データを分析してみました。
このデータセットでは,第1主成分の寄与率が90%以上もあるので,両者よく似た結果になりますね。
で,scores でよさそうです。
ans.plsda <- plsda(iris[, 1:4],  iris[,5], ncomp=2, probMethod="Bayes")
ans.prcomp <- prcomp(iris[, 1:4], ncomp=2)
layout(matrix(1:2, 2))
old <- par(mar=c(3, 3, 1.5, 0.5), mgp=c(1.6, 0.6, 0))
plot(scores(ans.plsda), col=rep(1:3, each=50), main="plsda")
plot(-ans.prcomp$x, col=rep(1:3, each=50), main="prcomp")
par(old)


No.20110 Re: PLS-DAについて  【やま】 2013/07/28(Sun) 13:49

青木先生

ご返信ありがとうございます。
主成分分析との比較まで示していただき,大変助かります。
確かに,大変よく似たグラフですね。

現在は,スコアがどのように計算できるかやcomponent2は,どのような意味を持つかなど,式や細かい点について,PLS-DAを知らない人に説明できるように勉強をしています。

ありがとうございました。
大変お世話になりました。

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