knitr::opts_chunk$set(echo = TRUE, warning = TRUE, message = FALSE)

load packages

library(tidyverse)
library(psych)
library(knitr)
library(datarobot)
library(xtable)
library(reshape2)
library(naniar)
library(pander)
library(lavaan)
library(data.table)
library(corrplot)
library(GPArotation)
library(writexl)

load preprocessed correlation matrix

load("scale_cor.rda")

Requirements

eigen values

positive-definit-matrix = no negative eigen-values

kable(eigen_values <- data.table("Component" = names(scale_cor), "Eigen-Value" = eigen(scale_cor)$values))
Eigen-Value
31.9601391
6.3120201
4.3297242
3.9554832
3.4282576
2.6621432
2.0256410
1.6197037
1.5217459
1.4412915
1.3168991
1.2591101
1.1343059
1.1270458
0.9856832
0.9777507
0.8968906
0.8634589
0.8410612
0.8260231
0.8043672
0.7736437
0.7555308
0.7241458
0.7182003
0.6990762
0.6936477
0.6765885
0.6583651
0.6345268
0.6235626
0.6062141
0.5818392
0.5726520
0.5713716
0.5507572
0.5347973
0.5274546
0.5144263
0.5136100
0.4979764
0.4884998
0.4713096
0.4542529
0.4453363
0.4351485
0.4286447
0.4267225
0.4140556
0.3984882
0.3965011
0.3879522
0.3858303
0.3700398
0.3666565
0.3601863
0.3553525
0.3423764
0.3353382
0.3240787
0.3233107
0.3203552
0.3099934
0.3020833
0.2948080
0.2918026
0.2837159
0.2763561
0.2698333
0.2644365
0.2519287
0.2447275
0.2421354
0.2366170
0.2305927
0.2284853
0.2211989
0.2156989
0.2108620
0.2018493
0.1967698
0.1883170
0.1803028
0.1725047
0.1648319
0.1633011
0.1609293
0.1568667
0.1504945
0.1437462
0.1410559
0.1336942
0.1251780
0.1151724
0.1104904
0.0862623
0.0795021
0.0058885

Kaiser-Meyer-Olkin (KMO)

= proportion of variance in variables that might be caused by underlying factors. Measures of sampling adequacy (MSA) between 0 and 1, should be > 0.5 for factor analysis.

KMO <- KMO(scale_cor)

kable(data.frame(KMO$MSA), col.names = "Overall MSA")
Overall MSA
0.884705
kable(data.frame(sort(KMO$MSAi)), col.names = "MSA Item")
MSA Item
Subst_use_alc 0.4179075
Spec_phob_animals 0.4596442
Spec_phob_blood 0.4753917
Panic_doctor_visits 0.4992595
EATA_exces_exercise 0.5228395
SAD_soc_inter 0.5989799
Spec_phob_fear 0.6089690
EATA_purging_behv 0.6482195
SAD_avoidance 0.6662142
SAD_devaluation 0.6777986
Spec_phob_avoid 0.6797646
EATB_soc_disguised 0.6845586
EATB_loss_ctrl 0.6850785
SAD_eating 0.6879460
Panic_attacks 0.6966916
EATB_overeating 0.7089062
Subst_use_drug 0.7429501
DEP_incr_appetite 0.7602072
EATA_omit_meal 0.8074643
EATA_time_frames 0.8265519
SAD_being_observ 0.8303153
PF_forming_relshps 0.8470764
DI_normviolation 0.8511599
EATA_fear_weightl 0.8635399
DEP_loss_libido 0.8741123
Panic_fear_recurr 0.8850725
Panic_phys_symp 0.8863173
Panic_avoid_behv 0.8966597
Panic_dysf_thought 0.8984305
DT_withdrawal 0.8996878
EATA_restricted 0.9000050
DI_perfectionism 0.9074785
PF_holistic_percptn 0.9088483
GAD_free_float_anx 0.9093323
EATA_fear_weightg 0.9108398
EATA_count_calories 0.9171886
AN_callousness 0.9208974
AN_manipulativns 0.9259585
Psychotic_symptoms 0.9259729
GAD_irritability 0.9270200
DT_restr_affectivity 0.9275751
DEP_suicid_intent 0.9295810
Hypochondriasis 0.9299634
DEP_crying_inab 0.9314473
EATA_body_selfest 0.9327711
Somatic_symptoms 0.9333362
AN_entitlement 0.9348015
EATB_worries 0.9357734
Dissociation 0.9373959
EATB_cope_negaff 0.9394440
EATB_intrus_thoughts 0.9394549
PF_identity 0.9458699
GAD_excess_worry 0.9463477
PS_unusual_beliefs 0.9496727
SAD_attractive_pers 0.9529463
NA_sep_insecur 0.9530111
NA_perseveration 0.9533992
Manic_sympt 0.9539832
DEP_hypersomnia 0.9553085
PF_self_est_reg 0.9582225
DEP_crying 0.9583672
DT_anhedonia 0.9587953
Agoraphobia 0.9621714
DEP_worthlessn 0.9622361
PS_percept_dysreg 0.9634111
DEP_guilt 0.9638851
PF_anticipation 0.9646885
DI_risk_taking 0.9652952
DEP_concentration 0.9674615
AN_deceitfulness 0.9694956
DEP_loss_appetite 0.9706394
DT_intimcy_avoid 0.9707545
DEP_emot_numbn 0.9718848
PF_impulse_reg 0.9726354
DI_impulsivity 0.9750474
PF_affect_tolrnce 0.9760785
DEP_reduc_energy 0.9761688
AN_hostility 0.9762135
DEP_hopelessn 0.9778273
DI_irresponsibility 0.9782052
PF_intern_relshp_mod 0.9782613
SAD_performing 0.9783949
AN_grandiosity 0.9788924
PF_self_reflection 0.9794918
GAD_nervousness 0.9799756
PS_eccentricity 0.9801744
DEP_dimin_interest 0.9807128
PF_affect_diff 0.9815370
DT_suspiciousness 0.9815955
DEP_psycmot_inhib 0.9830296
DEP_depr_mood 0.9838493
DEP_dimin_selfconf 0.9841413
DEP_psycmot_agit 0.9847573
PF_affect_comm 0.9848195
DEP_decision_probl 0.9858679
DEP_rumination 0.9864959
DEP_circad_mood_fluct 0.9882569
OCD_sympt 0.9924969

Bartlett’s test of sphericity

= the degree that the matrix deviates from an identity matrix. Should be significant. Bartlett’s test is sensitive to departures from normality!

cortest.bartlett(scale_cor, n = 27173)
## $chisq
## [1] 2185891
##
## $p.value
## [1] 0
##
## $df
## [1] 4753

determinant

1 if variables are not correlated. Near to 0 = multicollinearity

det(scale_cor)
## [1] 1.04573e-35

Bass-Ackward

Parallel-Analysis

to determine the number of components at the lowest level of the hierarchy.

pa <- fa.parallel(scale_cor, n.obs = 27173, fm = "ml",fa="pc")

## Parallel analysis suggests that the number of factors =  NA  and the number of components =  14
psych::vss(scale_cor,n = 20,rotate = "equamax",n.obs = 27173,fm="ml")
## Warning in GPForth(A, Tmat = Tmat, normalize = normalize, eps = eps, maxit =
## maxit, : convergence not obtained in GPForth. 1000 iterations used.

##
## Very Simple Structure
## Call: psych::vss(x = scale_cor, n = 20, rotate = "equamax", fm = "ml",
##     n.obs = 27173)
## VSS complexity 1 achieves a maximimum of 0.89  with  1  factors
## VSS complexity 2 achieves a maximimum of 0.92  with  2  factors
##
## The Velicer MAP achieves a minimum of 0  with  15  factors
## BIC achieves a minimum of  129053.3  with  20  factors
## Sample Size adjusted BIC achieves a minimum of  138533.2  with  20  factors
##
## Statistics by number of factors
##    vss1 vss2    map  dof   chisq prob sqresid  fit RMSEA     BIC   SABIC
## 1  0.89 0.00 0.0184 4655 1183438    0     131 0.89 0.097 1135911 1150704
## 2  0.82 0.92 0.0154 4558  998429    0      91 0.92 0.090  951892  966377
## 3  0.48 0.88 0.0129 4462  867905    0      73 0.94 0.084  822348  836528
## 4  0.40 0.75 0.0110 4367  736977    0      59 0.95 0.079  692390  706269
## 5  0.38 0.70 0.0080 4273  628772    0      53 0.95 0.073  585145  598725
## 6  0.34 0.61 0.0070 4180  512640    0      38 0.97 0.067  469962  483246
## 7  0.30 0.54 0.0060 4088  445930    0      35 0.97 0.063  404192  417183
## 8  0.28 0.51 0.0057 3997  394171    0      33 0.97 0.060  353362  366064
## 9  0.24 0.46 0.0056 3907  362515    0      31 0.97 0.058  322625  335041
## 10 0.22 0.41 0.0054 3818  333043    0      28 0.98 0.056  294061  306195
## 11 0.20 0.39 0.0051 3730  307636    0      26 0.98 0.055  269553  281407
## 12 0.20 0.36 0.0049 3643  288224    0      25 0.98 0.054  251029  262606
## 13 0.18 0.35 0.0048 3557  270219    0      25 0.98 0.053  233902  245206
## 14 0.18 0.33 0.0046 3472  246212    0      23 0.98 0.051  210763  221797
## 15 0.17 0.31 0.0046 3388  228126    0      22 0.98 0.049  193534  204301
## 16 0.16 0.30 0.0047 3305  218852    0      23 0.98 0.049  185108  195612
## 17 0.16 0.29 0.0049 3223  200413    0      22 0.98 0.047  167507  177749
## 18 0.14 0.27 0.0050 3142  185538    0      21 0.98 0.046  153458  163443
## 19 0.14 0.26 0.0050 3062  171858    0      21 0.98 0.045  140595  150326
## 20 0.13 0.25 0.0052 2983  159510    0      19 0.98 0.044  129053  138533
##    complex  eChisq  SRMR eCRMS    eBIC
## 1      1.0 2231967 0.093 0.094 2184440
## 2      1.2 1352556 0.072 0.074 1306019
## 3      1.7  982782 0.062 0.064  937225
## 4      2.0  714456 0.053 0.055  669869
## 5      2.1  591987 0.048 0.050  548360
## 6      2.3  299418 0.034 0.036  256741
## 7      2.5  239578 0.030 0.033  197840
## 8      2.7  204105 0.028 0.031  163296
## 9      3.0  174821 0.026 0.029  134931
## 10     3.1  145888 0.024 0.027  106907
## 11     3.3  120172 0.022 0.024   82089
## 12     3.6  109195 0.021 0.023   72000
## 13     3.7  108557 0.021 0.024   72240
## 14     3.8   84243 0.018 0.021   48794
## 15     3.9   73512 0.017 0.020   38920
## 16     4.4   84865 0.018 0.022   51121
## 17     4.3   74152 0.017 0.021   41245
## 18     4.3   67302 0.016 0.020   35223
## 19     4.4   59941 0.015 0.019   28678
## 20     4.4   49846 0.014 0.018   19390

MAP reaches minimum with 15 factors and parallel analysis suggests extracting 14 components -> plot solutions wfor 14 and 15 factors

Custom Bass-Ackward Function with pass arguments to rotation function

#detach("package:psych", unload = TRUE)


bassAckward.c <- function(r,nfactors=1,fm="minres",rotate="oblimin",scores="tenBerge",adjust=TRUE,plot=TRUE,cut=.3,use="pairwise", cor="cor",weight=NULL,correct=.5,maxit = 10000,...) {
 cl <- match.call()
#find r if data matrix
    if (!isCorrelation(r)) {  matrix.input <- FALSE  #return the correlation matrix in this case
                       n.obs <- dim(r)[1]
                       cnames <- colnames(r)

    # if given a rectangular matrix, then find the correlation or covariance
    #multiple ways of find correlations or covariances
    #added the weights option to tet, poly, tetrachoric, and polychoric  June 27, 2018
    switch(cor,
       cor = {r <- cor(r,use=use)},
       cov = {r <- cov(r,use=use)
              covar <- TRUE},
       wtd = { r <- cor.wt(r,w=weight)$r},
       tet = {r <- tetrachoric(r,correct=correct,weight=weight)$rho},
       poly = {r <- polychoric(r,correct=correct,weight=weight)$rho},
       tetrachoric = {r <- tetrachoric(r,correct=correct,weight=weight)$rho},
       polychoric = {r <- polychoric(r,correct=correct,weight=weight)$rho},
       mixed = {r <- mixedCor(r,use=use,correct=correct)$rho},
       Yuleb = {r <- YuleCor(r,,bonett=TRUE)$rho},
       YuleQ = {r <- YuleCor(r,1)$rho},
       YuleY = {r <- YuleCor(r,.5)$rho }
       )
      colnames(r) <- rownames(r) <- cnames
  }

r.n <- list()
fa <- list()
Phi <- list()
fa.Vaccounted <- list()
num.fac <- length(nfactors)
if (num.fac == 1L) { num.fac <- nfactors
        nfactors <- 1:num.fac}

if(fm =="pca") {
#do the conventional pca bass-akwards approach with components
  if(!is.na(maxit)){
    pc <- pca.c(r,nfactors[1],rotate=rotate, maxit = maxit)
  }else{pc <- pca.c(r,nfactors[1],rotate=rotate)}

#pc <- pca.c(r)
pc.weights <- pc$weights
colnames(pc.weights) <- paste0("C",1:nfactors[1])
for(nf in 1:num.fac) {
   if(!is.na(maxit)){
fn <- pca.c(r,nfactors[nf],rotate=rotate, maxit = maxit)
 }else{pca.c(r,nfactors[nf],rotate=rotate)}
colnames(fn$loadings) <-    paste0("C",1:ncol(fn$loadings))
fa[[nf]] <- fn$loadings
Phi[[nf]] <- fn$Phi
fa.Vaccounted[[nf]] <- fn$Vaccounted[2,]
pcn.weights <- fn$weights
colnames(pcn.weights) <- paste0("C",1:ncol(pcn.weights))
colnames(pc$weights) <- paste0("C",1:ncol(pc$weights))
r.n[[nf]] <-  t(pcn.weights) %*% r %*% pc$weights
pc <- fn
}
} else { #factor analyze
#two cases:
#normal case is do a regular factor analysis
#but, if rotate = "schmid" we do a schmid leiman rotation
if(rotate != "schmid") {
     if(!is.na(maxit)){
f <- fa.c(r,nfactors[1],fm=fm,rotate=rotate,scores=scores, maxit = maxit)
}else{f <- fa.c(r,nfactors[1],fm=fm,rotate=rotate,scores=scores)
}
for(nf in 1:num.fac) {
     if(!is.na(maxit)){
f <- fa.c(r,nfactors[nf],fm=fm,rotate=rotate,scores=scores, maxit = maxit)
}else{f <- fa.c(r,nfactors[nf],fm=fm,rotate=rotate,scores=scores)
}
  colnames(fn$loadings) <-  paste0("F",1:ncol(fn$loadings))
fa[[nf]] <- fn$loadings
Phi[[nf]] <- fn$Phi
fn.weights <- fn$weights
fa.Vaccounted[[nf]] <- fn$Vaccounted[2,]
colnames(fn.weights) <- paste0("F",1:ncol(fn$weights))
colnames(f$weights) <- paste0("F",1:ncol(f$weights))



rf  <-  t(fn.weights) %*% r %*% f$weights  #need to adjust by  variances if not using tenBerge
rs1 <- diag(t(f$weights) %*% r %*% f$weights )
rs2 <- diag(t(fn$weights) %*% r %*% fn$weights )
if(adjust) rf <- (diag(1/sqrt(rs2)) %*% rf %*% diag(1/sqrt(rs1)))
colnames(rf) <- paste0("F",1:ncol(rf))
rownames(rf) <- paste0("F",1:nrow(rf))
r.n[[nf]] <- rf
f <- fn}

}  else {  #do schmid leiman extractions

f <- schmid(r,nfactors[1],fm=fm)    #the top level

f$weights <- solve(r,f$sl[,1:(nfactors[1]+1)])
for(nf in 1:num.fac) {
fn <- schmid(r,nfactors[nf],fm=fm)
fn$loadings <- fn$sl[,1:(nfactors[nf] + 1)]
colnames(fn$loadings) <- c("g", paste0("F*",1:(ncol(fn$loadings)-1)))
fa[[nf]] <- fn$loadings
fn$weights <- solve(r,fn$loadings)
colnames(fn$weights) <- c("g",paste0("F*",1:(ncol(fn$weights)-1)))
colnames(f$weights) <- c("g", paste0("F*",1:(ncol(f$weights)-1)))
Phi <- NULL
rf  <-  t(fn$weights) %*% r %*% f$weights  #need to adjust by  variances if not using tenBerge
rs1 <- diag(t(f$weights) %*% r %*% f$weights )
rs2 <- diag(t(fn$weights) %*% r %*% fn$weights )
if(adjust) rf <- (diag(1/sqrt(rs2)) %*% rf %*% diag(1/sqrt(rs1)))
colnames(rf) <- c("g",paste0("F*",1:(ncol(rf)-1)))
rownames(rf) <- c("g", paste0("F*",1:(nrow(rf)-1)))
r.n[[nf]] <- rf
f <- fn
}
}
}

#Now summarize the results
sumlist <-  sumnames <- labels <-  list()
fa.loading.phi <-list()
for(f in 1:nf) {
sumlist[[f]] <- apply(r.n[[f]],2,function(x) {which(max(abs(x))==abs(x))})
sumnames[[f]] <- rownames(r.n[[f]])[sumlist[[f]]]
labels[[f]] <- rownames(r.n[[f]])
if(length(Phi)>0) { #added this check March 3, 2020
fa.loading.phi [[f]] <-list(loadings = fa[[f]],Phi=Phi[[f]])} else {
fa.loading.phi [[f]] <-list(loadings = fa[[f]],Phi=NA) }
class(fa.loading.phi[[f]]) <- cs(psych,fa)
}
labels[[nf+1]] <- rownames(fn$loadings)
r.n[[nf+1]] <- fn$loadings


result <- list(Call=cl,fm=fm,bass.ack= r.n,Phi=Phi,r = r,summary=sumlist,sumnames=sumnames,labels =labels,fa=fa.loading.phi,
        fa.vac=fa.Vaccounted)
class(result) <- c("psych","bassAck")
if(plot) bassAckward.diagram(result,cut=cut,...)
return(result)
}

print.psych.back<- function(x,digits=2 ,short=TRUE) {

   cat("\nCall: ")
   print(x$Call)
nf <- length(x$bass.ack)-1
for (f in 1:nf) {
cat("\n",f,
x$sumnames[[f]])}

if(!short) {
for (f in 1:nf) {
cat("\nFactor correlations\n ")
print(round(x$bass.ack[[f]],digits=digits))}
}
}

summary.psych.back <- function(x,digits=2) {
cat("\nCall: ")
   print(x$Call)
nf <- length(x$bass.ack)-1
for (f in 1:nf) {
cat("\nFactor correlations\n ")
print(round(x$bass.ack[[f]],digits=digits))
}
}

custom pca function with maxit argument if GPARotation is called

#pca is just an alias for the principal component function
#pca is just an alias for the principal function

pca.c <- function(r,nfactors=1,residuals=FALSE,rotate="varimax",n.obs = NA, covar=FALSE,scores=TRUE,missing=FALSE,impute="median",oblique.scores=TRUE,method="regression",use="pairwise",cor="cor",correct=.5,weight=NULL, maxit=10000,...) {
   cl <- match.call()
   n <- dim(r)[2]

   if (!isCorrelation(r)  && (!isCovariance(r))){ #added  (isCovariance)  April 9, 2019 to handle the case of a covariance matrix
                    raw <- TRUE
                    n.obs <- dim(r)[1]
                    if(scores) {x.matrix <- as.matrix(r)  #matrices are required for the substitution to work

                  if(missing) {
                    miss <- which(is.na(x.matrix),arr.ind=TRUE)
                     if(impute=="mean") {
                    item.means <- colMeans(x.matrix,na.rm=TRUE)   #replace missing values with means
                    x.matrix[miss]<- item.means[miss[,2]]} else {
                    item.med   <- apply(x.matrix,2,median,na.rm=TRUE) #replace missing with medians
                     x.matrix[miss]<- item.med[miss[,2]]}
                     }}
                     # 2011.12.21  added the covar option

         switch(cor,
       cor = {if(!is.null(weight))  {r <- cor.wt(r,w=weight)$r} else  {
                                     r <- cor(r,use=use)}
                                     },
       cov = {r <- cov(r,use=use)
              covar <- TRUE},
       wtd = { r <- cor.wt(r,w=weight)$r},
       spearman = {r <- cor(r,use=use,method="spearman")},
       kendall = {r <- cor(r,use=use,method="kendall")},
       tet = {r <- tetrachoric(r,correct=correct,weight=weight)$rho},
       poly = {r <- polychoric(r,correct=correct,weight=weight)$rho},
       tetrachoric = {r <- tetrachoric(r,correct=correct,weight=weight)$rho},
       polychoric = {r <- polychoric(r,correct=correct,weight=weight)$rho},
       mixed = {r <- mixedCor(r,use=use,correct=correct)$rho},
       Yuleb = {r <- YuleCor(r,,bonett=TRUE)$rho},
       YuleQ = {r <- YuleCor(r,1)$rho},
       YuleY = {r <- YuleCor(r,.5)$rho }
       )
   #   if(!covar) {r <- cor(r,use="pairwise")} else r <- cov(r,use="pairwise")  # if given a rectangular matrix, then find the correlations or covariances first
             } else {
                     raw <- FALSE
                    if(!is.matrix(r)) {  r <- as.matrix(r)}
                     sds <- sqrt(diag(r))    #convert covariance matrices to correlation matrices
                     if(!covar) r <- r/(sds %o% sds)  }  #added June 9, 2008
    if (!residuals) { result <- list(values=c(rep(0,n)),rotation=rotate,n.obs=n.obs,communality=c(rep(0,n)),loadings=matrix(rep(0,n*n),ncol=n),fit=0,fit.off=0)} else { result <- list(values=c(rep(0,n)),rotation=rotate,n.obs=n.obs,communality=c(rep(0,n)),loadings=matrix(rep(0,n*n),ncol=n),residual=matrix(rep(0,n*n),ncol=n),fit=0,fit.off=0)}
    #added 24/4/15 to stop with bad data and give more meaningful help
    if(any(is.na(r))) {
       bad <- TRUE
      tempr <-r
      wcl <-NULL
     while(bad) {
        wc <- table(which(is.na(tempr), arr.ind=TRUE))  #find the correlations that are NA
        wcl <- c(wcl,as.numeric(names(which(wc==max(wc)))))
        tempr <- r[-wcl,-wcl]
        if(any(is.na(tempr))) {bad <- TRUE} else {bad <- FALSE}
         }

        cat('\nLikely variables with missing values are ',colnames(r)[wcl],' \n')
         stop("I am sorry: missing values (NAs) in the correlation matrix do not allow me to continue.\nPlease drop those variables and try again." )
       }

    eigens <- eigen(r)    #call the eigen value decomposition routine
    result$values <- eigens$values
    eigens$values[ eigens$values < .Machine$double.eps] <-  .Machine$double.eps  #added May 14, 2009 to fix case of singular matrices
    loadings <- eigens$vectors %*% sqrt(diag(eigens$values,nrow=length(eigens$values))) #added May 2, 2016 for the weird case of a single variable with covariance > 1

   if(nfactors > 0) {loadings <- loadings[,1:nfactors]} else {nfactors <- n}
   if (nfactors > 1) {communalities <- rowSums(loadings^2)} else {communalities <- loadings^2 }
   uniquenesses <- diag(r) - communalities # 2011.12.21 uniqueness is now found if covar is true
    names(communalities) <- colnames(r)    # 2009.02.10 Make sure this is a named vector -- correction by Gumundur Arnkelsson



     #added January 19, 2009 to flip based upon colSums of loadings
    if (nfactors > 1) {sign.tot <- vector(mode="numeric",length=nfactors)
                 sign.tot <- sign(colSums(loadings))
                 sign.tot[sign.tot==0] <- 1
                 loadings <- loadings %*% diag(sign.tot)
     } else { if (sum(loadings) < 0) {loadings <- -as.matrix(loadings)} else {loadings <- as.matrix(loadings)}
             colnames(loadings) <- "PC1" }


    colnames(loadings) <- paste("PC",1:nfactors,sep='')
    rownames(loadings) <- rownames(r)
  Phi <- NULL

     rot.mat <- NULL
 if(rotate != "none") {if (nfactors > 1) {
if (rotate=="varimax" |rotate=="Varimax" | rotate=="quartimax" | rotate =="bentlerT" | rotate =="geominT" | rotate =="targetT" | rotate =="bifactor"   | rotate =="TargetT"|
                       rotate =="equamax"| rotate =="varimin"|rotate =="specialT" | rotate =="Promax"  | rotate =="promax"| rotate =="cluster" |rotate == "biquartimin"  |rotate =="specialQ" ) {
Phi <- NULL
 colnames(loadings) <- paste("RC",1:nfactors,sep='')   #for rotated component
switch(rotate,  #The orthogonal cases  for GPArotation + ones developed for psych
  varimax = {rotated <- stats::varimax(loadings,...)  #varimax is from stats, the others are from GPArotation
                     loadings <- rotated$loadings
                     rot.mat <- rotated$rotmat},
   Varimax = {if (!requireNamespace('GPArotation')) {stop("I am sorry, to do this rotation requires the GPArotation package to be installed")}
           #varimax is from the stats package, Varimax is from GPArotations
            #rotated <- do.call(rotate,list(loadings,...))
            #rotated <- do.call(getFromNamespace(rotate,'GPArotation'),list(loadings,...))
            rotated <- GPArotation::Varimax(loadings,...)
            loadings <- rotated$loadings
             rot.mat <- t(solve(rotated$Th))} ,
    quartimax = {if (!requireNamespace('GPArotation')) {stop("I am sorry, to do this rotation requires the GPArotation package to be installed")}

            #rotated <- do.call(rotate,list(loadings))
            rotated <- GPArotation::quartimax(loadings,...)
            loadings <- rotated$loadings
             rot.mat <- t(solve(rotated$Th))} ,
    bentlerT =  {if (!requireNamespace('GPArotation')) {stop("I am sorry, to do this rotation requires the GPArotation package to be installed")}

            #rotated <- do.call(rotate,list(loadings,...))
            rotated <- GPArotation::bentlerT(loadings,...)
            loadings <- rotated$loadings
             rot.mat <- t(solve(rotated$Th))} ,
    geominT = {if (!requireNamespace('GPArotation')) {stop("I am sorry, to do this rotation requires the GPArotation package to be installed")}

            #rotated <- do.call(rotate,list(loadings,...))
            rotated <- GPArotation::geominT(loadings,maxit = maxit)
            loadings <- rotated$loadings
             rot.mat <- t(solve(rotated$Th))} ,
    targetT = {if (!requireNamespace('GPArotation')) {stop("I am sorry, to do this rotation requires the GPArotation package to be installed")}
            rotated <- GPArotation::targetT(loadings,Tmat=diag(ncol(loadings)),...)
            loadings <- rotated$loadings
             rot.mat <- t(solve(rotated$Th))} ,

     bifactor = {rot <- bifactor(loadings,...)
                 loadings <- rot$loadings
                rot.mat <- t(solve(rot$Th))},
     TargetT =  {if (!requireNamespace('GPArotation')) {stop("I am sorry, to do this rotation requires the GPArotation package to be installed")}
                rot <- GPArotation::targetT(loadings,Tmat=diag(ncol(loadings)),...)
                  loadings <- rot$loadings
                rot.mat <- t(solve(rot$Th))},
    equamax =  {rot <- equamax(loadings,maxit = maxit,...)
                  loadings <- rot$loadings
                rot.mat <- t(solve(rot$Th))},
    varimin = {rot <- varimin(loadings,...)
                loadings <- rot$loadings
                rot.mat <- t(solve(rot$Th))},
    specialT =  {rot <- specialT(loadings,...)
                  loadings <- rot$loadings
                  rot.mat <- t(solve(rot$Th))},
    Promax =   {pro <- Promax(loadings,...)
                loadings <- pro$loadings
                 Phi <- pro$Phi
                 rot.mat <- pro$rotmat},
     promax =   {pro <- stats::promax(loadings,...)   #from stats
                 loadings <- pro$loadings
                  rot.mat <- pro$rotmat
                  ui <- solve(rot.mat)
                  Phi <-  cov2cor(ui %*% t(ui))},
     cluster =   {loadings <- varimax(loadings,...)$loadings
                                pro <- target.rot(loadings)
                                loadings <- pro$loadings
                                Phi <- pro$Phi
                                 rot.mat <- pro$rotmat},
     biquartimin =    {ob <- biquartimin(loadings,...)
                    loadings <- ob$loadings
                     Phi <- ob$Phi
                     rot.mat <- t(solve(ob$Th))},
   #  TargetQ  =  {ob <- TargetQ(loadings,...)
   #                 loadings <- ob$loadings
   #                 Phi <- ob$Phi
   #                 rot.mat <- t(solve(ob$Th))},
     specialQ = {ob <- specialQ(loadings,...)
                    loadings <- ob$loadings
                     Phi <- ob$Phi
                     rot.mat <- t(solve(pro$Th))})
     } else {
      colnames(loadings) <- paste("TC",1:nfactors,sep='') #for transformed components
     #The following oblique cases all use GPArotation
     if (rotate =="oblimin"| rotate=="quartimin" | rotate== "simplimax" | rotate =="geominQ"  | rotate =="bentlerQ"  |rotate == "targetQ"  ) {
                    if (!requireNamespace('GPArotation')) {warning("I am sorry, to do these rotations requires the GPArotation package to be installed")
                        Phi <- NULL} else {
                          if(rotate =="geominQ"){
                                                             ob <- try(do.call(getFromNamespace(rotate,'GPArotation'),list(loadings,maxit = maxit)))

                          }else if(rotate !="geominQ"){
                                                             ob <- try(do.call(getFromNamespace(rotate,'GPArotation'),list(loadings,...)))

                          }
                                   if(inherits(ob, as.character("try-error")))  {warning("The requested transformaton failed, Promax was used instead as an oblique transformation")
                                   ob <- Promax(loadings)}

                    loadings <- ob$loadings
                     Phi <- ob$Phi
                      rot.mat <- t(solve(ob$Th))}
                                         } else {message("Specified rotation not found, rotate='none' used")
                                          colnames(loadings) <- paste("PC",1:nfactors,sep='')  }  #not rotated
         }
        }
         }

   #just in case the rotation changes the order of the components, sort them by size of eigen value
   if(nfactors >1) {
    ev.rotated <- diag(t(loadings) %*% loadings)
    ev.order <- order(ev.rotated,decreasing=TRUE)
    loadings <- loadings[,ev.order]}
    if(!is.null(Phi)) {Phi <- Phi[ev.order,ev.order] } #January 20, 2009 but, then, we also need to change the order of the rotation matrix!
    signed <- sign(colSums(loadings))
    c.names <- colnames(loadings)
    signed[signed==0] <- 1
    loadings <- loadings %*% diag(signed)  #flips factors to be in positive direction but loses the colnames
     colnames(loadings) <- c.names
    if(!is.null(Phi)) {Phi <- diag(signed) %*% Phi %*% diag(signed)
                     colnames(Phi) <- rownames(Phi) <- c.names}



     class(loadings) <- "loadings"
     #Find the summary statistics of Variance accounted for
     #normally just found in the print function  (added 4/22/17)
     #from  the print function
      if(is.null(Phi)) {if(nfactors > 1)  {vx <- colSums(loadings^2) } else {vx <- sum(loadings^2)
    }} else {vx <- diag(Phi %*% t(loadings) %*% loadings)
         }

        vtotal <- sum(communalities + uniquenesses)
             names(vx) <- colnames(loadings)
          varex <- rbind("SS loadings" =   vx)
          varex <- rbind(varex, "Proportion Var" =  vx/vtotal)
         if (nfactors > 1) {
                      varex <- rbind(varex, "Cumulative Var"=  cumsum(vx/vtotal))
                       varex <- rbind(varex, "Proportion Explained"=  vx/sum(vx))
                      varex <- rbind(varex, "Cumulative Proportion"=  cumsum(vx/sum(vx)))
                      }

    result$n.obs <- n.obs
    stats <- factor.stats(r,loadings,Phi,n.obs,fm="pc")
    class(result) <- c("psych", "principal")
    result$fn <- "principal"
    result$loadings <- loadings
    result$Phi <- Phi
    result$Call <- cl
    result$communality <- communalities
    result$uniquenesses <- uniquenesses
    result$complexity <- stats$complexity
    #result$stats <- stats
    result$valid <- stats$valid  #added 12/12/22
    result$chi <- stats$chi
    result$EPVAL <- stats$EPVAL
    result$R2 <- stats$R2
    result$objective <- stats$objective
    result$residual <- stats$residual
    result$rms <- stats$rms
    result$fit <-  stats$fit
    result$fit.off <-  stats$fit.off
    result$factors <-  stats$factors
    result$dof <-  stats$dof
    result$null.dof <- stats$null.dof
    result$null.model <- stats$null.model
    result$criteria <-  stats$criteria
    result$STATISTIC <-  stats$STATISTIC
    result$PVAL <-  stats$PVAL
    result$weights <-  stats$weights
    result$r.scores <-  stats$r.scores
     result$rot.mat <- rot.mat
     result$Vaccounted <-varex
    if(!is.null(Phi) && oblique.scores) {
                       result$Structure <- loadings %*% Phi} else {result$Structure <- loadings
                       }

    if(scores && raw) {


               result$weights <- try(solve(r,result$Structure),silent=TRUE)
               if(inherits(result$weights, "try-error"))  {warning("The matrix is not positive semi-definite, scores found from Structure loadings")
               result$weights <- result$Structure} # else {
               result$scores <- scale(x.matrix,scale=!covar) %*% result$weights #}
            }

             #   result$scores <- factor.scores(scale(x.matrix,scale=!covar),result$Structure,Phi=Phi,method=method,rho=r)  # method = method added Nov 20, 2011
              #  result$weights<- result$scores$weights
             #   result$scores <- result$scores$scores}
    return(result)
   }

  # modified August 10, 2007
  # modified Feb 2, 2008 to calculate scores and become a factanal class
  #Modified June 8,2008 to get chi square values to work or default to statistic if n.obs==NULL.
  #modified Jan  2, 2009 to  report the correlations between oblique factors
  #modified December 30 to let n.obs ==NA rather than NULL to be compatible with factanal
  #modified Jan 14, 2009 to change phi to Phi  to avoid confusion
  #modified Jan 19, 2009 to allow for promax rotations
  #modified May 15, 2009 to allow for singular matrices
  #correct August 25, 2009 to return result$values
  #modified August 25 to return result$stats
  #modified November 20, 2011 to allow multiple scoring approaches to give component scores
  #modified December 21, 2011 to allow for finding the pc of covariances
  #modified June 19, 2012 to fix a missing value problem reported by Neil Stewart
  #modified February 9, 2013 to label the type of rotation/transformation (as is documented but not implemented)
  #modified February 25, 2013 to make scores=TRUE the default
  #modified 1/16/14 to output the structure matrix
  #modified 8/15 to add rot.mat to all rotations
  #modified 9/3/15 to label rotated PCs as RC  and transformed as TC -- perhaps this was dropped out while fixing rotations?
  #added the pca function as an alias to principal 6/8/16

Equamax Rotation

Process of finding the best-interpretable number of components at the lowest level of the hierarchy. 5-14 options based on Equamax rotation

Bass-Ackward-14

factor loadings sorted >= |.3|

C1 C2 C3 C4 C5 C6 C7 C8 C9 C10 C11 C12 C13 C14
SAD_soc_inter 0.74
SAD_avoidance 0.73
SAD_performing 0.70 0.33
SAD_devaluation 0.67 0.30
SAD_being_observ 0.67
SAD_eating 0.58 0.31
SAD_attractive_pers 0.58
PF_forming_relshps 0.55 0.37 0.31
Spec_phob_avoid 0.47 0.30 0.44
Agoraphobia 0.44 0.30
DEP_hopelessn 0.65
DEP_depr_mood 0.63 0.32
DEP_dimin_selfconf 0.56 0.44
DEP_worthlessn 0.56 0.31
DEP_suicid_intent 0.53
DEP_dimin_interest 0.53 0.46 0.35
DEP_guilt 0.51 0.30
DEP_crying 0.47
DEP_decision_probl 0.42 0.36 0.40
PF_self_reflection 0.37 0.33 0.36
Panic_doctor_visits 0.84
Panic_attacks 0.83
Panic_phys_symp 0.80
Panic_dysf_thought 0.76
Panic_fear_recurr 0.72
Panic_avoid_behv 0.59
Somatic_symptoms 0.42 0.32
Hypochondriasis 0.33
GAD_free_float_anx 0.74
GAD_nervousness 0.73
GAD_irritability 0.69
GAD_excess_worry 0.69
DEP_rumination 0.43 0.47 0.33
DEP_psycmot_agit 0.35 0.46
PF_affect_diff 0.35 0.43 0.30 0.31
OCD_sympt 0.36 0.34
DI_perfectionism 0.34
EATA_restricted 0.88
EATA_omit_meal 0.87
EATA_time_frames 0.84
EATA_count_calories 0.83
EATA_purging_behv 0.65
EATA_exces_exercise 0.62 0.35
EATB_loss_ctrl 0.91
EATB_cope_negaff 0.89
EATB_overeating 0.89
EATB_intrus_thoughts 0.72
DEP_incr_appetite 0.62
EATB_soc_disguised 0.44 0.53 0.47
PS_unusual_beliefs 0.62
PS_percept_dysreg 0.60
Psychotic_symptoms 0.59
Dissociation 0.57
PS_eccentricity 0.49 0.37
PF_identity 0.39 0.33 0.40 0.31
Manic_sympt 0.36 0.36
PF_anticipation 0.59
PF_affect_comm 0.53
PF_intern_relshp_mod 0.52 0.42
NA_sep_insecur 0.48
DT_suspiciousness 0.44 0.38
PF_holistic_percptn 0.40 0.37
PF_self_est_reg 0.32 0.31 0.40 0.30
NA_perseveration 0.38 0.35
PF_affect_tolrnce 0.30 0.32 0.34 0.36
DEP_psycmot_inhib 0.57
DEP_reduc_energy 0.49 0.52
DEP_hypersomnia 0.51
DEP_circad_mood_fluct 0.49
DEP_concentration 0.38 0.33 0.45
DEP_loss_appetite 0.43
DEP_loss_libido 0.42
DT_intimcy_avoid 0.64
DT_restr_affectivity 0.34 0.64
DT_withdrawal 0.38 0.54
DEP_emot_numbn 0.31 0.54
DEP_crying_inab 0.33 0.48
DT_anhedonia 0.42 0.36 0.46
AN_callousness 0.70
AN_hostility 0.62
AN_deceitfulness 0.62
AN_manipulativns 0.31 0.59
AN_entitlement 0.59
AN_grandiosity 0.53
PF_impulse_reg 0.42 0.51
DI_impulsivity 0.31 0.39 0.37
Spec_phob_fear 0.72
Spec_phob_animals 0.70
Spec_phob_blood 0.69
EATA_body_selfest 0.34 0.34 0.69
EATB_worries 0.36 0.38 0.67
EATA_fear_weightg 0.40 0.41 0.63
EATA_fear_weightl 0.62
Subst_use_drug 0.70
DI_normviolation 0.68
Subst_use_alc 0.65
DI_risk_taking 0.44
DI_irresponsibility 0.31 0.33 0.36

Bass-Ackward-15

factor loadings sorted >= |.3|

C1 C2 C3 C4 C5 C6 C7 C8 C9 C10 C11 C12 C13 C14 C15
SAD_soc_inter 0.74
SAD_avoidance 0.73
SAD_performing 0.69 0.34
SAD_being_observ 0.66
SAD_devaluation 0.66
SAD_eating 0.59
SAD_attractive_pers 0.56
PF_forming_relshps 0.54 0.38
Spec_phob_avoid 0.45 0.45
Agoraphobia 0.45
Panic_doctor_visits 0.84
Panic_attacks 0.82
Panic_phys_symp 0.80
Panic_dysf_thought 0.76
Panic_fear_recurr 0.72
Panic_avoid_behv 0.58
Somatic_symptoms 0.40 0.33
Hypochondriasis 0.33
EATA_restricted 0.88
EATA_omit_meal 0.87
EATA_time_frames 0.83
EATA_count_calories 0.82
EATA_purging_behv 0.65
EATA_exces_exercise 0.62 0.37
GAD_free_float_anx 0.75
GAD_nervousness 0.74
GAD_irritability 0.72
GAD_excess_worry 0.70
DEP_psycmot_agit 0.44
DEP_rumination 0.44 0.36 0.37
PF_affect_diff 0.41
OCD_sympt 0.34 0.34
DI_perfectionism 0.32
EATB_loss_ctrl 0.91
EATB_cope_negaff 0.89
EATB_overeating 0.89
EATB_intrus_thoughts 0.72
DEP_incr_appetite 0.63
EATB_soc_disguised 0.43 0.53 0.48
DEP_emot_numbn 0.62
DEP_crying_inab 0.60
DT_anhedonia 0.53 0.35
DEP_dimin_interest 0.51 0.38 0.44
DEP_dimin_selfconf 0.42 0.42 0.34 0.38
PF_self_reflection 0.36 0.32 0.33
DEP_crying 0.72
DEP_depr_mood 0.42 0.55
DEP_hopelessn 0.47 0.52
DEP_suicid_intent 0.32 0.51
DEP_worthlessn 0.37 0.47 0.32
DEP_guilt 0.32 0.43 0.35 0.31
NA_sep_insecur 0.40 0.37
PF_affect_tolrnce 0.32 0.36 0.34
PS_unusual_beliefs 0.64
Psychotic_symptoms 0.62
PS_percept_dysreg 0.59
Dissociation 0.56
PS_eccentricity 0.49 0.33
Manic_sympt 0.37 0.35
PF_identity 0.33 0.34 0.37
NA_perseveration 0.58
PF_anticipation 0.55 0.36
DEP_decision_probl 0.34 0.46 0.32
DI_irresponsibility 0.46 0.33 0.31
PF_affect_comm 0.45 0.39
PF_self_est_reg 0.43 0.32
DEP_concentration 0.37 0.41 0.38
DI_impulsivity 0.40 0.39 0.35
AN_callousness 0.71
AN_deceitfulness 0.62
AN_hostility 0.61 0.35
AN_manipulativns 0.60
AN_entitlement 0.58
AN_grandiosity 0.52 0.36
PF_impulse_reg 0.49
PF_holistic_percptn 0.36 0.35
PF_intern_relshp_mod 0.62
DT_suspiciousness 0.59
DT_intimcy_avoid 0.32 0.56
DT_restr_affectivity 0.35 0.47 0.48
DT_withdrawal 0.42 0.44
DEP_psycmot_inhib 0.57
DEP_hypersomnia 0.52
DEP_circad_mood_fluct 0.50
DEP_reduc_energy 0.42 0.37 0.48
DEP_loss_appetite 0.44
DEP_loss_libido 0.43
Spec_phob_fear 0.73
Spec_phob_animals 0.71
Spec_phob_blood 0.70
EATA_body_selfest 0.32 0.32 0.71
EATB_worries 0.35 0.36 0.69
EATA_fear_weightg 0.38 0.40 0.64
EATA_fear_weightl 0.62
Subst_use_drug 0.71
DI_normviolation 0.68
Subst_use_alc 0.66
DI_risk_taking 0.43


final Bass-Ackward-Model

#FINAL NUMBER
factor_number_final <- 14

#FINAL MODEL
ackward_final <- bassAckward.c(scale_cor, nfactors = factor_number_final, rotate = "equamax", fm = "pca", scores = "tenBerge", items = TRUE, sort = TRUE, lr = FALSE, organize = TRUE, cut = .3, plot = F, maxit=10000)

#Plot
bassAckward.diagram(ackward_final, items = T, sort = T, organize = T, cut = .3)

# #export loadings
# loadings_final_export <- loadings_final_strong
# loadings_final_export$variable <- rownames(loadings_final_strong)
# write_xlsx(loadings_final_export,"loadings_final_export.xlsx")

Extended Bass-Ackward Model Forbes 2023

function Forbes (2023)

#RUN THESE FUNCTIONS LOAD THEM IN YOUR R SESSION

#First one is an adaptation of the bassackward code from the psych package. The input is a correlation matrix, and it's currently set up to do PCA or EFA
ExtendedBassAckwards <- function (r,num.comp = 1,fm = "pca",rotate = "varimax",scores = "tenBerge",maxit=10000) #r is a correlation matrix, fm is "pfa" or "minres" (EFA), rotations can be specified that are used in psych::pca or psych::fa
{
  comp.corr <- list() #initializing empty objects that are populated below
  cong <- list()
  comp.load <- list()
  pcas <- list()

  if (fm == "pca") {
    for (c in 1:num.comp) {
      #this is running PCAs at each level
      pcas[[c]] <-
        pca.c(r, nfactors = c, rotate = rotate,maxit=maxit) #this is a list of all pcas
      comp <-
        pca.c(r, nfactors = c, rotate = rotate,maxit = maxit) #pca loop for each level of hierarchy
      colnames(comp$loadings) <-
        paste0(letters[c], 1:ncol(comp$loadings)) #each level gets a different letter (Level 1: A1, Level 2: B1, B2, etc.), rather than all being F1, F2, etc." regardless of level
      comp.load[[c]] <-
        fa.sort(comp$loadings) #component loadings for each level, sorted by size
      comp.weights <- comp$weights
      colnames(comp.weights) <-
        paste0(letters[c], 1:ncol(comp.weights)) #naming component weights as above (A1, B1, B2, C1, C2, C3, etc.)
      unsort.loadings <- comp$loadings #loadings sorted by placement in input matrix
      colnames(unsort.loadings) <-
        paste0(letters[c], 1:ncol(unsort.loadings)) #naming loadings as above (A1, B1, B2, C1, C2, C3, etc.)
      if (c > 1) {
        for (i in 1:(c - 1)) {
          colnames(pcas[[i]]$weights) <-
            paste0(letters[i], 1:ncol(pcas[[i]]$weights)) #names weights matrices sequentially
          colnames(pcas[[i]]$loadings) <-
            paste0(letters[i], 1:ncol(pcas[[i]]$loadings)) #names loadings matrices sequentially
          comp.corr[[length(comp.corr) + 1]] <-
            t(pcas[[i]]$weights) %*% r %*%  comp.weights #calculates the correlations between levels
          cong[[length(cong) + 1]] <-
            psych::factor.congruence(pcas[[i]]$loadings, unsort.loadings) #calculates congruence coefficients between levels
        }
      }
    }
  }
  else if (fm == "minres") {
    for (c in 1:num.comp) {
      #this is running EFAs at each level
      pcas[[c]] <-
        psych::fa(r,  nfactors = c, fm = fm, rotate = rotate, scores = scores) #this is a list of all EFAs
      comp <-
        psych::fa(r, nfactors = c, fm = fm, rotate = rotate, scores = scores) #EFA loop for each level of hierarchy
      colnames(comp$loadings) <-
        paste0(letters[c], 1:ncol(comp$loadings)) #naming loadings as above (A1, B1, B2, C1, C2, C3, etc.)
      comp.load[[c]] <-
        fa.sort(comp$loadings) #factor loadings for each level, sorted by size
      comp.weights <- comp$weights
      colnames(comp.weights) <-
        paste0(letters[c], 1:ncol(comp.weights)) #naming factor weights as above (A1, B1, B2, C1, C2, C3, etc.)
      unsort.loadings <- comp$loadings #loadings sorted by placement in input matrix
      colnames(unsort.loadings) <-
        paste0(letters[c], 1:ncol(unsort.loadings)) #naming loadings as above (A1, B1, B2, C1, C2, C3, etc.)
      if (c > 1) {
        for (i in 1:(c - 1)) {
          colnames(pcas[[i]]$weights) <-
            paste0(letters[i], 1:ncol(pcas[[i]]$weights)) #names weights matrices sequentially
          colnames(pcas[[i]]$loadings) <-
            paste0(letters[i], 1:ncol(pcas[[i]]$loadings)) #names loading matrices sequentially
          comp.corr[[length(comp.corr) + 1]] <-
            t(pcas[[i]]$weights) %*% r %*%  comp.weights #calculates the correlations between levels
          cong[[length(cong) + 1]] <-
            psych::factor.congruence(pcas[[i]]$loadings, unsort.loadings) #calculates the congruence coefficients between levels
        }
      }
    }
  }

  else {
    stop('fm must be pca or minres') #warning that factor method needs to be principal components (fm = "pca") or 'minres' factoring (fm = "minres")
  }

  result <- list(
    #these are the objects returned in the ExtendedBassAckwards result
    comp.corr = comp.corr,
    pcas = pcas,
    cong = cong,
    r = r,
    comp.load = comp.load
  )
  return(result)
}

ChaseCorrPaths <- function (comp.corr, component = "levelnum") #This function is called on below, not used alone. It calculates the paths of correlations >.9
{
  chased_levels <- vector() #initializing empty objects that are populated below
  chased_to_level <- vector()
  chased_to <- list()
  sub_revcomp.corr <- list()
  for (i in (length(comp.corr):1))
  {
    if (component %in% colnames(comp.corr[[i]]))
      #if the component we're interested is in the matrix
      chased_levels[[i]] <-
        (max(comp.corr[[i]][, component]) >= .9) #tell me if the maximum component correlation for the relevant column is >=.9
  }
  revcomp.corr <-
    rev(comp.corr) #reverse order of comp.corr to work from the bottom up
  component_level <-
    (length(chased_levels[!is.na(chased_levels)]) + 1) #level of current component (calculated as number of upward comparison matrices +1)
  chased_levels <-
    rev(chased_levels) #reverses order, so looking at lowest levels of hierarchy first

  if (any(chased_levels, na.rm = TRUE))
  {
    chased_levels <-
      (which.min(chased_levels)) - 1 #counts number of consecutive true values before first false
  }
  else {
    chased_levels <- 0
  }

  chased_to_level <- (component_level - chased_levels)

  if (chased_levels == 0)
  {
    chased_to <- "null"
  } #if no trues
  else {
    #isolate block of matrices in revcomp.corr relevant to component
    #end range
    end_comp.corr <- ((component_level * (component_level - 1) / 2))
    #start range
    start_comp.corr <- (end_comp.corr - (component_level - 2))

    sub_comp.corr <-
      comp.corr[start_comp.corr:end_comp.corr] #subset of matrices

    chased_to <-
      rownames(as.data.frame(which.max(sub_comp.corr[[chased_to_level]][, component]))) #name of component chased to

  }
  if ((component == "b1") &
      (max(comp.corr[[1]][, "b1"]) >= .9))
    #need to calculate the b->a level separately
  {
    chased_to <- "a1"
  }
  if ((component == "b2") & (max(comp.corr[[1]][, "b2"]) >= .9))
  {
    chased_to <- "a1"
  }
  result <- list(component, chased_to)
  result <- paste(result, sep = " ", collapse = "--")
  return(result)
}

ChaseCongPaths <- function (cong, component = "levelnum") #This function is called on below, not used alone. It calculates the paths of congruence coefficients >.95
{
  chased_levels <- vector() #initializing empty objects that are populated below
  chased_to_level <- vector()
  chased_to <- list()
  sub_revcong <- list()
  for (i in (length(cong):1))
  {
    if (component %in% colnames(cong[[i]]))
      #if the component we're interested is in the matrix
      chased_levels[[i]] <-
        (max(cong[[i]][, component]) > .95) #tell me if the maximum congruence coefficient for the relevant column is >.95
  }
  revcong <- rev(cong) #reverse order of cong to work from bottom up
  component_level <-
    (length(chased_levels[!is.na(chased_levels)]) + 1) #level of current component (calculated as number of upward comparison matrices +1)
  chased_levels <-
    rev(chased_levels) #reverses order, so looking at lowest levels of hierarchy first
  if (any(chased_levels, na.rm = TRUE))
  {
    chased_levels <-
      (which.min(chased_levels)) - 1 #counts number of consecutive true values before first false
  }
  else {
    chased_levels <- 0
  }

  chased_to_level <- (component_level - chased_levels)

  if (chased_levels == 0)
  {
    chased_to <- "null"
  } #if no trues
  else {
    #isolate block of matrices in revcomp.corr relevant to component
    #end range
    end_cong <- ((component_level * (component_level - 1) / 2))
    #start range
    start_cong <- (end_cong - (component_level - 2))

    sub_cong <- cong[start_cong:end_cong] #subset of matrices

    chased_to <-
      rownames(as.data.frame(which.max(sub_cong[[chased_to_level]][, component]))) #name of component chased to

  }
  if ((component == "b1") &
      (max(cong[[1]][, "b1"]) > .95))
    #need to calculate the b->a level separately
  {
    chased_to <- "a1"
  }
  if ((component == "b2") & (max(cong[[1]][, "b2"]) > .95))
  {
    chased_to <- "a1"
  }
  result <- list(component, chased_to)
  result <- paste(result, sep = " ", collapse = "--")
  return(result)
}


FindRedundantComp <- function (comp.corr, cong, last_component = "levelnum") #This function returns summary output that lists the paths of redundant variables based on correlations and congruence coefficients
{
  chase <- list() #initializing empty objects that are populated below
  congruence <- list()
  largest <- list()
  cross <- list()
  output <- list()
  mat <- matrix(data = 1:625,
                nrow = 25,
                ncol = 25)
  for (i in 1:25)
  {
    mat[, i] <- i
  }
  mat[upper.tri(mat)] <- NA
  matlett <- matrix(data = 1:625,
                    nrow = 25,
                    ncol = 25)
  for (i in 1:25)
  {
    matlett[i, ] <- i
  }
  matlett[] <- letters[as.matrix(matlett)]
  matlett[upper.tri(matlett)] <- NA
  comp_list <-
    paste0(na.omit(as.vector(t(matlett))), na.omit(as.vector(t(mat)))) #list of all possible component names up to 25 hierarchical levels

  for (i in 2:(which(comp_list == last_component)[[1]]))
  {
    chase[i] <- ChaseCorrPaths(comp.corr, comp_list[i])
    congruence[i] <- ChaseCongPaths(cong, comp_list[i])

  }

  output <- list(corr.chase = chase, cong.chase = congruence)
  return(output)
}



HierarchicalCorrs <- function (comp.corr, component = "levelnum") #The output includes censored versions of the correlation matrices that isolate the relevant associations for each component or factor
{
  comp.corrcross <- list()
  comp.corrcurr <- data.frame()

  for (i in 1:length(comp.corr))
    #running forward through the list
  {
    comp.corrcurr <- as.data.frame(comp.corr[[i]])
    if (component %in% colnames(comp.corrcurr))
      #if the component we're interested is in the matrix
    {
      comp.corrcurr[abs(comp.corrcurr) < .3] <-
        NA #remove small loads #can update this to a smaller value to reveal more detailed relationships (e.g., change < .3 to < .1)
      comp.corrcurr[abs(comp.corrcurr) >= .9] <-
        NA #remove chase loads
      comp.corrcross[[i]] <- comp.corrcurr
    }
    else
    {
      comp.corrcross[[i]] <- NULL
    }
  }

  comp.corrcross <-
    comp.corrcross[-which(sapply(comp.corrcross, is.null))]

  if (component == "b1" || component == "b2")
  {
    comp.corrcross <- comp.corr[[1]]
  }


  return(comp.corrcross)
}


NegativeCorrs <- function (comp.corr, component = "levelnum") #The output includes censored versions of the correlation matrices that isolate the relevant associations for each component or factor
{
  comp.corrcross <- list()
  comp.corrcurr <- data.frame()

  for (i in 1:length(comp.corr))
    #running forward through the list
  {
    comp.corrcurr <- as.data.frame(comp.corr[[i]])
    if (component %in% colnames(comp.corrcurr))
      #if the component we're interested is in the matrix
    {
      comp.corrcurr[comp.corrcurr > -.3] <-
        NA #remove small negative and all positive loads #can update this to reveal more detailed relationships (e.g., change > -.3 to > -.1)
      comp.corrcross[[i]] <- comp.corrcurr
    }
    else
    {
      comp.corrcross[[i]] <- NULL
    }
  }

  comp.corrcross <-
    comp.corrcross[-which(sapply(comp.corrcross, is.null))]

  if (component == "b1" || component == "b2")
  {
    comp.corrcross <- comp.corr[[1]]
  }


  return(comp.corrcross)
}

create extended bass-ackward object

bassack14comp <- ExtendedBassAckwards(scale_cor, num.comp = 14, fm = "pca", rotate = "equamax", maxit=10000)

#loading as table
loadings_extended <- bassack14comp$comp.load[[14]]
loadings_extended_table <- xtable(unclass(fa.sort(loadings_extended)))
loadings_extended_table = round(loadings_extended_table, digits= 2)

#loadings >= |.2|
BassAck14Loadings <- data.frame(replace_with_na_all(data = loadings_extended_table, condition = ~ abs(.x) < 0.31))

#table with rownames
rownames(BassAck14Loadings) <- rownames(loadings_extended_table)
options(knitr.kable.NA = '')
kable(round(BassAck14Loadings,2))
n1 n2 n3 n4 n5 n6 n7 n8 n9 n10 n11 n12 n13 n14
SAD_soc_inter 0.74
SAD_avoidance 0.73
SAD_performing 0.70 0.33
SAD_devaluation 0.67
SAD_being_observ 0.67
SAD_eating 0.58 0.31
SAD_attractive_pers 0.58
PF_forming_relshps 0.55 0.37 0.31
Spec_phob_avoid 0.47 0.44
Agoraphobia 0.44
DEP_hopelessn 0.65
DEP_depr_mood 0.63 0.32
DEP_dimin_selfconf 0.56 0.44
DEP_worthlessn 0.56 0.31
DEP_suicid_intent 0.53
DEP_dimin_interest 0.53 0.46 0.35
DEP_guilt 0.51
DEP_crying 0.47
DEP_decision_probl 0.42 0.36 0.40
PF_self_reflection 0.37 0.33 0.36
Panic_doctor_visits 0.84
Panic_attacks 0.83
Panic_phys_symp 0.80
Panic_dysf_thought 0.76
Panic_fear_recurr 0.72
Panic_avoid_behv 0.59
Somatic_symptoms 0.42 0.32
Hypochondriasis 0.33
GAD_free_float_anx 0.74
GAD_nervousness 0.73
GAD_irritability 0.69
GAD_excess_worry 0.69
DEP_rumination 0.43 0.47 0.33
DEP_psycmot_agit 0.35 0.46
PF_affect_diff 0.35 0.43 0.31
OCD_sympt 0.36 0.34
DI_perfectionism 0.34
EATA_restricted 0.88
EATA_omit_meal 0.87
EATA_time_frames 0.84
EATA_count_calories 0.83
EATA_purging_behv 0.65
EATA_exces_exercise 0.62 0.35
EATB_loss_ctrl 0.91
EATB_cope_negaff 0.89
EATB_overeating 0.89
EATB_intrus_thoughts 0.72
DEP_incr_appetite 0.62
EATB_soc_disguised 0.44 0.53 0.47
PS_unusual_beliefs 0.62
PS_percept_dysreg 0.60
Psychotic_symptoms 0.59
Dissociation 0.57
PS_eccentricity 0.49 0.37
PF_identity 0.39 0.33 0.40 0.31
Manic_sympt 0.36 0.36
PF_anticipation 0.59
PF_affect_comm 0.53
PF_intern_relshp_mod 0.52 0.42
NA_sep_insecur 0.48
DT_suspiciousness 0.44 0.38
PF_holistic_percptn 0.40 0.37
PF_self_est_reg 0.32 0.31 0.40
NA_perseveration 0.38 0.35
PF_affect_tolrnce 0.32 0.34 0.36
DEP_psycmot_inhib 0.57
DEP_reduc_energy 0.49 0.52
DEP_hypersomnia 0.51
DEP_circad_mood_fluct 0.49
DEP_concentration 0.38 0.33 0.45
DEP_loss_appetite 0.43
DEP_loss_libido 0.42
DT_intimcy_avoid 0.64
DT_restr_affectivity 0.34 0.64
DT_withdrawal 0.38 0.54
DEP_emot_numbn 0.31 0.54
DEP_crying_inab 0.33 0.48
DT_anhedonia 0.42 0.36 0.46
AN_callousness 0.70
AN_hostility 0.62
AN_deceitfulness 0.62
AN_manipulativns 0.31 0.59
AN_entitlement 0.59
AN_grandiosity 0.53
PF_impulse_reg 0.42 0.51
DI_impulsivity 0.31 0.39 0.37
Spec_phob_fear 0.72
Spec_phob_animals 0.70
Spec_phob_blood 0.69
EATA_body_selfest 0.34 0.34 0.69
EATB_worries 0.36 0.38 0.67
EATA_fear_weightg 0.40 0.41 0.63
EATA_fear_weightl 0.62
Subst_use_drug 0.70
DI_normviolation 0.68
Subst_use_alc 0.65
DI_risk_taking 0.44
DI_irresponsibility 0.31 0.33 0.36
save(BassAck14Loadings, file="BAcomploadings.rda")


find congruence coeficients > .95 on all levels

test_cong <- bassack14comp$cong
test_cong_df <- list()

for (i in 1:length(test_cong)) {
  test_cong_df[[i]] <- data.frame(test_cong[[i]])
  test_cong_df[[i]] <- replace_with_na_all(data = test_cong_df[[i]], condition = ~ abs(.x) < 0.95)
  test_cong_df[[i]] <- data.frame(test_cong_df[[i]])
  rownames(test_cong_df[[i]]) <- rownames(data.frame(test_cong[[i]]))
}


find correlations > .9 on all levels

test_cor <- bassack14comp$comp.corr

test_cor_df <- list()
for (i in 1:length(test_cor)) {
  test_cor_df[[i]] <- data.frame(test_cor[[i]])
  test_cor_df[[i]] <- replace_with_na_all(data = test_cor_df[[i]], condition = ~ abs(.x) < 0.9)
  test_cor_df[[i]] <- data.frame(test_cor_df[[i]])
  rownames(test_cor_df[[i]]) <- rownames(data.frame(test_cor[[i]]))
}

identify redundant components

# create data frame for redundant comps
redundant.comps = test_cong_df
for (i in 1:length(test_cong_df)) {
  redundant.comps[[i]] = (!is.na(test_cong_df[[i]]) & !is.na(test_cor_df[[i]]))*1
  redundant.comps[[i]][redundant.comps[[i]] == 0] = NA}

# ##extract row and column names of redundant comps
# for (i in 1:length(redundant.comps)) {
#    for(j in 1:dim(redundant.comps[[i]])[2]){
#      if(sum(redundant.comps[[i]][,j] == T) >0){
#         print( paste0(colnames(redundant.comps[[i]])[j], " - ",rownames(redundant.comps[[i]]) [redundant.comps[[i]][,j] == T]))
#      }
#
#    }
# }

panderOptions('missing', '')
pander(redundant.comps)
  •   b1 b2
    a1 1
  •   c1 c2 c3
    a1
  •   c1 c2 c3
    b1
    b2 1
  •   d1 d2 d3 d4
    a1
  •   d1 d2 d3 d4
    b1
    b2 1
  •   d1 d2 d3 d4
    c1
    c2 1
    c3 1
  •   e1 e2 e3 e4 e5
    a1
  •   e1 e2 e3 e4 e5
    b1
    b2 1
  •   e1 e2 e3 e4 e5
    c1
    c2
    c3 1
  •   e1 e2 e3 e4 e5
    d1 1
    d2
    d3 1
    d4 1
  •   f1 f2 f3 f4 f5 f6
    a1
  •   f1 f2 f3 f4 f5 f6
    b1
    b2
  •   f1 f2 f3 f4 f5 f6
    c1
    c2
    c3
  •   f1 f2 f3 f4 f5 f6
    d1 1
    d2
    d3 1
    d4
  •   f1 f2 f3 f4 f5 f6
    e1 1
    e2 1
    e3 1
    e4
    e5 1
  •   g1 g2 g3 g4 g5 g6 g7
    a1
  •   g1 g2 g3 g4 g5 g6 g7
    b1
    b2
  •   g1 g2 g3 g4 g5 g6 g7
    c1
    c2
    c3
  •   g1 g2 g3 g4 g5 g6 g7
    d1
    d2
    d3 1
    d4
  •   g1 g2 g3 g4 g5 g6 g7
    e1
    e2 1
    e3 1
    e4
    e5 1
  •   g1 g2 g3 g4 g5 g6 g7
    f1
    f2 1
    f3 1
    f4 1
    f5 1
    f6 1
  •   h1 h2 h3 h4 h5 h6 h7 h8
    a1
  •   h1 h2 h3 h4 h5 h6 h7 h8
    b1
    b2
  •   h1 h2 h3 h4 h5 h6 h7 h8
    c1
    c2
    c3
  •   h1 h2 h3 h4 h5 h6 h7 h8
    d1
    d2
    d3
    d4
  •   h1 h2 h3 h4 h5 h6 h7 h8
    e1
    e2 1
    e3
    e4
    e5 1
  •   h1 h2 h3 h4 h5 h6 h7 h8
    f1
    f2 1
    f3
    f4 1
    f5 1
    f6 1
  •   h1 h2 h3 h4 h5 h6 h7 h8
    g1 1
    g2 1
    g3 1
    g4
    g5 1
    g6 1
    g7 1
  •   i1 i2 i3 i4 i5 i6 i7 i8 i9
    a1
  •   i1 i2 i3 i4 i5 i6 i7 i8 i9
    b1
    b2
  •   i1 i2 i3 i4 i5 i6 i7 i8 i9
    c1
    c2
    c3
  •   i1 i2 i3 i4 i5 i6 i7 i8 i9
    d1
    d2
    d3
    d4
  •   i1 i2 i3 i4 i5 i6 i7 i8 i9
    e1
    e2 1
    e3
    e4
    e5 1
  •   i1 i2 i3 i4 i5 i6 i7 i8 i9
    f1
    f2 1
    f3
    f4 1
    f5 1
    f6 1
  •   i1 i2 i3 i4 i5 i6 i7 i8 i9
    g1 1
    g2 1
    g3 1
    g4
    g5 1
    g6 1
    g7 1
  •   i1 i2 i3 i4 i5 i6 i7 i8 i9
    h1 1
    h2 1
    h3 1
    h4 1
    h5 1
    h6 1
    h7 1
    h8 1
  •   j1 j2 j3 j4 j5 j6 j7 j8 j9 j10
    a1
  •   j1 j2 j3 j4 j5 j6 j7 j8 j9 j10
    b1
    b2
  •   j1 j2 j3 j4 j5 j6 j7 j8 j9 j10
    c1
    c2
    c3
  •   j1 j2 j3 j4 j5 j6 j7 j8 j9 j10
    d1
    d2
    d3
    d4
  •   j1 j2 j3 j4 j5 j6 j7 j8 j9 j10
    e1
    e2
    e3
    e4
    e5
  •   j1 j2 j3 j4 j5 j6 j7 j8 j9 j10
    f1
    f2
    f3
    f4
    f5 1
    f6 1
  •   j1 j2 j3 j4 j5 j6 j7 j8 j9 j10
    g1 1
    g2
    g3 1
    g4
    g5 1
    g6 1
    g7 1
  •   j1 j2 j3 j4 j5 j6 j7 j8 j9 j10
    h1 1
    h2 1
    h3 1
    h4 1
    h5 1
    h6
    h7
    h8 1
  •   j1 j2 j3 j4 j5 j6 j7 j8 j9 j10
    i1 1
    i2 1
    i3 1
    i4 1
    i5 1
    i6
    i7 1
    i8 1
    i9 1
  •   k1 k2 k3 k4 k5 k6 k7 k8 k9 k10 k11
    a1
  •   k1 k2 k3 k4 k5 k6 k7 k8 k9 k10 k11
    b1
    b2
  •   k1 k2 k3 k4 k5 k6 k7 k8 k9 k10 k11
    c1
    c2
    c3
  •   k1 k2 k3 k4 k5 k6 k7 k8 k9 k10 k11
    d1
    d2
    d3
    d4
  •   k1 k2 k3 k4 k5 k6 k7 k8 k9 k10 k11
    e1
    e2
    e3
    e4
    e5
  •   k1 k2 k3 k4 k5 k6 k7 k8 k9 k10 k11
    f1
    f2
    f3
    f4
    f5 1
    f6 1
  •   k1 k2 k3 k4 k5 k6 k7 k8 k9 k10 k11
    g1 1
    g2 1
    g3
    g4
    g5 1
    g6 1
    g7 1
  •   k1 k2 k3 k4 k5 k6 k7 k8 k9 k10 k11
    h1 1
    h2 1
    h3
    h4 1
    h5 1
    h6
    h7
    h8 1
  •   k1 k2 k3 k4 k5 k6 k7 k8 k9 k10 k11
    i1 1
    i2 1
    i3
    i4 1
    i5 1
    i6
    i7 1
    i8 1
    i9
  •   k1 k2 k3 k4 k5 k6 k7 k8 k9 k10 k11
    j1 1
    j2 1
    j3
    j4 1
    j5 1
    j6 1
    j7 1
    j8 1
    j9 1
    j10 1
  •   l1 l2 l3 l4 l5 l6 l7 l8 l9 l10 l11 l12
    a1
  •   l1 l2 l3 l4 l5 l6 l7 l8 l9 l10 l11 l12
    b1
    b2
  •   l1 l2 l3 l4 l5 l6 l7 l8 l9 l10 l11 l12
    c1
    c2
    c3
  •   l1 l2 l3 l4 l5 l6 l7 l8 l9 l10 l11 l12
    d1
    d2
    d3
    d4
  •   l1 l2 l3 l4 l5 l6 l7 l8 l9 l10 l11 l12
    e1
    e2
    e3
    e4
    e5
  •   l1 l2 l3 l4 l5 l6 l7 l8 l9 l10 l11 l12
    f1
    f2
    f3
    f4
    f5 1
    f6 1
  •   l1 l2 l3 l4 l5 l6 l7 l8 l9 l10 l11 l12
    g1
    g2
    g3
    g4
    g5 1
    g6 1
    g7 1
  •   l1 l2 l3 l4 l5 l6 l7 l8 l9 l10 l11 l12
    h1
    h2 1
    h3
    h4 1
    h5 1
    h6
    h7
    h8 1
  •   l1 l2 l3 l4 l5 l6 l7 l8 l9 l10 l11 l12
    i1
    i2 1
    i3
    i4 1
    i5 1
    i6
    i7 1
    i8
    i9
  •   l1 l2 l3 l4 l5 l6 l7 l8 l9 l10 l11 l12
    j1
    j2 1
    j3
    j4 1
    j5 1
    j6 1
    j7 1
    j8 1
    j9 1
    j10 1
  •   l1 l2 l3 l4 l5 l6 l7 l8 l9 l10 l11 l12
    k1
    k2 1
    k3 1
    k4 1
    k5 1
    k6 1
    k7 1
    k8
    k9 1
    k10 1
    k11 1
  •   m1 m2 m3 m4 m5 m6 m7 m8 m9 m10 m11 m12 m13
    a1
  •   m1 m2 m3 m4 m5 m6 m7 m8 m9 m10 m11 m12 m13
    b1
    b2
  •   m1 m2 m3 m4 m5 m6 m7 m8 m9 m10 m11 m12 m13
    c1
    c2
    c3
  •   m1 m2 m3 m4 m5 m6 m7 m8 m9 m10 m11 m12 m13
    d1
    d2
    d3
    d4
  •   m1 m2 m3 m4 m5 m6 m7 m8 m9 m10 m11 m12 m13
    e1
    e2
    e3
    e4
    e5
  •   m1 m2 m3 m4 m5 m6 m7 m8 m9 m10 m11 m12 m13
    f1
    f2
    f3
    f4
    f5 1
    f6 1
  •   m1 m2 m3 m4 m5 m6 m7 m8 m9 m10 m11 m12 m13
    g1
    g2
    g3
    g4
    g5 1
    g6 1
    g7 1
  •   m1 m2 m3 m4 m5 m6 m7 m8 m9 m10 m11 m12 m13
    h1
    h2
    h3
    h4 1
    h5 1
    h6
    h7
    h8 1
  •   m1 m2 m3 m4 m5 m6 m7 m8 m9 m10 m11 m12 m13
    i1
    i2 1
    i3
    i4 1
    i5 1
    i6 1
    i7 1
    i8
    i9
  •   m1 m2 m3 m4 m5 m6 m7 m8 m9 m10 m11 m12 m13
    j1
    j2 1
    j3
    j4 1
    j5 1
    j6 1
    j7 1
    j8
    j9
    j10 1
  •   m1 m2 m3 m4 m5 m6 m7 m8 m9 m10 m11 m12 m13
    k1
    k2 1
    k3 1
    k4 1
    k5 1
    k6 1
    k7 1
    k8
    k9
    k10 1
    k11 1
  •   m1 m2 m3 m4 m5 m6 m7 m8 m9 m10 m11 m12 m13
    l1 1
    l2 1
    l3 1
    l4 1
    l5 1
    l6 1
    l7 1
    l8 1
    l9
    l10 1
    l11 1
    l12 1
  •   n1 n2 n3 n4 n5 n6 n7 n8 n9 n10 n11 n12 n13 n14
    a1
  •   n1 n2 n3 n4 n5 n6 n7 n8 n9 n10 n11 n12 n13 n14
    b1
    b2
  •   n1 n2 n3 n4 n5 n6 n7 n8 n9 n10 n11 n12 n13 n14
    c1
    c2
    c3
  •   n1 n2 n3 n4 n5 n6 n7 n8 n9 n10 n11 n12 n13 n14
    d1
    d2
    d3
    d4
  •   n1 n2 n3 n4 n5 n6 n7 n8 n9 n10 n11 n12 n13 n14
    e1
    e2
    e3
    e4
    e5
  •   n1 n2 n3 n4 n5 n6 n7 n8 n9 n10 n11 n12 n13 n14
    f1
    f2
    f3
    f4
    f5
    f6 1
  •   n1 n2 n3 n4 n5 n6 n7 n8 n9 n10 n11 n12 n13 n14
    g1
    g2
    g3
    g4
    g5 1
    g6
    g7 1
  •   n1 n2 n3 n4 n5 n6 n7 n8 n9 n10 n11 n12 n13 n14
    h1
    h2
    h3
    h4 1
    h5 1
    h6 1
    h7
    h8 1
  •   n1 n2 n3 n4 n5 n6 n7 n8 n9 n10 n11 n12 n13 n14
    i1
    i2 1
    i3
    i4 1
    i5 1
    i6 1
    i7 1
    i8
    i9
  •   n1 n2 n3 n4 n5 n6 n7 n8 n9 n10 n11 n12 n13 n14
    j1
    j2
    j3
    j4 1
    j5 1
    j6 1
    j7 1
    j8
    j9
    j10
  •   n1 n2 n3 n4 n5 n6 n7 n8 n9 n10 n11 n12 n13 n14
    k1
    k2 1
    k3 1
    k4 1
    k5 1
    k6 1
    k7 1
    k8
    k9
    k10
    k11 1
  •   n1 n2 n3 n4 n5 n6 n7 n8 n9 n10 n11 n12 n13 n14
    l1 1
    l2 1
    l3 1
    l4 1
    l5 1
    l6 1
    l7 1
    l8 1
    l9
    l10
    l11
    l12 1
  •   n1 n2 n3 n4 n5 n6 n7 n8 n9 n10 n11 n12 n13 n14
    m1 1
    m2 1
    m3 1
    m4 1
    m5 1
    m6 1
    m7 1
    m8
    m9 1
    m10 1
    m11 1
    m12 1
    m13 1

find redundant components with function by Forbes

FindRedundantComp(bassack14comp$comp.corr, bassack14comp$cong, "n14")
## $corr.chase
## $corr.chase[[1]]
## NULL
##
## $corr.chase[[2]]
## [1] "b1--a1"
##
## $corr.chase[[3]]
## [1] "b2--null"
##
## $corr.chase[[4]]
## [1] "c1--null"
##
## $corr.chase[[5]]
## [1] "c2--null"
##
## $corr.chase[[6]]
## [1] "c3--b2"
##
## $corr.chase[[7]]
## [1] "d1--null"
##
## $corr.chase[[8]]
## [1] "d2--null"
##
## $corr.chase[[9]]
## [1] "d3--c2"
##
## $corr.chase[[10]]
## [1] "d4--b2"
##
## $corr.chase[[11]]
## [1] "e1--d1"
##
## $corr.chase[[12]]
## [1] "e2--null"
##
## $corr.chase[[13]]
## [1] "e3--d3"
##
## $corr.chase[[14]]
## [1] "e4--b2"
##
## $corr.chase[[15]]
## [1] "e5--null"
##
## $corr.chase[[16]]
## [1] "f1--d1"
##
## $corr.chase[[17]]
## [1] "f2--e2"
##
## $corr.chase[[18]]
## [1] "f3--d3"
##
## $corr.chase[[19]]
## [1] "f4--e5"
##
## $corr.chase[[20]]
## [1] "f5--null"
##
## $corr.chase[[21]]
## [1] "f6--null"
##
## $corr.chase[[22]]
## [1] "g1--null"
##
## $corr.chase[[23]]
## [1] "g2--e2"
##
## $corr.chase[[24]]
## [1] "g3--null"
##
## $corr.chase[[25]]
## [1] "g4--d3"
##
## $corr.chase[[26]]
## [1] "g5--e5"
##
## $corr.chase[[27]]
## [1] "g6--f5"
##
## $corr.chase[[28]]
## [1] "g7--f6"
##
## $corr.chase[[29]]
## [1] "h1--g1"
##
## $corr.chase[[30]]
## [1] "h2--e2"
##
## $corr.chase[[31]]
## [1] "h3--g3"
##
## $corr.chase[[32]]
## [1] "h4--e5"
##
## $corr.chase[[33]]
## [1] "h5--f5"
##
## $corr.chase[[34]]
## [1] "h6--null"
##
## $corr.chase[[35]]
## [1] "h7--null"
##
## $corr.chase[[36]]
## [1] "h8--f6"
##
## $corr.chase[[37]]
## [1] "i1--g1"
##
## $corr.chase[[38]]
## [1] "i2--e2"
##
## $corr.chase[[39]]
## [1] "i3--g3"
##
## $corr.chase[[40]]
## [1] "i4--e5"
##
## $corr.chase[[41]]
## [1] "i5--f5"
##
## $corr.chase[[42]]
## [1] "i6--h6"
##
## $corr.chase[[43]]
## [1] "i7--f6"
##
## $corr.chase[[44]]
## [1] "i8--h7"
##
## $corr.chase[[45]]
## [1] "i9--null"
##
## $corr.chase[[46]]
## [1] "j1--g1"
##
## $corr.chase[[47]]
## [1] "j2--h2"
##
## $corr.chase[[48]]
## [1] "j3--g3"
##
## $corr.chase[[49]]
## [1] "j4--g5"
##
## $corr.chase[[50]]
## [1] "j5--f5"
##
## $corr.chase[[51]]
## [1] "j6--null"
##
## $corr.chase[[52]]
## [1] "j7--f6"
##
## $corr.chase[[53]]
## [1] "j8--i8"
##
## $corr.chase[[54]]
## [1] "j9--null"
##
## $corr.chase[[55]]
## [1] "j10--i9"
##
## $corr.chase[[56]]
## [1] "k1--g1"
##
## $corr.chase[[57]]
## [1] "k2--g2"
##
## $corr.chase[[58]]
## [1] "k3--null"
##
## $corr.chase[[59]]
## [1] "k4--f5"
##
## $corr.chase[[60]]
## [1] "k5--g5"
##
## $corr.chase[[61]]
## [1] "k6--f6"
##
## $corr.chase[[62]]
## [1] "k7--j6"
##
## $corr.chase[[63]]
## [1] "k8--null"
##
## $corr.chase[[64]]
## [1] "k9--i8"
##
## $corr.chase[[65]]
## [1] "k10--j9"
##
## $corr.chase[[66]]
## [1] "k11--j10"
##
## $corr.chase[[67]]
## [1] "l1--h2"
##
## $corr.chase[[68]]
## [1] "l2--null"
##
## $corr.chase[[69]]
## [1] "l3--k3"
##
## $corr.chase[[70]]
## [1] "l4--g5"
##
## $corr.chase[[71]]
## [1] "l5--f5"
##
## $corr.chase[[72]]
## [1] "l6--f6"
##
## $corr.chase[[73]]
## [1] "l7--j6"
##
## $corr.chase[[74]]
## [1] "l8--null"
##
## $corr.chase[[75]]
## [1] "l9--j8"
##
## $corr.chase[[76]]
## [1] "l10--null"
##
## $corr.chase[[77]]
## [1] "l11--j9"
##
## $corr.chase[[78]]
## [1] "l12--j10"
##
## $corr.chase[[79]]
## [1] "m1--i2"
##
## $corr.chase[[80]]
## [1] "m2--l2"
##
## $corr.chase[[81]]
## [1] "m3--k3"
##
## $corr.chase[[82]]
## [1] "m4--g5"
##
## $corr.chase[[83]]
## [1] "m5--f5"
##
## $corr.chase[[84]]
## [1] "m6--f6"
##
## $corr.chase[[85]]
## [1] "m7--i6"
##
## $corr.chase[[86]]
## [1] "m8--null"
##
## $corr.chase[[87]]
## [1] "m9--l8"
##
## $corr.chase[[88]]
## [1] "m10--null"
##
## $corr.chase[[89]]
## [1] "m11--l10"
##
## $corr.chase[[90]]
## [1] "m12--k10"
##
## $corr.chase[[91]]
## [1] "m13--j10"
##
## $corr.chase[[92]]
## [1] "n1--k2"
##
## $corr.chase[[93]]
## [1] "n2--l2"
##
## $corr.chase[[94]]
## [1] "n3--g5"
##
## $corr.chase[[95]]
## [1] "n4--k3"
##
## $corr.chase[[96]]
## [1] "n5--h5"
##
## $corr.chase[[97]]
## [1] "n6--f6"
##
## $corr.chase[[98]]
## [1] "n7--h6"
##
## $corr.chase[[99]]
## [1] "n8--null"
##
## $corr.chase[[100]]
## [1] "n9--l8"
##
## $corr.chase[[101]]
## [1] "n10--m10"
##
## $corr.chase[[102]]
## [1] "n11--null"
##
## $corr.chase[[103]]
## [1] "n12--m12"
##
## $corr.chase[[104]]
## [1] "n13--m11"
##
## $corr.chase[[105]]
## [1] "n14--k11"
##
##
## $cong.chase
## $cong.chase[[1]]
## NULL
##
## $cong.chase[[2]]
## [1] "b1--a1"
##
## $cong.chase[[3]]
## [1] "b2--null"
##
## $cong.chase[[4]]
## [1] "c1--b1"
##
## $cong.chase[[5]]
## [1] "c2--null"
##
## $cong.chase[[6]]
## [1] "c3--b2"
##
## $cong.chase[[7]]
## [1] "d1--c1"
##
## $cong.chase[[8]]
## [1] "d2--null"
##
## $cong.chase[[9]]
## [1] "d3--c2"
##
## $cong.chase[[10]]
## [1] "d4--b2"
##
## $cong.chase[[11]]
## [1] "e1--d1"
##
## $cong.chase[[12]]
## [1] "e2--null"
##
## $cong.chase[[13]]
## [1] "e3--d3"
##
## $cong.chase[[14]]
## [1] "e4--b2"
##
## $cong.chase[[15]]
## [1] "e5--d2"
##
## $cong.chase[[16]]
## [1] "f1--d1"
##
## $cong.chase[[17]]
## [1] "f2--e2"
##
## $cong.chase[[18]]
## [1] "f3--d3"
##
## $cong.chase[[19]]
## [1] "f4--d2"
##
## $cong.chase[[20]]
## [1] "f5--null"
##
## $cong.chase[[21]]
## [1] "f6--null"
##
## $cong.chase[[22]]
## [1] "g1--e1"
##
## $cong.chase[[23]]
## [1] "g2--e2"
##
## $cong.chase[[24]]
## [1] "g3--null"
##
## $cong.chase[[25]]
## [1] "g4--d3"
##
## $cong.chase[[26]]
## [1] "g5--e5"
##
## $cong.chase[[27]]
## [1] "g6--f5"
##
## $cong.chase[[28]]
## [1] "g7--f6"
##
## $cong.chase[[29]]
## [1] "h1--e1"
##
## $cong.chase[[30]]
## [1] "h2--e2"
##
## $cong.chase[[31]]
## [1] "h3--g3"
##
## $cong.chase[[32]]
## [1] "h4--e5"
##
## $cong.chase[[33]]
## [1] "h5--f5"
##
## $cong.chase[[34]]
## [1] "h6--null"
##
## $cong.chase[[35]]
## [1] "h7--null"
##
## $cong.chase[[36]]
## [1] "h8--f6"
##
## $cong.chase[[37]]
## [1] "i1--f1"
##
## $cong.chase[[38]]
## [1] "i2--e2"
##
## $cong.chase[[39]]
## [1] "i3--g3"
##
## $cong.chase[[40]]
## [1] "i4--e5"
##
## $cong.chase[[41]]
## [1] "i5--f5"
##
## $cong.chase[[42]]
## [1] "i6--h6"
##
## $cong.chase[[43]]
## [1] "i7--f6"
##
## $cong.chase[[44]]
## [1] "i8--h7"
##
## $cong.chase[[45]]
## [1] "i9--null"
##
## $cong.chase[[46]]
## [1] "j1--f1"
##
## $cong.chase[[47]]
## [1] "j2--e2"
##
## $cong.chase[[48]]
## [1] "j3--g3"
##
## $cong.chase[[49]]
## [1] "j4--e5"
##
## $cong.chase[[50]]
## [1] "j5--f5"
##
## $cong.chase[[51]]
## [1] "j6--h6"
##
## $cong.chase[[52]]
## [1] "j7--f6"
##
## $cong.chase[[53]]
## [1] "j8--h7"
##
## $cong.chase[[54]]
## [1] "j9--null"
##
## $cong.chase[[55]]
## [1] "j10--i9"
##
## $cong.chase[[56]]
## [1] "k1--g1"
##
## $cong.chase[[57]]
## [1] "k2--e2"
##
## $cong.chase[[58]]
## [1] "k3--null"
##
## $cong.chase[[59]]
## [1] "k4--f5"
##
## $cong.chase[[60]]
## [1] "k5--g5"
##
## $cong.chase[[61]]
## [1] "k6--f6"
##
## $cong.chase[[62]]
## [1] "k7--h6"
##
## $cong.chase[[63]]
## [1] "k8--null"
##
## $cong.chase[[64]]
## [1] "k9--h7"
##
## $cong.chase[[65]]
## [1] "k10--j9"
##
## $cong.chase[[66]]
## [1] "k11--j10"
##
## $cong.chase[[67]]
## [1] "l1--e2"
##
## $cong.chase[[68]]
## [1] "l2--null"
##
## $cong.chase[[69]]
## [1] "l3--k3"
##
## $cong.chase[[70]]
## [1] "l4--g5"
##
## $cong.chase[[71]]
## [1] "l5--f5"
##
## $cong.chase[[72]]
## [1] "l6--f6"
##
## $cong.chase[[73]]
## [1] "l7--h6"
##
## $cong.chase[[74]]
## [1] "l8--null"
##
## $cong.chase[[75]]
## [1] "l9--i8"
##
## $cong.chase[[76]]
## [1] "l10--null"
##
## $cong.chase[[77]]
## [1] "l11--j9"
##
## $cong.chase[[78]]
## [1] "l12--j10"
##
## $cong.chase[[79]]
## [1] "m1--e2"
##
## $cong.chase[[80]]
## [1] "m2--l2"
##
## $cong.chase[[81]]
## [1] "m3--k3"
##
## $cong.chase[[82]]
## [1] "m4--g5"
##
## $cong.chase[[83]]
## [1] "m5--f5"
##
## $cong.chase[[84]]
## [1] "m6--f6"
##
## $cong.chase[[85]]
## [1] "m7--h6"
##
## $cong.chase[[86]]
## [1] "m8--k9"
##
## $cong.chase[[87]]
## [1] "m9--l8"
##
## $cong.chase[[88]]
## [1] "m10--null"
##
## $cong.chase[[89]]
## [1] "m11--l10"
##
## $cong.chase[[90]]
## [1] "m12--j9"
##
## $cong.chase[[91]]
## [1] "m13--j10"
##
## $cong.chase[[92]]
## [1] "n1--g2"
##
## $cong.chase[[93]]
## [1] "n2--l2"
##
## $cong.chase[[94]]
## [1] "n3--g5"
##
## $cong.chase[[95]]
## [1] "n4--k3"
##
## $cong.chase[[96]]
## [1] "n5--g6"
##
## $cong.chase[[97]]
## [1] "n6--f6"
##
## $cong.chase[[98]]
## [1] "n7--h6"
##
## $cong.chase[[99]]
## [1] "n8--null"
##
## $cong.chase[[100]]
## [1] "n9--l8"
##
## $cong.chase[[101]]
## [1] "n10--m10"
##
## $cong.chase[[102]]
## [1] "n11--null"
##
## $cong.chase[[103]]
## [1] "n12--k10"
##
## $cong.chase[[104]]
## [1] "n13--m11"
##
## $cong.chase[[105]]
## [1] "n14--j10"

find all strong correlations > .3 on all levels

test_cor_strong <- bassack14comp$comp.corr

test_cor_strong_df <- list()
for (i in 1:length(test_cor_strong)) {
  test_cor_strong_df[[i]] <- data.frame(test_cor_strong[[i]])
  test_cor_strong_df[[i]] <- replace_with_na_all(data = test_cor_strong_df[[i]], condition = ~ abs(.x) < 0.295)
  test_cor_strong_df[[i]] <- data.frame(test_cor_strong_df[[i]])
  rownames(test_cor_strong_df[[i]]) <- rownames(data.frame(test_cor_strong[[i]]))
}


panderOptions('missing', '')
pander(test_cor_strong_df)
  •   b1 b2
    a1 0.9265 0.3762
  •   c1 c2 c3
    a1 0.7568 0.5387 0.3702
  •   c1 c2 c3
    b1 0.8513 0.5247
    b2 0.9866
  •   d1 d2 d3 d4
    a1 0.6268 0.5094 0.4635 0.3644
  •   d1 d2 d3 d4
    b1 0.6907 0.5898 0.4185
    b2 0.9739
  •   d1 d2 d3 d4
    c1 0.896 0.4395
    c2 0.4107 0.9014
    c3 0.9883
  •   e1 e2 e3 e4 e5
    a1 0.5451 0.4773 0.4268 0.34 0.4212
  •   e1 e2 e3 e4 e5
    b1 0.5991 0.5106 0.3765 0.4877
    b2 0.9745
  •   e1 e2 e3 e4 e5
    c1 0.796 0.5085 0.3118
    c2 0.881 0.4234
    c3 0.9877
  •   e1 e2 e3 e4 e5
    d1 0.9321 0.3512
    d2 0.443 0.8905
    d3 0.9984
    d4 0.9978
  •   f1 f2 f3 f4 f5 f6
    a1 0.519 0.4638 0.414 0.418 0.2951
  •   f1 f2 f3 f4 f5 f6
    b1 0.5849 0.5088 0.3873 0.4956
    b2 0.759 0.6216
  •   f1 f2 f3 f4 f5 f6
    c1 0.7798 0.5143 0.3284
    c2 0.8816 0.4114
    c3 0.7505 0.6449
  •   f1 f2 f3 f4 f5 f6
    d1 0.9166 0.3578
    d2 0.4411 0.8861
    d3 0.9962
    d4 0.7678 0.6346
  •   f1 f2 f3 f4 f5 f6
    e1 0.9807
    e2 0.998
    e3 0.9972
    e4 0.7655 0.6382
    e5 0.9973
  •   g1 g2 g3 g4 g5 g6 g7
    a1 0.4405 0.426 0.441 0.3752 0.3688
  •   g1 g2 g3 g4 g5 g6 g7
    b1 0.4795 0.4642 0.5024 0.3398 0.4306
    b2 0.7616 0.6191
  •   g1 g2 g3 g4 g5 g6 g7
    c1 0.6247 0.4649 0.5482
    c2 0.8875 0.4135
    c3 0.7553 0.6409
  •   g1 g2 g3 g4 g5 g6 g7
    d1 0.7924 0.3087 0.4799
    d2 0.4278 0.8327
    d3 0.9921
    d4 0.7751 0.6275
  •   g1 g2 g3 g4 g5 g6 g7
    e1 0.8336 0.5111
    e2 0.994
    e3 0.9946
    e4 0.7729 0.6314
    e5 0.3133 0.9368
  •   g1 g2 g3 g4 g5 g6 g7
    f1 0.8804 0.4629
    f2 0.995
    f3 0.9965
    f4 0.3363 0.9324
    f5 0.978
    f6 0.9722
  •   h1 h2 h3 h4 h5 h6 h7 h8
    a1 0.4137 0.3986 0.4144 0.3427 0.3723 0.3199
  •   h1 h2 h3 h4 h5 h6 h7 h8
    b1 0.4551 0.4386 0.4742 0.4072 0.3484 0.2955
    b2 0.7529 0.6223
  •   h1 h2 h3 h4 h5 h6 h7 h8
    c1 0.6441 0.472 0.5321
    c2 0.3592 0.6179 0.6662
    c3 0.7494 0.6452
  •   h1 h2 h3 h4 h5 h6 h7 h8
    d1 0.8055 0.3139 0.4632
    d2 0.4239 0.8055
    d3 0.5883 0.805
    d4 0.7685 0.6343
  •   h1 h2 h3 h4 h5 h6 h7 h8
    e1 0.8492 0.4916
    e2 0.9901
    e3 0.577 0.8108
    e4 0.7664 0.6384
    e5 0.3019 0.9086
  •   h1 h2 h3 h4 h5 h6 h7 h8
    f1 0.8947 0.442
    f2 0.9919
    f3 0.5703 0.8169
    f4 0.3253 0.9069
    f5 0.9639
    f6 0.9672
  •   h1 h2 h3 h4 h5 h6 h7 h8
    g1 0.9956
    g2 0.9975
    g3 0.9989
    g4 0.5691 0.8131
    g5 0.9705
    g6 0.9862
    g7 0.994
  •   i1 i2 i3 i4 i5 i6 i7 i8 i9
    a1 0.3921 0.3867 0.3931 0.3258 0.3559 0.3022 0.2986
  •   i1 i2 i3 i4 i5 i6 i7 i8 i9
    b1 0.4368 0.4215 0.4565 0.3911 0.3449 0.2952
    b2 0.7378 0.6268
  • Table continues below
      i1 i2 i3 i4 i5 i6 i7 i8
    c1 0.6426 0.4684 0.5376
    c2 0.3316 0.5493 0.5921
    c3 0.7357 0.6513
      i9
    c1
    c2 0.4289
    c3
  •   i1 i2 i3 i4 i5 i6 i7 i8 i9
    d1 0.7956 0.3229 0.461
    d2 0.3952 0.8066
    d3 0.4861 0.6967 0.5158
    d4 0.7573 0.6413
  • Table continues below
      i1 i2 i3 i4 i5 i6 i7 i8
    e1 0.8361 0.4848
    e2 0.9648
    e3 0.4728 0.7003
    e4 0.7545 0.6455
    e5 0.3037 0.9034
      i9
    e1
    e2
    e3 0.5137
    e4
    e5
  •   i1 i2 i3 i4 i5 i6 i7 i8 i9
    f1 0.8801 0.4344
    f2 0.9656
    f3 0.4694 0.7107 0.5033
    f4 0.3277 0.902
    f5 0.9529
    f6 0.9676
  •   i1 i2 i3 i4 i5 i6 i7 i8 i9
    g1 0.9818
    g2 0.9706
    g3 0.992
    g4 0.47 0.7079 0.4912
    g5 0.9674
    g6 0.9744
    g7 0.9936
  • Table continues below
      i1 i2 i3 i4 i5 i6 i7 i8
    h1 0.9897
    h2 0.9747
    h3 0.9948
    h4 0.9992
    h5 0.9888
    h6 0.9534
    h7 0.9083
    h8 0.9996
      i9
    h1
    h2
    h3
    h4
    h5
    h6
    h7 0.4049
    h8
  •   j1 j2 j3 j4 j5 j6 j7 j8 j9 j10
    a1 0.372 0.3593 0.3741 0.3133 0.3488 0.3078
  • Table continues below
      j1 j2 j3 j4 j5 j6 j7 j8
    b1 0.4167 0.3835 0.4267 0.3743 0.3297
    b2 0.7344 0.6303
      j9 j10
    b1 0.341
    b2
  • Table continues below
      j1 j2 j3 j4 j5 j6 j7 j8
    c1 0.6277 0.4522 0.5149
    c2 0.3102 0.4925 0.5537
    c3 0.7327 0.655
      j9 j10
    c1
    c2 0.4802
    c3
  • Table continues below
      j1 j2 j3 j4 j5 j6 j7 j8
    d1 0.7676 0.3676 0.4798
    d2 0.7608
    d3 0.4922 0.6689
    d4 0.7551 0.6433
      j9 j10
    d1
    d2 0.4971
    d3 0.5435
    d4
  • Table continues below
      j1 j2 j3 j4 j5 j6 j7 j8
    e1 0.8291 0.5086
    e2 0.8923
    e3 0.4839 0.6734
    e4 0.7527 0.6479
    e5 0.8622
      j9 j10
    e1
    e2 0.3769
    e3 0.5405
    e4
    e5 0.3656
  • Table continues below
      j1 j2 j3 j4 j5 j6 j7 j8
    f1 0.8663 0.4665
    f2 0.8895
    f3 0.4762 0.683
    f4 0.8593
    f5 0.9504
    f6 0.9619
      j9 j10
    f1
    f2 0.3858
    f3 0.5316
    f4 0.3749
    f5
    f6
  • Table continues below
      j1 j2 j3 j4 j5 j6 j7 j8
    g1 0.947
    g2 0.8988
    g3 0.9602
    g4 0.4695 0.6778
    g5 0.9288
    g6 0.9723
    g7 0.9892
      j9 j10
    g1
    g2 0.3683
    g3
    g4 0.524
    g5
    g6
    g7
  • Table continues below
      j1 j2 j3 j4 j5 j6 j7 j8
    h1 0.9584
    h2 0.9053
    h3 0.9635
    h4 0.9643
    h5 0.9869
    h6 0.896
    h7 0.8943
    h8 0.9947
      j9 j10
    h1
    h2 0.3552
    h3
    h4
    h5
    h6 0.31
    h7 0.4257
    h8
  • Table continues below
      j1 j2 j3 j4 j5 j6 j7 j8
    i1 0.9722
    i2 0.9632
    i3 0.9559
    i4 0.9658
    i5 0.9988
    i6 0.8982
    i7 0.9956
    i8 0.9946
    i9
      j9 j10
    i1
    i2
    i3
    i4
    i5
    i6 0.4128
    i7
    i8
    i9 -0.3069 0.9242
  •   k1 k2 k3 k4 k5 k6 k7 k8 k9 k10 k11
    a1 0.3418 0.3395 0.354 0.2952 0.3287 0.3376
  • Table continues below
      k1 k2 k3 k4 k5 k6 k7 k8
    b1 0.3827 0.3655 0.4216 0.3504 0.3119 0.3251
    b2 0.7314 0.6258
      k9 k10 k11
    b1 0.3088
    b2
  • Table continues below
      k1 k2 k3 k4 k5 k6 k7 k8
    c1 0.5665 0.4219 0.4667 0.4212
    c2 0.3058 0.5089
    c3 0.7279 0.6485
      k9 k10 k11
    c1
    c2 0.5324 0.4954
    c3
  • Table continues below
      k1 k2 k3 k4 k5 k6 k7 k8
    d1 0.7055 0.3178 0.39 0.448
    d2 0.3007 0.744
    d3 0.5018
    d4 0.7509 0.6376
      k9 k10 k11
    d1
    d2 0.4593
    d3 0.6524 0.555
    d4
  • Table continues below
      k1 k2 k3 k4 k5 k6 k7 k8
    e1 0.7583 0.4196 0.4466
    e2 0.893
    e3 0.4936
    e4 0.7487 0.6425
    e5 0.3029 0.8421
      k9 k10 k11
    e1
    e2 0.3412
    e3 0.658 0.5525
    e4
    e5 0.3411
  • Table continues below
      k1 k2 k3 k4 k5 k6 k7 k8
    f1 0.7965 0.3775 0.4412
    f2 0.8904
    f3 0.4863
    f4 0.3239 0.8381
    f5 0.9465
    f6 0.9564
      k9 k10 k11
    f1
    f2 0.349
    f3 0.6669 0.5441
    f4 0.3493
    f5
    f6
  • Table continues below
      k1 k2 k3 k4 k5 k6 k7 k8
    g1 0.9302
    g2 0.905
    g3 0.7856 0.5515
    g4 0.48
    g5 0.915
    g6 0.9658
    g7 0.9884
      k9 k10 k11
    g1
    g2 0.3333
    g3
    g4 0.6653 0.5364
    g5
    g6
    g7
  • Table continues below
      k1 k2 k3 k4 k5 k6 k7 k8
    h1 0.9346
    h2 0.9117
    h3 0.7892 0.543
    h4 0.9463
    h5 0.9829
    h6 0.8721
    h7
    h8 0.9924
      k9 k10 k11
    h1
    h2 0.3182
    h3
    h4
    h5
    h6 0.3083
    h7 0.8632 0.4607
    h8
  • Table continues below
      k1 k2 k3 k4 k5 k6 k7 k8
    i1 0.9568
    i2 0.959
    i3 0.802 0.5064
    i4 0.9485
    i5 0.9973
    i6 0.8904
    i7 0.9929
    i8 -0.3029
    i9 0.3812
      k9 k10 k11
    i1
    i2
    i3
    i4
    i5
    i6 0.4268
    i7
    i8 0.9263
    i9 0.8681
  • Table continues below
      k1 k2 k3 k4 k5 k6 k7 k8
    j1 0.9885
    j2 0.9743
    j3 0.7738 0.605
    j4 0.9882
    j5 0.999
    j6 0.965
    j7 0.9965
    j8
    j9
    j10
      k9 k10 k11
    j1
    j2
    j3
    j4
    j5
    j6
    j7
    j8 0.9364
    j9 0.9584
    j10 0.9717
  • Table continues below
      l1 l2 l3 l4 l5 l6 l7 l8 l9
    a1 0.3243 0.329 0.3397 0.3162 0.3089
      l10 l11 l12
    a1 0.3025
  • Table continues below
      l1 l2 l3 l4 l5 l6 l7 l8
    b1 0.3546 0.372 0.4076 0.3391 0.3019 0.3279
    b2 0.7103 0.6058
      l9 l10 l11 l12
    b1 0.2998
    b2
  • Table continues below
      l1 l2 l3 l4 l5 l6 l7 l8
    c1 0.4119 0.5562 0.4489 0.3982
    c2 0.3046 0.5028
    c3 0.7044 0.6271
      l9 l10 l11 l12
    c1
    c2 0.4991 0.5306
    c3
  • Table continues below
      l1 l2 l3 l4 l5 l6 l7 l8
    d1 0.3039 0.6507 0.3691 0.4872
    d2 0.3051 0.7436
    d3 0.4876
    d4 0.727 0.6154
      l9 l10 l11 l12
    d1
    d2 0.4571
    d3 0.6157 0.5935
    d4
  • Table continues below
      l1 l2 l3 l4 l5 l6 l7 l8
    e1 0.6791 0.3978 0.5274
    e2 0.8874
    e3 0.4794
    e4 0.725 0.6205
    e5 0.3038 0.8415
      l9 l10 l11 l12
    e1
    e2 0.3367
    e3 0.6211 0.592
    e4
    e5 0.3395
  • Table continues below
      l1 l2 l3 l4 l5 l6 l7 l8
    f1 0.7008 0.3541 0.5563
    f2 0.8852
    f3 0.4733
    f4 0.3252 0.8376
    f5 0.9302
    f6 0.9395
      l9 l10 l11 l12
    f1
    f2 0.3452
    f3 0.6303 0.5854
    f4 0.3481
    f5
    f6
  • Table continues below
      l1 l2 l3 l4 l5 l6 l7 l8
    g1 0.5901 0.7522
    g2 0.8996
    g3 0.3594 0.7913
    g4 0.4703
    g5 0.9107
    g6 0.9456
    g7 0.9739
      l9 l10 l11 l12
    g1
    g2 0.3294
    g3 0.3526
    g4 0.6292 0.5807
    g5
    g6
    g7
  • Table continues below
      l1 l2 l3 l4 l5 l6 l7 l8
    h1 0.6113 0.7412
    h2 0.9064
    h3 0.3455 0.7959
    h4 0.9419
    h5 0.9659
    h6 0.8693
    h7
    h8 0.9761
      l9 l10 l11 l12
    h1
    h2 0.3139
    h3 0.3473
    h4
    h5
    h6 0.3007
    h7 0.832 0.5011
    h8
  • Table continues below
      l1 l2 l3 l4 l5 l6 l7 l8
    i1 0.6002 0.7642
    i2 0.9544
    i3 0.3404 0.8075
    i4 0.9444
    i5 0.987
    i6 0.888
    i7 0.9757
    i8
    i9
      l9 l10 l11 l12
    i1
    i2
    i3 0.3071
    i4
    i5
    i6 0.4265
    i7
    i8 0.8912
    i9 0.4075 0.8404
  • Table continues below
      l1 l2 l3 l4 l5 l6 l7
    j1 0.5733
    j2 0.9656
    j3 0.3804 0.7827
    j4 0.9858
    j5 0.9889
    j6 0.9739
    j7 0.9793
    j8
    j9
    j10
      l8 l9 l10 l11 l12
    j1 0.8109
    j2
    j3 0.3695
    j4
    j5
    j6
    j7
    j8 0.9061 -0.2959
    j9 0.9551
    j10 0.3154 0.9422
  • Table continues below
      l1 l2 l3 l4 l5 l6 l7
    k1 0.5041
    k2 0.994
    k3 0.9987
    k4 0.9923
    k5 0.9984
    k6 0.9852
    k7 0.9963
    k8 0.6573
    k9
    k10
    k11
      l8 l9 l10 l11 l12
    k1 0.8534
    k2
    k3
    k4
    k5
    k6
    k7
    k8 -0.3022 0.6832
    k9 0.9911
    k10 0.9979
    k11 0.9684
  • Table continues below
      m1 m2 m3 m4 m5 m6 m7 m8 m9
    a1 0.3107 0.3146 0.3267 0.3002 0.2953
      m10 m11 m12 m13
    a1 0.2997
  • Table continues below
      m1 m2 m3 m4 m5 m6 m7 m8
    b1 0.3445 0.3583 0.3935 0.3281
    b2 0.6906 0.5978
      m9 m10 m11 m12 m13
    b1 0.3152 0.2983
    b2 0.3207
  • Table continues below
      m1 m2 m3 m4 m5 m6 m7 m8
    c1 0.3963 0.5481 0.4436
    c2 0.3012 0.4986 0.5415
    c3 0.6832 0.6193
      m9 m10 m11 m12 m13
    c1 0.366
    c2 0.4847
    c3 0.3421
  • Table continues below
      m1 m2 m3 m4 m5 m6 m7 m8
    d1 0.6273 0.3599
    d2 0.3265 0.7351
    d3 0.4694 0.6284
    d4 0.7055 0.6079
      m9 m10 m11 m12 m13
    d1 0.4284 0.3676
    d2 0.4541
    d3 0.5429
    d4 0.348
  • Table continues below
      m1 m2 m3 m4 m5 m6 m7 m8
    e1 0.6705 0.3901
    e2 0.853
    e3 0.4603 0.6312
    e4 0.7036 0.6132
    e5 0.308 0.8364
      m9 m10 m11 m12 m13
    e1 0.4822
    e2 0.3618
    e3 0.5412
    e4 0.3438
    e5 0.3219
  • Table continues below
      m1 m2 m3 m4 m5 m6 m7 m8
    f1 0.6823 0.3503
    f2 0.8543
    f3 0.4553 0.6445
    f4 0.328 0.8334
    f5 0.9061
    f6 0.9319
      m9 m10 m11 m12 m13
    f1 0.4972 0.3206
    f2 0.3669
    f3 0.532
    f4 0.3265
    f5
    f6
  • Table continues below
      m1 m2 m3 m4 m5 m6 m7 m8
    g1 0.5242
    g2 0.8609
    g3 0.4375 0.7652
    g4 0.456 0.6517
    g5 0.9025
    g6 0.9227
    g7 0.968
      m9 m10 m11 m12 m13
    g1 0.639 0.5019
    g2 0.3592
    g3 0.301
    g4 0.5253
    g5
    g6 0.3154
    g7
  • Table continues below
      m1 m2 m3 m4 m5 m6 m7 m8
    h1 0.5512
    h2 0.8665
    h3 0.4244 0.7702
    h4 0.933
    h5 0.9433
    h6 0.8928
    h7 0.7777
    h8 0.9701
      m9 m10 m11 m12 m13
    h1 0.6316 0.4714
    h2 0.3466
    h3 0.298
    h4
    h5
    h6
    h7 0.344 0.4557
    h8
  • Table continues below
      m1 m2 m3 m4 m5 m6 m7 m8
    i1 0.5374
    i2 0.9193
    i3 0.4171 0.7829
    i4 0.9354
    i5 0.9686
    i6 0.9022
    i7 0.9695
    i8 0.8016
    i9
      m9 m10 m11 m12 m13
    i1 0.6524 0.4789
    i2
    i3
    i4
    i5
    i6 0.3919
    i7
    i8 0.3908
    i9 0.3876 -0.3141 0.8254
  • Table continues below
      m1 m2 m3 m4 m5 m6 m7 m8
    j1 0.537
    j2 0.9061
    j3 0.4314 0.7651
    j4 0.9766
    j5 0.9712
    j6 0.9632
    j7 0.973
    j8 0.7902
    j9
    j10
      m9 m10 m11 m12 m13
    j1 0.7293 0.3541
    j2 0.3476
    j3 0.3253
    j4
    j5
    j6
    j7
    j8 0.4413 -0.2961
    j9 -0.3382 0.8723
    j10 0.2964 0.9143
  • Table continues below
      m1 m2 m3 m4 m5 m6 m7 m8
    k1 0.4563
    k2 0.9389
    k3 0.9811
    k4 0.9757
    k5 0.9901
    k6 0.9802
    k7 0.98
    k8 0.6929
    k9 0.8702
    k10
    k11
      m9 m10 m11 m12 m13
    k1 0.7616 0.3919
    k2 0.3014
    k3
    k4
    k5
    k6
    k7
    k8 0.6386
    k9 0.4594
    k10 -0.3211 0.9142
    k11 0.9429
  • Table continues below
      m1 m2 m3 m4 m5 m6 m7
    l1 0.9443
    l2 0.9563
    l3 0.9816
    l4 0.9915
    l5 0.9876
    l6 0.9995
    l7 0.9868
    l8
    l9
    l10
    l11
    l12
      m8 m9 m10 m11 m12 m13
    l1
    l2
    l3
    l4
    l5
    l6
    l7
    l8 0.9475 0.2987
    l9 0.8749 0.4647
    l10 0.974
    l11 -0.3108 0.9193
    l12 0.979
  • Table continues below
      n1 n2 n3 n4 n5 n6 n7 n8 n9 n10
    a1 0.2968 0.3015 0.3171 0.3061
      n11 n12 n13 n14
    a1
  • Table continues below
      n1 n2 n3 n4 n5 n6 n7 n8
    b1 0.327 0.3383 0.3151 0.3799 0.3258
    b2 0.6641 0.5805
      n9 n10 n11 n12 n13 n14
    b1 0.3114
    b2 0.3972
  • Table continues below
      n1 n2 n3 n4 n5 n6 n7 n8
    c1 0.3758 0.5362 0.4301
    c2 0.296 0.4889
    c3 0.6572 0.6022
      n9 n10 n11 n12 n13 n14
    c1 0.3594
    c2 0.5801 0.4088
    c3 0.4158
  • Table continues below
      n1 n2 n3 n4 n5 n6 n7 n8
    d1 0.6231 0.339
    d2 0.3297 0.7282
    d3 0.4567
    d4 0.6789 0.5905
      n9 n10 n11 n12 n13 n14
    d1 0.4152 0.3508
    d2 0.4532
    d3 0.6643 0.461
    d4 0.4263
  • Table continues below
      n1 n2 n3 n4 n5 n6 n7 n8
    e1 0.6698 0.3688
    e2 0.8419
    e3 0.4477
    e4 0.677 0.5958
    e5 0.8302 0.3173
      n9 n10 n11 n12 n13 n14
    e1 0.465
    e2 0.3581
    e3 0.6687 0.4579
    e4 0.4239
    e5 0.3227
  • Table continues below
      n1 n2 n3 n4 n5 n6 n7 n8
    f1 0.6916 0.3317
    f2 0.8422
    f3 0.4399
    f4 0.8268 0.3356
    f5 0.8782
    f6 0.9251
      n9 n10 n11 n12 n13 n14
    f1 0.4727
    f2 0.3651
    f3 0.6753 0.4496
    f4 0.3295
    f5 0.3534
    f6
  • Table continues below
      n1 n2 n3 n4 n5 n6 n7 n8
    g1 0.5985
    g2 0.8533
    g3 0.3166 0.721 0.4948
    g4 0.4385
    g5 0.9016
    g6 0.8975
    g7 0.96
      n9 n10 n11 n12 n13 n14
    g1 0.5874 0.4745
    g2 0.3528
    g3
    g4 0.6815 0.4404
    g5
    g6 0.3831
    g7
  • Table continues below
      n1 n2 n3 n4 n5 n6 n7 n8
    h1 0.6239
    h2 0.8588
    h3 0.3017 0.7256 0.4916
    h4 0.9311
    h5 0.921
    h6 0.9075
    h7
    h8 0.9611
      n9 n10 n11 n12 n13 n14
    h1 0.5805 0.445
    h2 0.3419
    h3
    h4
    h5 0.349
    h6
    h7 0.3407 0.7568 0.4063
    h8
  • Table continues below
      n1 n2 n3 n4 n5 n6 n7 n8
    i1 0.6164
    i2 0.9088
    i3 0.2988 0.7404 0.4711
    i4 0.9337
    i5 0.9487
    i6 0.9108
    i7 0.9601
    i8
    i9
      n9 n10 n11 n12 n13 n14
    i1 0.6027 0.4529
    i2
    i3
    i4
    i5
    i6 0.3571
    i7
    i8 0.3895 0.7747 -0.3092
    i9 -0.3067 0.3362 0.8223
  • Table continues below
      n1 n2 n3 n4 n5 n6 n7 n8
    j1 0.6312
    j2 0.8867
    j3 0.7108 0.5674
    j4 0.9732
    j5 0.9506
    j6 0.945
    j7 0.9646
    j8
    j9
    j10
      n9 n10 n11 n12 n13 n14
    j1 0.6719 0.3257
    j2 0.3673
    j3
    j4
    j5
    j6
    j7
    j8 0.4407 0.7493 -0.3206
    j9 -0.3436 0.8363
    j10 0.8902
  • Table continues below
      n1 n2 n3 n4 n5 n6 n7 n8
    k1 0.5671
    k2 0.9283
    k3 0.9439
    k4 0.9556
    k5 0.9885
    k6 0.9726
    k7 0.979
    k8 0.5844 0.5454
    k9 0.3595
    k10
    k11
      n9 n10 n11 n12 n13 n14
    k1 0.7015 0.3649
    k2 0.3264
    k3
    k4
    k5
    k6
    k7
    k8 0.5092
    k9 0.4527 0.7713
    k10 -0.3348 0.8818
    k11 0.9143
  • Table continues below
      n1 n2 n3 n4 n5 n6 n7 n8
    l1 0.9373
    l2 0.9451
    l3 0.9423
    l4 0.9901
    l5 0.9716
    l6 0.996
    l7 0.9785
    l8
    l9 0.4136
    l10 0.4476
    l11
    l12
      n9 n10 n11 n12 n13 n14
    l1 0.307
    l2
    l3
    l4
    l5
    l6
    l7
    l8 0.9062 0.3089
    l9 0.4661 0.7436
    l10 0.8736
    l11 -0.3267 0.8866
    l12 0.9366
  • Table continues below
      n1 n2 n3 n4 n5 n6 n7
    m1 0.9888
    m2 0.9587
    m3 0.9648
    m4 0.9989
    m5 0.9883
    m6 0.9972
    m7 0.9825
    m8
    m9
    m10
    m11
    m12
    m13
      n8 n9 n10 n11 n12 n13 n14
    m1
    m2
    m3
    m4
    m5
    m6
    m7
    m8 0.5272 0.8277
    m9 0.9734
    m10 0.9934
    m11 0.3531 0.9153
    m12 0.9626
    m13 0.9647

all strong loadings > .3 on all levels

test_loading_strong_df <- list()
for (i in 1:14) {
 loadings <- bassack14comp$comp.load[[i]]
 loadings_table <- xtable(unclass(fa.sort(loadings)))
 loadings_strong <- data.frame(replace_with_na_all(data = loadings_table, condition = ~ abs(.x) < 0.3))
 rownames(loadings_strong) <- rownames(loadings_table)
 test_loading_strong_df[[i]] <- loadings_strong
}

kable(round(test_loading_strong_df[[1]],2))
a1
PF_identity 0.84
PF_affect_diff 0.80
PF_self_reflection 0.78
SAD_devaluation 0.78
PF_affect_tolrnce 0.77
GAD_excess_worry 0.74
SAD_avoidance 0.73
DEP_depr_mood 0.73
PF_affect_comm 0.73
PF_self_est_reg 0.72
DEP_decision_probl 0.72
DEP_reduc_energy 0.72
DEP_dimin_selfconf 0.72
DEP_dimin_interest 0.72
SAD_eating 0.71
GAD_nervousness 0.71
DEP_guilt 0.71
GAD_free_float_anx 0.71
DEP_worthlessn 0.71
PF_intern_relshp_mod 0.71
DEP_concentration 0.71
DEP_rumination 0.70
PS_eccentricity 0.70
DEP_psycmot_agit 0.69
Dissociation 0.69
Somatic_symptoms 0.68
SAD_being_observ 0.68
SAD_soc_inter 0.66
SAD_performing 0.66
GAD_irritability 0.65
DEP_hopelessn 0.65
NA_perseveration 0.65
PF_anticipation 0.63
DI_impulsivity 0.63
Agoraphobia 0.63
DT_suspiciousness 0.62
Spec_phob_avoid 0.62
DEP_emot_numbn 0.62
DT_anhedonia 0.62
DT_restr_affectivity 0.62
OCD_sympt 0.61
PS_percept_dysreg 0.61
Panic_avoid_behv 0.61
DEP_suicid_intent 0.60
NA_sep_insecur 0.59
PF_holistic_percptn 0.59
DEP_psycmot_inhib 0.59
Panic_dysf_thought 0.59
PF_impulse_reg 0.58
DEP_crying_inab 0.58
Panic_fear_recurr 0.57
Psychotic_symptoms 0.57
EATB_worries 0.57
DT_withdrawal 0.55
PS_unusual_beliefs 0.55
Spec_phob_fear 0.54
SAD_attractive_pers 0.53
PF_forming_relshps 0.53
Panic_attacks 0.52
EATA_body_selfest 0.52
Panic_phys_symp 0.51
AN_hostility 0.51
EATB_soc_disguised 0.50
Hypochondriasis 0.50
DT_intimcy_avoid 0.49
DEP_loss_appetite 0.49
AN_deceitfulness 0.48
EATA_fear_weightg 0.47
DEP_crying 0.47
DI_perfectionism 0.47
EATB_intrus_thoughts 0.46
AN_grandiosity 0.44
EATA_omit_meal 0.44
DEP_circad_mood_fluct 0.43
DI_irresponsibility 0.43
DEP_hypersomnia 0.42
EATA_time_frames 0.42
Spec_phob_animals 0.40
EATA_purging_behv 0.39
DI_risk_taking 0.39
Manic_sympt 0.39
DEP_incr_appetite 0.38
AN_manipulativns 0.37
EATA_restricted 0.34
AN_callousness 0.34
Spec_phob_blood 0.34
EATB_overeating 0.34
EATB_loss_ctrl 0.33
EATA_count_calories 0.33
DI_normviolation 0.33
EATB_cope_negaff 0.33
EATA_exces_exercise 0.32
Panic_doctor_visits 0.31
EATA_fear_weightl
Subst_use_drug
DEP_loss_libido
AN_entitlement
Subst_use_alc
kable(round(test_loading_strong_df[[2]],2))
b1 b2
PF_identity 0.82
PF_affect_diff 0.81
SAD_devaluation 0.77
GAD_excess_worry 0.76
PF_self_reflection 0.76
PF_affect_tolrnce 0.75
GAD_nervousness 0.75
GAD_free_float_anx 0.74
DEP_depr_mood 0.74
DEP_decision_probl 0.73
DEP_rumination 0.73
DEP_dimin_interest 0.72
SAD_avoidance 0.72
DEP_reduc_energy 0.72
DEP_psycmot_agit 0.71
DEP_concentration 0.70
PF_affect_comm 0.70
DEP_dimin_selfconf 0.70
PF_self_est_reg 0.69
Spec_phob_avoid 0.67
DEP_worthlessn 0.67
GAD_irritability 0.67
SAD_being_observ 0.67
PF_intern_relshp_mod 0.67
SAD_performing 0.66
PS_eccentricity 0.66
DEP_guilt 0.66
Somatic_symptoms 0.66
DEP_hopelessn 0.65
SAD_soc_inter 0.65
Dissociation 0.63
NA_perseveration 0.63
Panic_avoid_behv 0.62
SAD_eating 0.62 0.36
Panic_dysf_thought 0.61
PF_anticipation 0.61
DT_anhedonia 0.61
Panic_fear_recurr 0.61
Agoraphobia 0.60
OCD_sympt 0.59
NA_sep_insecur 0.59
DEP_emot_numbn 0.59
DT_suspiciousness 0.59
DT_restr_affectivity 0.59
DEP_suicid_intent 0.59
PS_percept_dysreg 0.56
DEP_psycmot_inhib 0.56
DI_impulsivity 0.56
Spec_phob_fear 0.55
PF_holistic_percptn 0.55
Panic_phys_symp 0.55
Panic_attacks 0.54
PF_impulse_reg 0.54
DEP_crying_inab 0.54
PF_forming_relshps 0.53
SAD_attractive_pers 0.53
DT_withdrawal 0.51
Psychotic_symptoms 0.51
Hypochondriasis 0.50
PS_unusual_beliefs 0.49
DEP_loss_appetite 0.48
DEP_crying 0.46
AN_hostility 0.46
DI_perfectionism 0.45
DT_intimcy_avoid 0.44
DEP_circad_mood_fluct 0.43
Spec_phob_animals 0.41
AN_deceitfulness 0.41
DI_irresponsibility 0.40
AN_grandiosity 0.40
DEP_hypersomnia 0.38
Spec_phob_blood 0.36
Panic_doctor_visits 0.35
DI_risk_taking 0.35
Manic_sympt 0.32
AN_manipulativns
AN_callousness
DEP_loss_libido
DI_normviolation
Subst_use_drug
AN_entitlement
EATB_soc_disguised 0.80
EATA_omit_meal 0.78
EATA_count_calories 0.75
EATA_fear_weightg 0.75
EATB_worries 0.31 0.73
EATA_time_frames 0.72
EATB_loss_ctrl 0.70
EATA_body_selfest 0.70
EATA_restricted 0.68
EATB_intrus_thoughts 0.68
EATA_exces_exercise 0.68
EATA_purging_behv 0.66
EATB_overeating 0.66
EATB_cope_negaff 0.63
DEP_incr_appetite 0.55
EATA_fear_weightl 0.36
Subst_use_alc
kable(round(test_loading_strong_df[[3]],2))
c1 c2 c3
DEP_dimin_selfconf 0.79
DEP_depr_mood 0.78
DEP_reduc_energy 0.78
DEP_dimin_interest 0.76
DEP_decision_probl 0.75
PF_self_est_reg 0.73
DEP_rumination 0.72
DEP_hopelessn 0.71
GAD_nervousness 0.71
DEP_worthlessn 0.71
GAD_excess_worry 0.71 0.31
DEP_concentration 0.70
SAD_devaluation 0.69 0.35
GAD_free_float_anx 0.69
DEP_guilt 0.69
PF_affect_diff 0.68 0.44
PF_identity 0.68 0.46
DEP_psycmot_agit 0.67
SAD_avoidance 0.66
PF_self_reflection 0.64 0.40
DT_anhedonia 0.61
SAD_performing 0.60
Spec_phob_avoid 0.60 0.30
SAD_soc_inter 0.60
SAD_being_observ 0.58 0.33
GAD_irritability 0.58 0.34
PF_forming_relshps 0.56
PF_affect_tolrnce 0.56 0.52
DEP_suicid_intent 0.54
SAD_eating 0.53 0.33 0.36
NA_sep_insecur 0.52
NA_perseveration 0.52 0.36
PF_affect_comm 0.51 0.50
DEP_emot_numbn 0.51
Agoraphobia 0.50 0.33
DT_restr_affectivity 0.50 0.31
Somatic_symptoms 0.50 0.46
PF_intern_relshp_mod 0.49 0.47
Panic_avoid_behv 0.48 0.41
SAD_attractive_pers 0.47
DEP_psycmot_inhib 0.46 0.31
Panic_fear_recurr 0.46 0.41
PF_anticipation 0.46 0.41
DT_withdrawal 0.46
DEP_crying 0.46
DEP_crying_inab 0.45
Spec_phob_fear 0.43 0.35
Panic_attacks 0.40 0.39
DEP_loss_appetite 0.36 0.34
DEP_circad_mood_fluct 0.35
DI_perfectionism 0.33 0.32
DEP_hypersomnia 0.31
Spec_phob_animals 0.31
DEP_loss_libido
PS_unusual_beliefs 0.67
Psychotic_symptoms 0.65
PS_eccentricity 0.40 0.61
AN_manipulativns 0.60
AN_deceitfulness 0.60
DI_impulsivity 0.60
PS_percept_dysreg 0.59
DI_normviolation 0.58
PF_impulse_reg 0.57
Manic_sympt 0.57
Dissociation 0.40 0.55
PF_holistic_percptn 0.31 0.54
AN_hostility 0.52
Panic_dysf_thought 0.40 0.51
AN_grandiosity 0.50
DT_suspiciousness 0.38 0.50
AN_callousness 0.50
DI_risk_taking 0.47
OCD_sympt 0.41 0.47
AN_entitlement 0.46
Panic_phys_symp 0.40 0.40
Hypochondriasis 0.34 0.39
DI_irresponsibility 0.38
Subst_use_drug 0.36
DT_intimcy_avoid 0.35
Panic_doctor_visits 0.31
Spec_phob_blood
Subst_use_alc
EATB_soc_disguised 0.82
EATA_omit_meal 0.77
EATA_fear_weightg 0.77
EATA_count_calories 0.76
EATB_worries 0.31 0.75
EATA_body_selfest 0.72
EATB_loss_ctrl 0.72
EATA_time_frames 0.70
EATB_overeating 0.68
EATA_restricted 0.67
EATB_intrus_thoughts 0.67
EATB_cope_negaff 0.65
EATA_exces_exercise 0.65
EATA_purging_behv 0.65
DEP_incr_appetite 0.54
EATA_fear_weightl 0.34
kable(round(test_loading_strong_df[[4]],2))
d1 d2 d3 d4
DEP_dimin_selfconf 0.79
DEP_dimin_interest 0.79
DEP_reduc_energy 0.78
DEP_depr_mood 0.77
DEP_hopelessn 0.74
DEP_decision_probl 0.72
DEP_worthlessn 0.70
PF_self_est_reg 0.68
DEP_concentration 0.68
DEP_rumination 0.68
DEP_guilt 0.67
DT_anhedonia 0.67
DEP_psycmot_agit 0.60 0.32
PF_identity 0.59 0.40 0.43
PF_self_reflection 0.59 0.32 0.39
PF_affect_diff 0.58 0.43 0.38
DEP_emot_numbn 0.55 0.37
PF_forming_relshps 0.54
GAD_nervousness 0.54 0.53
DT_restr_affectivity 0.53 0.38
NA_perseveration 0.48 0.37
DEP_suicid_intent 0.48
DT_withdrawal 0.46
DEP_psycmot_inhib 0.45 0.33
DEP_crying_inab 0.44 0.33
PF_anticipation 0.44 0.42
NA_sep_insecur 0.42 0.36
DEP_crying 0.38
SAD_attractive_pers 0.38 0.33
DEP_circad_mood_fluct 0.33
DEP_hypersomnia 0.31
DEP_loss_libido 0.30
Panic_dysf_thought 0.77
Panic_phys_symp 0.76
Panic_fear_recurr 0.76
Panic_attacks 0.72
Panic_doctor_visits 0.67
Spec_phob_fear 0.63
Panic_avoid_behv 0.63
Spec_phob_avoid 0.38 0.60
SAD_devaluation 0.51 0.56
GAD_excess_worry 0.53 0.55
Agoraphobia 0.55
SAD_avoidance 0.48 0.55
GAD_free_float_anx 0.52 0.54
Somatic_symptoms 0.32 0.52 0.32
SAD_performing 0.43 0.52
SAD_eating 0.34 0.52 0.40
SAD_being_observ 0.41 0.52
Spec_phob_animals 0.49
GAD_irritability 0.43 0.47
SAD_soc_inter 0.45 0.47
Spec_phob_blood 0.47
Hypochondriasis 0.46
PF_affect_tolrnce 0.43 0.45 0.44
OCD_sympt 0.41 0.37
DI_perfectionism 0.31
AN_manipulativns 0.64
AN_deceitfulness 0.63
DI_normviolation 0.62
DI_impulsivity 0.60
AN_callousness 0.60
PS_unusual_beliefs 0.34 0.60
PF_impulse_reg 0.59
PS_eccentricity 0.32 0.33 0.58
Psychotic_symptoms 0.37 0.57
AN_hostility 0.57
PS_percept_dysreg 0.55
Manic_sympt 0.55
AN_grandiosity 0.55
PF_holistic_percptn 0.53
PF_affect_comm 0.48 0.51
Dissociation 0.31 0.36 0.50
DI_risk_taking 0.48
AN_entitlement 0.48
DT_suspiciousness 0.31 0.31 0.47
PF_intern_relshp_mod 0.43 0.32 0.44
DI_irresponsibility 0.43
DT_intimcy_avoid 0.31 0.40
Subst_use_drug 0.37
DEP_loss_appetite 0.30 0.31
Subst_use_alc
EATB_soc_disguised 0.82
EATA_omit_meal 0.79
EATA_fear_weightg 0.78
EATA_count_calories 0.77
EATB_worries 0.76
EATA_body_selfest 0.73
EATA_time_frames 0.72
EATB_loss_ctrl 0.71
EATA_restricted 0.69
EATB_overeating 0.67
EATB_intrus_thoughts 0.66
EATA_purging_behv 0.66
EATA_exces_exercise 0.65
EATB_cope_negaff 0.64
DEP_incr_appetite 0.53
EATA_fear_weightl 0.35
kable(round(test_loading_strong_df[[5]],2))
e1 e2 e3 e4 e5
DEP_dimin_interest 0.78
DEP_depr_mood 0.77
DEP_reduc_energy 0.77
DEP_dimin_selfconf 0.77
DEP_hopelessn 0.70
DEP_decision_probl 0.69
DEP_rumination 0.68
DEP_concentration 0.66
DEP_guilt 0.65
DEP_worthlessn 0.64 0.34
DEP_psycmot_agit 0.62 0.35
DT_anhedonia 0.62
PF_self_est_reg 0.59 0.43
PF_affect_diff 0.57 0.34 0.42
PF_identity 0.57 0.39 0.38
PF_self_reflection 0.55 0.31 0.36
GAD_nervousness 0.51 0.31 0.50
DEP_emot_numbn 0.51 0.36
DEP_suicid_intent 0.46
DEP_psycmot_inhib 0.45 0.31
NA_perseveration 0.44 0.35
DEP_crying 0.42 0.31
DEP_crying_inab 0.42 0.31
NA_sep_insecur 0.41 0.35
DEP_loss_libido 0.36
DEP_circad_mood_fluct 0.35
DEP_hypersomnia 0.32
DEP_loss_appetite 0.31
SAD_avoidance 0.81
SAD_soc_inter 0.81
SAD_devaluation 0.78
SAD_performing 0.77
SAD_being_observ 0.71
SAD_eating 0.67 0.36
SAD_attractive_pers 0.65
PF_forming_relshps 0.34 0.64
Spec_phob_avoid 0.60 0.40
Agoraphobia 0.54 0.37
DT_restr_affectivity 0.37 0.52 0.37
DT_withdrawal 0.52
Spec_phob_fear 0.49 0.48
Spec_phob_animals 0.47 0.32
Spec_phob_blood 0.37 0.34
Subst_use_alc
AN_manipulativns 0.63
AN_deceitfulness 0.62
DI_normviolation 0.62
AN_callousness 0.61
DI_impulsivity 0.59
PS_unusual_beliefs 0.58 0.31
PF_impulse_reg 0.57
AN_hostility 0.56
PS_eccentricity 0.35 0.56
Psychotic_symptoms 0.55 0.34
Manic_sympt 0.54
AN_grandiosity 0.54
PS_percept_dysreg 0.53
PF_holistic_percptn 0.52
PF_affect_comm 0.37 0.45 0.50
AN_entitlement 0.48
Dissociation 0.47 0.33
DI_risk_taking 0.47
DT_suspiciousness 0.37 0.45
DI_irresponsibility 0.42
PF_intern_relshp_mod 0.35 0.38 0.42
PF_anticipation 0.37 0.32 0.41
DT_intimcy_avoid 0.35 0.39
Subst_use_drug 0.36
EATB_soc_disguised 0.82
EATA_omit_meal 0.78
EATA_fear_weightg 0.78
EATA_count_calories 0.76
EATB_worries 0.75
EATA_body_selfest 0.72
EATB_loss_ctrl 0.71
EATA_time_frames 0.71
EATA_restricted 0.69
EATB_overeating 0.67
EATB_intrus_thoughts 0.66
EATA_exces_exercise 0.65
EATA_purging_behv 0.65
EATB_cope_negaff 0.64
DEP_incr_appetite 0.53
EATA_fear_weightl 0.35
Panic_dysf_thought 0.80
Panic_phys_symp 0.79
Panic_attacks 0.78
Panic_fear_recurr 0.77
Panic_doctor_visits 0.75
Panic_avoid_behv 0.62
Somatic_symptoms 0.32 0.53
GAD_free_float_anx 0.50 0.52
GAD_excess_worry 0.50 0.33 0.52
Hypochondriasis 0.47
PF_affect_tolrnce 0.43 0.41 0.46
GAD_irritability 0.39 0.44
OCD_sympt 0.34 0.39
DI_perfectionism
kable(round(test_loading_strong_df[[6]],2))
f1 f2 f3 f4 f5 f6
DEP_dimin_interest 0.77
DEP_depr_mood 0.77
DEP_dimin_selfconf 0.75
DEP_reduc_energy 0.75
DEP_hopelessn 0.70
DEP_decision_probl 0.67
DEP_rumination 0.65 0.31
DEP_concentration 0.65
DEP_guilt 0.64
DEP_worthlessn 0.64 0.33
DT_anhedonia 0.63
DEP_psycmot_agit 0.61 0.35
PF_self_est_reg 0.56 0.43
PF_identity 0.55 0.39 0.38
PF_affect_diff 0.55 0.34 0.43
PF_self_reflection 0.54 0.30 0.35
DEP_emot_numbn 0.54 0.34
DEP_suicid_intent 0.47
DEP_psycmot_inhib 0.45 0.30
DEP_crying_inab 0.43
NA_perseveration 0.41 0.35
DEP_crying 0.41 0.31
NA_sep_insecur 0.38 0.36
DEP_loss_appetite 0.36 0.32
DEP_circad_mood_fluct 0.34
DEP_loss_libido 0.34
DEP_hypersomnia 0.31
SAD_avoidance 0.80
SAD_soc_inter 0.80
SAD_devaluation 0.77
SAD_performing 0.77
SAD_being_observ 0.70
SAD_eating 0.65 0.39
SAD_attractive_pers 0.65
PF_forming_relshps 0.33 0.63
Spec_phob_avoid 0.61 0.41
Agoraphobia 0.53 0.36
DT_restr_affectivity 0.39 0.51 0.36
DT_withdrawal 0.51
Spec_phob_fear 0.49 0.48
Spec_phob_animals 0.48 0.33
Spec_phob_blood 0.38 0.34
Subst_use_alc
AN_manipulativns 0.62
AN_deceitfulness 0.62
DI_normviolation 0.61
AN_callousness 0.60
DI_impulsivity 0.59
PF_impulse_reg 0.57
PS_unusual_beliefs 0.57
AN_hostility 0.56
PS_eccentricity 0.34 0.56
Psychotic_symptoms 0.54 0.32
AN_grandiosity 0.54
Manic_sympt 0.53
PS_percept_dysreg 0.52
PF_holistic_percptn 0.52
PF_affect_comm 0.35 0.44 0.50
AN_entitlement 0.48
DI_risk_taking 0.46
Dissociation 0.46 0.31
DT_suspiciousness 0.36 0.44
DI_irresponsibility 0.43
PF_intern_relshp_mod 0.33 0.37 0.41
PF_anticipation 0.33 0.32 0.41
DT_intimcy_avoid 0.34 0.38
Subst_use_drug 0.35
Panic_dysf_thought 0.80
Panic_phys_symp 0.79
Panic_attacks 0.77
Panic_fear_recurr 0.77
Panic_doctor_visits 0.75
Panic_avoid_behv 0.62
GAD_free_float_anx 0.46 0.54
GAD_excess_worry 0.46 0.33 0.53
Somatic_symptoms 0.30 0.52
GAD_nervousness 0.48 0.32 0.51
Hypochondriasis 0.47
PF_affect_tolrnce 0.41 0.40 0.46
GAD_irritability 0.35 0.45
OCD_sympt 0.34 0.39
DI_perfectionism
EATA_omit_meal 0.86
EATA_time_frames 0.81
EATA_count_calories 0.80
EATA_restricted 0.78
EATA_exces_exercise 0.73
EATA_purging_behv 0.72
EATA_fear_weightg 0.56 0.56
EATB_worries 0.56 0.54
EATA_body_selfest 0.54 0.51
EATA_fear_weightl 0.36
EATB_loss_ctrl 0.88
EATB_overeating 0.87
EATB_cope_negaff 0.86
EATB_intrus_thoughts 0.31 0.69
DEP_incr_appetite 0.64
EATB_soc_disguised 0.58 0.60
kable(round(test_loading_strong_df[[7]],2))
g1 g2 g3 g4 g5 g6 g7
DEP_dimin_interest 0.74 0.31
DEP_reduc_energy 0.69 0.36
DT_anhedonia 0.68
DEP_dimin_selfconf 0.67 0.40
DEP_depr_mood 0.65 0.47
DEP_hopelessn 0.64 0.34
DEP_emot_numbn 0.62
DEP_concentration 0.57 0.38
DEP_decision_probl 0.54 0.48
DEP_worthlessn 0.53 0.42
DEP_psycmot_inhib 0.52
DEP_crying_inab 0.49
DEP_loss_appetite 0.44
DEP_suicid_intent 0.42
DEP_hypersomnia 0.39
DEP_circad_mood_fluct 0.36
DEP_loss_libido 0.34
SAD_soc_inter 0.79
SAD_avoidance 0.79
SAD_performing 0.76
SAD_devaluation 0.74 0.35
SAD_being_observ 0.69
SAD_eating 0.64 0.37
SAD_attractive_pers 0.64
PF_forming_relshps 0.33 0.62
Spec_phob_avoid 0.58 0.33 0.36
Agoraphobia 0.53 0.40
DT_withdrawal 0.41 0.51
DT_restr_affectivity 0.46 0.50 0.33
Spec_phob_fear 0.48 0.44
Spec_phob_animals 0.46
Spec_phob_blood 0.37
Subst_use_alc
GAD_free_float_anx 0.66 0.37
GAD_excess_worry 0.66 0.37
GAD_nervousness 0.65 0.35
GAD_irritability 0.63
DEP_rumination 0.45 0.61
NA_sep_insecur 0.55
PF_affect_diff 0.40 0.53 0.30 0.33
PF_affect_tolrnce 0.51 0.38 0.36
DEP_guilt 0.49 0.51
DEP_psycmot_agit 0.46 0.50
PF_self_est_reg 0.41 0.38 0.49
PF_identity 0.45 0.47 0.35 0.31
PF_self_reflection 0.44 0.45 0.32
PF_anticipation 0.44 0.39
DEP_crying 0.41
NA_perseveration 0.32 0.37 0.32
OCD_sympt 0.37 0.33 0.32
DI_perfectionism 0.36
AN_manipulativns 0.62
AN_deceitfulness 0.61
DI_normviolation 0.60
AN_callousness 0.59
DI_impulsivity 0.32 0.57
PF_impulse_reg 0.37 0.56
PS_unusual_beliefs 0.56 0.32
AN_hostility 0.55
PS_eccentricity 0.31 0.33 0.54
Psychotic_symptoms 0.54 0.31
AN_grandiosity 0.53
Manic_sympt 0.53
PF_holistic_percptn 0.32 0.51
PS_percept_dysreg 0.51
AN_entitlement 0.49
PF_affect_comm 0.41 0.36 0.47
DI_risk_taking 0.45
Dissociation 0.31 0.43 0.33
DT_suspiciousness 0.34 0.43
DI_irresponsibility 0.40
PF_intern_relshp_mod 0.34 0.34 0.39
DT_intimcy_avoid 0.32 0.34 0.36
Subst_use_drug 0.33
Panic_phys_symp 0.80
Panic_attacks 0.80
Panic_doctor_visits 0.80
Panic_dysf_thought 0.79
Panic_fear_recurr 0.76
Panic_avoid_behv 0.63
Somatic_symptoms 0.30 0.54
Hypochondriasis 0.45
EATA_omit_meal 0.87
EATA_count_calories 0.81
EATA_restricted 0.81
EATA_time_frames 0.80
EATA_exces_exercise 0.73
EATA_purging_behv 0.71
EATA_fear_weightg 0.59 0.52
EATB_worries 0.59 0.50
EATA_body_selfest 0.57 0.46
EATA_fear_weightl 0.34
EATB_loss_ctrl 0.91
EATB_cope_negaff 0.89
EATB_overeating 0.88
EATB_intrus_thoughts 0.72
DEP_incr_appetite 0.67
EATB_soc_disguised 0.58 0.59
kable(round(test_loading_strong_df[[8]],2))
h1 h2 h3 h4 h5 h6 h7 h8
DEP_dimin_interest 0.73
DEP_reduc_energy 0.69 0.34
DEP_dimin_selfconf 0.67 0.38
DT_anhedonia 0.66
DEP_depr_mood 0.66 0.45
DEP_hopelessn 0.64 0.32
DEP_emot_numbn 0.59
DEP_concentration 0.57 0.36
DEP_decision_probl 0.54 0.46
DEP_worthlessn 0.54 0.40
DEP_guilt 0.50 0.49
DEP_psycmot_inhib 0.50 0.34
DEP_crying_inab 0.47 0.33
DEP_loss_appetite 0.42 0.37
DEP_suicid_intent 0.42
DEP_hypersomnia 0.38
DEP_circad_mood_fluct 0.34
DEP_loss_libido 0.33
SAD_avoidance 0.78
SAD_soc_inter 0.78
SAD_performing 0.74
SAD_devaluation 0.73 0.34
SAD_being_observ 0.68
SAD_eating 0.63 0.36
SAD_attractive_pers 0.63
PF_forming_relshps 0.32 0.62
Spec_phob_avoid 0.58 0.32 0.37
Agoraphobia 0.52 0.35
DT_withdrawal 0.38 0.50 0.35
DT_restr_affectivity 0.43 0.48 0.37
Spec_phob_fear 0.47 0.40
Spec_phob_animals 0.45
Spec_phob_blood 0.35
GAD_free_float_anx 0.65 0.40
GAD_excess_worry 0.65 0.37
GAD_nervousness 0.64 0.38
GAD_irritability 0.63
DEP_rumination 0.45 0.60
NA_sep_insecur 0.53
PF_affect_diff 0.38 0.51 0.30 0.33
PF_affect_tolrnce 0.48 0.31 0.42
DEP_psycmot_agit 0.46 0.48
PF_self_est_reg 0.42 0.38 0.48
PF_identity 0.43 0.44 0.44
PF_anticipation 0.42 0.38
PF_self_reflection 0.42 0.42 0.38
DEP_crying 0.39
NA_perseveration 0.35
OCD_sympt 0.35 0.34
DI_perfectionism 0.35
Panic_doctor_visits 0.85
Panic_phys_symp 0.81
Panic_attacks 0.79
Panic_dysf_thought 0.78
Panic_fear_recurr 0.75
Panic_avoid_behv 0.62
Somatic_symptoms 0.50 0.35
Hypochondriasis 0.43
EATA_omit_meal 0.88
EATA_count_calories 0.83
EATA_restricted 0.82
EATA_time_frames 0.81
EATA_exces_exercise 0.72
EATA_purging_behv 0.71
EATA_fear_weightg 0.58 0.53
EATB_worries 0.56 0.51
EATA_body_selfest 0.55 0.47
EATA_fear_weightl 0.32
PS_unusual_beliefs 0.69
Psychotic_symptoms 0.66
PS_percept_dysreg 0.61
Dissociation 0.57
PS_eccentricity 0.30 0.54 0.35
Manic_sympt 0.45 0.35
AN_callousness 0.68
AN_hostility 0.61
AN_grandiosity 0.57
AN_deceitfulness 0.34 0.53
PF_impulse_reg 0.36 0.52
AN_entitlement 0.52
AN_manipulativns 0.39 0.49
DI_impulsivity 0.40 0.46
PF_holistic_percptn 0.31 0.31 0.45
DT_intimcy_avoid 0.32 0.45
DI_normviolation 0.42 0.45
DI_irresponsibility 0.42
PF_affect_comm 0.37 0.33 0.37 0.40
DI_risk_taking 0.39
DT_suspiciousness 0.31 0.31 0.37
PF_intern_relshp_mod 0.31 0.32 0.37
Subst_use_drug 0.32
Subst_use_alc
EATB_loss_ctrl 0.90
EATB_cope_negaff 0.88
EATB_overeating 0.88
EATB_intrus_thoughts 0.73
DEP_incr_appetite 0.67
EATB_soc_disguised 0.57 0.60
kable(round(test_loading_strong_df[[9]],2))
i1 i2 i3 i4 i5 i6 i7 i8 i9
DEP_dimin_interest 0.73
DEP_reduc_energy 0.69 0.34
DEP_dimin_selfconf 0.66 0.38
DT_anhedonia 0.65
DEP_depr_mood 0.64 0.44
DEP_hopelessn 0.63 0.31
DEP_emot_numbn 0.59
DEP_concentration 0.56 0.35
DEP_decision_probl 0.53 0.45
DEP_worthlessn 0.51 0.31 0.38
DEP_psycmot_inhib 0.49 0.33
DEP_crying_inab 0.47 0.34
DEP_guilt 0.47 0.47
DEP_suicid_intent 0.40
DEP_loss_appetite 0.40 0.33
DEP_hypersomnia 0.37
DEP_circad_mood_fluct 0.35
DEP_loss_libido 0.32
SAD_soc_inter 0.79
SAD_avoidance 0.78
SAD_performing 0.75
SAD_devaluation 0.74 0.33
SAD_being_observ 0.68
SAD_attractive_pers 0.65
SAD_eating 0.63 0.35
PF_forming_relshps 0.31 0.62
Spec_phob_avoid 0.55 0.33 0.37
Agoraphobia 0.49 0.35 0.33
DT_withdrawal 0.37 0.48 0.37
DT_restr_affectivity 0.41 0.48 0.36
Spec_phob_animals 0.41 0.33
Spec_phob_fear 0.40 0.40 0.35
PF_affect_comm 0.37 0.31 0.34 0.36 0.31
GAD_free_float_anx 0.65 0.39
GAD_excess_worry 0.65 0.36
GAD_nervousness 0.64 0.37
GAD_irritability 0.62
DEP_rumination 0.45 0.59
NA_sep_insecur 0.51
PF_affect_diff 0.37 0.49 0.32
DEP_psycmot_agit 0.45 0.47
PF_self_est_reg 0.39 0.40 0.47
PF_affect_tolrnce 0.46 0.38 0.30
PF_identity 0.41 0.42 0.41
PF_self_reflection 0.40 0.40 0.36
PF_anticipation 0.39 0.33
DEP_crying 0.38
DI_perfectionism 0.35
NA_perseveration 0.34 0.30
Panic_doctor_visits 0.85
Panic_phys_symp 0.81
Panic_attacks 0.79
Panic_dysf_thought 0.77
Panic_fear_recurr 0.75
Panic_avoid_behv 0.61
Somatic_symptoms 0.48 0.36
Hypochondriasis 0.42
EATA_omit_meal 0.89
EATA_restricted 0.85
EATA_count_calories 0.84
EATA_time_frames 0.83
EATA_exces_exercise 0.70
EATA_purging_behv 0.69
EATA_fear_weightg 0.55 0.53
EATB_worries 0.53 0.51
EATA_body_selfest 0.52 0.48
EATA_fear_weightl
PS_unusual_beliefs 0.67
Psychotic_symptoms 0.65
PS_percept_dysreg 0.60
Dissociation 0.53 0.32
PS_eccentricity 0.52 0.33
OCD_sympt 0.35 0.39
Manic_sympt 0.38 0.33
Spec_phob_blood 0.32
EATB_loss_ctrl 0.90
EATB_cope_negaff 0.88
EATB_overeating 0.88
EATB_intrus_thoughts 0.72
DEP_incr_appetite 0.67
EATB_soc_disguised 0.55 0.60
AN_callousness 0.67
AN_grandiosity 0.62
AN_hostility 0.61
AN_entitlement 0.56
AN_deceitfulness 0.47 0.33
PF_impulse_reg 0.32 0.45 0.37
AN_manipulativns 0.33 0.43 0.32
DT_intimcy_avoid 0.32 0.42
PF_holistic_percptn 0.38 0.34
DT_suspiciousness 0.34
PF_intern_relshp_mod 0.32 0.33
Subst_use_drug 0.67
DI_normviolation 0.64
Subst_use_alc 0.48
DI_impulsivity 0.31 0.35 0.46
DI_irresponsibility 0.31 0.39
DI_risk_taking 0.30 0.34
kable(round(test_loading_strong_df[[10]],2))
j1 j2 j3 j4 j5 j6 j7 j8 j9 j10
DEP_dimin_interest 0.73
DEP_reduc_energy 0.71
DEP_dimin_selfconf 0.67 0.36
DEP_depr_mood 0.65 0.42
DT_anhedonia 0.62
DEP_hopelessn 0.62 0.31
DEP_concentration 0.56 0.33
DEP_emot_numbn 0.54 0.33
DEP_decision_probl 0.54 0.43
DEP_psycmot_inhib 0.50
DEP_worthlessn 0.48 0.33 0.40
DEP_crying_inab 0.43 0.38
DEP_suicid_intent 0.41
DEP_loss_appetite 0.41 0.30
DEP_hypersomnia 0.40
DEP_circad_mood_fluct 0.39
DEP_loss_libido 0.36
SAD_soc_inter 0.75 0.30
SAD_avoidance 0.73 0.37
SAD_performing 0.68 0.41
SAD_devaluation 0.68 0.39
PF_forming_relshps 0.65
SAD_being_observ 0.62 0.37
SAD_attractive_pers 0.62
SAD_eating 0.57 0.35 0.36
DT_restr_affectivity 0.31 0.54 0.38
DT_withdrawal 0.53 0.39
Agoraphobia 0.44 0.32 0.34
GAD_excess_worry 0.61 0.34 0.31
GAD_free_float_anx 0.61 0.36 0.31
GAD_nervousness 0.60 0.35 0.30
GAD_irritability 0.59
DEP_rumination 0.45 0.57
NA_sep_insecur 0.49
PF_affect_diff 0.34 0.49 0.31 0.35
PF_self_est_reg 0.36 0.40 0.49
DEP_guilt 0.46 0.47
DEP_psycmot_agit 0.43 0.47
PF_affect_tolrnce 0.46 0.31 0.40
PF_anticipation 0.43 0.32
PF_intern_relshp_mod 0.33 0.34 0.30 0.33
NA_perseveration 0.33
DEP_crying 0.31 0.33
DI_perfectionism 0.32
Panic_doctor_visits 0.85
Panic_attacks 0.82
Panic_phys_symp 0.81
Panic_dysf_thought 0.78
Panic_fear_recurr 0.74
Panic_avoid_behv 0.61
Somatic_symptoms 0.46 0.32
Hypochondriasis 0.37 0.33
EATA_omit_meal 0.88
EATA_restricted 0.85
EATA_count_calories 0.84
EATA_time_frames 0.82
EATA_exces_exercise 0.70
EATA_purging_behv 0.69
EATA_fear_weightg 0.55 0.53
EATB_worries 0.53 0.51
EATA_body_selfest 0.51 0.47
EATA_fear_weightl
PS_unusual_beliefs 0.63
PS_percept_dysreg 0.61
Psychotic_symptoms 0.60 0.30
Dissociation 0.58
PS_eccentricity 0.54 0.32
PF_identity 0.36 0.43 0.47
PF_self_reflection 0.35 0.42 0.42
PF_affect_comm 0.38 0.35 0.41 0.36
OCD_sympt 0.31 0.35
DT_suspiciousness 0.30 0.35 0.34
EATB_loss_ctrl 0.91
EATB_cope_negaff 0.89
EATB_overeating 0.88
EATB_intrus_thoughts 0.73
DEP_incr_appetite 0.66
EATB_soc_disguised 0.54 0.61
AN_callousness 0.66
AN_grandiosity 0.62
AN_hostility 0.60
AN_entitlement 0.53
DT_intimcy_avoid 0.39 0.44
AN_deceitfulness 0.44 0.39
PF_impulse_reg 0.33 0.42 0.37
AN_manipulativns 0.40 0.38
PF_holistic_percptn 0.37 0.31
Spec_phob_animals 0.67
Spec_phob_blood 0.66
Spec_phob_fear 0.65
Spec_phob_avoid 0.46 0.30 0.49
Subst_use_drug 0.69
DI_normviolation 0.68
Subst_use_alc 0.52
DI_impulsivity 0.32 0.48
DI_irresponsibility 0.43
DI_risk_taking 0.39
Manic_sympt 0.34 0.38
kable(round(test_loading_strong_df[[11]],2))
k1 k2 k3 k4 k5 k6 k7 k8 k9 k10 k11
DEP_dimin_interest 0.70
DEP_reduc_energy 0.67 0.31
DEP_dimin_selfconf 0.63 0.38
DT_anhedonia 0.61
DEP_depr_mood 0.60 0.30 0.46
DEP_hopelessn 0.58 0.45
DEP_emot_numbn 0.54 0.34
DEP_concentration 0.52 0.39
DEP_psycmot_inhib 0.50 0.33
DEP_decision_probl 0.49 0.44
DEP_crying_inab 0.43 0.38
DEP_hypersomnia 0.41
DEP_circad_mood_fluct 0.41
DEP_loss_appetite 0.40 0.30
DEP_suicid_intent 0.38 0.35
DEP_loss_libido 0.38
SAD_soc_inter 0.76
SAD_avoidance 0.75 0.31
SAD_performing 0.70 0.36
SAD_devaluation 0.69 0.31 0.34
SAD_being_observ 0.65 0.31
SAD_attractive_pers 0.62
PF_forming_relshps 0.61
SAD_eating 0.58 0.34 0.32
DT_withdrawal 0.32 0.51 0.39
DT_restr_affectivity 0.32 0.50 0.41
Spec_phob_avoid 0.47 0.31 0.44
Agoraphobia 0.45 0.32 0.32
GAD_free_float_anx 0.72
GAD_nervousness 0.71
GAD_excess_worry 0.67
GAD_irritability 0.67
DEP_rumination 0.39 0.53 0.36
DEP_psycmot_agit 0.39 0.49
PF_affect_diff 0.46 0.34 0.35
OCD_sympt 0.41 0.38
NA_perseveration 0.41
DI_perfectionism 0.40
EATA_omit_meal 0.88
EATA_restricted 0.85
EATA_count_calories 0.84
EATA_time_frames 0.82
EATA_exces_exercise 0.69
EATA_purging_behv 0.68
EATA_fear_weightg 0.54 0.51 0.36
EATB_worries 0.51 0.48 0.41
EATA_body_selfest 0.49 0.45 0.44
Panic_doctor_visits 0.84
Panic_attacks 0.83
Panic_phys_symp 0.81
Panic_dysf_thought 0.77
Panic_fear_recurr 0.74
Panic_avoid_behv 0.61
Somatic_symptoms 0.45 0.32
Hypochondriasis 0.36 0.32
EATB_loss_ctrl 0.91
EATB_cope_negaff 0.89
EATB_overeating 0.88
EATB_intrus_thoughts 0.73
DEP_incr_appetite 0.66
EATB_soc_disguised 0.53 0.59
PS_percept_dysreg 0.63
PS_unusual_beliefs 0.63
Psychotic_symptoms 0.61
Dissociation 0.59
PS_eccentricity 0.54 0.32
PF_identity 0.31 0.36 0.43 0.41
PF_self_reflection 0.30 0.36 0.40 0.37
DEP_worthlessn 0.42 0.55
NA_sep_insecur 0.53
DEP_guilt 0.39 0.32 0.52
PF_self_est_reg 0.31 0.36 0.37 0.46
DEP_crying 0.44 0.31
PF_intern_relshp_mod 0.43 0.42
PF_affect_tolrnce 0.36 0.30 0.36 0.39
AN_callousness 0.65
AN_hostility 0.65
AN_grandiosity 0.62
AN_entitlement 0.50 0.30
PF_impulse_reg 0.32 0.50 0.32
DT_intimcy_avoid 0.36 0.46
AN_deceitfulness 0.44 0.39
DT_suspiciousness 0.32 0.42
PF_holistic_percptn 0.41
PF_affect_comm 0.33 0.37 0.35 0.40
AN_manipulativns 0.40 0.39
PF_anticipation 0.31 0.37 0.38
Spec_phob_animals 0.69
Spec_phob_fear 0.30 0.67
Spec_phob_blood 0.67
Subst_use_drug 0.71
DI_normviolation 0.69
Subst_use_alc 0.54
DI_impulsivity 0.33 0.46
DI_irresponsibility 0.45
Manic_sympt 0.38 0.41
DI_risk_taking 0.39
EATA_fear_weightl
kable(round(test_loading_strong_df[[12]],2))
l1 l2 l3 l4 l5 l6 l7 l8 l9 l10 l11 l12
SAD_soc_inter 0.75
SAD_avoidance 0.74
SAD_performing 0.70 0.35
SAD_devaluation 0.68 0.30 0.33
SAD_being_observ 0.65 0.30
SAD_attractive_pers 0.62
PF_forming_relshps 0.59
SAD_eating 0.58 0.33 0.32
DT_restr_affectivity 0.48 0.41
DT_withdrawal 0.48 0.36 0.41
Spec_phob_avoid 0.48 0.30 0.44
Agoraphobia 0.43 0.31 0.30
DEP_hopelessn 0.65 0.34
DEP_depr_mood 0.63 0.39
DEP_worthlessn 0.57 0.37
DEP_dimin_selfconf 0.53 0.48
DEP_suicid_intent 0.52
DEP_guilt 0.52 0.31 0.37
DEP_decision_probl 0.43 0.42 0.38
PF_identity 0.43 0.34 0.43
DEP_crying 0.43
PF_self_reflection 0.42 0.35 0.40
GAD_free_float_anx 0.71
GAD_nervousness 0.71
GAD_irritability 0.67
GAD_excess_worry 0.67
DEP_rumination 0.48 0.52
DEP_psycmot_agit 0.38 0.47
PF_affect_diff 0.41 0.45 0.34
DI_perfectionism 0.40
OCD_sympt 0.40 0.38
NA_perseveration 0.40
Panic_doctor_visits 0.83
Panic_attacks 0.83
Panic_phys_symp 0.81
Panic_dysf_thought 0.77
Panic_fear_recurr 0.74
Panic_avoid_behv 0.60
Somatic_symptoms 0.43 0.33
Hypochondriasis 0.34 0.31
EATA_omit_meal 0.88
EATA_restricted 0.86
EATA_count_calories 0.84
EATA_time_frames 0.82
EATA_purging_behv 0.69
EATA_exces_exercise 0.67
EATB_loss_ctrl 0.91
EATB_cope_negaff 0.90
EATB_overeating 0.89
EATB_intrus_thoughts 0.73
DEP_incr_appetite 0.64
EATB_soc_disguised 0.50 0.56 0.37
PS_unusual_beliefs 0.62
PS_percept_dysreg 0.62
Psychotic_symptoms 0.60
Dissociation 0.58
PS_eccentricity 0.54 0.31
PF_affect_tolrnce 0.34 0.36 0.37
DEP_crying_inab 0.35 0.36 0.33
DEP_psycmot_inhib 0.57
DEP_reduc_energy 0.47 0.57
DEP_dimin_interest 0.52 0.56
DT_anhedonia 0.42 0.51
DEP_hypersomnia 0.49
DEP_circad_mood_fluct 0.48
DEP_emot_numbn 0.34 0.31 0.48
DEP_concentration 0.37 0.37 0.46
DEP_loss_appetite 0.44
DEP_loss_libido 0.44
AN_hostility 0.65
AN_callousness 0.64
AN_grandiosity 0.61
PF_impulse_reg 0.49 0.33
DT_intimcy_avoid 0.34 0.47
AN_entitlement 0.47 0.32
PF_intern_relshp_mod 0.45 0.36
DT_suspiciousness 0.44 0.34
PF_holistic_percptn 0.43 0.36
PF_affect_comm 0.31 0.37 0.42 0.32
PF_anticipation 0.31 0.39
EATA_body_selfest 0.44 0.38 0.59
EATB_worries 0.45 0.42 0.58
EATA_fear_weightl -0.31 0.52
EATA_fear_weightg 0.49 0.45 0.52
NA_sep_insecur 0.33 0.45
PF_self_est_reg 0.33 0.36 0.36 0.42
Spec_phob_animals 0.68
Spec_phob_fear 0.67
Spec_phob_blood 0.67
DI_normviolation 0.74
Subst_use_drug 0.67
Subst_use_alc 0.56
DI_impulsivity 0.32 0.46
DI_risk_taking 0.44
AN_manipulativns 0.35 0.44
DI_irresponsibility 0.44
AN_deceitfulness 0.41 0.42
Manic_sympt 0.36 0.40
kable(round(test_loading_strong_df[[13]],2))
m1 m2 m3 m4 m5 m6 m7 m8 m9 m10 m11 m12 m13
SAD_soc_inter 0.75
SAD_avoidance 0.73
SAD_performing 0.71 0.34
SAD_devaluation 0.68 0.32
SAD_being_observ 0.66
SAD_attractive_pers 0.59
PF_forming_relshps 0.58
SAD_eating 0.57 0.33 0.32
Spec_phob_avoid 0.47 0.30 0.45
Agoraphobia 0.44 0.31
DEP_hopelessn 0.63 0.32
DEP_depr_mood 0.62 0.35
DEP_worthlessn 0.57 0.33
DEP_dimin_selfconf 0.55 0.46
DEP_guilt 0.53 0.33
DEP_crying 0.53
DEP_suicid_intent 0.50
DEP_decision_probl 0.45 0.39 0.39
PF_self_reflection 0.39 0.34 0.38 0.30
GAD_free_float_anx 0.72
GAD_nervousness 0.71
GAD_excess_worry 0.67
GAD_irritability 0.67
DEP_rumination 0.47 0.51
DEP_psycmot_agit 0.36 0.47
PF_affect_diff 0.38 0.45 0.32
DI_perfectionism 0.41
OCD_sympt 0.40 0.37
NA_perseveration 0.35 0.30 0.31
Panic_doctor_visits 0.84
Panic_attacks 0.83
Panic_phys_symp 0.81
Panic_dysf_thought 0.77
Panic_fear_recurr 0.73
Panic_avoid_behv 0.60
Somatic_symptoms 0.42 0.33
Hypochondriasis 0.33 0.31
EATA_omit_meal 0.88
EATA_restricted 0.87
EATA_count_calories 0.83
EATA_time_frames 0.83
EATA_purging_behv 0.67
EATA_exces_exercise 0.65
EATB_loss_ctrl 0.91
EATB_cope_negaff 0.90
EATB_overeating 0.89
EATB_intrus_thoughts 0.72
DEP_incr_appetite 0.63
EATB_soc_disguised 0.48 0.55 0.41
PS_unusual_beliefs 0.61
PS_percept_dysreg 0.60
Psychotic_symptoms 0.60
Dissociation 0.56
PS_eccentricity 0.53 0.34
PF_identity 0.41 0.34 0.42
PF_affect_tolrnce 0.35 0.34 0.38
AN_hostility 0.65
PF_impulse_reg 0.59
AN_callousness 0.58 0.32
AN_grandiosity 0.55
AN_entitlement 0.55
AN_deceitfulness 0.51 0.36
PF_holistic_percptn 0.47 0.33
PF_affect_comm 0.34 0.37 0.45
PF_anticipation 0.44
DI_impulsivity 0.42 0.40
DEP_psycmot_inhib 0.58
DEP_reduc_energy 0.47 0.54
DEP_hypersomnia 0.51
DEP_dimin_interest 0.48 0.50 0.37
DEP_circad_mood_fluct 0.49
DEP_concentration 0.38 0.34 0.46
DEP_loss_appetite 0.45
DEP_loss_libido 0.38
DT_restr_affectivity 0.35 0.64
DT_intimcy_avoid 0.63
DEP_emot_numbn 0.35 0.56
DT_withdrawal 0.39 0.53
DEP_crying_inab 0.51
DT_anhedonia 0.36 0.41 0.48
PF_intern_relshp_mod 0.35 0.40 0.37
DT_suspiciousness 0.35 0.37 0.36
EATA_body_selfest 0.39 0.37 0.64
EATB_worries 0.41 0.41 0.63
EATA_fear_weightg 0.44 0.44 0.58
EATA_fear_weightl 0.32 0.54
NA_sep_insecur 0.39 0.40
PF_self_est_reg 0.34 0.37 0.34 0.39
Spec_phob_animals 0.71
Spec_phob_fear 0.71
Spec_phob_blood 0.68
DI_normviolation 0.73
Subst_use_drug 0.68
Subst_use_alc 0.59
DI_risk_taking 0.46
AN_manipulativns 0.36 0.42
DI_irresponsibility 0.33 0.31 0.38
Manic_sympt 0.36 0.37


wards hierarchical cluster ananalysis

library(stats)

component_dis <- 1 - scale_cor
component_dis <- as.dist(round(component_dis, 4))

test_clust <- hclust(component_dis, method = "ward.D2")
plot(x = test_clust, labels =  row.names(0), cex = 0.5)

cl_members <- cutree(tree = test_clust, k = factor_number_final)
plot(x = test_clust, labels =  row.names(test_clust), cex = 0.5)
rect.hclust(tree = test_clust, k = factor_number_final, which = 1:factor_number_final, border = 1:factor_number_final, cluster = cl_members)

Redundant and artificial components identified in the bass ackwards procedure

Bass-Ackwards procedure according to Forbes (2023) extracts an increasing number of components (1, 2, 3, …, n) in a top-down process and calculates the correlations between the components of subsequent hierarchical levels Goldberg et al. (. The top level component in these models is often called “P-Factor”. Based on the correlations between all levels and components a hierarchical structure of psychopathology best fitting the data is identified involving three steps: First identifying and removing redundant components with r > .9 and a congruence coefficient for loadings > .95, then identifying and removing artefactual components based on the examination of the cluster analytic hierarchy of the data (using Wards agglomerative clustering method) and in a third step by adding correlations from lower to higher order components that are not accounted for hierarchically. Redundancy (i.e. r > .90 and congruence coefficient of loadings > .95) of components at the bottom level with components from higher levels are depicted in light green. Here, according to the procedure described in Forbes (20006) only the bottom component remains because of greater specificity of the constructs in the model. Redundancy of higher level components with components from lower levels that do not include the bottom layer are depicted in dark green. Here only the component highest to the top of the hierarchy remains, i.e. the broadest manifestation subsuming lower level constructs. Components close-to-redundancy were N1 and J2 (r = .89), N1 and E2 (r = .84), N3 and E5 (.83), N13 and L10 (r = .87), N5 and F5 (r = .88), N7 and H6 (r = .91), J8 and H7 (r = .89), and N14 and I9 (r = .82).

After removing the redundant components in the hierarchical structure, three components could be identified as artifactual and being absent in the agglomerative cluster analysis (see supplemental Figure S1): K8 with loadings on Depression (N3) and ED thoughts (N13) emerging from J3 (mainly GAD and OCD), J9 with positive loadings on Specific Phobia (N12) and negative loadings on Detachment (N10), emerging from I6 (mainly Thought disorder) and C2 with positive loadings on Panic (N3), Thought (N7), Antagonism (N11) and Disinhibition (N14), emerging from B1 (mainly Distress + Fear).

The third step in the identification of the hierarchical structure was to include correlations larger than .3 [77] of the lower level components with the remaining higher order components that were not already accounted for hierarchically. PF Problems (N8) showed significant cross-loadings with G3 (GAD and OCD), Detachment (N10) with G1 (Somatic depression symptoms). The hierarchically unrelated components Eating Disorder related Thoughts (N13) and Specific Phobia (N12) showed its highest correlations with higher order Eating Disorder (B2) and higher order Fear component (D2), respectively.