User Tools

Site Tools


factor_analysis_examples

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revisionPrevious revision
Next revision
Previous revision
factor_analysis_examples [2019/11/20 08:52] – [Personality] hkimscilfactor_analysis_examples [2022/05/05 15:02] (current) – [2] hkimscil
Line 1: Line 1:
-====== FA e.gs ====== +====== EFA datasets: Car buying factors ====== 
-====== Personality ======+{{:r:EFA.csv}} 
 <code> <code>
-<- read.table("http://commres.net/wiki/_media/r/personality0.txt")+# read the dataset into R variable using the read.csv(file) function 
 +data <- read.csv("http://commres.net/wiki/_media/r/efa.csv"
 +head(data)
 </code> </code>
  
-살펴보기 (head) 
-구조및성질 (str) 
-상관관계 도식화 (corrplot) 
-  * require corrplot package 
 <code> <code>
-install.packages("corrplot") # if not installed +# install the package 
-library(corrplot+install.packages("psych") 
-corrplot(cor(d), order = "hclust", tl.col='black', tl.cex=.75+install.packages("GPArotation"
-</code> +# load the package 
 +library(psych
 +library(GPArotation
 +</code>
  
-fa 펑션 factor analysis 
 <code> <code>
-library(psych) +# calculate the correlation matrix 
-d.fa <- fa(d, rotate="none") # fa test with no rotation +corMat <- cor(data) 
-names(d.fa# to see what comes with the output d.fa+display the correlation matrix 
 +round(corMat,3)
 </code> </code>
  
-check out the output. 
 <code> <code>
-d.fa+# use fa() to conduct an oblique principal-axis exploratory factor analysis 
 +# save the solution to an R variable 
 +fa.ini <- fa(r = corMat) 
 +# display the solution output 
 +fa.ini
 </code> </code>
  
-compare the output to d.fa$communality 
 <code> <code>
-d.fa$communality+names(fa.ini)
 </code> </code>
  
-for better output 
 <code> <code>
-data.frame(d.fa$communality)+fa.ini$e.values
 </code> </code>
  
-d.fa 아웃풋처럼 round 처리  
 <code> <code>
-round(data.frame(d.fa$communality),3)+num <- 5 
 +fa.5 <- fa(r=corMat, nfactors=num, rotate="varimax", fm="pa"
 +fa.5.oblimin.minres <- fa(r=corMat, nfactors=num, rotate="oblimin", fm="minres") 
 +fa.5.vm.minres <- fa(r=corMatnfactors=num, rotate="varimax", fm="minres"
 + 
 +fa.sort(fa.5.oblimin.minres) 
 +fa.sort(fa.5.vm.minres)
 </code> </code>
  
-check out the uniqueness too +<code
-<WRAP info 70%+> fa.sort(fa.5.oblimin.minres) 
-uniqueness check  +Factor Analysis using method =  minres 
-직접 해 보기 +Call: fa(r = corMat, nfactors = num, rotate = "oblimin", fm = "minres"
-</WRAP>+Standardized loadings (pattern matrix) based upon correlation matrix 
 +                      MR1   MR2   MR4   MR5   MR3   h2    u2 com 
 +Resale_Value         0.73 -0.20  0.08 -0.05 -0.10 0.59 0.413 1.2 
 +Price                0.58  0.23 -0.11 -0.01 -0.07 0.35 0.645 1.4 
 +Maintenance          0.55  0.11 -0.01  0.26  0.01 0.45 0.549 1.5 
 +Fuel_Efficiency      0.38  0.01  0.33  0.23  0.22 0.49 0.512 3.3 
 +Safety              -0.31  0.23  0.17  0.07 -0.24 0.21 0.790 3.6 
 +Space_comfort       -0.02  0.88  0.04 -0.06  0.03 0.83 0.172 1.0 
 +Fuel_Type            0.03  0.52  0.11  0.02 -0.13 0.30 0.699 1.2 
 +Technology           0.00  0.28  0.14  0.06  0.01 0.13 0.873 1.6 
 +After_Sales_Service -0.01  0.04  0.95 -0.01 -0.01 0.92 0.085 1.0 
 +Color                0.03 -0.05  0.02  0.78  0.09 0.67 0.329 1.0 
 +Exterior_Looks       0.09  0.05  0.03 -0.54  0.31 0.33 0.669 1.7 
 +Testimonials        -0.23  0.04 -0.04  0.08  0.63 0.47 0.535 1.3 
 +Test_drive           0.06 -0.02  0.23 -0.06  0.44 0.26 0.745 1.6 
 +Product_reviews      0.33  0.25 -0.08  0.12  0.35 0.36 0.642 3.2
  
 +                       MR1  MR2  MR4  MR5  MR3
 +SS loadings           1.64 1.41 1.21 1.12 0.97
 +Proportion Var        0.12 0.10 0.09 0.08 0.07
 +Cumulative Var        0.12 0.22 0.30 0.38 0.45
 +Proportion Explained  0.26 0.22 0.19 0.18 0.15
 +Cumulative Proportion 0.26 0.48 0.67 0.85 1.00
  
 + With factor correlations of 
 +      MR1   MR2  MR4   MR5  MR3
 +MR1  1.00 -0.03 0.16  0.25 0.03
 +MR2 -0.03  1.00 0.32 -0.07 0.21
 +MR4  0.16  0.32 1.00  0.13 0.07
 +MR5  0.25 -0.07 0.13  1.00 0.17
 +MR3  0.03  0.21 0.07  0.17 1.00
  
 +Mean item complexity =  1.8
 +Test of the hypothesis that 5 factors are sufficient.
 +
 +The degrees of freedom for the null model are  91  and the objective function was  2.97
 +The degrees of freedom for the model are 31  and the objective function was  0.34 
 +
 +The root mean square of the residuals (RMSR) is  0.04 
 +The df corrected root mean square of the residuals is  0.06 
 +
 +Fit based upon off diagonal values = 0.97
 +Measures of factor score adequacy             
 +                                                   MR1  MR2  MR4  MR5  MR3
 +Correlation of (regression) scores with factors   0.87 0.92 0.96 0.86 0.79
 +Multiple R square of scores with factors          0.76 0.85 0.92 0.73 0.63
 +Minimum correlation of possible factor scores     0.52 0.70 0.85 0.46 0.26
 +
 +
 +> fa.sort(fa.5.vm.minres)
 +Factor Analysis using method =  minres
 +Call: fa(r = corMat, nfactors = num, rotate = "varimax", fm = "minres")
 +Standardized loadings (pattern matrix) based upon correlation matrix
 +                      MR1   MR2   MR3   MR5   MR4   h2    u2 com
 +Resale_Value         0.69 -0.22 -0.17  0.16  0.01 0.59 0.413 1.5
 +Maintenance          0.61  0.07  0.07  0.07  0.25 0.45 0.549 1.4
 +Price                0.57  0.15 -0.05 -0.04 -0.02 0.35 0.645 1.2
 +Fuel_Efficiency      0.46  0.09  0.28  0.37  0.23 0.49 0.512 3.2
 +Space_comfort        0.02  0.87  0.21  0.00 -0.17 0.83 0.172 1.2
 +Fuel_Type            0.06  0.54 -0.02  0.08 -0.04 0.30 0.699 1.1
 +Technology           0.04  0.32  0.09  0.13  0.03 0.13 0.873 1.5
 +Safety              -0.28  0.30 -0.16  0.11  0.05 0.21 0.790 2.9
 +Testimonials        -0.18  0.04  0.66 -0.05  0.02 0.47 0.535 1.2
 +Test_drive           0.09  0.06  0.43  0.23 -0.07 0.26 0.745 1.7
 +Product_reviews      0.38  0.18  0.41 -0.03  0.07 0.36 0.642 2.4
 +After_Sales_Service  0.06  0.37  0.06  0.88  0.04 0.92 0.085 1.4
 +Color                0.21 -0.05  0.26  0.07  0.74 0.67 0.329 1.4
 +Exterior_Looks      -0.01  0.05  0.20  0.01 -0.54 0.33 0.669 1.3
 +
 +                       MR1  MR2  MR3  MR5  MR4
 +SS loadings           1.72 1.50 1.09 1.03 1.00
 +Proportion Var        0.12 0.11 0.08 0.07 0.07
 +Cumulative Var        0.12 0.23 0.31 0.38 0.45
 +Proportion Explained  0.27 0.24 0.17 0.16 0.16
 +Cumulative Proportion 0.27 0.51 0.68 0.84 1.00
 +
 +Mean item complexity =  1.7
 +Test of the hypothesis that 5 factors are sufficient.
 +
 +The degrees of freedom for the null model are  91  and the objective function was  2.97
 +The degrees of freedom for the model are 31  and the objective function was  0.34 
 +
 +The root mean square of the residuals (RMSR) is  0.04 
 +The df corrected root mean square of the residuals is  0.06 
 +
 +Fit based upon off diagonal values = 0.97
 +Measures of factor score adequacy             
 +                                                   MR1  MR2  MR3  MR5  MR4
 +Correlation of (regression) scores with factors   0.86 0.91 0.80 0.93 0.82
 +Multiple R square of scores with factors          0.75 0.82 0.64 0.87 0.67
 +Minimum correlation of possible factor scores     0.50 0.64 0.27 0.75 0.34
 +
 +
 +</code>
 +
 +<code>
 +Factor Analysis using method =  minres
 +Call: fa(r = corMat, nfactors = num, rotate = "varimax", fm = "minres")
 +Standardized loadings (pattern matrix) based upon correlation matrix
 +                      MR1   MR2   MR3   MR5   MR4   h2    u2 com
 +----------------------------------------------------------------                      
 +Resale_Value         0.69 -0.22 -0.17  0.16  0.01 0.59 0.413 1.5
 +Maintenance          0.61  0.07  0.07  0.07  0.25 0.45 0.549 1.4
 +Price                0.57  0.15 -0.05 -0.04 -0.02 0.35 0.645 1.2
 +Fuel_Efficiency      0.46  0.09  0.28  0.37  0.23 0.49 0.512 3.2
 +----------------------------------------------------------------
 +Space_comfort        0.02  0.87  0.21  0.00 -0.17 0.83 0.172 1.2
 +Fuel_Type            0.06  0.54 -0.02  0.08 -0.04 0.30 0.699 1.1
 +Technology           0.04  0.32  0.09  0.13  0.03 0.13 0.873 1.5
 +Safety              -0.28  0.30 -0.16  0.11  0.05 0.21 0.790 2.9
 +----------------------------------------------------------------
 +Testimonials        -0.18  0.04  0.66 -0.05  0.02 0.47 0.535 1.2
 +Test_drive           0.09  0.06  0.43  0.23 -0.07 0.26 0.745 1.7
 +Product_reviews      0.38  0.18  0.41 -0.03  0.07 0.36 0.642 2.4
 +----------------------------------------------------------------
 +After_Sales_Service  0.06  0.37  0.06  0.88  0.04 0.92 0.085 1.4
 +----------------------------------------------------------------
 +Color                0.21 -0.05  0.26  0.07  0.74 0.67 0.329 1.4
 +Exterior_Looks      -0.01  0.05  0.20  0.01 -0.54 0.33 0.669 1.3
 +
 +                       MR1  MR2  MR3  MR5  MR4
 +SS loadings           1.72 1.50 1.09 1.03 1.00
 +Proportion Var        0.12 0.11 0.08 0.07 0.07
 +Cumulative Var        0.12 0.23 0.31 0.38 0.45
 +Proportion Explained  0.27 0.24 0.17 0.16 0.16
 +Cumulative Proportion 0.27 0.51 0.68 0.84 1.00
 +</code>
 +
 +====== 2 ======
 +<code>
 +food <- read.csv("http://commres.net/wiki/_media/r/food-texture.csv",
 +                 row.names = "X")
 +str(food)
 +</code>
 +
 +<code>
 +food.ini <- fa(food)
 +food.ini$e.values  # we decide to get two factors based on eigenvalues
 +</code>
 +
 +<code>
 +food.fa <- factanal(food, factors = 2)
 +food.fa
 +food.fa$uniquenesses
 +apply(food.fa$loadings^2,1,sum) # communality
 +1 - apply(food.fa$loadings^2,1,sum) # 1 - communality = uniq
 +</code>
 +
 +<code>
 +Lambda <- food.fa$loadings
 +Psi <- diag(food.fa$uniquenesses)
 +S <- food.fa$correlation
 +Sigma <- Lambda %*% t(Lambda) + Psi
 +</code>
 +
 +<code>
 +round(S - Sigma, 6)
 +</code>
 +
 +<code>
 +food.fa.none <- factanal(food, factors = 2, rotation = "none")
 +food.fa.varimax <- factanal(food, factors = 2, rotation = "varimax")
 +food.fa.promax <- factanal(food, factors = 2, rotation = "promax")
 +
 +par(mfrow = c(1,3))
 +plot(food.fa.none$loadings[,1], 
 +     food.fa.none$loadings[,2],
 +     xlab = "Factor 1", 
 +     ylab = "Factor 2", 
 +     ylim = c(-1,1),
 +     xlim = c(-1,1),
 +     main = "No rotation")
 +abline(h = 0, v = 0)
 +
 +plot(food.fa.varimax$loadings[,1], 
 +     food.fa.varimax$loadings[,2],
 +     xlab = "Factor 1", 
 +     ylab = "Factor 2", 
 +     ylim = c(-1,1),
 +     xlim = c(-1,1),
 +     main = "Varimax rotation")
 +
 +text(food.fa.varimax$loadings[,1]-0.08, 
 +     food.fa.varimax$loadings[,2]+0.08,
 +      colnames(food),
 +      col="blue")
 +abline(h = 0, v = 0)
 +
 +plot(food.fa.promax$loadings[,1], 
 +     food.fa.promax$loadings[,2],
 +     xlab = "Factor 1", 
 +     ylab = "Factor 2",
 +     ylim = c(-1,1),
 +     xlim = c(-1,1),
 +     main = "Promax rotation")
 +abline(h = 0, v = 0)
 +
 +par(mfrow = c(1,1))
 +</code>
factor_analysis_examples.1574207526.txt.gz · Last modified: 2019/11/20 08:52 by hkimscil

Donate Powered by PHP Valid HTML5 Valid CSS Driven by DokuWiki