options(digits=2) covariances<-ability.cov$cov correlations<-cov2cor(covariances) #轉化為相關矩陣 correlations
ability.cov提供了變量的協方差矩陣
cov2cor()函數將其轉化為相關系數矩陣本
- 判斷需提取的公共因子數
1 fa.parallel(correlations,n.obs=112,fa="both",n.iter=100,main="Scree plots with parallel analysis")
fa="both",則顯示PCA和EFA兩種線,如果選擇fa="pc",則只會顯示PCA的線,如果fa="fa",則只會顯示因子分析的線。
若使用PCA方法,可能會選擇一個成分或兩個成分。當搖擺不定時,高估因子數通常比低估因子數的結果好,因為高估因子數一般較少曲解“真實”情況。
2.提取公共因子(因子旋轉會更有效)
可使用fa()函數來提取因子,fa()函數的格式為:
fa(r,nfactors=,n.obs=,rotate=,scores=,fm)
r是相關系數矩陣或原始數據矩陣;
nfactors設定提取的因子數(默認為1);
n.obs是觀測數(輸入相關系數矩陣時需要填寫);
rotate設定放置的方法(默認互變異數最小法);
scores設定是否計算因子得分(默認不計算);
fm設定因子化方法(默認極小殘差法)。
與PCA不同,提取公共因子的方法很多,包括最大似然法(ml)、主軸迭代法(pa)、加權最小二乘法(wls)、廣義加權最小二乘法(gls)和最小殘差法(minres)。
- 未旋轉的主軸迭代因子法
fa<-fa(correlations,nfactors=2,rotate="none",fm="pa")
- 正交旋轉,因子分析的重點在於因子結構矩陣(變量與因子的相關系數)
fa.varimax<-fa(correlations,nfactors=2,rotate="varimax",fm="pa")
- 斜交旋轉,因子分析會考慮三個矩陣:因子結構矩陣、因子模式矩陣和因子關聯矩陣。雖然斜交方法更為復雜,但模型將更加符合真實數據。
fa.promax<-fa(correlations,nfactors=2,rotate="promax",fm="pa")
3.使用factor.plot()或fa.diagram()函數,可繪制正交或斜交結果的圖形
factor.plot(fa.promax,labels=rownames(fa.promax$loadings))
fa.diagram(fa.promax,simple=TRUE)
4.因子得分
EFA並不十分關注因子得分,在fa()函數中添加score=TRUE選項,便可輕松地得到因子得分。另外還可以得到得分系數(標准化的回歸權重),它在返回對象的weights元素中。
fa.promax$weights