#用正交選擇提取因子
> fa.varimax <- fa(correlations, nfactors=2, rotate="varimax", fm="pa")
> fa.varimax
Factor Analysis using method = pa
Call: fa(r = correlations, nfactors = 2, rotate = "varimax", fm = "pa")
Standardized loadings (pattern matrix) based upon correlation matrix
PA1 PA2 h2 u2 com
general 0.49 0.57 0.57 0.432 2.0
picture 0.16 0.59 0.38 0.623 1.1
blocks 0.18 0.89 0.83 0.166 1.1
maze 0.13 0.43 0.20 0.798 1.2
reading 0.93 0.20 0.91 0.089 1.1
vocab 0.80 0.23 0.69 0.313 1.2
PA1 PA2
SS loadings 1.83 1.75
Proportion Var 0.30 0.29
Cumulative Var 0.30 0.60
Proportion Explained 0.51 0.49
Cumulative Proportion 0.51 1.00
#後續額外內容刪除
reading、vocab在第一個因子上載荷較大,picture、blocks、maze在第二因子上載荷較大,
可是general(意思爲非語言的普通智力測試)在兩個因子上載荷較爲平均,
說明存在一個語言智力因子和一個非語言智力因子
使用正交旋轉將人爲地強制兩個因子不相關,若是想運行相關,此時能夠使用
斜交轉軸法
> fa.promax <- fa(correlations, nfactors=2, rotate="promax", fm="pa")
> fa.promax
Factor Analysis using method = pa
Call: fa(r = correlations, nfactors = 2, rotate = "promax", fm = "pa")
Warning: A Heywood case was detected.
Standardized loadings (pattern matrix) based upon correlation matrix
PA1 PA2 h2 u2 com
general 0.37 0.48 0.57 0.432 1.9
picture -0.03 0.63 0.38 0.623 1.0
blocks -0.10 0.97 0.83 0.166 1.0
maze 0.00 0.45 0.20 0.798 1.0
reading 1.00 -0.09 0.91 0.089 1.0
vocab 0.84 -0.01 0.69 0.313 1.0
PA1 PA2
SS loadings 1.83 1.75
Proportion Var 0.30 0.29
Cumulative Var 0.30 0.60
Proportion Explained 0.51 0.49
Cumulative Proportion 0.51 1.00
With factor correlations of
PA1 PA2 #注意這裏獲得的是因子模式矩陣,而非相關係數矩陣
PA1 1.00 0.55
PA2 0.55 1.00
#刪除額外的內容
對於正交旋轉,因子分析的重點在於因子結構矩陣(變量與因子的相關係數),
而斜交旋轉,因子分析會考慮三個矩陣
a、因子模式矩陣
即標準化的迴歸係數矩陣,它列出了因子預測變量的權重。
b、因子關聯矩陣
即因子相關係數矩陣
c、因子結構矩陣(因子載荷陣)
因子關聯矩陣顯示兩個因子的相關係數爲0.57,相關性很大,若是因子間的關聯性很低,你可能須要從新使用正交旋轉來簡化問題
因子結構矩陣(或稱因子載荷陣)沒有被列來,但 看使用公式 F = P*Phi 很慶鬆地獲得它,其中 F 是因子載荷陣, P 爲因子模式矩陣,Phi 爲因子關聯矩陣。下面的函數便可進行該算法
> fsm <- function(oblique){
if (class(oblique)[2]=="fa" & is.null(oblique$Phi)){
warning("Object doesn't")
} else{
P <- unclass(oblique$loading)
F <- P %*% oblique$Phi
colnames(F) <- c("PA1","CP2")
return(F)
}
}
> fsm(fa.promax)#將參數
PA1 PA2
general 0.64 0.69
picture 0.33 0.61
blocks 0.44 0.91
maze 0.25 0.45
reading 0.95 0.47
vocab 0.83 0.46
如今你能夠看到變量與因子間的相關係數,將他們與正交選擇所得因子載荷陣相比,會發現該載荷陣列的噪音比較大,這是由於容許潛在因子相關,雖然斜交方法更爲複雜,但模型將更符合真實數據。
使用 factor.plot() 或者 fa.diagram() 函數,你能夠繪製正交或者斜交的結果圖形。來看一下代碼
factor.plot(fa.promax,labels = rownames(fa.promax$loadings)) #以下圖
數據集 ability.cov 中心理學測驗的兩因子圖形。詞彙和閱讀在第一個因子 (PA1) 上載荷較大,而積木圖案、畫圖和迷宮在第二個因子(PA2)上載荷較大。普通智力測試在兩個因子上較爲平均。
使用以下代碼
fa.diagram(fa.promax,simple = FLASE) #以下圖,這類圖形在多個因子時十分實用
數據集 ability.cov 中心理學測驗的兩個因子斜交選擇結果
若使 simple = TRUE ,那麼將僅顯示每一個因子下最大的載荷,以及因子間相關係數。