R をインストールし、主成分分析を試してみました。
最初はEXCELでもできるかな?と思い、分散共分散行列まで作りました。が、固有値・固有ベクトルを簡単に出す方法が分かりませんでした。HPを探してみるとソルバーやマクロなど、繰り返し計算で解決している例がりありましたが、それなら最初からRを使った方がミスがなく正確だと思い、トライしました。(一応、EXCELでも答えはRと同じでしたが。)
基本CUIですが、コマンドの修正(打ち直し)やコピペができたり、クリップボード経由でEXCELからデータを読み込めたりします。DOSに比べると雲泥の差(EXCELシートを直接読めるパッケージもあるそうです)。さすが有名なオープンソース。
使ったコマンドは以下の通り。備忘録です。
クリップボードからの読み込み
> sui <- read.delim("clipboard")
> sui
pH 温度 電気伝導度mS.m
1 7.70 11.4 88.5
2 8.19 10.7 21.8
3 7.65 9.4 21.3
・ ・ ・ ・
・ ・ ・ ・
標準化
> sui.scale <- scale(sui)
> sui.scale
pH 温度 電気伝導度mS.m
[1,] -0.6883099 -0.182747450 3.17019503
[2,] 1.2956421 -0.856027531 -1.40223461
[3,] -0.8907540 -2.106404823 -1.43651069
・ ・ ・ ・
・ ・ ・ ・
attr(,"scaled:center")
pH 温度 電気伝導度mS.m
7.870 11.590 42.255
attr(,"scaled:scale")
pH 温度 電気伝導度mS.m
0.2469818 1.0396862 14.5874306
主成分分析
> sui.sc.pc=princomp(sui.sc)
> summary(sui.sc.pc)
Importance of components:
Comp.1 Comp.2 Comp.3
Standard deviation 1.3646128 0.7299083 0.6745857 #固有値の平方根
Proportion of Variance 0.6533923 0.1869355 0.1596722
Cumulative Proportion 0.6533923 0.8403278 1.0000000
> sui.sc.pc$loadings #固有ベクトル(空白≒0)
Loadings:
Comp.1 Comp.2 Comp.3
pH 0.568 0.731 0.379
温度 -0.571 0.681 -0.458
電気伝導度mS.m -0.593 0.804
> sui.sc.pc$scores #主成分得点
Comp.1 Comp.2 Comp.3
[1,] -2.166246269 -0.48843793 2.371942062
[2,] 2.055847666 0.30255612 -0.244302505
[3,] 1.549110746 -2.14863233 -0.526860394
・ ・ ・ ・
・ ・ ・ ・
生データを主成分分析にかけると、それぞれの測定項目の桁が同等に評価されるのか、圧倒的に電気伝導度のばらつきで規制されます。得られた固有ベクトルを使って主成分得点をEXCELで検算しても、結果は合いません。上記ト関連し、固有ベクトルの桁数が影響しているのでしょうか?詳細は分かりませんが。 標準化後に主成分分析を行うと、検算もあいました。OKです。データ項目の数値、桁の価値を見ることも大事なんでしょうね。あるいは適切な前処理が必要ということかな?
続きは後日。
0 件のコメント:
コメントを投稿