忍者ブログ
×

[PR]上記の広告は3ヶ月以上新規記事投稿のないブログに表示されています。新しい記事を書く事で広告が消えます。


いつの間にか、psychパッケージの因子分析のオプションが激増していた。William Revelle先生に感謝。


# データの準備
dat <- read.table("https://blog.cnobi.jp/v1/blog/user/89d80905c7038b4121822249e9062fba/1261838567", header = T)
# UCLAのページから拝借。感謝。
## 0をNAで置換する。この記事のコメントで教えていただいた。感謝
dat2 <- dat
dat2[dat2==0] <- NA
dat3 <- na.omit(dat2) # NAを除外する


# 記述統計
## 変数名を保存しておく
orname <- data.frame(itnumber=names(dat), itname=c("INSTRUC WELL PREPARED","INSTRUC SCHOLARLY GRASP","INSTRUCTOR CONFIDENCE","INSTRUCTOR FOCUS LECTURES","INSTRUCTOR USES CLEAR RELEVANT EXAMPLES","INSTRUCTOR SENSITIVE TO STUDENTS","INSTRUCTOR ALLOWS ME TO ASK QUESTIONS","INSTRUCTOR IS ACCESSIBLE TO STUDENTS OUTSIDE CLASS","INSTRUCTOR AWARE OF STUDENTS UNDERSTANDING","I AM SATISFIED WITH STUDENT PERFORMANCE EVALUATION","COMPARED TO OTHER INSTRUCTORS, THIS INSTRUCTOR IS","COMPARED TO OTHER COURSES THIS COURSE WAS"))
dscrb <- data.frame(ITEM=orname$itname, MEAN=mean(dat3), SD=sd(dat3), N=sapply(dat3, length))
dscrb

# スクリープロットと平行分析
library(psych)
fa.parallel(dat3)

# psychパッケージ、fa関数で最尤解の因子分析。プロマックス回転
library(psych)
factMLres <- fa(dat3, 3 ,rotate="promax", fm="ml", scores=T) # 因子得点を出すためにはscores=Tとしておく
print(factMLres, cut=0, sort=T, digits=5) # factanal関数と違って、fa関数はきちんと並べ替えされる

## factanal関数と比較してみる
fctanlres <- factanal(data=dat3, factors=3, rotation="promax", scores="regression")
print(fctanlres, cut=0.00001, digits=5)

## いずれにせよ自由度33のカイ二乗値=135.35, p < .001なので、この因子モデルは適合しない。因子数を増やして再度分析する
factMLres4 <- fa(dat3, 4 ,rotate="promax", fm="ml", scores=T)
factMLres5 <- fa(dat3, 5 ,rotate="promax", fm="ml", scores=T)
factMLres6 <- fa(dat3, 6 ,rotate="promax", fm="ml", scores=T)
## カイ二乗値とp値だけとりだす
factMLres$STATISTIC
factMLres$PVAL
factMLres4$STATISTIC
factMLres4$PVAL
factMLres5$STATISTIC
factMLres5$PVAL
factMLres6$STATISTIC
factMLres6$PVAL
## 5因子解が適合した (ただし、カイ二乗値による結果が絶対ではない。おそらく3因子解が適切だろう)
print(factMLres5, cut=0, sort=T, digits=5)
## 因子得点
factMLres5$scores



# psychパッケージのfa関数はfactanal関数で出力されなかったものも出てくるので便利。負荷量は一致するが、どうも平方和の計算がなんか違う。因子の順番を変えて計算しているようだ?

PR
Comment
1
faとfactanal関数の因子寄与
こんばんわ。修士論文で予備調査の分析にRを使用しています。

fa関数で出力される平方和(SS loadings)は、恐らくですが因子と相関係数の平方和(因子寄与)を出力しているようです。なので、SS loadingsではなく、多分factor contributionのことなのではないかと思います。

というのは、共通性h2の合計を項目数で割ると、fa関数の累積の分散説明率と一致したんです。h2はどちらの関数も一致していますよね。

factanal関数のSS loadingsは、因子負荷の平方和を出力しているようです。自分で列の平方和を計算してみました。


何か気付いたことがあればお聞かせください。
実はたまにここを覗いて参考にさせていただいているので…ありがとうございます。

Trackback
Trackback URL

Comment form
Title
Color & Icon Vodafone絵文字 i-mode絵文字 Ezweb絵文字  
Comment
Name
Mail
URL
Password
プロフィール
HN:
tao
HP:
性別:
非公開
職業:
会社員
趣味:
アウトドア、自転車、ジョギング、英語学習
自己紹介:
・千葉在住のサラリーマンです。データ分析っぽいことが仕事。
・今年英検1級取得。今はTOEIC高得点を目指して勉強中。
・興味のあることは野球、アウトドア、英語学習、統計、プログラミング、PC関係などなど。
ブログ内検索
freead
順位表
プロ野球データFreak
セリーグ順位表
パリーグ順位表