No.14601 主成分分析における主成分の係数の符号について  【統計初心者】 2011/05/09(Mon) 00:29

初めて投稿させていただきます。
現在,B.エヴェリット著「RとS-Plusによる多変量解析」という本で多変量解析について勉強中です。

この本の第3章主成分分析の中で疑問に思ったことがあるので質問させてください。
P.57 主成分分析の実例:米国都市の大気汚染という節で,S-PLUSによる主成分分析の結果が掲載されております(表3.2)。その表の下に本文で,
 
 「結果の出力を表3.2に示す(なお,ここに掲載したのはS-PLUSによる出力である。Rで計算した場合,第一主成分の係数の符号は逆になる)」

とあります。実際に,著者のデータをRにて実行すると第一主成分の負荷量の係数の符号が−ででてきます。

そこで思ったのですが,同じデータをRとS-PLUSという異なったソフト(RとS-PLUSはほとんど同じだという意見も聞くのですが…)で統計処理した場合,このように結果に違いがでてくることというのはあるのでしょうか?

また今回の例の場合,この違いをどのように考えればよいのでしょうか? 主成分の解釈の仕方に違いがでてくるように思うのですが…? 初心者なのでそこのところをどのように考えればいいのかよくわかりません。よろしければ教えていただけないでしょうか?

No.14602 Re: 主成分分析における主成分の係数の符号について  【青木繁伸】 2011/05/09(Mon) 07:38

14181 から始まるスレッドも参照。(上の「ワード検索」で,14181 を検索)

何回も何 回も質問されますが,因子負荷量の符号は,アルゴリズム,ソフトのコンパイラなどによって,一定ではありません。因子負荷量の計算の元になる固有ベクトル の意味からして,固有ベクトルの符号は,正のものと負のものが逆であるという意味しかありません。絶対値が同じで符号が違うという場合,どちらが間違えて いると言うことではありません。
符号は因子単位で付け替えても何の問題もないです。実際に,符号が逆である場合について解釈してみて,どこに違いが出てくるかを実感すれば,よくわかるでしょう。

No.14604 Re: 主成分分析における主成分の係数の符号について  【青木繁伸】 2011/05/09(Mon) 11:13

同じ R でも,バージョン(コンパイラ)の違いで,符号が変わるという例。

R 2.13.0
> set.seed(12345)
> x <- matrix(runif(36, -0.4, 0.4), 6)
> x <- (x+t(x))/2
> diag(x) <- 1
> x
[,1] [,2] [,3] [,4] [,5] [,6]
[1,] 1.00000000 0.08034743 0.19866691 0.02603526 0.04040944 -0.01624842
[2,] 0.08034743 1.00000000 -0.10846326 0.37655828 -0.23025443 -0.33665555
[3,] 0.19866691 -0.10846326 1.00000000 -0.03351091 0.03467505 -0.16392096
[4,] 0.02603526 0.37655828 -0.03351091 1.00000000 0.20378928 0.15572620
[5,] 0.04040944 -0.23025443 0.03467505 0.20378928 1.00000000 -0.05813525
[6,] -0.01624842 -0.33665555 -0.16392096 0.15572620 -0.05813525 1.00000000
> eigen(x)
$values
[1] 1.4534901 1.2915257 1.2210713 0.9983599 0.7716897 0.2638633

$vectors
[,1] [,2] [,3] [,4] [,5] [,6]
[1,] -0.16084502 -0.40539753 0.3385300 0.59271629 0.57641920 -0.1077380
[2,] -0.76865399 0.08969318 -0.1573877 0.04030751 0.01396842 0.6119930
[3,] 0.01185813 -0.64017850 0.2490417 0.12889618 -0.69207605 0.1800711
[4,] -0.45708634 0.40843981 0.5238457 0.07047794 -0.31325617 -0.4967274
[5,] 0.12020081 -0.01750137 0.6905543 -0.55791631 0.25702347 0.3620064
[6,] 0.39972884 0.50064966 0.2175437 0.56054503 -0.15616031 0.4512701


R 1.8.1
> set.seed(12345)
> x <- matrix(runif(36, -0.4, 0.4), 6)
> x <- (x+t(x))/2
> diag(x) <- 1
> x
[,1] [,2] [,3] [,4] [,5] [,6]
[1,] 1.00000000 0.08034743 0.19866691 0.02603526 0.04040944 -0.01624842
[2,] 0.08034743 1.00000000 -0.10846326 0.37655828 -0.23025443 -0.33665555
[3,] 0.19866691 -0.10846326 1.00000000 -0.03351091 0.03467505 -0.16392096
[4,] 0.02603526 0.37655828 -0.03351091 1.00000000 0.20378928 0.15572620
[5,] 0.04040944 -0.23025443 0.03467505 0.20378928 1.00000000 -0.05813525
[6,] -0.01624842 -0.33665555 -0.16392096 0.15572620 -0.05813525 1.00000000
> eigen(x)
$values
[1] 1.4534901 1.2915257 1.2210713 0.9983599 0.7716897 0.2638633

$vectors
[,1] [,2] [,3] [,4] [,5] [,6]
[1,] 0.16084502 -0.40539753 0.3385300 0.59271629 0.57641920 -0.1077380
[2,] 0.76865399 0.08969318 -0.1573877 0.04030751 0.01396842 0.6119930
[3,] -0.01185813 -0.64017850 0.2490417 0.12889618 -0.69207605 0.1800711
[4,] 0.45708634 0.40843981 0.5238457 0.07047794 -0.31325617 -0.4967274
[5,] -0.12020081 -0.01750137 0.6905543 -0.55791631 0.25702347 0.3620064
[6,] -0.39972884 0.50064966 0.2175437 0.56054503 -0.15616031 0.4512701
まあ,そういうもんです。

No.14606 Re: 主成分分析における主成分の係数の符号について  【統計初心者】 2011/05/09(Mon) 21:32

青木先生

丁寧に教えていただきありがとうございました。何度も同じような質問内容があったにも関わらず同じような質問をしてしまい大変申し訳ありませんでした。

14181の投稿も読ませていただきました。先生の「保守−革新」という例えが非常にわかりやすくすっきりしました。プラス,マイナスの符号に大した意味はなく,お互い反対のものを意味しているだけと考えればいいのだとわかりました。
符 号が変わると解釈まで変わるのかと思っていましたが,軸を逆に考えればいいだけなんですね。確かに絶対値は同じですので,解釈自体が変わってくるわけでは ありませんね。RとS-Plusの符号が異なる第一主成分をEveritt自身が著書の中で「生活の質」と解釈していて,生活の質の良し悪しが,主成分の 符号のプラス・マイナスと等価であるかのように誤解してしまったのが間違いのもとだったようです(先生の「保守−革新」という例えで気づきました…)。

ただバージョンなどの違いで符号が変わって算出されてくるというのは新鮮な驚きでした。あまり神経質にならずに考えていいのだとわかっただけでもすっきりしました。

本当にありがとうございました。

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