主成分分析その1

こんにちは。今回は主成分分析を勉強したので、その方法を具体例を用いて説明していきたいと思います。拙い説明でありもっと良い方法があるかもしれませんがご容赦ください。

 

0.主成分分析とは? 

高校の定期試験の点数(数学、国語、物理、日本史、倫理etc)や食べ物の味の構成要素(酸味、うま味、甘味、苦味、辛味)などの変数をうまく合成して、新たな変数(通常は2つか3つ)を作り出し数値化することでその集団の全体的な傾向を表してみようというものです。

 

今回はRでの実装の仕方に主眼を置いて解説していきたいと思います。

 

2.データセットの用意

まず主成分分析をするにあたってデータセットを用意します。以下Excelで作ったデータをRに読み込ませる手順を書いていきます。

(a) 図のようなExcelデータを作ります。(値は適当でかまいません。今回は分析の方法に主眼を置くためデータの解釈等はしません。)

 

f:id:bislogyaruka:20160201174023p:plain

 

(b) 次に、このExcelのデータを「名前を付けて保存」を選び、「ファイルの種類」を「CSV(カンマ区切り)」を選択し保存をします。

 

(c) Rを開いて、以下の図のようにコマンド「data=read.table("保存したファイル名.csv",sep=",",header=T)」を入力するとExcelファイルをRに読み込めます。私は保存したファイル名は「R data」なので、コマンドでは「"R data.csv"」となっています。読み込んだ後にデータセット名(私は、「data」にしました。)を入力すると読み込んだ内容が以下のように出力されます。

f:id:bislogyaruka:20160201174903p:plain

このままでは、行の名前が無いので、以下のように「data」行の名前を指定するコマンド「colnames(data)」を用いてデータセットが完成します。

 

f:id:bislogyaruka:20160201175946p:plain

 

3. 主成分分析のコマンド

 主成分分析は「princomp」というコマンドを使用します。読み取ったデータ「data」に対して主成分分析を行うので、「data2<-princomp(データセット名)」のように入力し、関数summaryを用いて「summary(data2)」と入力すれば以下のように第1主成分,第2主成分などの標準偏差、寄与率、累積寄与率算出されます。

 さらに、「data2$loadings」と入力することで、国語や理科などの第1主成分が分かります。

f:id:bislogyaruka:20160201181627p:plain

 

4. 主成分得点を出す。

主成分得点を算出するには、「round(data2$scores,2)」と入力すれば、以下のように第1主成分得点から第5主成分得点まで表示される。ここで小数点以下2ケタまでを丸めた数値を返している。

f:id:bislogyaruka:20160210133551p:plain

 となる。以上が主成分得点の算出法である。今回の数値ではComulative proportion(累積寄与率)が0.2,0.4,...となっていますが、実務的には累積寄与率が70~80%のところの主成分までを採用することが多いそうです*1。なので今回は第4主成分までを用いることになります。

 

今回は主成分分析をRで行う際のコマンドを書きましたが、次回は主成分分析の理論的な側面を詳しく書いていきたいと思います。