コマンドは赤字のところを入力してください!

主成分分析とは

多次元データのもつ情報をできるだけ反映して,次元を減らして,情報を縮約する方法

多次元データを2次元や3次元に縮約することで,データ全体を視覚化することができるので,データが持つ情報を解釈しやすくなる。

主成分分析の押さえるところ

  • 主成分の分散→分散共分散行列(相関行列)の固有値
  • 主成分分析は,分散共分散行列から分析を行う場合と,相関行列から行う場合で結果が異なる
  • 尺度(単位)が異なるデータの場合,変数を基準化して分析を行う必要がある。

主成分得点を求めてみよう

下準備

例として,下記のような標準化したデータを用意します。

手順1 ライブラリのインストール

エクセルデータを読み込むために,「openxlsx」をインストールします。

install.packages("openxlsx")

手順2 エクセルを読み込む

library(openxlsx)

データフレーム名 <- read.xlsx("エクセルファイル名")

「df」というデータフレームに格納されました。

次に,「df」の特徴量を確認しておきましょう。

手順3 主成分分析を行う

主成分分析を行う関数【prcomp】を適用する。「df」の主成分分析の結果を「df1」に格納しました。

累積寄与率を読み取る。

関数【summary】を適用し,主成分分析の結果の要約を出力する。

  • Standard deviation(標準偏差)
  • Proportion of Variance(寄与率)
  • Cumulative Proportion(累積寄与率)

    手順4 分析結果の出力

    ① 固有ベクトルの出力

    データフレーム名$rotation:固有ベクトル(主成分軸の係数)

    補足
    見やすくするために,主成分得点を小数点3桁で表示する。
    round(データフレーム名$rotation,3):固有ベクトルを小数点3桁で表示

    持久走・50m走は,数値が小さい方がよいので,マイナスになっていることを考慮する。

    第1主成分は「体力測定の種目の総合得点の因子」であると考えられる。

    つまり,第1主成分が大きい⇒体力測定の総合得点が高い!

    第2主成分は「身体測定の因子」であると考えられる。

    つまり,第2主成分が小さい⇒身体測定の数値が大きい!

    ポイント
    各主成分の意味づけ

    主成分に強く寄与している変数を見つけることが重要

    ② 因子負荷量
    補足
    主成分と各変数との相関関係のこと
    因子負荷量が1かー1に近い因子ほど,主成分に強く寄与している

    1行目:因子負荷量の計算

    固有ベクトル(df1$rotation)と,対応した固有値の平方根(df1$sdev)との積をとる

    3行目:視覚化する(1次元)

    読み取り

    主成分と強い相関(0.8付近)と,主成分と弱い相関に分かれていることが視覚的にわかる。

    視覚化する(2次元)

    第1主成分と第2主成分でプロットする。

    読み取り

    ③ 主成分得点

    下記に,個々のデータを代入したもの

    データフレーム名$x:主成分得点

    biplot(データフレーム名)

    主成分得点をプロットすると,個体の特徴や位置を把握しやすくなる。

    biplot関数を適用することで,解釈しやすい形で主成分得点のプロットを得ることができる。

    ちょっと詳しく

    引数【scale】について,「scale=T」と「scale=F」がある。

     

    • 「scale=T」→相関行列から主成分分析を行う
    • 「scale=F」→分散共分散行列から主成分分析を行う

    参考:統計科学研究所

    https://statistics.co.jp/reference/software_R/statR_9_principal.pdf

    今回の記事を書いた人
    雲雀丘学園中高等学校
    数学科・情報科 林 宏樹
    おすすめの記事