jnobuyukiのブログ

研究していて困ったことやその解決に関するメモ。同じように困ったあなたのために。twitter ID: @j_nobuyuki

Rのfactanal関数で因子分析した時に因子負荷行列を全て表示したい

今回はRを利用した分析に関する非常に細かい話です。

因子分析とは

因子分析は、ある個人・対象について、複数の指標で計測を行った場合に、それらの指標を上手に要約する方法の1つです。例えば、ある学校のある学年の生徒に国語・算数・理科・社会のテストを実施したとします。生徒一人ひとりに各教科の得点が記録されている状況です。もちろん各教科ごとにみていけば良いのですが、4つの科目の成績を因子分析によって1つに要約し、いわゆる「学力」のようなものを考えることができます。この「学力」のように、要約された変数(因子と呼びます)は、それを実際に測るわけではないところが、少しわかりにくいかもしれません。また、単純なテスト得点の合計であれば、強化ごとの重み付けを考える必要がありませんが、因子分析では、因子が各指標に対してどの程度影響を持っているか *1の重み付けを計算しています。これが因子負荷です。

Rのfactanal関数で因子分析

因子分析をR言語で行う場合は、factanal関数が利用できます。引数として複数の指標のデータテーブル、因子数、回転方法を指定します。以下の例ではdataset*2というデータテーブルに対して因子数2, 因子の回転方法としてpromax法を指定した書き方を示しています。

res.factanal <- factanal(dataset, factors = 2, rotation = "promax")

因子負荷行列の負荷量の値を全て表示したい

factanal関数の結果はprint関数で表示できます。ただしこの時、因子負荷量が0.1未満の値は非表示となるようにデフォルトが設定されています。実際に見てみると表示がない値が気になるだけでなく、非表示があることで見にくくなります。これを避けるには、結果を表示する際のprint関数にcutoffという引数を値0を代入して加えます。これで全ての因子負荷量が表示され、結果として、表全体も見やすくなります。

print(res.factanal, cutoff = 0)

*1:今回深く説明しないのですが、因果の方向的には因子がまずあって、測定可能な指標は、その因子の影響を受けていると考えます

*2:Rのベースパッケージで利用可能なirisというデータ