library(candisc)
## Warning: package 'candisc' was built under R version 4.2.3
## Loading required package: car
## Warning: package 'car' was built under R version 4.2.3
## Loading required package: carData
## Warning: package 'carData' was built under R version 4.2.3
## Loading required package: heplots
## Warning: package 'heplots' was built under R version 4.2.3
## Loading required package: broom
## Warning: package 'broom' was built under R version 4.2.3
##
## Attaching package: 'candisc'
## The following object is masked from 'package:stats':
##
## cancor
library(mvoutlier)
## Warning: package 'mvoutlier' was built under R version 4.2.3
## Loading required package: sgeostat
CoopCompPrejMeans <- read.csv("C:/Users/John Majoubi/Downloads/CoopCompPrejMeans.csv", stringsAsFactors=TRUE)
str(CoopCompPrejMeans)
## 'data.frame': 256 obs. of 12 variables:
## $ P_Id : int 1 2 3 4 5 6 7 8 9 10 ...
## $ Mean_ATB : num 2.5 1.3 3.85 1.3 3.05 2.15 4.85 1.75 2.45 3.75 ...
## $ Mean_ATG : num 1 1 2 1.6 1 4.4 6 1 2.8 2.4 ...
## $ Mean_ATL : num 1 1 2 3.4 1 3 4.8 2.2 2 2 ...
## $ Mean_ASIB : num 2 1.17 3.67 2.17 2.83 ...
## $ Mean_ASIH : num 2.5 1 2.17 1.67 1.17 ...
## $ Mean_AMIB : num 2.5 1.33 3.83 2.5 2.17 ...
## $ Mean_AMIH : num 1.33 1.33 3.33 2.5 1.83 ...
## $ Mean_SAAASS: num 3.85 1.92 2.77 2.62 2.23 ...
## $ Mean_SAAASC: num 3 1.67 4.67 2.92 2.67 ...
## $ Mean_COOP : num 4.54 5.38 5.46 6.31 3.77 ...
## $ Mean_COMP : num 4.8 3.7 5.2 3.2 6.9 5.3 3.6 5.4 5 5.8 ...
There are 11 vaiables. Therefore there has to be a minimum of 55 (11*5=55). 265 > 55 and thus surpasses the 5:1 minimum ratio required.
Creating a subset of the larger data:
CoopCompPrej.Matrix = CoopCompPrejMeans[c(2:12)]
Exploratory DataScreening
Multivariate outlier Detection using MCD75
#setting seed for reproducibility
set.seed(123)
CoopCompPrejMeans$MCD = aq.plot(CoopCompPrej.Matrix, quan = .75, alpha = .001)$outliers
## Projection to the first and second robust principal components.
## Proportion of total variation (explained variance): 0.4357823
summary(CoopCompPrejMeans$MCD)
## Mode FALSE TRUE
## logical 235 21
#the MCD estimator results
summary(aq.plot(CoopCompPrej.Matrix, quan = .75, alpha = .001)$outliers)
## Projection to the first and second robust principal components.
## Proportion of total variation (explained variance): 0.4302493
## Mode FALSE TRUE
## logical 235 21
Deleting the Outliers
Delete.Outliers.CoopCompPrej = CoopCompPrejMeans[-c(which(CoopCompPrejMeans$MCD=="TRUE")),]
All outliers are deleted.
#1d)
Linearity of Sets
#all pairwise correlations
cor(Delete.Outliers.CoopCompPrej[c(2:10)])
## Mean_ATB Mean_ATG Mean_ATL Mean_ASIB Mean_ASIH Mean_AMIB
## Mean_ATB 1.0000000 0.5313740 0.5579777 0.5343107 0.6875281 0.4750097
## Mean_ATG 0.5313740 1.0000000 0.9091145 0.4847331 0.4609555 0.3284853
## Mean_ATL 0.5579777 0.9091145 1.0000000 0.5040486 0.4905375 0.3747016
## Mean_ASIB 0.5343107 0.4847331 0.5040486 1.0000000 0.6476171 0.5451476
## Mean_ASIH 0.6875281 0.4609555 0.4905375 0.6476171 1.0000000 0.5056245
## Mean_AMIB 0.4750097 0.3284853 0.3747016 0.5451476 0.5056245 1.0000000
## Mean_AMIH 0.6338889 0.6213729 0.6425804 0.7694208 0.7525033 0.6623619
## Mean_SAAASS 0.5626379 0.3147580 0.3183631 0.4488199 0.5087585 0.5081921
## Mean_SAAASC 0.5412186 0.3747651 0.3847610 0.4648952 0.5402099 0.5452885
## Mean_AMIH Mean_SAAASS Mean_SAAASC
## Mean_ATB 0.6338889 0.5626379 0.5412186
## Mean_ATG 0.6213729 0.3147580 0.3747651
## Mean_ATL 0.6425804 0.3183631 0.3847610
## Mean_ASIB 0.7694208 0.4488199 0.4648952
## Mean_ASIH 0.7525033 0.5087585 0.5402099
## Mean_AMIB 0.6623619 0.5081921 0.5452885
## Mean_AMIH 1.0000000 0.5250582 0.5797333
## Mean_SAAASS 0.5250582 1.0000000 0.7857068
## Mean_SAAASC 0.5797333 0.7857068 1.0000000
# Side-2 (Interdependency trait-level) correlations
cor(Delete.Outliers.CoopCompPrej[c(11:12)])
## Mean_COOP Mean_COMP
## Mean_COOP 1.0000000 -0.1829169
## Mean_COMP -0.1829169 1.0000000
Most correlations are within the range of 0.35 and 0.80 for side-1, but correlations for side-2 are not in the range of required correlations, but because they are on the interdependency trait-level side we can keep exploring.
#1e)
creating a scatterplot:
#Prejudice Measures scatterplot
plot(Delete.Outliers.CoopCompPrej[,2:10])
#interdependency measures scatterplot
plot(Delete.Outliers.CoopCompPrej[,11:12])
Determinants of the Matrix
det(cor(Delete.Outliers.CoopCompPrej[,2:12]))
## [1] 0.000567473
Determinant is greater than 0–No singularity
#1G) Creating the final CANCOR model
coopcompprej.cancor = cancor(cbind(Mean_ATB, Mean_ATG, Mean_ATL, Mean_ASIB, Mean_ASIH, Mean_AMIB, Mean_AMIH, Mean_SAAASS, Mean_SAAASC) ~ Mean_COOP + Mean_COMP, data = Delete.Outliers.CoopCompPrej, set.names = c("Interdependency Trait Levels", "Prejudice"))
## Warning in model.matrix.default(mt, mf, contrasts): non-list contrasts argument
## ignored
NHST
plot(coopcompprej.cancor, smooth = TRUE)
#Requesting the NHST
coopcompprej.cancor
##
## Canonical correlation analysis of:
## 2 Interdependency Trait Levels variables: Mean_COOP, Mean_COMP
## with 9 Prejudice variables: Mean_ATB, Mean_ATG, Mean_ATL, Mean_ASIB, Mean_ASIH, Mean_AMIB, Mean_AMIH, Mean_SAAASS, Mean_SAAASC
##
## CanR CanRSQ Eigen percent cum scree
## 1 0.4599 0.2115 0.2682 69.36 69.36 ******************************
## 2 0.3254 0.1059 0.1185 30.64 100.00 *************
##
## Test of H0: The canonical correlations in the
## current row and all that follow are zero
##
## CanR LR test stat approx F numDF denDF Pr(> F)
## 1 0.45988 0.70500 4.7533 18 448 9.777e-10 ***
## 2 0.32544 0.89409 3.3316 8 225 0.001268 **
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
#1i) Getting the structure matrix for the cancor
coopcompprej.cancor$structure
## $X.xscores
## Xcan1 Xcan2
## Mean_COOP 0.7638169 -0.6454330
## Mean_COMP -0.7742585 -0.6328695
##
## $Y.xscores
## Xcan1 Xcan2
## Mean_ATB -0.4170918 -0.03211257
## Mean_ATG -0.1368232 -0.12738818
## Mean_ATL -0.1551690 -0.14983864
## Mean_ASIB -0.2042136 -0.16656345
## Mean_ASIH -0.2663728 -0.14758979
## Mean_AMIB -0.3103848 -0.13151650
## Mean_AMIH -0.2377194 -0.21391152
## Mean_SAAASS -0.2935068 -0.04989039
## Mean_SAAASC -0.2673392 -0.19156877
##
## $X.yscores
## Ycan1 Ycan2
## Mean_COOP 0.3512604 -0.2100483
## Mean_COMP -0.3560623 -0.2059597
##
## $Y.yscores
## Ycan1 Ycan2
## Mean_ATB -0.9069675 -0.09867497
## Mean_ATG -0.2975226 -0.39143634
## Mean_ATL -0.3374155 -0.46042173
## Mean_ASIB -0.4440632 -0.51181346
## Mean_ASIH -0.5792284 -0.45351152
## Mean_AMIB -0.6749327 -0.40412176
## Mean_AMIH -0.5169216 -0.65730383
## Mean_SAAASS -0.6382314 -0.15330238
## Mean_SAAASC -0.5813300 -0.58864939
For Xcan1: Both cooperation and competition are contributing.
For Ycan1: ATB, ASIB, ASIH, AMIB, AMIH, SAAAASS, and SAAASC are contributing.
For Xcan2: Both cooperation amd competition are also contributing, but this portion is orthogonal to Xcan1.
For Ycan2: ATL, ASIB, ASIH, AMIB, AMIH, and SAAAASC are contributing but this portion is orthogonal to Ycan1.
#Redundancy Analysis
redundancy(coopcompprej.cancor)
##
## Redundancies for the Interdependency Trait Levels variables & total X canonical redundancy
##
## Xcan1 Xcan2 total X|Y
## 0.12508 0.04327 0.16835
##
## Redundancies for the Prejudice variables & total Y canonical redundancy
##
## Ycan1 Ycan2 total Y|X
## 0.07110 0.02128 0.09237
APA Summary
We subjected the prejudice variables, on one side and the interpersonal trait variables on the other side, to a canonical correlation using the candisc package (Friendly & Fox, 2017) in the R statistical environment (R Core Team, 2018). Of the 2 canonical pairs extracted, both canonical variate pairs were statistically significant at p <.05.
Intrepreting this canonical correlation, higher Mean_COOP (.714) and lower Mean_COMP (-.823) were both associated with lower Mean_ATB (-.890), lower Mean_ASIH (-.590), lower Mean_AMIB (-.719), lower Mean_AMIH (-.532), lower Mean_SAAASS (-0.621), and lower Mean_SAAASC (-.625), r\(_{c1}\) = .464, F(18, 454) = 4.77, p < .001.
Considering the redundancy analysis for this effect, the first canonical variate pair extracted 12.7% of the variance in the interpersonal trait variables. The same canonical variate pair extracted 7.39% of the variance on the prejudice measures.
The second, orthogonal pair showed that lower Mean_COOP (-.699) and lower Mean_COMP (-.568) were both associated with lower Mean_AMIH (-.598), lower Mean_SAAASC (-.564), lower Mean_ATL (-.457), lower Mean_ASIB (-.480), lower Mean_ASIH (-.435), r\(_{c2}\) = .319, F(8, 227) = 3.20, p = .0018.
Considering the redundancy analysis for this effect, the second canonical variate pair extracted 4.12% of the variance in the interpersonal trait variables and that the same canonical variate pair extracted 1.79% of the variance on the prejudice measures.
library(psych)
## Warning: package 'psych' was built under R version 4.2.3
##
## Attaching package: 'psych'
## The following object is masked from 'package:car':
##
## logit
library(GPArotation)
## Warning: package 'GPArotation' was built under R version 4.2.3
##
## Attaching package: 'GPArotation'
## The following objects are masked from 'package:psych':
##
## equamax, varimin
library(corpcor)
library(mvoutlier)
library(car)
library(haven)
TIPI_Data1_1_ <- read_sav("C:/Users/John Majoubi/Downloads/TIPI.Data1 (1).sav")
TIPI.listwise = na.exclude(TIPI_Data1_1_)
Both PCA and EFA are reduction methods so in that sense the use of both of them would apply. The issue is PCA assumes the measured variables are error free. In any study exploring human behavior PCA would not work, therefor for almost all psychological related factor analyses (except perhaps brain activity measurement) EFA is the best method. With canonical correlation there are only two main sides and variables are organized into sets. So the model is constrained. EFA is better for an unconstrained type of model we are looking for which asking “what multivariate structure (how many factors) do the variables create?”.
str(TIPI.listwise)
## tibble [444 × 10] (S3: tbl_df/tbl/data.frame)
## $ TIPI_1 : dbl+lbl [1:444] 6, 6, 1, 6, 3, 2, 1, 2, 4, 5, 2, 2, 3, 2, 5, 2, 6, 6, ...
## ..@ label : chr "I see myself as:-Extraverted, Enthusiastic."
## ..@ format.spss: chr "F8.0"
## ..@ labels : Named num [1:7] 1 2 3 4 5 6 7
## .. ..- attr(*, "names")= chr [1:7] "Strongly Disagree" "Disagree" "Somewhat Disagree" "Neither Agree nor Disagree" ...
## $ TIPI_2 : dbl+lbl [1:444] 5, 4, 7, 2, 5, 7, 3, 6, 4, 3, 2, 5, 4, 3, 6, 3, 6, 6, ...
## ..@ label : chr "I see myself as:-Critical, Quarrelsome."
## ..@ format.spss: chr "F8.0"
## ..@ labels : Named num [1:7] 1 2 3 4 5 6 7
## .. ..- attr(*, "names")= chr [1:7] "Strongly Disagree" "Disagree" "Somewhat Disagree" "Neither Agree nor Disagree" ...
## $ TIPI_3 : dbl+lbl [1:444] 6, 7, 2, 6, 4, 5, 6, 6, 4, 6, 5, 6, 5, 6, 5, 6, 6, 6, ...
## ..@ label : chr "I see myself as:-Dependable, Self-disciplined."
## ..@ format.spss: chr "F8.0"
## ..@ labels : Named num [1:7] 1 2 3 4 5 6 7
## .. ..- attr(*, "names")= chr [1:7] "Strongly Disagree" "Disagree" "Somewhat Disagree" "Neither Agree nor Disagree" ...
## $ TIPI_4 : dbl+lbl [1:444] 7, 4, 3, 2, 3, 1, 3, 2, 3, 1, 3, 2, 5, 2, 3, 3, 6, 5, ...
## ..@ label : chr "I see myself as:-Anxious, Easily upset."
## ..@ format.spss: chr "F8.0"
## ..@ labels : Named num [1:7] 1 2 3 4 5 6 7
## .. ..- attr(*, "names")= chr [1:7] "Strongly Disagree" "Disagree" "Somewhat Disagree" "Neither Agree nor Disagree" ...
## $ TIPI_5 : dbl+lbl [1:444] 6, 4, 6, 6, 6, 4, 3, 5, 5, 5, 3, 3, 6, 7, 5, 6, 5, 6, ...
## ..@ label : chr "I see myself as:-Open to new experiences, Complex."
## ..@ format.spss: chr "F8.0"
## ..@ labels : Named num [1:7] 1 2 3 4 5 6 7
## .. ..- attr(*, "names")= chr [1:7] "Strongly Disagree" "Disagree" "Somewhat Disagree" "Neither Agree nor Disagree" ...
## $ TIPI_6 : dbl+lbl [1:444] 2, 4, 1, 2, 3, 1, 2, 2, 5, 3, 2, 1, 2, 1, 3, 3, 7, 4, ...
## ..@ label : chr "I see myself as:-Reserved, Quiet."
## ..@ format.spss: chr "F8.0"
## ..@ labels : Named num [1:7] 1 2 3 4 5 6 7
## .. ..- attr(*, "names")= chr [1:7] "Strongly Disagree" "Disagree" "Somewhat Disagree" "Neither Agree nor Disagree" ...
## $ TIPI_7 : dbl+lbl [1:444] 6, 7, 5, 6, 5, 7, 3, 6, 4, 6, 3, 6, 6, 6, 6, 5, 7, 5, ...
## ..@ label : chr "I see myself as:-Sympathetic, Warm."
## ..@ format.spss: chr "F8.0"
## ..@ labels : Named num [1:7] 1 2 3 4 5 6 7
## .. ..- attr(*, "names")= chr [1:7] "Strongly Disagree" "Disagree" "Somewhat Disagree" "Neither Agree nor Disagree" ...
## $ TIPI_8 : dbl+lbl [1:444] 7, 6, 3, 2, 7, 5, 2, 6, 4, 3, 3, 6, 2, 6, 5, 3, 6, 5, ...
## ..@ label : chr "I see myself as:-Disorganized, Careless."
## ..@ format.spss: chr "F8.0"
## ..@ labels : Named num [1:7] 1 2 3 4 5 6 7
## .. ..- attr(*, "names")= chr [1:7] "Strongly Disagree" "Disagree" "Somewhat Disagree" "Neither Agree nor Disagree" ...
## $ TIPI_9 : dbl+lbl [1:444] 6, 4, 3, 6, 3, 2, 2, 5, 4, 2, 4, 4, 6, 4, 5, 3, 6, 5, ...
## ..@ label : chr "I see myself as:-Calm, Emotionally stable."
## ..@ format.spss: chr "F8.0"
## ..@ labels : Named num [1:7] 1 2 3 4 5 6 7
## .. ..- attr(*, "names")= chr [1:7] "Strongly Disagree" "Disagree" "Somewhat Disagree" "Neither Agree nor Disagree" ...
## $ TIPI_10: dbl+lbl [1:444] 6, 1, 7, 2, 1, 7, 5, 6, 4, 7, 6, 6, 6, 6, 5, 2, 6, 4, ...
## ..@ label : chr "I see myself as:-Conventional, Uncreative."
## ..@ format.spss: chr "F8.0"
## ..@ labels : Named num [1:7] 1 2 3 4 5 6 7
## .. ..- attr(*, "names")= chr [1:7] "Strongly Disagree" "Disagree" "Somewhat Disagree" "Neither Agree nor Disagree" ...
## - attr(*, "na.action")= 'exclude' Named int [1:225] 1 2 3 4 5 6 7 8 9 10 ...
## ..- attr(*, "names")= chr [1:225] "1" "2" "3" "4" ...
There are 10 vaiables. Therefore there has to be a minimum of 50 (10*5=5). There are 444 participants (cases) in the sample. 444 > 55 and thus surpasses the 5:1 minimum ratio required. It would even surpass the conservative 20:1 recommendation.
Screening for OUtliers
KMO(TIPI.listwise)
## Kaiser-Meyer-Olkin factor adequacy
## Call: KMO(r = TIPI.listwise)
## Overall MSA = 0.62
## MSA for each item =
## TIPI_1 TIPI_2 TIPI_3 TIPI_4 TIPI_5 TIPI_6 TIPI_7 TIPI_8 TIPI_9 TIPI_10
## 0.59 0.64 0.65 0.64 0.62 0.48 0.60 0.70 0.67 0.58
The overall MSA is over 0.60 so it’s adequate to run a factor analysis.
set.seed(123)
TIPI.listwise$MCD = aq.plot(TIPI.listwise, quan = .75, alpha = .001)$outliers
## Projection to the first and second robust principal components.
## Proportion of total variation (explained variance): 0.3554109
summary(TIPI.listwise$MCD)
## Mode FALSE TRUE
## logical 423 21
There are 21 outliers.
TIPI.NoOutliers = TIPI.listwise[-c(which(TIPI.listwise$MCD=="TRUE")),]
All outliers are deleted.
KMO(TIPI.listwise[,1:10])
## Kaiser-Meyer-Olkin factor adequacy
## Call: KMO(r = TIPI.listwise[, 1:10])
## Overall MSA = 0.62
## MSA for each item =
## TIPI_1 TIPI_2 TIPI_3 TIPI_4 TIPI_5 TIPI_6 TIPI_7 TIPI_8 TIPI_9 TIPI_10
## 0.59 0.64 0.65 0.64 0.62 0.48 0.60 0.70 0.67 0.58
The overall MSA is over 0.60 so it’s adequate to run a factor analysis.
cortest.bartlett(TIPI.NoOutliers[,1:10])
## R was not square, finding R from data
## $chisq
## [1] 1166.065
##
## $p.value
## [1] 7.829147e-215
##
## $df
## [1] 45
The matrix of indicators is probably not orthogonal. Factor analysis is appropriate.
det(cor(TIPI.NoOutliers[,1:10]))
## [1] 0.0613756
We do NOT have singularity because the determinant is not exactly 0.
Running the factor analysis with no rotation selected
Tipi.Factors = fa(TIPI.NoOutliers[c(1:10)], rotate = "none")
Kaiser criterion (Jiffy)
sort(Tipi.Factors$e.values)
## [1] 0.2720776 0.3172221 0.3922211 0.4476046 0.7492375 0.9095908 0.9286461
## [8] 1.3032490 1.5884484 3.0917029
#requesting an object and a summary
jiffy.TiPi.factors = Tipi.Factors$e.values >= 1
summary(jiffy.TiPi.factors)
## Mode FALSE TRUE
## logical 7 3
Based on the jiffy we should extract 3 factors.
Cattell’s scree plot
plot(Tipi.Factors$e.values, type = "b")
Between 4 to 7 factors is reasonable.
Horn’s Parallel analysis
fa.parallel(TIPI.NoOutliers[c(1:10)], n.obs = 423, fa = "fa")
## Warning in fa.parallel(TIPI.NoOutliers[c(1:10)], n.obs = 423, fa = "fa"): You
## specified the number of subjects, implying a correlation matrix, but do not
## have a correlation matrix, correlations found
## Parallel analysis suggests that the number of factors = 6 and the number of components = NA
Parallel analysis suggests 6 factors.
Extracting 5 factors
PA.Tipi.factor = fa(TIPI.NoOutliers[c(1:10)], nfactors = 5, fm = "pa", max.iter = 1000)
## Warning in fa.stats(r = r, f = f, phi = phi, n.obs = n.obs, np.obs = np.obs, :
## The estimated weights for the factor scores are probably incorrect. Try a
## different factor score estimation method.
## Warning in fac(r = r, nfactors = nfactors, n.obs = n.obs, rotate = rotate, : An
## ultra-Heywood case was detected. Examine the results carefully
HEYWOOD CASE! Changing extraction method.
ML.Tipi.Factor = fa(TIPI.NoOutliers[c(1:10)], nfactors = 5, fm = "ml", rotate = "varimax")
Maximum likelihood extraction was the better choice because the principal axis resulted in a Haywood case. # 2o)
Printing the factor loadings
#My tie breaker is .09, thus 0.31 is the lowest display (Because .40 is the convention)
print.psych(ML.Tipi.Factor, cut = .31, sort = T)
## Factor Analysis using method = ml
## Call: fa(r = TIPI.NoOutliers[c(1:10)], nfactors = 5, rotate = "varimax",
## fm = "ml")
## Standardized loadings (pattern matrix) based upon correlation matrix
## item ML1 ML4 ML3 ML2 ML5 h2 u2 com
## TIPI_3 3 0.98 1.00 0.005 1.1
## TIPI_8 8 0.45 0.35 0.647 2.4
## TIPI_4 4 0.96 1.00 0.005 1.1
## TIPI_9 9 0.41 0.53 0.52 0.478 2.5
## TIPI_1 1 0.96 1.00 0.005 1.2
## TIPI_6 6 0.63 0.43 0.570 1.2
## TIPI_5 5 0.98 1.00 0.005 1.1
## TIPI_10 10 0.44 0.25 0.752 1.6
## TIPI_2 2 0.85 0.83 0.168 1.3
## TIPI_7 7 0.45 0.29 0.705 1.9
##
## ML1 ML4 ML3 ML2 ML5
## SS loadings 1.46 1.44 1.40 1.25 1.12
## Proportion Var 0.15 0.14 0.14 0.12 0.11
## Cumulative Var 0.15 0.29 0.43 0.55 0.67
## Proportion Explained 0.22 0.22 0.21 0.19 0.17
## Cumulative Proportion 0.22 0.43 0.64 0.83 1.00
##
## Mean item complexity = 1.5
## Test of the hypothesis that 5 factors are sufficient.
##
## df null model = 45 with the objective function = 2.79 with Chi Square = 1166.07
## df of the model are 5 and the objective function was 0.06
##
## The root mean square of the residuals (RMSR) is 0.02
## The df corrected root mean square of the residuals is 0.07
##
## The harmonic n.obs is 423 with the empirical chi square 21.91 with prob < 0.00054
## The total n.obs was 423 with Likelihood Chi Square = 25.23 with prob < 0.00013
##
## Tucker Lewis Index of factoring reliability = 0.836
## RMSEA index = 0.098 and the 90 % confidence intervals are 0.062 0.137
## BIC = -5
## Fit based upon off diagonal values = 0.99
## Measures of factor score adequacy
## ML1 ML4 ML3 ML2 ML5
## Correlation of (regression) scores with factors 1.00 1.00 1.00 1.00 0.91
## Multiple R square of scores with factors 0.99 0.99 0.99 0.99 0.83
## Minimum correlation of possible factor scores 0.99 0.99 0.98 0.99 0.65
There is no junk factor. Each item with a loading score 0f .40 surpassed tie breaker of .09.
All items exhibit loadings on their intended factors, surpassing tie-breaking thresholds of 0.09 or more, so there is evidence for the 5 factor personality model OCEAN.
APA Summary
For the Method section: “The assumptions of exploratory factor analysis were met. Specifically, our overall KMO = .62 (which is higher than the .60 cut-off), Bartlett’s test was p < .001 (suggesting the absence of perfect orthogonality), and the determinant of the correlation matrix was greater than 0.”
We subjected the overall scores for 10 items from the TIPI to an exploratory factor analysis (EFA) using the psych package (Revelle, 2018) in the R statistical environment (R Core Team, 2019).
As noted in the Introduction, the literature suggested that these 10 items are organizable into 5 factors: (a) Openness, (b) Conscientiousness, (c) Extraversion, (d) Agreeableness, and (e) Neuroticism. We used EFA to determine whether the task composites would spontaneously organize into 5 factors and load in the hypothesized domains.
We calculated Kaiser’s little jiffy (i.e., extracted eigenvalues over 1.00) and the jiffy suggested that we extract 3 factors.
We then examined Cattell’s screen plot, which also suggested that we extract 4 factors. We then calculated Horn’s parallel analysis, which suggested that we extract 6 factors. Given that the Horn’s Parallel and the scree were similar and closer to the hypothesized literature value, we chose to first extract 6 factors.
To derive the 5-factor solution, we first subjected the task scores to an EFA with a principal axis factor extraction and a Varimax rotation. However, this extraction method produced a Heywood case (Heywood, 1931). Accordingly, we changed the extraction method to maximum likelihood (per the suggestion of Fabrigar et al., 1999) and kept the varimax rotation.
The results of the maximum likelihood extraction and varimax rotation showed that all item scores loaded onto a factor at above 0.40. This 5-factor solution accounted for 67% of the variance in all the item scores. Interpreting the 5-factor solution, we can organize the items into 5 domains: (a) Openness, (b) Conscientiousness, (c) Extraversion, (d) Agreeableness, and (e) Neuroticism.