R語言 EFA(探索性因子分析)


EFA的目標是通過發掘隱藏在數據下的一組較少的、更為基本的無法觀測的變量,來解釋一組可觀測變量的相關性。這些虛擬的、無法觀測的變量稱作因子。(每個因子被認為可解釋多個觀測變量間共有的方差,也叫作公共因子)
模型的形式為:
X i=a 1F 1+a 2F 2+……a pF p+U i
X i是第i個可觀測變量(i=1,2,……k)
F j是公共因子(j=1,2,……p)
並且p<k
options(digits=2)
covariances<-ability.cov$cov
correlations<-cov2cor(covariances) #轉化為相關矩陣
correlations

  

ability.cov提供了變量的協方差矩陣

cov2cor()函數將其轉化為相關系數矩陣本

  1.  判斷需提取的公共因子數
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 

        

  程序猿必讀


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM