Rを使った分析(因子分析)

■ 分析前にやっておくこと

(1) Rのインストール
(2) 作業ディレクトリの確認と変更をしておく
(3) 作業ディレクトリにデータを入れておく
(4) 必要なパッケージをインストールしておく

 


データの読み込み

書籍使用データ(右クリックで「別名で保存」して作業ディレクトリに入れる)

dat <- read.csv("ch12efa.csv", header=TRUE, fileEncoding="CP932")
# fileEncoding="CP932"はMacの場合入れる

dat <- dat[,-1]  # IDの入っている一列目以外を指定

もしくは,Excel を開いてデータ範囲をコピーしてから読み込む
(クリップボードからのデータ読み込み)

Macの場合

dat <- read.table(pipe("pbpaste"), header=TRUE)  
# header=TRUEで変数名を含む,FALSEにすると含まない

Windowsの場合

dat <- read.table("clipboard", header=TRUE) 
# header=TRUEで変数名を含む,FALSEにすると含まない

 

記述統計

library(psych)  # psychパッケージ使用
describe(dat)

その他はこちらを参照

 

変数間の相関係数の確認

cor(dat)
round(cor(dat),3)  # 小数点以下3桁で丸める
# psychパッケージを使って散布図作成(相関係数,ヒストグラム,回帰直線)
library(psych)
par(family="HiraKakuPro-W3") #Macで日本語表示する
pairs.panels(dat)

 

スクリープロットを作図

VSS.scree(dat)

#固有値の確認
corx <- cor(dat)
eigen(corx)$values

#説明された分散の%(寄与率)
eigen(corx)$values/sum(eigen(corx)$values)

 

因子分析(最尤法・プロマックス回転)の実行

efa <- factanal(dat,factors=2,rotation="promax")  # 因子数と回転の指定
common <- 1-efa$uniqueness 
common   #共通性(因子抽出後)
print(efa, cutoff=0)

※その他の因子推定法と回転方法はこちらを参照

青木繁伸先生のサイトにあるコードを使用して,因子負荷量で並べ替え

source("http://aoki2.si.gunma-u.ac.jp/R/src/sort.loadings.R", encoding="euc-jp")
print(sort.loadings(efa), cutoff=0)

※ 因子負荷量や因子間相関はSPSSで最尤法,プロマックス回転を行ったものとは若干異なる。これはプログラミングによる違いによるもの。

 

因子負荷量を因子ごとにグラフ化

par(mfrow = c(1, 2))   # グラフを横に2つ並べる
barplot(efa$loadings[,1], main="Factor1", ylim=c(0,1))
barplot(efa$loadings[,2], main="Factor2", ylim=c(0,1))

 

因子プロット

plot(efa$loadings[,1:2], type="n", xlim=c(-1,1), ylim=c(-1,1))
text(efa$loadings[,1:2], colnames(dat))
abline(v=0, lty=3) #0で縦に線を引き,破線(lty=3)を引く
abline(h=0, lty=3) #0で横に線を引き,破線(lty=3)を引く

 

下位尺度得点と信頼性係数算出

attach(dat)
f1 <- (item5 + item6 + item7 + item8)/4  #因子1の下位尺度得点
f2 <- (item1 + item2 + item3 + item4)/4  #因子2の下位尺度得点
library(psych)  #psychパッケージ使用
describe(f1)    #因子1の記述統計
describe(f2)    #因子2の記述統計
dat <- cbind(dat, f1, f2)  #因子1と2をデータフレームに追加
dat
library(psych)  #psychパッケージ使用
f1.alpha <- alpha(data.frame(item5, item6, item7, item8))
f1.alpha        #因子1の信頼性係数
f2.alpha <- alpha(data.frame(item1, item2, item3, item4))
f2.alpha        #因子2の信頼性係数

 

 


■ Rcommanderを使う場合

library(Rcmdr)   # Rcommanderパッケージの読み込み

コンソールでデータの読み込みができている場合は,
<アクティブデータセットなし>をクリックし,datを選択。
参照 Rコマンダーでデータを読み込む場合

 

記述統計と相関係数

(1) 記述統計は,[統計量]→[要約]→[数値による要約]を選ぶ。

(2) 相関係数は,[統計量]→[要約]→[相関行列]で変数を選択する。

固有値確認とスクリープロット作図

[統計量]→[次元解析]→[主成分分析]を選択し,変数を選択し,
スクリープロットにチェックを入れてOKをクリック。
(主成分分析は因子分析ではないが,ここでは固有値や
スクリープロット作図のために選択必要)

因子分析の実行

[統計量]→[次元解析]→[因子分析]で変数を選択して,「因子の回転」を
プロマックスにしてOKをクリックし,抽出する因子数を決めてOK。

下位尺度得点と信頼性係数算出

(1) 下位尺度得点は,[データ]→[アクティブデータセット内の変数の管理]
→[新しい変数を計算]を選択。「新しい変数名」に f1 などと入力し,
「計算式」には,(item5+ item6+ item7+ item8)/4  を入力しOKをクリック。
f2 についても,同じように計算する。

(2)  因子ごとの記述統計は,[統計量]→[要約]→[数値による要約]を選んで,
計算する変数を選択する。

(3) 信頼性係数は,[統計量]→[次元解析]→[スケールの信頼性]から,
下位尺度に含まれる変数を選択してOKをクリック。