Loading the Necessary Packages

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

1a)

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.

1b)

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

1c)

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])

1f)

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

1h)

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.

1j)

#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

1k)

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.

Question 2

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")

2a)

TIPI.listwise = na.exclude(TIPI_Data1_1_)

2b)

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?”.

2c)

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.

2d)

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.

2e)

TIPI.NoOutliers = TIPI.listwise[-c(which(TIPI.listwise$MCD=="TRUE")),]

All outliers are deleted.

2f)

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.

2g)

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.

2h)

det(cor(TIPI.NoOutliers[,1:10]))
## [1] 0.0613756

We do NOT have singularity because the determinant is not exactly 0.

2i)

Running the factor analysis with no rotation selected

Tipi.Factors = fa(TIPI.NoOutliers[c(1:10)], rotate = "none")

2j)

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.

2k)

Cattell’s scree plot

plot(Tipi.Factors$e.values, type = "b")

Between 4 to 7 factors is reasonable.

2l)

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.

2m)

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

2p)

There is no junk factor. Each item with a loading score 0f .40 surpassed tie breaker of .09.

2q)

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.

2r)

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.