Data and question

Speed Dating dataset (Kaggle) “What influences love at first sight?” Read about the experiment. https://www.kaggle.com/annavictoria/speed-dating-experiment

dating <-read.csv("Speed Dating Data.csv")
names(dating)
##   [1] "iid"      "id"       "gender"   "idg"      "condtn"   "wave"    
##   [7] "round"    "position" "positin1" "order"    "partner"  "pid"     
##  [13] "match"    "int_corr" "samerace" "age_o"    "race_o"   "pf_o_att"
##  [19] "pf_o_sin" "pf_o_int" "pf_o_fun" "pf_o_amb" "pf_o_sha" "dec_o"   
##  [25] "attr_o"   "sinc_o"   "intel_o"  "fun_o"    "amb_o"    "shar_o"  
##  [31] "like_o"   "prob_o"   "met_o"    "age"      "field"    "field_cd"
##  [37] "undergra" "mn_sat"   "tuition"  "race"     "imprace"  "imprelig"
##  [43] "from"     "zipcode"  "income"   "goal"     "date"     "go_out"  
##  [49] "career"   "career_c" "sports"   "tvsports" "exercise" "dining"  
##  [55] "museums"  "art"      "hiking"   "gaming"   "clubbing" "reading" 
##  [61] "tv"       "theater"  "movies"   "concerts" "music"    "shopping"
##  [67] "yoga"     "exphappy" "expnum"   "attr1_1"  "sinc1_1"  "intel1_1"
##  [73] "fun1_1"   "amb1_1"   "shar1_1"  "attr4_1"  "sinc4_1"  "intel4_1"
##  [79] "fun4_1"   "amb4_1"   "shar4_1"  "attr2_1"  "sinc2_1"  "intel2_1"
##  [85] "fun2_1"   "amb2_1"   "shar2_1"  "attr3_1"  "sinc3_1"  "fun3_1"  
##  [91] "intel3_1" "amb3_1"   "attr5_1"  "sinc5_1"  "intel5_1" "fun5_1"  
##  [97] "amb5_1"   "dec"      "attr"     "sinc"     "intel"    "fun"     
## [103] "amb"      "shar"     "like"     "prob"     "met"      "match_es"
## [109] "attr1_s"  "sinc1_s"  "intel1_s" "fun1_s"   "amb1_s"   "shar1_s" 
## [115] "attr3_s"  "sinc3_s"  "intel3_s" "fun3_s"   "amb3_s"   "satis_2" 
## [121] "length"   "numdat_2" "attr7_2"  "sinc7_2"  "intel7_2" "fun7_2"  
## [127] "amb7_2"   "shar7_2"  "attr1_2"  "sinc1_2"  "intel1_2" "fun1_2"  
## [133] "amb1_2"   "shar1_2"  "attr4_2"  "sinc4_2"  "intel4_2" "fun4_2"  
## [139] "amb4_2"   "shar4_2"  "attr2_2"  "sinc2_2"  "intel2_2" "fun2_2"  
## [145] "amb2_2"   "shar2_2"  "attr3_2"  "sinc3_2"  "intel3_2" "fun3_2"  
## [151] "amb3_2"   "attr5_2"  "sinc5_2"  "intel5_2" "fun5_2"   "amb5_2"  
## [157] "you_call" "them_cal" "date_3"   "numdat_3" "num_in_3" "attr1_3" 
## [163] "sinc1_3"  "intel1_3" "fun1_3"   "amb1_3"   "shar1_3"  "attr7_3" 
## [169] "sinc7_3"  "intel7_3" "fun7_3"   "amb7_3"   "shar7_3"  "attr4_3" 
## [175] "sinc4_3"  "intel4_3" "fun4_3"   "amb4_3"   "shar4_3"  "attr2_3" 
## [181] "sinc2_3"  "intel2_3" "fun2_3"   "amb2_3"   "shar2_3"  "attr3_3" 
## [187] "sinc3_3"  "intel3_3" "fun3_3"   "amb3_3"   "attr5_3"  "sinc5_3" 
## [193] "intel5_3" "fun5_3"   "amb5_3"
# Choose the variables we think belong to factors.
dating1<- dating[c("imprace","imprelig", "date", "go_out", "sports", 
                   "tvsports", "exercise",  "dining" , "museums",  "art",  
                   "hiking", "gaming",  "clubbing",  
                   "reading", "tv",  "theater", "movies",  "concerts",   
                   "music",   "shopping",   "yoga", "exphappy" , "attr1_1",
                   "sinc1_1",   "intel1_1", "fun1_1",   "amb1_1",   
                   "shar1_1", "attr2_1", "sinc2_1",   "intel2_1",   
                   "fun2_1",   "amb2_1",   "shar2_1",   "attr3_1",   "sinc3_1",
                   "intel3_1",   "fun3_1",   "amb3_1")]
dating1 <- as.data.frame(dating1)
dim(dating1)                
## [1] 8378   39
# summary(dating1)

We have such a question: Are there latent factors which explain correlations of the observed variables?

Part 1

NB:

If you have ordinal or binary variables, there are two ways:

  • in advance create a correlation matrix using the hetcor function (that selects the type of correlation for the type of variables)
  • use cor = “mixed” in fa.
library(polycor)
dat.cor <- hetcor(dating1)
dat.cor<- dat.cor$correlations
  • Check the type of variables.
  • fa does not work with NA
dating12 <- na.omit(dating1)
library(psych)
## 
## Attaching package: 'psych'
## The following object is masked from 'package:polycor':
## 
##     polyserial
fa.parallel(dating12, fa="both", n.iter=100) 

## Parallel analysis suggests that the number of factors =  15  and the number of components =  13

How many factors should be extracted? Interpret the Parallel Analysis screen plot.

Here we need to count how many crosses are above black line - that’s the N of factors, suggested by parallel analysis. We have 15. The hogher the cross - the better is explains it’s varables (higher eigenvalues).

Let’s try to use the maximum number of factors firstly.

[1] No rotation

fa(dating12, nfactors=15, rotate="none", fm="ml") 
## Factor Analysis using method =  ml
## Call: fa(r = dating12, nfactors = 15, rotate = "none", fm = "ml")
## Standardized loadings (pattern matrix) based upon correlation matrix
##            ML1   ML2  ML11  ML10  ML12  ML13   ML4   ML5   ML3  ML14  ML15
## imprace  -0.06  0.01 -0.03  0.14  0.16 -0.08  0.05  0.02  0.07  0.29 -0.09
## imprelig  0.01  0.19 -0.09  0.04  0.10  0.01  0.14 -0.02  0.08  0.21  0.01
## date      0.04  0.24 -0.09 -0.04 -0.06 -0.14 -0.02  0.03 -0.08 -0.06 -0.19
## go_out    0.06  0.12  0.03 -0.01 -0.09 -0.18 -0.05 -0.11 -0.14 -0.02 -0.19
## sports    0.02 -0.23 -0.04 -0.03  0.20  0.72 -0.14 -0.06  0.00  0.11 -0.29
## tvsports  0.06 -0.14 -0.01  0.04  0.35  0.31 -0.18 -0.12 -0.03  0.26 -0.30
## exercise -0.11 -0.04 -0.05  0.12  0.12  0.39 -0.01  0.03  0.04  0.19 -0.09
## dining   -0.06  0.06  0.25  0.31  0.14  0.03  0.10  0.03  0.07  0.12  0.23
## museums  -0.03  0.18  0.80  0.43 -0.15  0.03  0.12  0.03  0.04  0.08 -0.04
## art      -0.04  0.13  0.73  0.43 -0.10  0.01  0.07  0.03  0.06  0.00  0.00
## hiking    0.08  0.04  0.20  0.11 -0.02  0.25 -0.03  0.03 -0.06 -0.16 -0.09
## gaming    0.12 -0.17  0.00  0.05  0.28  0.00 -0.10 -0.04  0.02  0.08 -0.09
## clubbing -0.06 -0.07  0.06  0.19  0.13  0.07 -0.03  0.05 -0.02 -0.01  0.06
## reading   0.02  0.14  0.24  0.08 -0.09 -0.01  0.16  0.02  0.02  0.03  0.12
## tv        0.06  0.11 -0.01  0.14  0.51 -0.38 -0.02 -0.01 -0.02  0.54 -0.13
## theater  -0.01  0.24  0.39  0.37  0.16 -0.22  0.14  0.03 -0.01  0.01  0.01
## movies    0.03  0.14  0.27  0.20  0.36 -0.26  0.08  0.01 -0.05  0.02 -0.02
## concerts  0.00  0.12  0.42  0.24  0.54 -0.04  0.04 -0.11  0.04 -0.49 -0.05
## music    -0.01  0.06  0.29  0.21  0.50  0.01  0.03 -0.04  0.03 -0.36  0.10
## shopping -0.14  0.08  0.09  0.35  0.35 -0.20  0.05  0.06 -0.01  0.27  0.09
## yoga      0.00  0.12  0.20  0.20  0.10  0.06  0.06  0.00  0.05 -0.08  0.11
## exphappy  0.12 -0.20  0.13  0.01  0.17  0.18 -0.07  0.03  0.00 -0.01  0.01
## attr1_1  -0.64 -0.55  0.03 -0.03  0.00  0.00 -0.41 -0.17  0.06  0.00  0.00
## sinc1_1   0.41  0.43  0.02 -0.04  0.00  0.00 -0.04 -0.24 -0.74  0.00  0.00
## intel1_1 -0.02  0.07  0.08 -0.30  0.03  0.01  0.53  0.06  0.03  0.01  0.01
## fun1_1    0.05 -0.19  0.14 -0.24  0.00  0.00  0.18  0.58 -0.03  0.00  0.00
## amb1_1    0.25  0.21 -0.38  0.74 -0.04  0.00  0.21  0.20  0.10 -0.03 -0.02
## shar1_1   0.50  0.49  0.03 -0.04  0.00  0.00 -0.12 -0.22  0.61  0.00  0.00
## attr2_1  -0.87  0.38 -0.01  0.00  0.00  0.00  0.02 -0.20 -0.04  0.00  0.00
## sinc2_1   0.68 -0.25  0.00  0.01  0.00  0.00 -0.55  0.06 -0.17  0.00  0.00
## intel2_1  0.50 -0.61  0.00  0.02  0.00  0.00  0.48 -0.32  0.01  0.00  0.00
## fun2_1    0.05  0.05  0.01  0.02  0.01  0.00  0.21  0.73 -0.14  0.00  0.00
## amb2_1    0.36 -0.34  0.04 -0.02  0.01 -0.01 -0.03 -0.06  0.11  0.00  0.00
## shar2_1   0.53  0.26 -0.01 -0.02  0.00  0.00 -0.12  0.06  0.32  0.00  0.00
## attr3_1  -0.08 -0.20  0.03  0.22  0.12  0.29 -0.07  0.08  0.09  0.17  0.45
## sinc3_1   0.12  0.20  0.09  0.09  0.16  0.17  0.02 -0.12 -0.21  0.11  0.24
## intel3_1  0.05 -0.10  0.04  0.01  0.09  0.27  0.03 -0.04  0.14  0.20  0.41
## fun3_1   -0.08 -0.14  0.09  0.23  0.25  0.26 -0.02  0.03  0.04  0.15  0.44
## amb3_1   -0.05 -0.14 -0.11  0.39  0.20  0.21  0.00  0.01  0.13  0.11  0.28
##            ML9   ML7   ML8   ML6    h2     u2 com
## imprace   0.01  0.02  0.02 -0.01 0.155 0.8451 2.9
## imprelig -0.01  0.01  0.05 -0.02 0.130 0.8702 4.4
## date      0.04 -0.03  0.01  0.02 0.144 0.8561 3.9
## go_out   -0.07 -0.04 -0.04  0.00 0.138 0.8623 5.9
## sports    0.07 -0.02 -0.06  0.10 0.751 0.2491 2.0
## tvsports  0.15 -0.05  0.03 -0.04 0.478 0.5217 5.7
## exercise  0.04  0.01 -0.02  0.05 0.248 0.7518 2.5
## dining   -0.04  0.13  0.02 -0.02 0.298 0.7025 4.9
## museums  -0.11  0.10  0.13 -0.04 0.938 0.0616 2.0
## art      -0.04  0.14  0.11 -0.05 0.790 0.2102 2.0
## hiking    0.06  0.03 -0.04  0.04 0.165 0.8350 4.5
## gaming    0.00 -0.01 -0.07 -0.04 0.156 0.8445 3.3
## clubbing  0.06  0.02  0.00 -0.06 0.085 0.9147 4.3
## reading  -0.13  0.05  0.06  0.02 0.156 0.8440 5.0
## tv        0.09  0.01  0.01 -0.03 0.756 0.2445 3.3
## theater  -0.04  0.18  0.06 -0.01 0.483 0.5174 4.6
## movies   -0.02  0.08  0.08 -0.02 0.353 0.6471 4.3
## concerts  0.03  0.08 -0.02  0.01 0.810 0.1901 3.7
## music     0.08  0.04 -0.01  0.08 0.537 0.4629 3.3
## shopping  0.08  0.07  0.04 -0.04 0.419 0.5807 4.8
## yoga      0.08  0.08  0.04  0.01 0.147 0.8532 5.4
## exphappy  0.04  0.04 -0.02 -0.01 0.141 0.8585 4.9
## attr1_1  -0.06  0.05 -0.16  0.22 0.995 0.0050 3.4
## sinc1_1   0.00 -0.04 -0.10  0.17 0.995 0.0050 2.7
## intel1_1 -0.54  0.20  0.38 -0.34 0.979 0.0211 4.6
## fun1_1    0.69 -0.10  0.03 -0.06 0.978 0.0217 2.8
## amb1_1    0.02 -0.10  0.18 -0.09 0.943 0.0572 2.7
## shar1_1   0.01 -0.07 -0.24 -0.10 0.995 0.0051 3.8
## attr2_1   0.09  0.08  0.04 -0.18 0.995 0.0050 1.6
## sinc2_1   0.00  0.12  0.06 -0.34 0.995 0.0050 3.0
## intel2_1  0.07  0.14 -0.11 -0.03 0.995 0.0050 3.7
## fun2_1   -0.21  0.05 -0.57  0.11 0.986 0.0137 2.5
## amb2_1   -0.09 -0.79  0.24  0.19 0.986 0.0135 2.3
## shar2_1   0.03  0.35  0.27  0.57 0.992 0.0085 4.4
## attr3_1  -0.01  0.09  0.10  0.10 0.472 0.5276 4.1
## sinc3_1   0.02  0.02 -0.02  0.10 0.266 0.7345 7.7
## intel3_1 -0.11 -0.04  0.08  0.03 0.343 0.6571 3.4
## fun3_1    0.32 -0.04  0.08  0.00 0.546 0.4542 4.9
## amb3_1    0.01 -0.04  0.13 -0.01 0.398 0.6022 4.6
## 
##                        ML1  ML2 ML11 ML10 ML12 ML13  ML4  ML5  ML3 ML14
## SS loadings           2.90 2.16 2.12 1.99 1.64 1.52 1.32 1.28 1.25 1.15
## Proportion Var        0.07 0.06 0.05 0.05 0.04 0.04 0.03 0.03 0.03 0.03
## Cumulative Var        0.07 0.13 0.18 0.24 0.28 0.32 0.35 0.38 0.42 0.44
## Proportion Explained  0.13 0.10 0.10 0.09 0.07 0.07 0.06 0.06 0.06 0.05
## Cumulative Proportion 0.13 0.23 0.32 0.41 0.49 0.56 0.62 0.67 0.73 0.78
##                       ML15  ML9  ML7  ML8  ML6
## SS loadings           1.11 1.07 0.98 0.85 0.79
## Proportion Var        0.03 0.03 0.03 0.02 0.02
## Cumulative Var        0.47 0.50 0.53 0.55 0.57
## Proportion Explained  0.05 0.05 0.04 0.04 0.04
## Cumulative Proportion 0.83 0.88 0.93 0.96 1.00
## 
## Mean item complexity =  3.8
## Test of the hypothesis that 15 factors are sufficient.
## 
## The degrees of freedom for the null model are  741  and the objective function was  17.61 with Chi Square of  143979.6
## The degrees of freedom for the model are 261  and the objective function was  1.4 
## 
## The root mean square of the residuals (RMSR) is  0.03 
## The df corrected root mean square of the residuals is  0.05 
## 
## The harmonic number of observations is  8191 with the empirical chi square  11661.7  with prob <  0 
## The total number of observations was  8191  with Likelihood Chi Square =  11459.12  with prob <  0 
## 
## Tucker Lewis Index of factoring reliability =  0.778
## RMSEA index =  0.072  and the 90 % confidence intervals are  0.071 0.074
## BIC =  9107.3
## Fit based upon off diagonal values = 0.95
## Measures of factor score adequacy             
##                                                   ML1  ML2 ML11 ML10 ML12
## Correlation of (regression) scores with factors     1 1.00 0.97 0.98 0.91
## Multiple R square of scores with factors            1 1.00 0.95 0.96 0.83
## Minimum correlation of possible factor scores       1 0.99 0.90 0.92 0.67
##                                                   ML13  ML4  ML5  ML3 ML14
## Correlation of (regression) scores with factors    0.9 1.00 1.00 1.00 0.88
## Multiple R square of scores with factors           0.8 0.99 0.99 1.00 0.78
## Minimum correlation of possible factor scores      0.6 0.99 0.98 0.99 0.57
##                                                   ML15  ML9  ML7  ML8  ML6
## Correlation of (regression) scores with factors   0.83 0.99 0.99 0.99 0.99
## Multiple R square of scores with factors          0.69 0.98 0.99 0.99 0.99
## Minimum correlation of possible factor scores     0.37 0.96 0.97 0.97 0.98

We look at those variables, where h2 (comunality) is higher. In this case these are attr1_1, attr2_1, sinc1_1, sinc2_1, shar1_1, intel2_1 - with h2 > 0.99. The model itself is not really good. First off, too many factors - hard to interpret. Then, these factors are not really great in explanation - Proportion Variance is rather low (<0.1), which is bad. AS for the Proportion Explained, difference between first and last one is not so big (0.13 and 0.04), which is not that bad (you might think), but if we look at the graph below we still see that some factors explain of one variable, which IS bad. RMSR here is 0.03, which is not so bad actually. Anyway, that’s the model withour rotation, let’s try another one. First, let’s reduce thу N of factors.

factor.plot(fa(dating12, nfactors=15, rotate="none", fm="ml"))
## Warning in plot.xy(xy.coords(x, y), type = type, ...): не разработанное
## pch-значение '26'

## Warning in plot.xy(xy.coords(x, y), type = type, ...): не разработанное
## pch-значение '26'

## Warning in plot.xy(xy.coords(x, y), type = type, ...): не разработанное
## pch-значение '26'

## Warning in plot.xy(xy.coords(x, y), type = type, ...): не разработанное
## pch-значение '26'

## Warning in plot.xy(xy.coords(x, y), type = type, ...): не разработанное
## pch-значение '26'

## Warning in plot.xy(xy.coords(x, y), type = type, ...): не разработанное
## pch-значение '26'

## Warning in plot.xy(xy.coords(x, y), type = type, ...): не разработанное
## pch-значение '26'

## Warning in plot.xy(xy.coords(x, y), type = type, ...): не разработанное
## pch-значение '26'

## Warning in plot.xy(xy.coords(x, y), type = type, ...): не разработанное
## pch-значение '26'

## Warning in plot.xy(xy.coords(x, y), type = type, ...): не разработанное
## pch-значение '26'

## Warning in plot.xy(xy.coords(x, y), type = type, ...): не разработанное
## pch-значение '26'

## Warning in plot.xy(xy.coords(x, y), type = type, ...): не разработанное
## pch-значение '26'

## Warning in plot.xy(xy.coords(x, y), type = type, ...): не разработанное
## pch-значение '26'

## Warning in plot.xy(xy.coords(x, y), type = type, ...): не разработанное
## pch-значение '26'

## Warning in plot.xy(xy.coords(x, y), type = type, ...): не разработанное
## pch-значение '26'

## Warning in plot.xy(xy.coords(x, y), type = type, ...): не разработанное
## pch-значение '26'

## Warning in plot.xy(xy.coords(x, y), type = type, ...): не разработанное
## pch-значение '26'

## Warning in plot.xy(xy.coords(x, y), type = type, ...): не разработанное
## pch-значение '26'

## Warning in plot.xy(xy.coords(x, y), type = type, ...): не разработанное
## pch-значение '26'

## Warning in plot.xy(xy.coords(x, y), type = type, ...): не разработанное
## pch-значение '26'

## Warning in plot.xy(xy.coords(x, y), type = type, ...): не разработанное
## pch-значение '26'

## Warning in plot.xy(xy.coords(x, y), type = type, ...): не разработанное
## pch-значение '26'

## Warning in plot.xy(xy.coords(x, y), type = type, ...): не разработанное
## pch-значение '26'

## Warning in plot.xy(xy.coords(x, y), type = type, ...): не разработанное
## pch-значение '26'

## Warning in plot.xy(xy.coords(x, y), type = type, ...): не разработанное
## pch-значение '26'

## Warning in plot.xy(xy.coords(x, y), type = type, ...): не разработанное
## pch-значение '26'

## Warning in plot.xy(xy.coords(x, y), type = type, ...): не разработанное
## pch-значение '26'

## Warning in plot.xy(xy.coords(x, y), type = type, ...): не разработанное
## pch-значение '26'

## Warning in plot.xy(xy.coords(x, y), type = type, ...): не разработанное
## pch-значение '26'

## Warning in plot.xy(xy.coords(x, y), type = type, ...): не разработанное
## pch-значение '26'

## Warning in plot.xy(xy.coords(x, y), type = type, ...): не разработанное
## pch-значение '26'

## Warning in plot.xy(xy.coords(x, y), type = type, ...): не разработанное
## pch-значение '26'

## Warning in plot.xy(xy.coords(x, y), type = type, ...): не разработанное
## pch-значение '26'

## Warning in plot.xy(xy.coords(x, y), type = type, ...): не разработанное
## pch-значение '26'

## Warning in plot.xy(xy.coords(x, y), type = type, ...): не разработанное
## pch-значение '26'

## Warning in plot.xy(xy.coords(x, y), type = type, ...): не разработанное
## pch-значение '26'

## Warning in plot.xy(xy.coords(x, y), type = type, ...): не разработанное
## pch-значение '26'

## Warning in plot.xy(xy.coords(x, y), type = type, ...): не разработанное
## pch-значение '26'

## Warning in plot.xy(xy.coords(x, y), type = type, ...): не разработанное
## pch-значение '26'

## Warning in plot.xy(xy.coords(x, y), type = type, ...): не разработанное
## pch-значение '26'

## Warning in plot.xy(xy.coords(x, y), type = type, ...): не разработанное
## pch-значение '26'

## Warning in plot.xy(xy.coords(x, y), type = type, ...): не разработанное
## pch-значение '26'

## Warning in plot.xy(xy.coords(x, y), type = type, ...): не разработанное
## pch-значение '26'

## Warning in plot.xy(xy.coords(x, y), type = type, ...): не разработанное
## pch-значение '26'

## Warning in plot.xy(xy.coords(x, y), type = type, ...): не разработанное
## pch-значение '26'

## Warning in plot.xy(xy.coords(x, y), type = type, ...): не разработанное
## pch-значение '26'

## Warning in plot.xy(xy.coords(x, y), type = type, ...): не разработанное
## pch-значение '26'

## Warning in plot.xy(xy.coords(x, y), type = type, ...): не разработанное
## pch-значение '26'

## Warning in plot.xy(xy.coords(x, y), type = type, ...): не разработанное
## pch-значение '26'

## Warning in plot.xy(xy.coords(x, y), type = type, ...): не разработанное
## pch-значение '26'

## Warning in plot.xy(xy.coords(x, y), type = type, ...): не разработанное
## pch-значение '26'

## Warning in plot.xy(xy.coords(x, y), type = type, ...): не разработанное
## pch-значение '26'

## Warning in plot.xy(xy.coords(x, y), type = type, ...): не разработанное
## pch-значение '26'

## Warning in plot.xy(xy.coords(x, y), type = type, ...): не разработанное
## pch-значение '26'

## Warning in plot.xy(xy.coords(x, y), type = type, ...): не разработанное
## pch-значение '26'

## Warning in plot.xy(xy.coords(x, y), type = type, ...): не разработанное
## pch-значение '26'

## Warning in plot.xy(xy.coords(x, y), type = type, ...): не разработанное
## pch-значение '26'

## Warning in plot.xy(xy.coords(x, y), type = type, ...): не разработанное
## pch-значение '26'

## Warning in plot.xy(xy.coords(x, y), type = type, ...): не разработанное
## pch-значение '26'

## Warning in plot.xy(xy.coords(x, y), type = type, ...): не разработанное
## pch-значение '26'

## Warning in plot.xy(xy.coords(x, y), type = type, ...): не разработанное
## pch-значение '26'

## Warning in plot.xy(xy.coords(x, y), type = type, ...): не разработанное
## pch-значение '26'

## Warning in plot.xy(xy.coords(x, y), type = type, ...): не разработанное
## pch-значение '26'

## Warning in plot.xy(xy.coords(x, y), type = type, ...): не разработанное
## pch-значение '26'

## Warning in plot.xy(xy.coords(x, y), type = type, ...): не разработанное
## pch-значение '26'

## Warning in plot.xy(xy.coords(x, y), type = type, ...): не разработанное
## pch-значение '26'

## Warning in plot.xy(xy.coords(x, y), type = type, ...): не разработанное
## pch-значение '26'

## Warning in plot.xy(xy.coords(x, y), type = type, ...): не разработанное
## pch-значение '26'

## Warning in plot.xy(xy.coords(x, y), type = type, ...): не разработанное
## pch-значение '26'

## Warning in plot.xy(xy.coords(x, y), type = type, ...): не разработанное
## pch-значение '26'

## Warning in plot.xy(xy.coords(x, y), type = type, ...): не разработанное
## pch-значение '26'

## Warning in plot.xy(xy.coords(x, y), type = type, ...): не разработанное
## pch-значение '26'

## Warning in plot.xy(xy.coords(x, y), type = type, ...): не разработанное
## pch-значение '26'

## Warning in plot.xy(xy.coords(x, y), type = type, ...): не разработанное
## pch-значение '26'

## Warning in plot.xy(xy.coords(x, y), type = type, ...): не разработанное
## pch-значение '26'

## Warning in plot.xy(xy.coords(x, y), type = type, ...): не разработанное
## pch-значение '26'

## Warning in plot.xy(xy.coords(x, y), type = type, ...): не разработанное
## pch-значение '26'

## Warning in plot.xy(xy.coords(x, y), type = type, ...): не разработанное
## pch-значение '26'

## Warning in plot.xy(xy.coords(x, y), type = type, ...): не разработанное
## pch-значение '26'

## Warning in plot.xy(xy.coords(x, y), type = type, ...): не разработанное
## pch-значение '26'

## Warning in plot.xy(xy.coords(x, y), type = type, ...): не разработанное
## pch-значение '26'

## Warning in plot.xy(xy.coords(x, y), type = type, ...): не разработанное
## pch-значение '26'

## Warning in plot.xy(xy.coords(x, y), type = type, ...): не разработанное
## pch-значение '26'

## Warning in plot.xy(xy.coords(x, y), type = type, ...): не разработанное
## pch-значение '26'

## Warning in plot.xy(xy.coords(x, y), type = type, ...): не разработанное
## pch-значение '26'

## Warning in plot.xy(xy.coords(x, y), type = type, ...): не разработанное
## pch-значение '26'

## Warning in plot.xy(xy.coords(x, y), type = type, ...): не разработанное
## pch-значение '26'

## Warning in plot.xy(xy.coords(x, y), type = type, ...): не разработанное
## pch-значение '26'

## Warning in plot.xy(xy.coords(x, y), type = type, ...): не разработанное
## pch-значение '26'

## Warning in plot.xy(xy.coords(x, y), type = type, ...): не разработанное
## pch-значение '26'

## Warning in plot.xy(xy.coords(x, y), type = type, ...): не разработанное
## pch-значение '26'

## Warning in plot.xy(xy.coords(x, y), type = type, ...): не разработанное
## pch-значение '26'

## Warning in plot.xy(xy.coords(x, y), type = type, ...): не разработанное
## pch-значение '26'

## Warning in plot.xy(xy.coords(x, y), type = type, ...): не разработанное
## pch-значение '26'

## Warning in plot.xy(xy.coords(x, y), type = type, ...): не разработанное
## pch-значение '26'

## Warning in plot.xy(xy.coords(x, y), type = type, ...): не разработанное
## pch-значение '26'

## Warning in plot.xy(xy.coords(x, y), type = type, ...): не разработанное
## pch-значение '26'

## Warning in plot.xy(xy.coords(x, y), type = type, ...): не разработанное
## pch-значение '26'

## Warning in plot.xy(xy.coords(x, y), type = type, ...): не разработанное
## pch-значение '26'

## Warning in plot.xy(xy.coords(x, y), type = type, ...): не разработанное
## pch-значение '26'

## Warning in plot.xy(xy.coords(x, y), type = type, ...): не разработанное
## pch-значение '26'

## Warning in plot.xy(xy.coords(x, y), type = type, ...): не разработанное
## pch-значение '26'

## Warning in plot.xy(xy.coords(x, y), type = type, ...): не разработанное
## pch-значение '26'

## Warning in plot.xy(xy.coords(x, y), type = type, ...): не разработанное
## pch-значение '26'

## Warning in plot.xy(xy.coords(x, y), type = type, ...): не разработанное
## pch-значение '26'

## Warning in plot.xy(xy.coords(x, y), type = type, ...): не разработанное
## pch-значение '26'

## Warning in plot.xy(xy.coords(x, y), type = type, ...): не разработанное
## pch-значение '26'

## Warning in plot.xy(xy.coords(x, y), type = type, ...): не разработанное
## pch-значение '26'

## Warning in plot.xy(xy.coords(x, y), type = type, ...): не разработанное
## pch-значение '26'

## Warning in plot.xy(xy.coords(x, y), type = type, ...): не разработанное
## pch-значение '26'

## Warning in plot.xy(xy.coords(x, y), type = type, ...): не разработанное
## pch-значение '26'

## Warning in plot.xy(xy.coords(x, y), type = type, ...): не разработанное
## pch-значение '26'

## Warning in plot.xy(xy.coords(x, y), type = type, ...): не разработанное
## pch-значение '26'

## Warning in plot.xy(xy.coords(x, y), type = type, ...): не разработанное
## pch-значение '26'

## Warning in plot.xy(xy.coords(x, y), type = type, ...): не разработанное
## pch-значение '26'

## Warning in plot.xy(xy.coords(x, y), type = type, ...): не разработанное
## pch-значение '26'

## Warning in plot.xy(xy.coords(x, y), type = type, ...): не разработанное
## pch-значение '26'

## Warning in plot.xy(xy.coords(x, y), type = type, ...): не разработанное
## pch-значение '26'

## Warning in plot.xy(xy.coords(x, y), type = type, ...): не разработанное
## pch-значение '26'

## Warning in plot.xy(xy.coords(x, y), type = type, ...): не разработанное
## pch-значение '26'

## Warning in plot.xy(xy.coords(x, y), type = type, ...): не разработанное
## pch-значение '26'

## Warning in plot.xy(xy.coords(x, y), type = type, ...): не разработанное
## pch-значение '26'

## Warning in plot.xy(xy.coords(x, y), type = type, ...): не разработанное
## pch-значение '26'

## Warning in plot.xy(xy.coords(x, y), type = type, ...): не разработанное
## pch-значение '26'

## Warning in plot.xy(xy.coords(x, y), type = type, ...): не разработанное
## pch-значение '26'

## Warning in plot.xy(xy.coords(x, y), type = type, ...): не разработанное
## pch-значение '26'

## Warning in plot.xy(xy.coords(x, y), type = type, ...): не разработанное
## pch-значение '26'

## Warning in plot.xy(xy.coords(x, y), type = type, ...): не разработанное
## pch-значение '26'

## Warning in plot.xy(xy.coords(x, y), type = type, ...): не разработанное
## pch-значение '26'

## Warning in plot.xy(xy.coords(x, y), type = type, ...): не разработанное
## pch-значение '26'

## Warning in plot.xy(xy.coords(x, y), type = type, ...): не разработанное
## pch-значение '26'

## Warning in plot.xy(xy.coords(x, y), type = type, ...): не разработанное
## pch-значение '26'

## Warning in plot.xy(xy.coords(x, y), type = type, ...): не разработанное
## pch-значение '26'

## Warning in plot.xy(xy.coords(x, y), type = type, ...): не разработанное
## pch-значение '26'

## Warning in plot.xy(xy.coords(x, y), type = type, ...): не разработанное
## pch-значение '26'

## Warning in plot.xy(xy.coords(x, y), type = type, ...): не разработанное
## pch-значение '26'

## Warning in plot.xy(xy.coords(x, y), type = type, ...): не разработанное
## pch-значение '26'

## Warning in plot.xy(xy.coords(x, y), type = type, ...): не разработанное
## pch-значение '26'

## Warning in plot.xy(xy.coords(x, y), type = type, ...): не разработанное
## pch-значение '26'

## Warning in plot.xy(xy.coords(x, y), type = type, ...): не разработанное
## pch-значение '26'

## Warning in plot.xy(xy.coords(x, y), type = type, ...): не разработанное
## pch-значение '26'

## Warning in plot.xy(xy.coords(x, y), type = type, ...): не разработанное
## pch-значение '26'

## Warning in plot.xy(xy.coords(x, y), type = type, ...): не разработанное
## pch-значение '26'

## Warning in plot.xy(xy.coords(x, y), type = type, ...): не разработанное
## pch-значение '26'

## Warning in plot.xy(xy.coords(x, y), type = type, ...): не разработанное
## pch-значение '26'

## Warning in plot.xy(xy.coords(x, y), type = type, ...): не разработанное
## pch-значение '26'

## Warning in plot.xy(xy.coords(x, y), type = type, ...): не разработанное
## pch-значение '26'

## Warning in plot.xy(xy.coords(x, y), type = type, ...): не разработанное
## pch-значение '26'

## Warning in plot.xy(xy.coords(x, y), type = type, ...): не разработанное
## pch-значение '26'

## Warning in plot.xy(xy.coords(x, y), type = type, ...): не разработанное
## pch-значение '26'

## Warning in plot.xy(xy.coords(x, y), type = type, ...): не разработанное
## pch-значение '26'

## Warning in plot.xy(xy.coords(x, y), type = type, ...): не разработанное
## pch-значение '26'

## Warning in plot.xy(xy.coords(x, y), type = type, ...): не разработанное
## pch-значение '26'

## Warning in plot.xy(xy.coords(x, y), type = type, ...): не разработанное
## pch-значение '26'

## Warning in plot.xy(xy.coords(x, y), type = type, ...): не разработанное
## pch-значение '26'

## Warning in plot.xy(xy.coords(x, y), type = type, ...): не разработанное
## pch-значение '26'

## Warning in plot.xy(xy.coords(x, y), type = type, ...): не разработанное
## pch-значение '26'

## Warning in plot.xy(xy.coords(x, y), type = type, ...): не разработанное
## pch-значение '26'

## Warning in plot.xy(xy.coords(x, y), type = type, ...): не разработанное
## pch-значение '26'

## Warning in plot.xy(xy.coords(x, y), type = type, ...): не разработанное
## pch-значение '26'

## Warning in plot.xy(xy.coords(x, y), type = type, ...): не разработанное
## pch-значение '26'

## Warning in plot.xy(xy.coords(x, y), type = type, ...): не разработанное
## pch-значение '26'

## Warning in plot.xy(xy.coords(x, y), type = type, ...): не разработанное
## pch-значение '26'

## Warning in plot.xy(xy.coords(x, y), type = type, ...): не разработанное
## pch-значение '26'

## Warning in plot.xy(xy.coords(x, y), type = type, ...): не разработанное
## pch-значение '26'

## Warning in plot.xy(xy.coords(x, y), type = type, ...): не разработанное
## pch-значение '26'

## Warning in plot.xy(xy.coords(x, y), type = type, ...): не разработанное
## pch-значение '26'

## Warning in plot.xy(xy.coords(x, y), type = type, ...): не разработанное
## pch-значение '26'

## Warning in plot.xy(xy.coords(x, y), type = type, ...): не разработанное
## pch-значение '26'

## Warning in plot.xy(xy.coords(x, y), type = type, ...): не разработанное
## pch-значение '26'

## Warning in plot.xy(xy.coords(x, y), type = type, ...): не разработанное
## pch-значение '26'

## Warning in plot.xy(xy.coords(x, y), type = type, ...): не разработанное
## pch-значение '26'

## Warning in plot.xy(xy.coords(x, y), type = type, ...): не разработанное
## pch-значение '26'

## Warning in plot.xy(xy.coords(x, y), type = type, ...): не разработанное
## pch-значение '26'

## Warning in plot.xy(xy.coords(x, y), type = type, ...): не разработанное
## pch-значение '26'

## Warning in plot.xy(xy.coords(x, y), type = type, ...): не разработанное
## pch-значение '26'

## Warning in plot.xy(xy.coords(x, y), type = type, ...): не разработанное
## pch-значение '26'

## Warning in plot.xy(xy.coords(x, y), type = type, ...): не разработанное
## pch-значение '26'

## Warning in plot.xy(xy.coords(x, y), type = type, ...): не разработанное
## pch-значение '26'

## Warning in plot.xy(xy.coords(x, y), type = type, ...): не разработанное
## pch-значение '26'

## Warning in plot.xy(xy.coords(x, y), type = type, ...): не разработанное
## pch-значение '26'

## Warning in plot.xy(xy.coords(x, y), type = type, ...): не разработанное
## pch-значение '26'

## Warning in plot.xy(xy.coords(x, y), type = type, ...): не разработанное
## pch-значение '26'

## Warning in plot.xy(xy.coords(x, y), type = type, ...): не разработанное
## pch-значение '26'

## Warning in plot.xy(xy.coords(x, y), type = type, ...): не разработанное
## pch-значение '26'

## Warning in plot.xy(xy.coords(x, y), type = type, ...): не разработанное
## pch-значение '26'

## Warning in plot.xy(xy.coords(x, y), type = type, ...): не разработанное
## pch-значение '26'

## Warning in plot.xy(xy.coords(x, y), type = type, ...): не разработанное
## pch-значение '26'

## Warning in plot.xy(xy.coords(x, y), type = type, ...): не разработанное
## pch-значение '26'

## Warning in plot.xy(xy.coords(x, y), type = type, ...): не разработанное
## pch-значение '26'

## Warning in plot.xy(xy.coords(x, y), type = type, ...): не разработанное
## pch-значение '26'

## Warning in plot.xy(xy.coords(x, y), type = type, ...): не разработанное
## pch-значение '26'

## Warning in plot.xy(xy.coords(x, y), type = type, ...): не разработанное
## pch-значение '26'

## Warning in plot.xy(xy.coords(x, y), type = type, ...): не разработанное
## pch-значение '26'

## Warning in plot.xy(xy.coords(x, y), type = type, ...): не разработанное
## pch-значение '26'

## Warning in plot.xy(xy.coords(x, y), type = type, ...): не разработанное
## pch-значение '26'

## Warning in plot.xy(xy.coords(x, y), type = type, ...): не разработанное
## pch-значение '26'

## Warning in plot.xy(xy.coords(x, y), type = type, ...): не разработанное
## pch-значение '26'

## Warning in plot.xy(xy.coords(x, y), type = type, ...): не разработанное
## pch-значение '26'

## Warning in plot.xy(xy.coords(x, y), type = type, ...): не разработанное
## pch-значение '26'

## Warning in plot.xy(xy.coords(x, y), type = type, ...): не разработанное
## pch-значение '26'

## Warning in plot.xy(xy.coords(x, y), type = type, ...): не разработанное
## pch-значение '26'

## Warning in plot.xy(xy.coords(x, y), type = type, ...): не разработанное
## pch-значение '26'

## Warning in plot.xy(xy.coords(x, y), type = type, ...): не разработанное
## pch-значение '26'

## Warning in plot.xy(xy.coords(x, y), type = type, ...): не разработанное
## pch-значение '26'

## Warning in plot.xy(xy.coords(x, y), type = type, ...): не разработанное
## pch-значение '26'

## Warning in plot.xy(xy.coords(x, y), type = type, ...): не разработанное
## pch-значение '26'

## Warning in plot.xy(xy.coords(x, y), type = type, ...): не разработанное
## pch-значение '26'

## Warning in plot.xy(xy.coords(x, y), type = type, ...): не разработанное
## pch-значение '26'

## Warning in plot.xy(xy.coords(x, y), type = type, ...): не разработанное
## pch-значение '26'

fa.diagram(fa(dating12, nfactors=15, rotate="none", fm="ml"))

[2] No rotation, less factors

fa(dating12, nfactors=5, rotate="none", fm="ml") 
## Factor Analysis using method =  ml
## Call: fa(r = dating12, nfactors = 5, rotate = "none", fm = "ml")
## Standardized loadings (pattern matrix) based upon correlation matrix
##            ML3   ML4   ML2   ML1   ML5    h2     u2 com
## imprace   0.06  0.09 -0.04 -0.03  0.24 0.073 0.9269 1.5
## imprelig  0.01 -0.05 -0.04 -0.05  0.30 0.096 0.9041 1.2
## date     -0.06 -0.35 -0.06 -0.01  0.08 0.138 0.8619 1.2
## go_out    0.02 -0.31  0.01 -0.03 -0.03 0.097 0.9033 1.0
## sports   -0.14  0.40  0.14  0.04 -0.12 0.214 0.7857 1.7
## tvsports -0.07  0.29  0.19 -0.07  0.11 0.143 0.8566 2.3
## exercise  0.00  0.31 -0.07 -0.03  0.06 0.105 0.8951 1.2
## dining    0.41  0.25 -0.10 -0.02  0.21 0.292 0.7077 2.4
## museums   0.91 -0.04 -0.09 -0.06 -0.13 0.853 0.1467 1.1
## art       0.90  0.01 -0.08 -0.07 -0.15 0.843 0.1574 1.1
## hiking    0.21  0.03  0.01  0.07 -0.09 0.060 0.9401 1.7
## gaming   -0.02  0.21  0.14  0.09  0.11 0.085 0.9146 2.8
## clubbing  0.12  0.26 -0.04 -0.01  0.08 0.091 0.9089 1.7
## reading   0.30 -0.13 -0.06  0.01 -0.01 0.108 0.8917 1.5
## tv        0.09  0.06  0.00 -0.02  0.50 0.262 0.7383 1.1
## theater   0.61 -0.09 -0.14 -0.04  0.29 0.482 0.5176 1.6
## movies    0.38 -0.04 -0.04 -0.02  0.32 0.252 0.7481 2.0
## concerts  0.45  0.06 -0.02 -0.08  0.16 0.233 0.7671 1.4
## music     0.32  0.18 -0.02 -0.03  0.19 0.171 0.8292 2.3
## shopping  0.28  0.26 -0.16 -0.09  0.42 0.353 0.6467 3.0
## yoga      0.32  0.08 -0.03 -0.05  0.12 0.127 0.8726 1.5
## exphappy  0.07  0.26  0.13  0.12 -0.05 0.109 0.8912 2.2
## attr1_1  -0.21  0.47 -0.14 -0.31 -0.42 0.555 0.4454 3.4
## sinc1_1   0.02 -0.37  0.09  0.12  0.19 0.196 0.8040 1.9
## intel1_1  0.12 -0.26 -0.08 -0.04 -0.02 0.089 0.9106 1.7
## fun1_1   -0.05  0.15 -0.10  0.28 -0.04 0.114 0.8858 2.0
## amb1_1    0.18 -0.04  0.05  0.16  0.42 0.239 0.7606 1.7
## shar1_1   0.10 -0.31  0.26  0.09  0.24 0.245 0.7552 3.3
## attr2_1  -0.01  0.00 -0.61 -0.79  0.00 0.995 0.0049 1.9
## sinc2_1  -0.02 -0.02  0.57  0.36 -0.01 0.452 0.5481 1.7
## intel2_1 -0.01  0.10  0.52  0.32 -0.07 0.391 0.6086 1.8
## fun2_1    0.00  0.00 -0.63  0.77  0.00 0.995 0.0050 1.9
## amb2_1   -0.07  0.10  0.59  0.21 -0.11 0.419 0.5811 1.4
## shar2_1   0.15 -0.19  0.41  0.26  0.21 0.342 0.6576 3.1
## attr3_1   0.12  0.53  0.04  0.01  0.06 0.302 0.6978 1.2
## sinc3_1   0.14  0.03  0.02  0.00  0.25 0.087 0.9133 1.6
## intel3_1  0.06  0.31  0.12  0.02  0.07 0.117 0.8835 1.5
## fun3_1    0.16  0.58  0.06 -0.09  0.21 0.411 0.5893 1.5
## amb3_1    0.11  0.46  0.08 -0.05  0.25 0.296 0.7040 1.8
## 
##                        ML3  ML4  ML2  ML1  ML5
## SS loadings           3.20 2.48 2.21 1.86 1.68
## Proportion Var        0.08 0.06 0.06 0.05 0.04
## Cumulative Var        0.08 0.15 0.20 0.25 0.29
## Proportion Explained  0.28 0.22 0.19 0.16 0.15
## Cumulative Proportion 0.28 0.50 0.69 0.85 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  741  and the objective function was  17.61 with Chi Square of  143979.6
## The degrees of freedom for the model are 556  and the objective function was  9.91 
## 
## The root mean square of the residuals (RMSR) is  0.07 
## The df corrected root mean square of the residuals is  0.08 
## 
## The harmonic number of observations is  8191 with the empirical chi square  56272.09  with prob <  0 
## The total number of observations was  8191  with Likelihood Chi Square =  80980.15  with prob <  0 
## 
## Tucker Lewis Index of factoring reliability =  0.251
## RMSEA index =  0.133  and the 90 % confidence intervals are  0.132 0.134
## BIC =  75970.16
## Fit based upon off diagonal values = 0.77
## Measures of factor score adequacy             
##                                                    ML3  ML4  ML2  ML1  ML5
## Correlation of (regression) scores with factors   0.96 0.88 1.00 1.00 0.85
## Multiple R square of scores with factors          0.93 0.78 0.99 1.00 0.73
## Minimum correlation of possible factor scores     0.86 0.56 0.99 0.99 0.45
factor.plot(fa(dating12, nfactors=5, rotate="none", fm="ml"))

fa.diagram(fa(dating12, nfactors=5, rotate="none", fm="ml"))

#OR 
#fa1 <- fa(dating12, nfactors=5, rotate="none", fm="ml") 
#print(fa1$loadings,cutoff = 0.3)
  • Low Cumulative Var = 0.29.
  • We have RMSR = 0.07. (should be closer to 0)
  • RMSEA index = 0.133 (<.08 acceptable, <.05 excellent)
  • Tucker Lewis Index= 0.215 (>.90 acceptable, >.95 excellent)
  • The sad result of fa.
  • In addition, again low Proportion Variances and Cumulative Variance, unequal Proportion Explained.

-> Not good. Next model. Now with rotation.

[3] rotation varimax

fa(dating12, nfactors=5, rotate="varimax", fm="ml") 
## Factor Analysis using method =  ml
## Call: fa(r = dating12, nfactors = 5, rotate = "varimax", fm = "ml")
## Standardized loadings (pattern matrix) based upon correlation matrix
##            ML3   ML2   ML4   ML5   ML1    h2     u2 com
## imprace   0.03 -0.05  0.09  0.25  0.00 0.073 0.9269 1.4
## imprelig -0.03 -0.05 -0.04  0.30 -0.04 0.096 0.9041 1.2
## date     -0.07 -0.03 -0.35  0.09 -0.02 0.138 0.8619 1.2
## go_out    0.02  0.02 -0.30 -0.01 -0.06 0.097 0.9033 1.1
## sports   -0.13  0.09  0.41 -0.16  0.01 0.214 0.7857 1.6
## tvsports -0.10  0.09  0.32  0.08 -0.13 0.143 0.8566 1.8
## exercise  0.00 -0.10  0.30  0.05  0.04 0.105 0.8951 1.3
## dining    0.39 -0.08  0.25  0.26  0.04 0.292 0.7077 2.7
## museums   0.92 -0.04 -0.04  0.00 -0.04 0.853 0.1467 1.0
## art       0.92 -0.04  0.01 -0.03 -0.05 0.843 0.1574 1.0
## hiking    0.22  0.06  0.03 -0.07  0.06 0.060 0.9401 1.5
## gaming   -0.05  0.15  0.23  0.09  0.02 0.085 0.9146 2.2
## clubbing  0.12 -0.05  0.26  0.09  0.03 0.091 0.9089 1.8
## reading   0.30 -0.01 -0.14  0.04  0.02 0.108 0.8917 1.5
## tv        0.02  0.01  0.08  0.50 -0.03 0.262 0.7383 1.1
## theater   0.57 -0.08 -0.09  0.37  0.00 0.482 0.5176 1.8
## movies    0.34  0.00 -0.03  0.37 -0.02 0.252 0.7481 2.0
## concerts  0.42 -0.03  0.07  0.21 -0.07 0.233 0.7671 1.6
## music     0.30 -0.02  0.19  0.22 -0.02 0.171 0.8292 2.6
## shopping  0.24 -0.17  0.26  0.45  0.01 0.353 0.6467 2.5
## yoga      0.30 -0.03  0.09  0.16 -0.03 0.127 0.8726 1.8
## exphappy  0.07  0.16  0.27 -0.05  0.06 0.109 0.8912 1.9
## attr1_1  -0.13 -0.35  0.44 -0.45 -0.12 0.555 0.4454 3.2
## sinc1_1  -0.01  0.18 -0.35  0.20  0.01 0.196 0.8040 2.2
## intel1_1  0.13 -0.06 -0.26  0.01 -0.02 0.089 0.9106 1.6
## fun1_1   -0.04  0.06  0.12 -0.05  0.30 0.114 0.8858 1.5
## amb1_1    0.11  0.16 -0.02  0.44  0.08 0.239 0.7606 1.5
## shar1_1   0.04  0.31 -0.27  0.25 -0.11 0.245 0.7552 3.3
## attr2_1   0.05 -0.94 -0.05  0.02 -0.32 0.995 0.0049 1.2
## sinc2_1  -0.07  0.67  0.04 -0.03 -0.01 0.452 0.5481 1.0
## intel2_1 -0.04  0.60  0.15 -0.10  0.00 0.391 0.6086 1.2
## fun2_1    0.04 -0.10 -0.11  0.04  0.99 0.995 0.0050 1.1
## amb2_1   -0.10  0.59  0.16 -0.15 -0.13 0.419 0.5811 1.5
## shar2_1   0.09  0.52 -0.14  0.22 -0.04 0.342 0.6576 1.6
## attr3_1   0.11  0.01  0.53  0.06  0.04 0.302 0.6978 1.1
## sinc3_1   0.11  0.03  0.05  0.27 -0.02 0.087 0.9133 1.4
## intel3_1  0.04  0.09  0.32  0.06 -0.02 0.117 0.8835 1.3
## fun3_1    0.13 -0.03  0.59  0.20 -0.06 0.411 0.5893 1.4
## amb3_1    0.08  0.02  0.48  0.24 -0.05 0.296 0.7040 1.6
## 
##                        ML3  ML2  ML4  ML5  ML1
## SS loadings           3.01 2.73 2.52 1.90 1.27
## Proportion Var        0.08 0.07 0.06 0.05 0.03
## Cumulative Var        0.08 0.15 0.21 0.26 0.29
## Proportion Explained  0.26 0.24 0.22 0.17 0.11
## Cumulative Proportion 0.26 0.50 0.72 0.89 1.00
## 
## Mean item complexity =  1.6
## Test of the hypothesis that 5 factors are sufficient.
## 
## The degrees of freedom for the null model are  741  and the objective function was  17.61 with Chi Square of  143979.6
## The degrees of freedom for the model are 556  and the objective function was  9.91 
## 
## The root mean square of the residuals (RMSR) is  0.07 
## The df corrected root mean square of the residuals is  0.08 
## 
## The harmonic number of observations is  8191 with the empirical chi square  56272.09  with prob <  0 
## The total number of observations was  8191  with Likelihood Chi Square =  80980.15  with prob <  0 
## 
## Tucker Lewis Index of factoring reliability =  0.251
## RMSEA index =  0.133  and the 90 % confidence intervals are  0.132 0.134
## BIC =  75970.16
## Fit based upon off diagonal values = 0.77
## Measures of factor score adequacy             
##                                                    ML3  ML2  ML4  ML5  ML1
## Correlation of (regression) scores with factors   0.96 1.00 0.88 0.85 1.00
## Multiple R square of scores with factors          0.93 0.99 0.78 0.73 0.99
## Minimum correlation of possible factor scores     0.85 0.98 0.57 0.46 0.99
factor.plot(fa(dating12, nfactors=5, rotate="varimax", fm="ml"))

fa.diagram(fa(dating12, nfactors=5, rotate="varimax", fm="ml"))

Here we see that:

  • Proportion Var is still rather low (<0.1);
  • Proportion Explained is a bit better, but still is doubtful. Graph looks a bit better, but i would say that ML1 factor is extra here and can be reduced. Btw if we check the table with loadings we see, that actually ML1 is a really (i mean REALLY) weak factor;
  • RMSR is 0.07 - not really good, that it’s >0.05

[4] rotation oblimin

#library(GPArotation)
fa(dating12, nfactors=5, rotate="oblimin", fm="ml") 
## Loading required namespace: GPArotation
## Factor Analysis using method =  ml
## Call: fa(r = dating12, nfactors = 5, rotate = "oblimin", fm = "ml")
## Standardized loadings (pattern matrix) based upon correlation matrix
##            ML2   ML3   ML4   ML5   ML1    h2     u2 com
## imprace  -0.08 -0.05  0.21  0.18  0.01 0.073 0.9269 2.4
## imprelig -0.12 -0.12  0.11  0.29 -0.03 0.096 0.9041 2.0
## date     -0.11 -0.07 -0.27  0.23 -0.01 0.138 0.8619 2.5
## go_out   -0.03  0.05 -0.28  0.13 -0.06 0.097 0.9033 1.6
## sports    0.18 -0.10  0.27 -0.31 -0.02 0.214 0.7857 2.9
## tvsports  0.11 -0.13  0.31 -0.04 -0.15 0.143 0.8566 2.2
## exercise -0.05 -0.04  0.30 -0.10  0.06 0.105 0.8951 1.4
## dining   -0.06  0.29  0.37  0.11  0.06 0.292 0.7077 2.2
## museums   0.01  0.93 -0.03 -0.01  0.00 0.853 0.1467 1.0
## art       0.01  0.93  0.00 -0.06 -0.02 0.843 0.1574 1.0
## hiking    0.09  0.24  0.00 -0.08  0.05 0.060 0.9401 1.6
## gaming    0.17 -0.08  0.24  0.00 -0.01 0.085 0.9146 2.1
## clubbing -0.01  0.07  0.28 -0.05  0.04 0.091 0.9089 1.2
## reading  -0.02  0.29 -0.10  0.09  0.03 0.108 0.8917 1.4
## tv       -0.08 -0.14  0.32  0.44 -0.03 0.262 0.7383 2.1
## theater  -0.13  0.46  0.12  0.36  0.04 0.482 0.5176 2.2
## movies   -0.06  0.23  0.16  0.35 -0.01 0.252 0.7481 2.3
## concerts -0.04  0.36  0.17  0.15 -0.05 0.233 0.7671 1.9
## music    -0.01  0.22  0.28  0.11 -0.01 0.171 0.8292 2.3
## shopping -0.19  0.07  0.47  0.27  0.05 0.353 0.6467 2.1
## yoga     -0.03  0.25  0.16  0.10 -0.01 0.127 0.8726 2.1
## exphappy  0.22  0.07  0.21 -0.15  0.03 0.109 0.8912 3.0
## attr1_1  -0.20 -0.04  0.17 -0.65 -0.07 0.555 0.4454 1.4
## sinc1_1   0.08 -0.04 -0.22  0.36 -0.02 0.196 0.8040 1.8
## intel1_1 -0.10  0.14 -0.23  0.11 -0.01 0.089 0.9106 2.7
## fun1_1    0.13 -0.05  0.10 -0.11  0.29 0.114 0.8858 2.1
## amb1_1    0.08 -0.01  0.20  0.43  0.06 0.239 0.7606 1.5
## shar1_1   0.19  0.01 -0.13  0.40 -0.16 0.245 0.7552 2.0
## attr2_1  -0.97  0.00 -0.01 -0.07 -0.16 0.995 0.0049 1.1
## sinc2_1   0.66 -0.02 -0.01  0.05 -0.13 0.452 0.5481 1.1
## intel2_1  0.62  0.01  0.06 -0.08 -0.11 0.391 0.6086 1.1
## fun2_1    0.02 -0.01 -0.01 -0.01  1.00 0.995 0.0050 1.0
## amb2_1    0.60 -0.03  0.03 -0.12 -0.23 0.419 0.5811 1.4
## shar2_1   0.43  0.06 -0.04  0.34 -0.12 0.342 0.6576 2.1
## attr3_1   0.10  0.06  0.51 -0.19  0.03 0.302 0.6978 1.4
## sinc3_1  -0.01  0.03  0.17  0.23 -0.02 0.087 0.9133 1.9
## intel3_1  0.14  0.01  0.31 -0.07 -0.04 0.117 0.8835 1.5
## fun3_1    0.03  0.03  0.62 -0.08 -0.06 0.411 0.5893 1.1
## amb3_1    0.05 -0.03  0.54  0.02 -0.05 0.296 0.7040 1.0
## 
##                        ML2  ML3  ML4  ML5  ML1
## SS loadings           2.69 2.72 2.59 2.16 1.28
## Proportion Var        0.07 0.07 0.07 0.06 0.03
## Cumulative Var        0.07 0.14 0.21 0.26 0.29
## Proportion Explained  0.24 0.24 0.23 0.19 0.11
## Cumulative Proportion 0.24 0.47 0.70 0.89 1.00
## 
##  With factor correlations of 
##       ML2   ML3   ML4   ML5   ML1
## ML2  1.00 -0.13 -0.06  0.09  0.04
## ML3 -0.13  1.00  0.18  0.22  0.02
## ML4 -0.06  0.18  1.00 -0.03 -0.06
## ML5  0.09  0.22 -0.03  1.00  0.09
## ML1  0.04  0.02 -0.06  0.09  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  741  and the objective function was  17.61 with Chi Square of  143979.6
## The degrees of freedom for the model are 556  and the objective function was  9.91 
## 
## The root mean square of the residuals (RMSR) is  0.07 
## The df corrected root mean square of the residuals is  0.08 
## 
## The harmonic number of observations is  8191 with the empirical chi square  56272.09  with prob <  0 
## The total number of observations was  8191  with Likelihood Chi Square =  80980.15  with prob <  0 
## 
## Tucker Lewis Index of factoring reliability =  0.251
## RMSEA index =  0.133  and the 90 % confidence intervals are  0.132 0.134
## BIC =  75970.16
## Fit based upon off diagonal values = 0.77
## Measures of factor score adequacy             
##                                                    ML2  ML3  ML4  ML5  ML1
## Correlation of (regression) scores with factors   1.00 0.96 0.88 0.88 1.00
## Multiple R square of scores with factors          0.99 0.93 0.78 0.77 0.99
## Minimum correlation of possible factor scores     0.99 0.85 0.56 0.54 0.99
factor.plot(fa(dating12, nfactors=5, rotate="oblimin", fm="ml"))

fa.diagram(fa(dating12, nfactors=5, rotate="oblimin", fm="ml"))

I again see that ML1 useless factor explaining only one variable… And in general the results are merely the same as in the 3rd model - Proportion Var are still below 0.1, Proportion explained is nearly the same, too (i still find the first 4 factors are good and the last one is extra, but iа i reduce the N of factors it still exist), RMSR > 0.05 (equals to 0.07). And for some reason i don’t see any arrows, shcoing the correlation between factors…

To sum up

In my opinion the 3rd model here is the best. It look prettie and more interprettable than thr first (ofc, as there are much less factors), the Proportion Explained is better, than in the 2nd model and i see no reason to prefer the 4th model to the 3rd one, because there were no singinificant improvements.

I still don’t like the presence of ML1, but if I reduce the N of factors, the situation is not getting better. In contrast, it’s getting worse: more RMSR, more difference in Proportion Explained between factors, no improvements in Proportion Variance.

Increase in the N of factors didn’t help neither. So, I guess, 5 is the optimal N of factors. And it’s better to use varimax rotation.

fa(dating12, nfactors=4, rotate="varimax", fm="ml") 
## Factor Analysis using method =  ml
## Call: fa(r = dating12, nfactors = 4, rotate = "varimax", fm = "ml")
## Standardized loadings (pattern matrix) based upon correlation matrix
##            ML3   ML2   ML4   ML1     h2     u2 com
## imprace   0.07 -0.06  0.10  0.01 0.0177 0.9823 2.4
## imprelig  0.02 -0.06  0.00 -0.02 0.0048 0.9952 1.3
## date     -0.07 -0.03 -0.34 -0.02 0.1204 0.8796 1.1
## go_out    0.01  0.03 -0.32 -0.07 0.1086 0.8914 1.1
## sports   -0.13  0.09  0.41  0.01 0.1897 0.8103 1.3
## tvsports -0.08  0.08  0.33 -0.12 0.1360 0.8640 1.5
## exercise  0.02 -0.11  0.31  0.05 0.1129 0.8871 1.3
## dining    0.44 -0.09  0.25  0.05 0.2640 0.7360 1.7
## museums   0.90 -0.02 -0.10 -0.04 0.8206 0.1794 1.0
## art       0.89 -0.03 -0.05 -0.06 0.7944 0.2056 1.0
## hiking    0.21  0.06  0.02  0.05 0.0515 0.9485 1.3
## gaming   -0.02  0.15  0.22  0.02 0.0706 0.9294 1.8
## clubbing  0.14 -0.05  0.25  0.04 0.0869 0.9131 1.7
## reading   0.30  0.00 -0.14  0.02 0.1072 0.8928 1.4
## tv        0.09 -0.01  0.09 -0.01 0.0170 0.9830 2.0
## theater   0.62 -0.08 -0.10  0.01 0.3972 0.6028 1.1
## movies    0.39 -0.01 -0.04 -0.01 0.1523 0.8477 1.0
## concerts  0.46 -0.03  0.05 -0.07 0.2178 0.7822 1.1
## music     0.34 -0.02  0.18 -0.01 0.1486 0.8514 1.5
## shopping  0.31 -0.18  0.25  0.03 0.1898 0.8102 2.6
## yoga      0.33 -0.04  0.09 -0.02 0.1204 0.8796 1.2
## exphappy  0.07  0.16  0.26  0.05 0.0994 0.9006 1.9
## attr1_1  -0.17 -0.34  0.34 -0.13 0.2739 0.7261 2.7
## sinc1_1   0.00  0.18 -0.31  0.01 0.1255 0.8745 1.6
## intel1_1  0.12 -0.06 -0.24 -0.02 0.0769 0.9231 1.6
## fun1_1   -0.05  0.06  0.13  0.30 0.1156 0.8844 1.5
## amb1_1    0.17  0.14  0.04  0.09 0.0598 0.9402 2.7
## shar1_1   0.07  0.29 -0.21 -0.11 0.1478 0.8522 2.3
## attr2_1   0.06 -0.95 -0.05 -0.29 0.9951 0.0049 1.2
## sinc2_1  -0.08  0.67  0.04 -0.03 0.4524 0.5476 1.0
## intel2_1 -0.05  0.60  0.15 -0.02 0.3827 0.6173 1.1
## fun2_1    0.04 -0.07 -0.12  0.99 0.9950 0.0050 1.0
## amb2_1   -0.13  0.58  0.16 -0.15 0.4025 0.5975 1.4
## shar2_1   0.11  0.51 -0.10 -0.05 0.2813 0.7187 1.2
## attr3_1   0.15  0.00  0.55  0.05 0.3248 0.6752 1.2
## sinc3_1   0.15  0.02  0.09 -0.01 0.0315 0.9685 1.7
## intel3_1  0.06  0.09  0.35 -0.01 0.1344 0.8656 1.2
## fun3_1    0.18 -0.05  0.63 -0.04 0.4287 0.5713 1.2
## amb3_1    0.13  0.00  0.50 -0.03 0.2694 0.7306 1.1
## 
##                        ML3  ML2  ML4  ML1
## SS loadings           3.27 2.72 2.47 1.26
## Proportion Var        0.08 0.07 0.06 0.03
## Cumulative Var        0.08 0.15 0.22 0.25
## Proportion Explained  0.34 0.28 0.25 0.13
## Cumulative Proportion 0.34 0.62 0.87 1.00
## 
## Mean item complexity =  1.5
## Test of the hypothesis that 4 factors are sufficient.
## 
## The degrees of freedom for the null model are  741  and the objective function was  17.61 with Chi Square of  143979.6
## The degrees of freedom for the model are 591  and the objective function was  10.99 
## 
## The root mean square of the residuals (RMSR) is  0.08 
## The df corrected root mean square of the residuals is  0.09 
## 
## The harmonic number of observations is  8191 with the empirical chi square  76549.99  with prob <  0 
## The total number of observations was  8191  with Likelihood Chi Square =  89841.06  with prob <  0 
## 
## Tucker Lewis Index of factoring reliability =  0.219
## RMSEA index =  0.136  and the 90 % confidence intervals are  0.135 0.137
## BIC =  84515.68
## Fit based upon off diagonal values = 0.69
## Measures of factor score adequacy             
##                                                    ML3  ML2  ML4  ML1
## Correlation of (regression) scores with factors   0.96 1.00 0.88 1.00
## Multiple R square of scores with factors          0.91 0.99 0.77 0.99
## Minimum correlation of possible factor scores     0.83 0.98 0.54 0.98
factor.plot(fa(dating12, nfactors=4, rotate="varimax", fm="ml"))

fa.diagram(fa(dating12, nfactors=4, rotate="varimax", fm="ml"))

fa(dating12, nfactors=6, rotate="varimax", fm="ml") 
## Factor Analysis using method =  ml
## Call: fa(r = dating12, nfactors = 6, rotate = "varimax", fm = "ml")
## Standardized loadings (pattern matrix) based upon correlation matrix
##            ML5   ML3   ML6   ML4   ML2   ML1    h2     u2 com
## imprace   0.05 -0.05  0.18  0.06 -0.01  0.00 0.040 0.9603 1.6
## imprelig -0.01 -0.09  0.10  0.23 -0.12 -0.02 0.083 0.9169 2.4
## date     -0.04 -0.08 -0.33  0.14  0.05  0.01 0.138 0.8615 1.6
## go_out    0.04  0.00 -0.33 -0.01  0.05 -0.04 0.115 0.8852 1.1
## sports   -0.14  0.14  0.28 -0.10  0.14 -0.02 0.144 0.8562 2.9
## tvsports -0.08  0.11  0.24  0.04  0.16 -0.14 0.121 0.8788 3.3
## exercise  0.00 -0.08  0.30  0.01  0.06  0.03 0.098 0.9021 1.2
## dining    0.40 -0.07  0.34  0.06 -0.06  0.04 0.289 0.7114 2.1
## museums   0.91 -0.02 -0.03 -0.05 -0.09 -0.03 0.848 0.1517 1.0
## art       0.91 -0.02 -0.01 -0.07 -0.03 -0.04 0.832 0.1679 1.0
## hiking    0.22  0.06 -0.02  0.03  0.09  0.06 0.065 0.9346 1.7
## gaming   -0.04  0.17  0.18 -0.03  0.06  0.01 0.069 0.9309 2.4
## clubbing  0.12 -0.03  0.24  0.01  0.06  0.03 0.079 0.9206 1.7
## reading   0.29 -0.02 -0.06  0.03 -0.17  0.02 0.117 0.8826 1.8
## tv        0.07 -0.03  0.17  0.20  0.06  0.00 0.075 0.9254 2.4
## theater   0.60 -0.10  0.03  0.12 -0.07  0.03 0.387 0.6133 1.2
## movies    0.36 -0.02  0.06  0.10 -0.06  0.00 0.150 0.8497 1.3
## concerts  0.45 -0.03  0.08  0.03  0.04 -0.06 0.211 0.7889 1.1
## music     0.32 -0.01  0.20  0.06  0.08 -0.01 0.152 0.8480 1.9
## shopping  0.27 -0.17  0.35  0.13  0.03  0.03 0.247 0.7527 2.8
## yoga      0.32 -0.04  0.13  0.11  0.02 -0.02 0.133 0.8673 1.7
## exphappy  0.06  0.19  0.19 -0.06  0.02  0.03 0.084 0.9156 2.5
## attr1_1  -0.15 -0.20  0.27 -0.85  0.34 -0.15 0.995 0.0050 1.9
## sinc1_1   0.03  0.09 -0.36  0.41  0.14  0.05 0.332 0.6682 2.4
## intel1_1  0.06 -0.07 -0.09 -0.02 -0.99 -0.07 0.995 0.0050 1.0
## fun1_1   -0.04  0.05  0.07  0.19  0.13  0.30 0.152 0.8479 2.3
## amb1_1    0.15  0.08  0.14  0.55  0.02  0.11 0.368 0.6317 1.4
## shar1_1   0.08  0.22 -0.22  0.45  0.10 -0.07 0.316 0.6837 2.2
## attr2_1   0.07 -0.94  0.03 -0.11  0.01 -0.30 0.995 0.0049 1.2
## sinc2_1  -0.07  0.66 -0.08  0.09  0.12 -0.02 0.469 0.5314 1.2
## intel2_1 -0.08  0.62  0.11 -0.03 -0.20 -0.04 0.446 0.5543 1.3
## fun2_1    0.03 -0.08 -0.05 -0.03 -0.07  0.99 0.995 0.0050 1.0
## amb2_1   -0.12  0.60  0.06  0.00  0.07 -0.15 0.407 0.5927 1.3
## shar2_1   0.11  0.47 -0.10  0.26  0.06 -0.02 0.306 0.6936 1.8
## attr3_1   0.10  0.07  0.56 -0.07  0.02  0.01 0.334 0.6664 1.1
## sinc3_1   0.13  0.00  0.12  0.23  0.04  0.00 0.085 0.9145 2.3
## intel3_1  0.02  0.12  0.39  0.02 -0.14 -0.04 0.186 0.8142 1.5
## fun3_1    0.14  0.00  0.62  0.14  0.16 -0.07 0.452 0.5477 1.4
## amb3_1    0.08  0.04  0.57  0.10  0.04 -0.06 0.346 0.6542 1.1
## 
##                        ML5  ML3  ML6  ML4  ML2  ML1
## SS loadings           3.12 2.60 2.45 1.80 1.40 1.28
## Proportion Var        0.08 0.07 0.06 0.05 0.04 0.03
## Cumulative Var        0.08 0.15 0.21 0.26 0.29 0.32
## Proportion Explained  0.25 0.21 0.19 0.14 0.11 0.10
## Cumulative Proportion 0.25 0.45 0.65 0.79 0.90 1.00
## 
## Mean item complexity =  1.7
## Test of the hypothesis that 6 factors are sufficient.
## 
## The degrees of freedom for the null model are  741  and the objective function was  17.61 with Chi Square of  143979.6
## The degrees of freedom for the model are 522  and the objective function was  9.22 
## 
## The root mean square of the residuals (RMSR) is  0.07 
## The df corrected root mean square of the residuals is  0.08 
## 
## The harmonic number of observations is  8191 with the empirical chi square  57758.47  with prob <  0 
## The total number of observations was  8191  with Likelihood Chi Square =  75386.35  with prob <  0 
## 
## Tucker Lewis Index of factoring reliability =  0.258
## RMSEA index =  0.132  and the 90 % confidence intervals are  0.132 0.133
## BIC =  70682.71
## Fit based upon off diagonal values = 0.77
## Measures of factor score adequacy             
##                                                    ML5  ML3  ML6  ML4  ML2
## Correlation of (regression) scores with factors   0.96 1.00 0.88 0.99 1.00
## Multiple R square of scores with factors          0.92 0.99 0.78 0.97 0.99
## Minimum correlation of possible factor scores     0.85 0.99 0.56 0.94 0.98
##                                                    ML1
## Correlation of (regression) scores with factors   1.00
## Multiple R square of scores with factors          0.99
## Minimum correlation of possible factor scores     0.99
factor.plot(fa(dating12, nfactors=6, rotate="varimax", fm="ml"))

fa.diagram(fa(dating12, nfactors=6, rotate="varimax", fm="ml"))

Final interpretation

Now let’s move on and try to explain what do our factors mean.

fa(dating12, nfactors=5, rotate="varimax", fm="ml") 
## Factor Analysis using method =  ml
## Call: fa(r = dating12, nfactors = 5, rotate = "varimax", fm = "ml")
## Standardized loadings (pattern matrix) based upon correlation matrix
##            ML3   ML2   ML4   ML5   ML1    h2     u2 com
## imprace   0.03 -0.05  0.09  0.25  0.00 0.073 0.9269 1.4
## imprelig -0.03 -0.05 -0.04  0.30 -0.04 0.096 0.9041 1.2
## date     -0.07 -0.03 -0.35  0.09 -0.02 0.138 0.8619 1.2
## go_out    0.02  0.02 -0.30 -0.01 -0.06 0.097 0.9033 1.1
## sports   -0.13  0.09  0.41 -0.16  0.01 0.214 0.7857 1.6
## tvsports -0.10  0.09  0.32  0.08 -0.13 0.143 0.8566 1.8
## exercise  0.00 -0.10  0.30  0.05  0.04 0.105 0.8951 1.3
## dining    0.39 -0.08  0.25  0.26  0.04 0.292 0.7077 2.7
## museums   0.92 -0.04 -0.04  0.00 -0.04 0.853 0.1467 1.0
## art       0.92 -0.04  0.01 -0.03 -0.05 0.843 0.1574 1.0
## hiking    0.22  0.06  0.03 -0.07  0.06 0.060 0.9401 1.5
## gaming   -0.05  0.15  0.23  0.09  0.02 0.085 0.9146 2.2
## clubbing  0.12 -0.05  0.26  0.09  0.03 0.091 0.9089 1.8
## reading   0.30 -0.01 -0.14  0.04  0.02 0.108 0.8917 1.5
## tv        0.02  0.01  0.08  0.50 -0.03 0.262 0.7383 1.1
## theater   0.57 -0.08 -0.09  0.37  0.00 0.482 0.5176 1.8
## movies    0.34  0.00 -0.03  0.37 -0.02 0.252 0.7481 2.0
## concerts  0.42 -0.03  0.07  0.21 -0.07 0.233 0.7671 1.6
## music     0.30 -0.02  0.19  0.22 -0.02 0.171 0.8292 2.6
## shopping  0.24 -0.17  0.26  0.45  0.01 0.353 0.6467 2.5
## yoga      0.30 -0.03  0.09  0.16 -0.03 0.127 0.8726 1.8
## exphappy  0.07  0.16  0.27 -0.05  0.06 0.109 0.8912 1.9
## attr1_1  -0.13 -0.35  0.44 -0.45 -0.12 0.555 0.4454 3.2
## sinc1_1  -0.01  0.18 -0.35  0.20  0.01 0.196 0.8040 2.2
## intel1_1  0.13 -0.06 -0.26  0.01 -0.02 0.089 0.9106 1.6
## fun1_1   -0.04  0.06  0.12 -0.05  0.30 0.114 0.8858 1.5
## amb1_1    0.11  0.16 -0.02  0.44  0.08 0.239 0.7606 1.5
## shar1_1   0.04  0.31 -0.27  0.25 -0.11 0.245 0.7552 3.3
## attr2_1   0.05 -0.94 -0.05  0.02 -0.32 0.995 0.0049 1.2
## sinc2_1  -0.07  0.67  0.04 -0.03 -0.01 0.452 0.5481 1.0
## intel2_1 -0.04  0.60  0.15 -0.10  0.00 0.391 0.6086 1.2
## fun2_1    0.04 -0.10 -0.11  0.04  0.99 0.995 0.0050 1.1
## amb2_1   -0.10  0.59  0.16 -0.15 -0.13 0.419 0.5811 1.5
## shar2_1   0.09  0.52 -0.14  0.22 -0.04 0.342 0.6576 1.6
## attr3_1   0.11  0.01  0.53  0.06  0.04 0.302 0.6978 1.1
## sinc3_1   0.11  0.03  0.05  0.27 -0.02 0.087 0.9133 1.4
## intel3_1  0.04  0.09  0.32  0.06 -0.02 0.117 0.8835 1.3
## fun3_1    0.13 -0.03  0.59  0.20 -0.06 0.411 0.5893 1.4
## amb3_1    0.08  0.02  0.48  0.24 -0.05 0.296 0.7040 1.6
## 
##                        ML3  ML2  ML4  ML5  ML1
## SS loadings           3.01 2.73 2.52 1.90 1.27
## Proportion Var        0.08 0.07 0.06 0.05 0.03
## Cumulative Var        0.08 0.15 0.21 0.26 0.29
## Proportion Explained  0.26 0.24 0.22 0.17 0.11
## Cumulative Proportion 0.26 0.50 0.72 0.89 1.00
## 
## Mean item complexity =  1.6
## Test of the hypothesis that 5 factors are sufficient.
## 
## The degrees of freedom for the null model are  741  and the objective function was  17.61 with Chi Square of  143979.6
## The degrees of freedom for the model are 556  and the objective function was  9.91 
## 
## The root mean square of the residuals (RMSR) is  0.07 
## The df corrected root mean square of the residuals is  0.08 
## 
## The harmonic number of observations is  8191 with the empirical chi square  56272.09  with prob <  0 
## The total number of observations was  8191  with Likelihood Chi Square =  80980.15  with prob <  0 
## 
## Tucker Lewis Index of factoring reliability =  0.251
## RMSEA index =  0.133  and the 90 % confidence intervals are  0.132 0.134
## BIC =  75970.16
## Fit based upon off diagonal values = 0.77
## Measures of factor score adequacy             
##                                                    ML3  ML2  ML4  ML5  ML1
## Correlation of (regression) scores with factors   0.96 1.00 0.88 0.85 1.00
## Multiple R square of scores with factors          0.93 0.99 0.78 0.73 0.99
## Minimum correlation of possible factor scores     0.85 0.98 0.57 0.46 0.99
factor.plot(fa(dating12, nfactors=5, rotate="varimax", fm="ml"))

fa.diagram(fa(dating12, nfactors=5, rotate="varimax", fm="ml"))

  • First factor, ML3, seems to gather hobbies of a respondent: museums, art, theater, concerts, dining, music, yoga, reading, hiking. Interesting thing is that here most of the hobbies are kinda “intelligent”. Suh things like shopping and clubbing fell to other factors.

  • The second one, ML2, collects answers to the question “What do you think the opposite sex looks for in a date?”: attractive, sincere, intelligent, ambitious, has shared interests/hobbies. Also suddenly shar1_1 is here, too (which is answer “has shared interests/hobbies” to close question “what you look for in the opposite sex”)

  • Next, ML4, this factors explains a mix of: answers to the question “How do you think you measure up?” (fun, attractive, ambitious, intellingent), active hobbies (sport, excercise, tvsports)and how often reaspondent goes for a date. Maybe it’s a piece, where is explained how active people evaluate themselves and their date-activity?

  • likes tv, shopping, movies; looking for attractive and ambitious - that’s the character, that is described by the 4th factor, ML5;

  • the last factor, ML1, explains only 2 variables (according to the graph): it unites people, who look for a fun person on a date and expect, that the opposite sex on a date is looking for fun, too. If we look closer to the table we would also notice, that there also fit respondents, who expect, that the opposite sex on a date is looking for attractiveness.

More experiments

Following the advice of my friend, I’ve decided also to try out less factors. Here’s the version with 3 factors:

  • RMSR is much better - 0.1;
  • Proportion Explained is… one factor is still rather weak, but the situation is a bit better, than in previous models;
  • Proportion Variance stays the same: 0.08 and 0.07 for first factors, 0.03 for the last one;
  • and this last factor is again look like an appendix on the graph :)

And here factors just divided on that, explaining hobbies, and another, explaining what respondent expect from the opposite sex to look for on a date.

fa(dating12, nfactors=3, rotate="varimax", fm="ml") 
## Factor Analysis using method =  ml
## Call: fa(r = dating12, nfactors = 3, rotate = "varimax", fm = "ml")
## Standardized loadings (pattern matrix) based upon correlation matrix
##            ML3   ML2   ML1     h2     u2 com
## imprace   0.07 -0.04  0.01 0.0061 0.9939 1.7
## imprelig  0.02 -0.06  0.02 0.0047 0.9953 1.3
## date     -0.05 -0.06 -0.03 0.0070 0.9930 2.3
## go_out    0.02  0.00  0.03 0.0014 0.9986 1.9
## sports   -0.15  0.11  0.04 0.0379 0.9621 2.0
## tvsports -0.10  0.10  0.16 0.0444 0.9556 2.4
## exercise  0.01 -0.08 -0.02 0.0061 0.9939 1.1
## dining    0.42 -0.04 -0.02 0.1805 0.8195 1.0
## museums   0.90  0.02  0.05 0.8206 0.1794 1.0
## art       0.89  0.02  0.07 0.8022 0.1978 1.0
## hiking    0.21  0.08 -0.04 0.0514 0.9486 1.4
## gaming   -0.04  0.17  0.01 0.0295 0.9705 1.1
## clubbing  0.13 -0.02 -0.01 0.0170 0.9830 1.1
## reading   0.30  0.01 -0.03 0.0917 0.9083 1.0
## tv        0.08  0.00  0.02 0.0075 0.9925 1.2
## theater   0.62 -0.05 -0.01 0.3881 0.6119 1.0
## movies    0.39  0.01  0.02 0.1490 0.8510 1.0
## concerts  0.45  0.00  0.08 0.2124 0.7876 1.1
## music     0.33  0.01  0.04 0.1085 0.8915 1.0
## shopping  0.30 -0.14  0.00 0.1078 0.8922 1.4
## yoga      0.33 -0.01  0.04 0.1075 0.8925 1.0
## exphappy  0.05  0.19 -0.02 0.0372 0.9628 1.1
## attr1_1  -0.16 -0.32  0.16 0.1540 0.8460 2.0
## sinc1_1   0.00  0.15 -0.04 0.0247 0.9753 1.2
## intel1_1  0.13 -0.07  0.00 0.0224 0.9776 1.6
## fun1_1   -0.05  0.08 -0.29 0.0907 0.9093 1.2
## amb1_1    0.15  0.16 -0.08 0.0554 0.9446 2.5
## shar1_1   0.06  0.28  0.09 0.0869 0.9131 1.3
## attr2_1   0.11 -0.95  0.28 0.9951 0.0049 1.2
## sinc2_1  -0.12  0.66  0.04 0.4518 0.5482 1.1
## intel2_1 -0.09  0.60  0.05 0.3750 0.6250 1.1
## fun2_1    0.07 -0.05 -0.99 0.9950 0.0050 1.0
## amb2_1   -0.17  0.58  0.17 0.3958 0.6042 1.3
## shar2_1   0.08  0.50  0.04 0.2594 0.7406 1.1
## attr3_1   0.11  0.06  0.02 0.0167 0.9833 1.6
## sinc3_1   0.14  0.04  0.02 0.0215 0.9785 1.2
## intel3_1  0.04  0.12  0.06 0.0185 0.9815 1.6
## fun3_1    0.14  0.01  0.12 0.0348 0.9652 2.0
## amb3_1    0.10  0.05  0.09 0.0213 0.9787 2.5
## 
##                        ML3  ML2  ML1
## SS loadings           3.25 2.69 1.30
## Proportion Var        0.08 0.07 0.03
## Cumulative Var        0.08 0.15 0.19
## Proportion Explained  0.45 0.37 0.18
## Cumulative Proportion 0.45 0.82 1.00
## 
## Mean item complexity =  1.4
## Test of the hypothesis that 3 factors are sufficient.
## 
## The degrees of freedom for the null model are  741  and the objective function was  17.61 with Chi Square of  143979.6
## The degrees of freedom for the model are 627  and the objective function was  12.44 
## 
## The root mean square of the residuals (RMSR) is  0.1 
## The df corrected root mean square of the residuals is  0.11 
## 
## The harmonic number of observations is  8191 with the empirical chi square  123002.3  with prob <  0 
## The total number of observations was  8191  with Likelihood Chi Square =  101687.7  with prob <  0 
## 
## Tucker Lewis Index of factoring reliability =  0.166
## RMSEA index =  0.14  and the 90 % confidence intervals are  0.14 0.141
## BIC =  96037.94
## Fit based upon off diagonal values = 0.51
## Measures of factor score adequacy             
##                                                    ML3  ML2  ML1
## Correlation of (regression) scores with factors   0.96 1.00 1.00
## Multiple R square of scores with factors          0.92 0.99 0.99
## Minimum correlation of possible factor scores     0.83 0.99 0.99
factor.plot(fa(dating12, nfactors=3, rotate="varimax", fm="ml"))

fa.diagram(fa(dating12, nfactors=3, rotate="varimax", fm="ml"))