##################################
# Loading R libraries
##################################
library(AppliedPredictiveModeling)
library(performance)
library(parameters)
library(HH)
library(tidyr)
library(caret)
library(psych)
library(lattice)
library(dplyr)
library(moments)
library(skimr)
library(RANN)
library(pls)
library(corrplot)
library(lares)
library(DMwR2)
library(gridExtra)
library(rattle)
library(RColorBrewer)
library(stats)
library(factoextra)
library(FactoMineR)
library(gplots)
library(qgraph)
library(ggplot2)
library(psych)
library(nFactors)
library(MBESS)
library(DandEFA)
library(EFAtools)
##################################
# Defining file paths
##################################
<- file.path("datasets")
DATASETS_PATH
##################################
# Loading source and
# formulating the analysis set
##################################
<- read.csv(file.path("..", DATASETS_PATH, "JobHiring.csv"),
JobHiring na.strings=c("NA","NaN"," ",""),
stringsAsFactors = FALSE)
<- as.data.frame(JobHiring)
JobHiring
##################################
# Performing a general exploration of the data set
##################################
dim(JobHiring)
## [1] 50 12
str(JobHiring)
## 'data.frame': 50 obs. of 12 variables:
## $ ACAD: int 6 9 6 7 4 7 6 7 9 6 ...
## $ APPR: int 8 8 7 8 7 7 8 6 8 8 ...
## $ COMM: int 7 8 7 6 8 7 6 6 8 7 ...
## $ CFIT: int 5 8 6 5 6 5 7 5 9 8 ...
## $ EXPR: int 6 10 6 8 6 5 7 8 9 6 ...
## $ JFIT: int 5 9 7 5 6 6 7 6 8 7 ...
## $ LETT: int 7 8 7 9 6 5 8 7 10 8 ...
## $ LIKE: int 7 9 8 8 7 7 7 6 7 7 ...
## $ ORGN: int 7 8 8 7 8 8 5 5 8 8 ...
## $ POTL: int 6 9 6 8 5 7 7 7 8 6 ...
## $ RESM: int 7 9 6 7 4 4 8 6 9 7 ...
## $ SCON: int 7 9 8 7 6 6 7 6 8 7 ...
summary(JobHiring)
## ACAD APPR COMM CFIT
## Min. : 4.00 Min. : 5.00 Min. : 3.00 Min. : 3.00
## 1st Qu.: 6.25 1st Qu.: 7.00 1st Qu.: 6.00 1st Qu.: 6.00
## Median : 7.00 Median : 7.50 Median : 7.00 Median : 7.00
## Mean : 7.40 Mean : 7.44 Mean : 6.86 Mean : 6.88
## 3rd Qu.: 8.00 3rd Qu.: 8.00 3rd Qu.: 8.00 3rd Qu.: 8.00
## Max. :10.00 Max. :10.00 Max. :10.00 Max. :10.00
## EXPR JFIT LETT LIKE ORGN
## Min. : 5.00 Min. : 3.00 Min. : 4.00 Min. :4.00 Min. :3.00
## 1st Qu.: 6.00 1st Qu.: 6.00 1st Qu.: 6.00 1st Qu.:7.00 1st Qu.:5.25
## Median : 7.00 Median : 7.00 Median : 7.00 Median :7.50 Median :7.00
## Mean : 7.32 Mean : 7.02 Mean : 7.22 Mean :7.38 Mean :6.86
## 3rd Qu.: 8.00 3rd Qu.: 8.00 3rd Qu.: 8.00 3rd Qu.:8.00 3rd Qu.:8.00
## Max. :10.00 Max. :10.00 Max. :10.00 Max. :9.00 Max. :9.00
## POTL RESM SCON
## Min. : 4.0 Min. : 4.00 Min. :5.00
## 1st Qu.: 6.0 1st Qu.: 6.00 1st Qu.:7.00
## Median : 7.5 Median : 7.00 Median :7.00
## Mean : 7.3 Mean : 7.24 Mean :7.34
## 3rd Qu.: 8.0 3rd Qu.: 9.00 3rd Qu.:8.00
## Max. :10.0 Max. :10.00 Max. :9.00
##################################
# Formulating a data type assessment summary
##################################
<- JobHiring
PDA <- data.frame(
(PDA.Summary Column.Index=c(1:length(names(PDA))),
Column.Name= names(PDA),
Column.Type=sapply(PDA, function(x) class(x)),
row.names=NULL)
)
## Column.Index Column.Name Column.Type
## 1 1 ACAD integer
## 2 2 APPR integer
## 3 3 COMM integer
## 4 4 CFIT integer
## 5 5 EXPR integer
## 6 6 JFIT integer
## 7 7 LETT integer
## 8 8 LIKE integer
## 9 9 ORGN integer
## 10 10 POTL integer
## 11 11 RESM integer
## 12 12 SCON integer
##################################
# Loading dataset
##################################
<- JobHiring
DQA
##################################
# Formulating an overall data quality assessment summary
##################################
<- data.frame(
(DQA.Summary Column.Name= names(DQA),
Column.Type=sapply(DQA, function(x) class(x)),
Row.Count=sapply(DQA, function(x) nrow(DQA)),
NA.Count=sapply(DQA,function(x)sum(is.na(x))),
Fill.Rate=sapply(DQA,function(x)format(round((sum(!is.na(x))/nrow(DQA)),3),nsmall=3)),
row.names=NULL)
)
## Column.Name Column.Type Row.Count NA.Count Fill.Rate
## 1 ACAD integer 50 0 1.000
## 2 APPR integer 50 0 1.000
## 3 COMM integer 50 0 1.000
## 4 CFIT integer 50 0 1.000
## 5 EXPR integer 50 0 1.000
## 6 JFIT integer 50 0 1.000
## 7 LETT integer 50 0 1.000
## 8 LIKE integer 50 0 1.000
## 9 ORGN integer 50 0 1.000
## 10 POTL integer 50 0 1.000
## 11 RESM integer 50 0 1.000
## 12 SCON integer 50 0 1.000
##################################
# Listing all descriptors
##################################
<- DQA
DQA.Descriptors
##################################
# Listing all numeric Descriptors
##################################
<- DQA.Descriptors[,sapply(DQA.Descriptors, is.numeric)]
DQA.Descriptors.Numeric
if (length(names(DQA.Descriptors.Numeric))>0) {
print(paste0("There are ",
length(names(DQA.Descriptors.Numeric))),
(" numeric descriptor variable(s)."))
else {
} print("There are no numeric descriptor variables.")
}
## [1] "There are 12 numeric descriptor variable(s)."
##################################
# Listing all factor Descriptors
##################################
<- DQA.Descriptors[,sapply(DQA.Descriptors, is.factor)]
DQA.Descriptors.Factor
if (length(names(DQA.Descriptors.Factor))>0) {
print(paste0("There are ",
length(names(DQA.Descriptors.Factor))),
(" factor descriptor variable(s)."))
else {
} print("There are no factor descriptor variables.")
}
## [1] "There are no factor descriptor variables."
##################################
# Formulating a data quality assessment summary for factor Descriptors
##################################
if (length(names(DQA.Descriptors.Factor))>0) {
##################################
# Formulating a function to determine the first mode
##################################
<- function(x) {
FirstModes <- unique(na.omit(x))
ux <- tabulate(match(x, ux))
tab == max(tab)]
ux[tab
}
##################################
# Formulating a function to determine the second mode
##################################
<- function(x) {
SecondModes <- unique(na.omit(x))
ux <- tabulate(match(x, ux))
tab = ux[tab == max(tab)]
fm = x[!(x %in% fm)]
sm <- unique(sm)
usm <- tabulate(match(sm, usm))
tabsm ifelse(is.na(usm[tabsm == max(tabsm)])==TRUE,
return("x"),
return(usm[tabsm == max(tabsm)]))
}
<- data.frame(
(DQA.Descriptors.Factor.Summary Column.Name= names(DQA.Descriptors.Factor),
Column.Type=sapply(DQA.Descriptors.Factor, function(x) class(x)),
Unique.Count=sapply(DQA.Descriptors.Factor, function(x) length(unique(x))),
First.Mode.Value=sapply(DQA.Descriptors.Factor, function(x) as.character(FirstModes(x)[1])),
Second.Mode.Value=sapply(DQA.Descriptors.Factor, function(x) as.character(SecondModes(x)[1])),
First.Mode.Count=sapply(DQA.Descriptors.Factor, function(x) sum(na.omit(x) == FirstModes(x)[1])),
Second.Mode.Count=sapply(DQA.Descriptors.Factor, function(x) sum(na.omit(x) == SecondModes(x)[1])),
Unique.Count.Ratio=sapply(DQA.Descriptors.Factor, function(x) format(round((length(unique(x))/nrow(DQA.Descriptors.Factor)),3), nsmall=3)),
First.Second.Mode.Ratio=sapply(DQA.Descriptors.Factor, function(x) format(round((sum(na.omit(x) == FirstModes(x)[1])/sum(na.omit(x) == SecondModes(x)[1])),3), nsmall=3)),
row.names=NULL)
)
}
##################################
# Formulating a data quality assessment summary for numeric Descriptors
##################################
if (length(names(DQA.Descriptors.Numeric))>0) {
##################################
# Formulating a function to determine the first mode
##################################
<- function(x) {
FirstModes <- unique(na.omit(x))
ux <- tabulate(match(x, ux))
tab == max(tab)]
ux[tab
}
##################################
# Formulating a function to determine the second mode
##################################
<- function(x) {
SecondModes <- unique(na.omit(x))
ux <- tabulate(match(x, ux))
tab = ux[tab == max(tab)]
fm = na.omit(x)[!(na.omit(x) %in% fm)]
sm <- unique(sm)
usm <- tabulate(match(sm, usm))
tabsm ifelse(is.na(usm[tabsm == max(tabsm)])==TRUE,
return(0.00001),
return(usm[tabsm == max(tabsm)]))
}
<- data.frame(
(DQA.Descriptors.Numeric.Summary Column.Name= names(DQA.Descriptors.Numeric),
Column.Type=sapply(DQA.Descriptors.Numeric, function(x) class(x)),
Unique.Count=sapply(DQA.Descriptors.Numeric, function(x) length(unique(x))),
Unique.Count.Ratio=sapply(DQA.Descriptors.Numeric, function(x) format(round((length(unique(x))/nrow(DQA.Descriptors.Numeric)),3), nsmall=3)),
First.Mode.Value=sapply(DQA.Descriptors.Numeric, function(x) format(round((FirstModes(x)[1]),3),nsmall=3)),
Second.Mode.Value=sapply(DQA.Descriptors.Numeric, function(x) format(round((SecondModes(x)[1]),3),nsmall=3)),
First.Mode.Count=sapply(DQA.Descriptors.Numeric, function(x) sum(na.omit(x) == FirstModes(x)[1])),
Second.Mode.Count=sapply(DQA.Descriptors.Numeric, function(x) sum(na.omit(x) == SecondModes(x)[1])),
First.Second.Mode.Ratio=sapply(DQA.Descriptors.Numeric, function(x) format(round((sum(na.omit(x) == FirstModes(x)[1])/sum(na.omit(x) == SecondModes(x)[1])),3), nsmall=3)),
Minimum=sapply(DQA.Descriptors.Numeric, function(x) format(round(min(x,na.rm = TRUE),3), nsmall=3)),
Mean=sapply(DQA.Descriptors.Numeric, function(x) format(round(mean(x,na.rm = TRUE),3), nsmall=3)),
Median=sapply(DQA.Descriptors.Numeric, function(x) format(round(median(x,na.rm = TRUE),3), nsmall=3)),
Maximum=sapply(DQA.Descriptors.Numeric, function(x) format(round(max(x,na.rm = TRUE),3), nsmall=3)),
Skewness=sapply(DQA.Descriptors.Numeric, function(x) format(round(skewness(x,na.rm = TRUE),3), nsmall=3)),
Kurtosis=sapply(DQA.Descriptors.Numeric, function(x) format(round(kurtosis(x,na.rm = TRUE),3), nsmall=3)),
Percentile25th=sapply(DQA.Descriptors.Numeric, function(x) format(round(quantile(x,probs=0.25,na.rm = TRUE),3), nsmall=3)),
Percentile75th=sapply(DQA.Descriptors.Numeric, function(x) format(round(quantile(x,probs=0.75,na.rm = TRUE),3), nsmall=3)),
row.names=NULL)
)
}
## Column.Name Column.Type Unique.Count Unique.Count.Ratio First.Mode.Value
## 1 ACAD integer 7 0.140 7.000
## 2 APPR integer 6 0.120 8.000
## 3 COMM integer 8 0.160 7.000
## 4 CFIT integer 8 0.160 8.000
## 5 EXPR integer 6 0.120 8.000
## 6 JFIT integer 7 0.140 7.000
## 7 LETT integer 7 0.140 8.000
## 8 LIKE integer 6 0.120 8.000
## 9 ORGN integer 7 0.140 7.000
## 10 POTL integer 7 0.140 8.000
## 11 RESM integer 7 0.140 9.000
## 12 SCON integer 5 0.100 7.000
## Second.Mode.Value First.Mode.Count Second.Mode.Count First.Second.Mode.Ratio
## 1 8.000 14 12 1.167
## 2 7.000 19 16 1.188
## 3 8.000 15 14 1.071
## 4 7.000 15 11 1.364
## 5 6.000 12 10 1.200
## 6 8.000 13 12 1.083
## 7 7.000 12 11 1.091
## 8 7.000 18 16 1.125
## 9 5.000 12 10 1.200
## 10 7.000 15 11 1.364
## 11 6.000 12 11 1.091
## 12 8.000 16 14 1.143
## Minimum Mean Median Maximum Skewness Kurtosis Percentile25th Percentile75th
## 1 4.000 7.400 7.000 10.000 -0.091 2.687 6.250 8.000
## 2 5.000 7.440 7.500 10.000 -0.014 2.861 7.000 8.000
## 3 3.000 6.860 7.000 10.000 -0.689 3.572 6.000 8.000
## 4 3.000 6.880 7.000 10.000 -0.324 2.484 6.000 8.000
## 5 5.000 7.320 7.000 10.000 -0.007 2.136 6.000 8.000
## 6 3.000 7.020 7.000 10.000 -0.610 3.541 6.000 8.000
## 7 4.000 7.220 7.000 10.000 -0.140 2.271 6.000 8.000
## 8 4.000 7.380 7.500 9.000 -0.701 3.506 7.000 8.000
## 9 3.000 6.860 7.000 9.000 -0.397 2.238 5.250 8.000
## 10 4.000 7.300 7.500 10.000 -0.457 2.681 6.000 8.000
## 11 4.000 7.240 7.000 10.000 -0.254 2.155 6.000 9.000
## 12 5.000 7.340 7.000 9.000 -0.302 2.365 7.000 8.000
##################################
# Identifying potential data quality issues
##################################
##################################
# Checking for missing observations
##################################
if ((nrow(DQA.Summary[DQA.Summary$NA.Count>0,]))>0){
print(paste0("Missing observations noted for ",
nrow(DQA.Summary[DQA.Summary$NA.Count>0,])),
(" variable(s) with NA.Count>0 and Fill.Rate<1.0."))
$NA.Count>0,]
DQA.Summary[DQA.Summaryelse {
} print("No missing observations noted.")
}
## [1] "No missing observations noted."
##################################
# Checking for zero or near-zero variance Descriptors
##################################
if (length(names(DQA.Descriptors.Factor))==0) {
print("No factor descriptors noted.")
else if (nrow(DQA.Descriptors.Factor.Summary[as.numeric(as.character(DQA.Descriptors.Factor.Summary$First.Second.Mode.Ratio))>5,])>0){
} print(paste0("Low variance observed for ",
nrow(DQA.Descriptors.Factor.Summary[as.numeric(as.character(DQA.Descriptors.Factor.Summary$First.Second.Mode.Ratio))>5,])),
(" factor variable(s) with First.Second.Mode.Ratio>5."))
as.numeric(as.character(DQA.Descriptors.Factor.Summary$First.Second.Mode.Ratio))>5,]
DQA.Descriptors.Factor.Summary[else {
} print("No low variance factor descriptors due to high first-second mode ratio noted.")
}
## [1] "No factor descriptors noted."
if (length(names(DQA.Descriptors.Numeric))==0) {
print("No numeric descriptors noted.")
else if (nrow(DQA.Descriptors.Numeric.Summary[as.numeric(as.character(DQA.Descriptors.Numeric.Summary$First.Second.Mode.Ratio))>5,])>0){
} print(paste0("Low variance observed for ",
nrow(DQA.Descriptors.Numeric.Summary[as.numeric(as.character(DQA.Descriptors.Numeric.Summary$First.Second.Mode.Ratio))>5,])),
(" numeric variable(s) with First.Second.Mode.Ratio>5."))
as.numeric(as.character(DQA.Descriptors.Numeric.Summary$First.Second.Mode.Ratio))>5,]
DQA.Descriptors.Numeric.Summary[else {
} print("No low variance numeric descriptors due to high first-second mode ratio noted.")
}
## [1] "No low variance numeric descriptors due to high first-second mode ratio noted."
if (length(names(DQA.Descriptors.Numeric))==0) {
print("No numeric descriptors noted.")
else if (nrow(DQA.Descriptors.Numeric.Summary[as.numeric(as.character(DQA.Descriptors.Numeric.Summary$Unique.Count.Ratio))<0.01,])>0){
} print(paste0("Low variance observed for ",
nrow(DQA.Descriptors.Numeric.Summary[as.numeric(as.character(DQA.Descriptors.Numeric.Summary$Unique.Count.Ratio))<0.01,])),
(" numeric variable(s) with Unique.Count.Ratio<0.01."))
as.numeric(as.character(DQA.Descriptors.Numeric.Summary$Unique.Count.Ratio))<0.01,]
DQA.Descriptors.Numeric.Summary[else {
} print("No low variance numeric descriptors due to low unique count ratio noted.")
}
## [1] "No low variance numeric descriptors due to low unique count ratio noted."
##################################
# Checking for skewed Descriptors
##################################
if (length(names(DQA.Descriptors.Numeric))==0) {
print("No numeric descriptors noted.")
else if (nrow(DQA.Descriptors.Numeric.Summary[as.numeric(as.character(DQA.Descriptors.Numeric.Summary$Skewness))>3 |
} as.numeric(as.character(DQA.Descriptors.Numeric.Summary$Skewness))<(-3),])>0){
print(paste0("High skewness observed for ",
nrow(DQA.Descriptors.Numeric.Summary[as.numeric(as.character(DQA.Descriptors.Numeric.Summary$Skewness))>3 |
(as.numeric(as.character(DQA.Descriptors.Numeric.Summary$Skewness))<(-3),])),
" numeric variable(s) with Skewness>3 or Skewness<(-3)."))
as.numeric(as.character(DQA.Descriptors.Numeric.Summary$Skewness))>3 |
DQA.Descriptors.Numeric.Summary[as.numeric(as.character(DQA.Descriptors.Numeric.Summary$Skewness))<(-3),]
else {
} print("No skewed numeric descriptors noted.")
}
## [1] "No skewed numeric descriptors noted."
##################################
# Loading dataset
##################################
<- JobHiring
DPA
##################################
# Gathering descriptive statistics
##################################
<- skim(DPA)) (DPA_Skimmed
Name | DPA |
Number of rows | 50 |
Number of columns | 12 |
_______________________ | |
Column type frequency: | |
numeric | 12 |
________________________ | |
Group variables | None |
Variable type: numeric
skim_variable | n_missing | complete_rate | mean | sd | p0 | p25 | p50 | p75 | p100 | hist |
---|---|---|---|---|---|---|---|---|---|---|
ACAD | 0 | 1 | 7.40 | 1.29 | 4 | 6.25 | 7.0 | 8 | 10 | ▁▆▇▇▆ |
APPR | 0 | 1 | 7.44 | 1.01 | 5 | 7.00 | 7.5 | 8 | 10 | ▃▇▇▂▁ |
COMM | 0 | 1 | 6.86 | 1.47 | 3 | 6.00 | 7.0 | 8 | 10 | ▁▁▇▅▁ |
CFIT | 0 | 1 | 6.88 | 1.62 | 3 | 6.00 | 7.0 | 8 | 10 | ▂▃▇▇▃ |
EXPR | 0 | 1 | 7.32 | 1.36 | 5 | 6.00 | 7.0 | 8 | 10 | ▇▆▆▅▁ |
JFIT | 0 | 1 | 7.02 | 1.60 | 3 | 6.00 | 7.0 | 8 | 10 | ▁▁▇▃▂ |
LETT | 0 | 1 | 7.22 | 1.67 | 4 | 6.00 | 7.0 | 8 | 10 | ▆▅▇▇▇ |
LIKE | 0 | 1 | 7.38 | 1.12 | 4 | 7.00 | 7.5 | 8 | 9 | ▁▂▇▇▃ |
ORGN | 0 | 1 | 6.86 | 1.58 | 3 | 5.25 | 7.0 | 8 | 9 | ▁▃▂▅▇ |
POTL | 0 | 1 | 7.30 | 1.39 | 4 | 6.00 | 7.5 | 8 | 10 | ▂▅▆▇▅ |
RESM | 0 | 1 | 7.24 | 1.68 | 4 | 6.00 | 7.0 | 9 | 10 | ▃▆▅▅▇ |
SCON | 0 | 1 | 7.34 | 1.17 | 5 | 7.00 | 7.0 | 8 | 9 | ▂▃▇▇▅ |
##################################
# Outlier Detection
##################################
##################################
# Listing all Descriptors
##################################
<- DPA
DPA.Descriptors
##################################
# Listing all numeric Descriptors
##################################
<- DPA.Descriptors[,sapply(DPA.Descriptors, is.numeric)]
DPA.Descriptors.Numeric
##################################
# Identifying outliers for the numeric Descriptors
##################################
<- c()
OutlierCountList
for (i in 1:ncol(DPA.Descriptors.Numeric)) {
<- boxplot.stats(DPA.Descriptors.Numeric[,i])$out
Outliers <- length(Outliers)
OutlierCount <- append(OutlierCountList,OutlierCount)
OutlierCountList <- which(DPA.Descriptors.Numeric[,i] %in% c(Outliers))
OutlierIndices print(
ggplot(DPA.Descriptors.Numeric, aes(x=DPA.Descriptors.Numeric[,i])) +
geom_boxplot() +
theme_bw() +
theme(axis.text.y=element_blank(),
axis.ticks.y=element_blank()) +
xlab(names(DPA.Descriptors.Numeric)[i]) +
labs(title=names(DPA.Descriptors.Numeric)[i],
subtitle=paste0(OutlierCount, " Outlier(s) Detected")))
}
##################################
# Zero and Near-Zero Variance
##################################
##################################
# Identifying columns with low variance
###################################
<- nearZeroVar(DPA,
DPA_LowVariance freqCut = 80/20,
uniqueCut = 10,
saveMetrics= TRUE)
$nzv,]) (DPA_LowVariance[DPA_LowVariance
## [1] freqRatio percentUnique zeroVar nzv
## <0 rows> (or 0-length row.names)
if ((nrow(DPA_LowVariance[DPA_LowVariance$nzv,]))==0){
print("No low variance descriptors noted.")
else {
}
print(paste0("Low variance observed for ",
nrow(DPA_LowVariance[DPA_LowVariance$nzv,])),
(" numeric variable(s) with First.Second.Mode.Ratio>4 and Unique.Count.Ratio<0.10."))
<- (nrow(DPA_LowVariance[DPA_LowVariance$nzv,]))
DPA_LowVarianceForRemoval
print(paste0("Low variance can be resolved by removing ",
nrow(DPA_LowVariance[DPA_LowVariance$nzv,])),
(" numeric variable(s)."))
for (j in 1:DPA_LowVarianceForRemoval) {
<- rownames(DPA_LowVariance[DPA_LowVariance$nzv,])[j]
DPA_LowVarianceRemovedVariable print(paste0("Variable ",
j," for removal: ",
DPA_LowVarianceRemovedVariable))
}
%>%
DPA skim() %>%
::filter(skim_variable %in% rownames(DPA_LowVariance[DPA_LowVariance$nzv,]))
dplyr
}
## [1] "No low variance descriptors noted."
##################################
# Visualizing pairwise correlation between descriptor
##################################
<- cor(DPA.Descriptors.Numeric,
(DPA_Correlation method = "pearson",
use="pairwise.complete.obs"))
## ACAD APPR COMM CFIT EXPR JFIT LETT
## ACAD 1.0000000 0.4701427 0.4054067 0.4992183 0.6672390 0.5393435 0.3269457
## APPR 0.4701427 1.0000000 0.4939720 0.4170806 0.3099465 0.4105762 0.3034917
## COMM 0.4054067 0.4939720 1.0000000 0.5907387 0.1960094 0.5050808 0.4033781
## CFIT 0.4992183 0.4170806 0.5907387 1.0000000 0.3959678 0.8820580 0.4539438
## EXPR 0.6672390 0.3099465 0.1960094 0.3959678 1.0000000 0.5224501 0.4800248
## JFIT 0.5393435 0.4105762 0.5050808 0.8820580 0.5224501 1.0000000 0.4652077
## LETT 0.3269457 0.3034917 0.4033781 0.4539438 0.4800248 0.4652077 1.0000000
## LIKE 0.3990134 0.6392098 0.4900438 0.4842812 0.3058838 0.5305521 0.3572902
## ORGN 0.3578991 0.5370193 0.8617976 0.6223051 0.1732109 0.5274873 0.3372713
## POTL 0.7951979 0.5133541 0.4206029 0.6586426 0.7035542 0.7057635 0.3846555
## RESM 0.4606419 0.4986309 0.4255336 0.4432190 0.5172440 0.4607897 0.8368872
## SCON 0.4067717 0.6967065 0.4309427 0.4616973 0.4037882 0.4654267 0.2323177
## LIKE ORGN POTL RESM SCON
## ACAD 0.3990134 0.3578991 0.7951979 0.4606419 0.4067717
## APPR 0.6392098 0.5370193 0.5133541 0.4986309 0.6967065
## COMM 0.4900438 0.8617976 0.4206029 0.4255336 0.4309427
## CFIT 0.4842812 0.6223051 0.6586426 0.4432190 0.4616973
## EXPR 0.3058838 0.1732109 0.7035542 0.5172440 0.4037882
## JFIT 0.5305521 0.5274873 0.7057635 0.4607897 0.4654267
## LETT 0.3572902 0.3372713 0.3846555 0.8368872 0.2323177
## LIKE 1.0000000 0.5258919 0.4881676 0.4685663 0.7532282
## ORGN 0.5258919 1.0000000 0.4199960 0.2968767 0.4900298
## POTL 0.4881676 0.4199960 1.0000000 0.4570046 0.5006195
## RESM 0.4685663 0.2968767 0.4570046 1.0000000 0.4334882
## SCON 0.7532282 0.4900298 0.5006195 0.4334882 1.0000000
<- cor.mtest(DPA.Descriptors.Numeric,
DPA_CorrelationTest method = "pearson",
conf.level = 0.95)
corrplot(cor(DPA.Descriptors.Numeric,
method = "pearson",
use="pairwise.complete.obs"),
method = "circle",
type = "upper",
order = "original",
tl.col = "black",
tl.cex = 0.75,
tl.srt = 90,
sig.level = 0.05,
p.mat = DPA_CorrelationTest$p,
insig = "blank")
corrplot(cor(DPA.Descriptors.Numeric,
method = "pearson",
use="pairwise.complete.obs"),
method = "number",
type = "upper",
order = "original",
tl.col = "black",
tl.cex = 0.75,
tl.srt = 90,
sig.level = 0.05,
p.mat = DPA_CorrelationTest$p,
insig = "blank")
##################################
# Identifying the highly correlated variables
##################################
<- sum(abs(DPA_Correlation[upper.tri(DPA_Correlation)])>0.90)) (DPA_HighlyCorrelatedCount
## [1] 0
if (DPA_HighlyCorrelatedCount > 0) {
<- findCorrelation(DPA_Correlation, cutoff = 0.90)
DPA_HighlyCorrelated
<- length(DPA_HighlyCorrelated))
(DPA_HighlyCorrelatedForRemoval
print(paste0("High correlation can be resolved by removing ",
(DPA_HighlyCorrelatedForRemoval)," numeric variable(s)."))
for (j in 1:DPA_HighlyCorrelatedForRemoval) {
<- colnames(DPA.Descriptors.Numeric)[DPA_HighlyCorrelated[j]]
DPA_HighlyCorrelatedRemovedVariable print(paste0("Variable ",
j," for removal: ",
DPA_HighlyCorrelatedRemovedVariable))
}
}
##################################
# Linear Dependencies
##################################
##################################
# Finding linear dependencies
##################################
<- findLinearCombos(DPA.Descriptors.Numeric)
DPA_LinearlyDependent
##################################
# Identifying the linearly dependent variables
##################################
<- findLinearCombos(DPA.Descriptors.Numeric)
DPA_LinearlyDependent
<- length(DPA_LinearlyDependent$linearCombos)) (DPA_LinearlyDependentCount
## [1] 0
if (DPA_LinearlyDependentCount == 0) {
print("No linearly dependent predictors noted.")
else {
} print(paste0("Linear dependency observed for ",
(DPA_LinearlyDependentCount)," subset(s) of numeric variable(s)."))
for (i in 1:DPA_LinearlyDependentCount) {
<- colnames(DPA.Descriptors.Numeric)[DPA_LinearlyDependent$linearCombos[[i]]]
DPA_LinearlyDependentSubset print(paste0("Linear dependent variable(s) for subset ",
i," include: ",
DPA_LinearlyDependentSubset))
}
}
## [1] "No linearly dependent predictors noted."
##################################
# Identifying the linearly dependent variables for removal
##################################
if (DPA_LinearlyDependentCount > 0) {
<- findLinearCombos(DPA.Descriptors.Numeric)
DPA_LinearlyDependent
<- length(DPA_LinearlyDependent$remove)
DPA_LinearlyDependentForRemoval
print(paste0("Linear dependency can be resolved by removing ",
(DPA_LinearlyDependentForRemoval)," numeric variable(s)."))
for (j in 1:DPA_LinearlyDependentForRemoval) {
<- colnames(DPA.Descriptors.Numeric)[DPA_LinearlyDependent$remove[j]]
DPA_LinearlyDependentRemovedVariable print(paste0("Variable ",
j," for removal: ",
DPA_LinearlyDependentRemovedVariable))
}
}
##################################
# Distributional Shape
##################################
##################################
# Formulating the histogram
# for the numeric descriptors
##################################
for (i in 1:ncol(DPA.Descriptors.Numeric)) {
<- format(round(median(DPA.Descriptors.Numeric[,i],na.rm = TRUE),2), nsmall=2)
Median <- format(round(mean(DPA.Descriptors.Numeric[,i],na.rm = TRUE),2), nsmall=2)
Mean <- format(round(skewness(DPA.Descriptors.Numeric[,i],na.rm = TRUE),2), nsmall=2)
Skewness print(
ggplot(DPA.Descriptors.Numeric, aes(x=DPA.Descriptors.Numeric[,i])) +
geom_histogram(binwidth=1,color="black", fill="white") +
geom_vline(aes(xintercept=mean(DPA.Descriptors.Numeric[,i])),
color="blue", size=1) +
geom_vline(aes(xintercept=median(DPA.Descriptors.Numeric[,i])),
color="red", size=1) +
theme_bw() +
ylab("Count") +
xlab(names(DPA.Descriptors.Numeric)[i]) +
labs(title=names(DPA.Descriptors.Numeric)[i],
subtitle=paste0("Median = ", Median,
", Mean = ", Mean,
", Skewness = ", Skewness)))
}
##################################
# Identifying the minimally correlated variables
##################################
<- sum(abs(DPA_Correlation[upper.tri(DPA_Correlation)])>0.30)) (DPA_MinimallyCorrelatedCount
## [1] 62
<- length(DPA.Descriptors.Numeric)*(length(DPA.Descriptors.Numeric)-1)/2) (DPA_AllPairs
## [1] 66
<- DPA_MinimallyCorrelatedCount/DPA_AllPairs) (DPA_MinimallyCorrelatedCountPercentage
## [1] 0.9393939
qgraph(cor(DPA.Descriptors.Numeric),
cut=0.30,
details=TRUE,
posCol="#2F75B5",
negCol="#FF5050",
labels=names(DPA.Descriptors.Numeric))
##################################
# Computing the determinant of the correlation matrix
##################################
<- det(cor(DPA.Descriptors.Numeric))) (DPA_CorrelationMatrixDeterminant
## [1] 2.258001e-05
##################################
# Calculating the Bartlett's Test of Sphericity
##################################
<- cortest.bartlett(DPA.Descriptors.Numeric,
(DPA_BartlettTest n=nrow(DPA.Descriptors.Numeric)))
## $chisq
## [1] 472.5147
##
## $p.value
## [1] 9.677847e-63
##
## $df
## [1] 66
##################################
# Calculating the Kaiser-Meyer-Olkin Factor Adequacy
##################################
<- KMO(DPA.Descriptors.Numeric)) (DPA_KMOFactorAdequacy
##
## ── Kaiser-Meyer-Olkin criterion (KMO) ──────────────────────────────────────────
##
## ✔ The overall KMO value for your data is middling.
## These data are probably suitable for factor analysis.
##
## Overall: 0.798
##
## For each variable:
## ACAD APPR COMM CFIT EXPR JFIT LETT LIKE ORGN POTL RESM SCON
## 0.847 0.876 0.790 0.809 0.782 0.827 0.676 0.851 0.740 0.883 0.712 0.777
##################################
# Percentage contribution
# among descriptors when treated
# as ordered categorical variables
##################################
<- gather(DPA.Descriptors.Numeric,
DPA.Descriptors.Ordered "ACAD",
"APPR",
"COMM",
"CFIT",
"EXPR",
"JFIT",
"LETT",
"LIKE",
"ORGN",
"POTL",
"RESM",
"SCON",
key="Likert_Variable",
value="Likert_Score")
$Likert_Variable <- as.factor(DPA.Descriptors.Ordered$Likert_Variable)
DPA.Descriptors.Ordered$Likert_Score <- factor(DPA.Descriptors.Ordered$Likert_Score, levels=c("1","2","3","4","5","6","7","8","9","10"))
DPA.Descriptors.Ordered
<- table(DPA.Descriptors.Ordered$Likert_Variable,
(DPA.Descriptors.OrderedTable $Likert_Score)) DPA.Descriptors.Ordered
##
## 1 2 3 4 5 6 7 8 9 10
## ACAD 0 0 0 1 1 11 14 12 9 2
## APPR 0 0 0 0 1 8 16 19 5 1
## CFIT 0 0 1 3 8 6 11 15 4 2
## COMM 0 0 2 2 3 10 15 14 3 1
## EXPR 0 0 0 0 5 10 12 12 9 2
## JFIT 0 0 3 0 3 11 13 12 6 2
## LETT 0 0 0 3 6 7 11 12 6 5
## LIKE 0 0 0 1 2 6 16 18 7 0
## ORGN 0 0 1 2 10 5 12 12 8 0
## POTL 0 0 0 2 3 9 11 15 9 1
## RESM 0 0 0 4 3 11 9 8 12 3
## SCON 0 0 0 0 4 7 16 14 9 0
<- as.data.frame(rbind(prop.table(DPA.Descriptors.OrderedTable,1)))
DPA.Descriptors.OrderedTableProportion $LikertVariables <- rownames(DPA.Descriptors.OrderedTableProportion)
DPA.Descriptors.OrderedTableProportion DPA.Descriptors.OrderedTableProportion
## 1 2 3 4 5 6 7 8 9 10 LikertVariables
## ACAD 0 0 0.00 0.02 0.02 0.22 0.28 0.24 0.18 0.04 ACAD
## APPR 0 0 0.00 0.00 0.02 0.16 0.32 0.38 0.10 0.02 APPR
## CFIT 0 0 0.02 0.06 0.16 0.12 0.22 0.30 0.08 0.04 CFIT
## COMM 0 0 0.04 0.04 0.06 0.20 0.30 0.28 0.06 0.02 COMM
## EXPR 0 0 0.00 0.00 0.10 0.20 0.24 0.24 0.18 0.04 EXPR
## JFIT 0 0 0.06 0.00 0.06 0.22 0.26 0.24 0.12 0.04 JFIT
## LETT 0 0 0.00 0.06 0.12 0.14 0.22 0.24 0.12 0.10 LETT
## LIKE 0 0 0.00 0.02 0.04 0.12 0.32 0.36 0.14 0.00 LIKE
## ORGN 0 0 0.02 0.04 0.20 0.10 0.24 0.24 0.16 0.00 ORGN
## POTL 0 0 0.00 0.04 0.06 0.18 0.22 0.30 0.18 0.02 POTL
## RESM 0 0 0.00 0.08 0.06 0.22 0.18 0.16 0.24 0.06 RESM
## SCON 0 0 0.00 0.00 0.08 0.14 0.32 0.28 0.18 0.00 SCON
likert(LikertVariables~.,
DPA.Descriptors.OrderedTableProportion, ReferenceZero=5.5,
ylab = "Likert Variables",
xlab = "Percentage Distribution of Likert Scale Scores",
main = list("Variables Characterizing Candidates During Job Hiring"),
auto.key = list(columns=10,
space="top",
reverse.rows=F))
##################################
# Pairwise association
# between descriptors when treated
# as quantitative variables
##################################
corrplot(cor(DPA.Descriptors.Numeric,
method = "pearson",
use="pairwise.complete.obs"),
method = "number",
type = "upper",
order = "original",
tl.col = "black",
tl.cex = 0.75,
tl.srt = 90,
sig.level = 0.05,
p.mat = DPA_CorrelationTest$p,
insig = "blank")
##################################
# Identifying the maximally correlated variables
##################################
<- findCorrelation(DPA_Correlation, cutoff = 0.80)
DPA_MaximallyCorrelated colnames(DPA.Descriptors.Numeric)[DPA_MaximallyCorrelated]
## [1] "JFIT" "RESM" "COMM"
##################################
# Formulating the pairwise scatterplots
# among descriptors
##################################
splom(~DPA.Descriptors.Numeric,
pch = 16,
cex = 1,
alpha = 0.45,
auto.key = list(points=TRUE,
space="top"),
main = "Exploratory Analysis Between Descriptors",
xlab = "Scatterplot Matrix of Descriptors")
##################################
# Implementing various procedures for determining
# factor retention based on
# the maximum consensus between methods
##################################
<- parameters::n_factors(DPA.Descriptors.Numeric,
(FA_PA_V_MethodAgreementProcedure algorithm = "pa",
rotation = "varimax"))
## # Method Agreement Procedure:
##
## The choice of 4 dimensions is supported by 5 (35.71%) methods out of 14 (Bentler, beta, Parallel analysis, Kaiser criterion, Scree (SE)).
as.data.frame(FA_PA_V_MethodAgreementProcedure)
## n_Factors Method Family
## 1 1 Acceleration factor Scree
## 2 1 Scree (R2) Scree_SE
## 3 2 Optimal coordinates Scree
## 4 3 CNG CNG
## 5 4 Bentler Bentler
## 6 4 beta Multiple_regression
## 7 4 Parallel analysis Scree
## 8 4 Kaiser criterion Scree
## 9 4 Scree (SE) Scree_SE
## 10 6 Bartlett Barlett
## 11 6 t Multiple_regression
## 12 6 p Multiple_regression
## 13 7 Anderson Barlett
## 14 7 Lawley Barlett
##################################
# Conducting exploratory factor analysis
# using Principal Axes extraction
# and Varimax rotation
# with 3 factors
##################################
<- fa(DPA.Descriptors.Numeric,
(FA_PA_V_3F nfactors = 3,
fm="pa",
rotate = "varimax",
residuals=TRUE,
SMC=TRUE,
n.obs=nrow(DPA.Descriptors.Numeric)))
## Factor Analysis using method = pa
## Call: fa(r = DPA.Descriptors.Numeric, nfactors = 3, n.obs = nrow(DPA.Descriptors.Numeric),
## rotate = "varimax", residuals = TRUE, SMC = TRUE, fm = "pa")
## Standardized loadings (pattern matrix) based upon correlation matrix
## PA1 PA2 PA3 h2 u2 com
## ACAD 0.28 0.74 0.16 0.65 0.35 1.4
## APPR 0.60 0.32 0.18 0.50 0.50 1.7
## COMM 0.79 0.10 0.22 0.69 0.31 1.2
## CFIT 0.60 0.46 0.22 0.61 0.39 2.2
## EXPR 0.05 0.76 0.34 0.69 0.31 1.4
## JFIT 0.52 0.56 0.24 0.64 0.36 2.4
## LETT 0.22 0.20 0.88 0.86 0.14 1.2
## LIKE 0.64 0.31 0.19 0.54 0.46 1.6
## ORGN 0.88 0.09 0.11 0.79 0.21 1.0
## POTL 0.36 0.85 0.14 0.87 0.13 1.4
## RESM 0.28 0.31 0.81 0.83 0.17 1.5
## SCON 0.60 0.37 0.11 0.51 0.49 1.8
##
## PA1 PA2 PA3
## SS loadings 3.49 2.85 1.84
## Proportion Var 0.29 0.24 0.15
## Cumulative Var 0.29 0.53 0.68
## Proportion Explained 0.43 0.35 0.22
## Cumulative Proportion 0.43 0.78 1.00
##
## Mean item complexity = 1.6
## Test of the hypothesis that 3 factors are sufficient.
##
## df null model = 66 with the objective function = 10.7 with Chi Square = 472.51
## df of the model are 33 and the objective function was 2.52
##
## The root mean square of the residuals (RMSR) is 0.07
## The df corrected root mean square of the residuals is 0.1
##
## The harmonic n.obs is 50 with the empirical chi square 35.54 with prob < 0.35
## The total n.obs was 50 with Likelihood Chi Square = 106.33 with prob < 1.2e-09
##
## Tucker Lewis Index of factoring reliability = 0.619
## RMSEA index = 0.21 and the 90 % confidence intervals are 0.168 0.259
## BIC = -22.76
## Fit based upon off diagonal values = 0.98
## Measures of factor score adequacy
## PA1 PA2 PA3
## Correlation of (regression) scores with factors 0.94 0.94 0.94
## Multiple R square of scores with factors 0.88 0.88 0.88
## Minimum correlation of possible factor scores 0.76 0.75 0.75
<- FA_PA_V_3F %>%
(FA_PA_V_3F_Summary model_parameters(sort = TRUE, threshold = "max"))
## # Rotated loadings from Factor Analysis (varimax-rotation)
##
## Variable | PA1 | PA2 | PA3 | Complexity | Uniqueness
## -------------------------------------------------------
## ORGN | 0.88 | | | 1.05 | 0.21
## COMM | 0.79 | | | 1.19 | 0.31
## LIKE | 0.64 | | | 1.65 | 0.46
## APPR | 0.60 | | | 1.72 | 0.50
## SCON | 0.60 | | | 1.76 | 0.49
## CFIT | 0.60 | | | 2.19 | 0.39
## POTL | | 0.85 | | 1.41 | 0.13
## EXPR | | 0.76 | | 1.40 | 0.31
## ACAD | | 0.74 | | 1.40 | 0.35
## JFIT | | 0.56 | | 2.35 | 0.36
## LETT | | | 0.88 | 1.23 | 0.14
## RESM | | | 0.81 | 1.54 | 0.17
##
## The 3 latent factors (varimax rotation) accounted for 68.18% of the total variance of the original data (PA1 = 29.08%, PA2 = 23.78%, PA3 = 15.33%).
summary(FA_PA_V_3F_Summary)
## # (Explained) Variance of Components
##
## Parameter | PA1 | PA2 | PA3
## -------------------------------------------------------
## Eigenvalues | 6.069 | 1.209 | 0.903
## Variance Explained | 0.291 | 0.238 | 0.153
## Variance Explained (Cumulative) | 0.291 | 0.529 | 0.682
## Variance Explained (Proportion) | 0.427 | 0.349 | 0.225
##################################
# Extracting the residuals
# from the Exploratory Factor Analysis
##################################
<- residuals(FA_PA_V_3F,
(FA_PA_V_3F_Residual diag=FALSE,
na.rm=TRUE))
## ACAD APPR COMM CFIT EXPR JFIT LETT LIKE ORGN POTL RESM
## ACAD NA
## APPR 0.03 NA
## COMM 0.07 -0.06 NA
## CFIT -0.04 -0.13 0.02 NA
## EXPR 0.04 -0.02 0.00 -0.06 NA
## JFIT -0.06 -0.12 -0.01 0.27 -0.01 NA
## LETT -0.02 -0.05 0.01 0.04 0.02 0.03 NA
## LIKE -0.04 0.12 -0.09 -0.08 -0.03 -0.02 -0.01 NA
## ORGN 0.03 -0.04 0.13 0.04 0.03 0.00 0.03 -0.08 NA
## POTL 0.04 0.00 0.02 0.03 -0.01 0.01 0.01 -0.03 0.01 NA
## RESM 0.02 0.09 -0.01 -0.05 -0.01 -0.05 0.00 0.04 -0.06 -0.02 NA
## SCON -0.06 0.20 -0.10 -0.09 0.05 -0.08 -0.07 0.24 -0.08 -0.05 0.06
## [1] NA
##################################
# Obtaining Fit Indices
##################################
<- FA_PA_V_3F$rms) (FA_PA_V_3F_RMS
## [1] 0.07338105
<- FA_PA_V_3F$TLI) (FA_PA_V_3F_TLI
## [1] 0.6191606
<- FA_PA_V_3F$BIC) (FA_PA_V_3F_BIC
## [1] -22.76274
<- max(abs(FA_PA_V_3F_Residual),na.rm=TRUE)) (FA_PA_V_3F_MaxResidual
## [1] 0.2668687
<- sum(FA_PA_V_3F_Residual>abs(0.05),na.rm=TRUE)) (FA_PA_V_3F_HighResidual
## [1] 18
<- length(DPA.Descriptors.Numeric)*(length(DPA.Descriptors.Numeric)-1)/2) (FA_PA_V_3F_TotalResidual
## [1] 66
<- FA_PA_V_3F_HighResidual/FA_PA_V_3F_TotalResidual) (FA_PA_V_3F_HighResidualRate
## [1] 0.2727273
##################################
# Graph the factor loading matrices
##################################
fa.diagram(FA_PA_V_3F,
sort=TRUE,
cut=0,
digits=3,
main="Principal Axes Factor Extraction + Varimax Rotation : 3 Factors",
cex=0.75)
##################################
# computing the internal consistency
# measure of reliability using the
# Cronbach's alpha coefficient
# for each factor
##################################
alpha(DPA.Descriptors.Numeric[,c("ORGN","COMM","LIKE","APPR","SCON","CFIT")])
##
## Reliability analysis
## Call: alpha(x = DPA.Descriptors.Numeric[, c("ORGN", "COMM", "LIKE",
## "APPR", "SCON", "CFIT")])
##
## raw_alpha std.alpha G6(smc) average_r S/N ase mean sd median_r
## 0.88 0.89 0.9 0.57 7.8 0.026 7.1 1.1 0.53
##
## 95% confidence boundaries
## lower alpha upper
## Feldt 0.82 0.88 0.92
## Duhachek 0.83 0.88 0.93
##
## Reliability if an item is dropped:
## raw_alpha std.alpha G6(smc) average_r S/N alpha se var.r med.r
## ORGN 0.84 0.86 0.85 0.55 6.0 0.036 0.014 0.49
## COMM 0.85 0.87 0.86 0.56 6.4 0.034 0.012 0.53
## LIKE 0.86 0.86 0.88 0.56 6.4 0.030 0.019 0.52
## APPR 0.86 0.87 0.89 0.57 6.7 0.030 0.019 0.51
## SCON 0.86 0.87 0.87 0.57 6.5 0.029 0.015 0.53
## CFIT 0.87 0.88 0.90 0.59 7.3 0.029 0.020 0.53
##
## Item statistics
## n raw.r std.r r.cor r.drop mean sd
## ORGN 50 0.87 0.84 0.84 0.78 6.9 1.6
## COMM 50 0.84 0.81 0.79 0.74 6.9 1.5
## LIKE 50 0.78 0.81 0.77 0.69 7.4 1.1
## APPR 50 0.75 0.79 0.73 0.67 7.4 1.0
## SCON 50 0.76 0.80 0.76 0.67 7.3 1.2
## CFIT 50 0.78 0.75 0.66 0.64 6.9 1.6
##
## Non missing response frequency for each item
## 3 4 5 6 7 8 9 10 miss
## ORGN 0.02 0.04 0.20 0.10 0.24 0.24 0.16 0.00 0
## COMM 0.04 0.04 0.06 0.20 0.30 0.28 0.06 0.02 0
## LIKE 0.00 0.02 0.04 0.12 0.32 0.36 0.14 0.00 0
## APPR 0.00 0.00 0.02 0.16 0.32 0.38 0.10 0.02 0
## SCON 0.00 0.00 0.08 0.14 0.32 0.28 0.18 0.00 0
## CFIT 0.02 0.06 0.16 0.12 0.22 0.30 0.08 0.04 0
alpha(DPA.Descriptors.Numeric[,c("POTL","EXPR","ACAD","JFIT")])
##
## Reliability analysis
## Call: alpha(x = DPA.Descriptors.Numeric[, c("POTL", "EXPR", "ACAD",
## "JFIT")])
##
## raw_alpha std.alpha G6(smc) average_r S/N ase mean sd median_r
## 0.88 0.88 0.87 0.66 7.6 0.028 7.3 1.2 0.69
##
## 95% confidence boundaries
## lower alpha upper
## Feldt 0.81 0.88 0.93
## Duhachek 0.82 0.88 0.93
##
## Reliability if an item is dropped:
## raw_alpha std.alpha G6(smc) average_r S/N alpha se var.r med.r
## POTL 0.79 0.80 0.74 0.58 4.1 0.051 0.0063 0.54
## EXPR 0.86 0.86 0.84 0.68 6.4 0.036 0.0169 0.71
## ACAD 0.84 0.84 0.80 0.64 5.4 0.040 0.0111 0.70
## JFIT 0.89 0.89 0.85 0.72 7.8 0.028 0.0043 0.70
##
## Item statistics
## n raw.r std.r r.cor r.drop mean sd
## POTL 50 0.93 0.93 0.92 0.87 7.3 1.4
## EXPR 50 0.83 0.84 0.75 0.71 7.3 1.4
## ACAD 50 0.86 0.87 0.83 0.76 7.4 1.3
## JFIT 50 0.82 0.80 0.71 0.65 7.0 1.6
##
## Non missing response frequency for each item
## 3 4 5 6 7 8 9 10 miss
## POTL 0.00 0.04 0.06 0.18 0.22 0.30 0.18 0.02 0
## EXPR 0.00 0.00 0.10 0.20 0.24 0.24 0.18 0.04 0
## ACAD 0.00 0.02 0.02 0.22 0.28 0.24 0.18 0.04 0
## JFIT 0.06 0.00 0.06 0.22 0.26 0.24 0.12 0.04 0
alpha(DPA.Descriptors.Numeric[,c("LETT","RESM")])
##
## Reliability analysis
## Call: alpha(x = DPA.Descriptors.Numeric[, c("LETT", "RESM")])
##
## raw_alpha std.alpha G6(smc) average_r S/N ase mean sd median_r
## 0.91 0.91 0.84 0.84 10 0.025 7.2 1.6 0.84
##
## 95% confidence boundaries
## lower alpha upper
## Feldt 0.84 0.91 0.95
## Duhachek 0.86 0.91 0.96
##
## Reliability if an item is dropped:
## raw_alpha std.alpha G6(smc) average_r S/N alpha se var.r med.r
## LETT 0.83 0.84 0.7 0.84 5.1 NA 0 0.84
## RESM 0.84 0.84 0.7 0.84 5.1 NA 0 0.84
##
## Item statistics
## n raw.r std.r r.cor r.drop mean sd
## LETT 50 0.96 0.96 0.88 0.84 7.2 1.7
## RESM 50 0.96 0.96 0.88 0.84 7.2 1.7
##
## Non missing response frequency for each item
## 4 5 6 7 8 9 10 miss
## LETT 0.06 0.12 0.14 0.22 0.24 0.12 0.10 0
## RESM 0.08 0.06 0.22 0.18 0.16 0.24 0.06 0
##################################
# Formulating the dandelion plot to
# visualize both factor variances and loadings
# from the factor loading matrices
##################################
<- factload(DPA.Descriptors.Numeric,
FA_PA_V_3F_FactorLoading cormeth = "pearson",
method = "prax",
nfac = 3,
rotation = "varimax")
<- rev(rainbow(100, start = 0, end = 0.2))
DandelionPlotPalette
dandelion(FA_PA_V_3F_FactorLoading,
bound=0,
mcex=c(1,1.2),
palet=DandelionPlotPalette)
##################################
# Conducting exploratory factor analysis
# using Principal Axes extraction
# and Varimax rotation
# with 4 factors
##################################
<- fa(DPA.Descriptors.Numeric,
(FA_PA_V_4F nfactors = 4,
fm="pa",
rotate = "varimax",
residuals=TRUE,
SMC=TRUE,
n.obs=nrow(DPA.Descriptors.Numeric)))
## Factor Analysis using method = pa
## Call: fa(r = DPA.Descriptors.Numeric, nfactors = 4, n.obs = nrow(DPA.Descriptors.Numeric),
## rotate = "varimax", residuals = TRUE, SMC = TRUE, fm = "pa")
## Standardized loadings (pattern matrix) based upon correlation matrix
## PA1 PA2 PA4 PA3 h2 u2 com
## ACAD 0.71 0.18 0.27 0.16 0.64 0.36 1.5
## APPR 0.23 0.27 0.70 0.17 0.65 0.35 1.7
## COMM 0.12 0.76 0.31 0.21 0.73 0.27 1.5
## CFIT 0.52 0.65 0.15 0.19 0.76 0.24 2.2
## EXPR 0.73 -0.03 0.18 0.33 0.68 0.32 1.5
## JFIT 0.61 0.53 0.17 0.21 0.73 0.27 2.4
## LETT 0.23 0.25 0.06 0.88 0.89 0.11 1.3
## LIKE 0.23 0.32 0.69 0.19 0.66 0.34 1.8
## ORGN 0.09 0.84 0.36 0.09 0.86 0.14 1.4
## POTL 0.85 0.26 0.29 0.12 0.89 0.11 1.5
## RESM 0.28 0.13 0.33 0.83 0.88 0.12 1.6
## SCON 0.27 0.21 0.82 0.09 0.79 0.21 1.4
##
## PA1 PA2 PA4 PA3
## SS loadings 2.75 2.39 2.21 1.80
## Proportion Var 0.23 0.20 0.18 0.15
## Cumulative Var 0.23 0.43 0.61 0.76
## Proportion Explained 0.30 0.26 0.24 0.20
## Cumulative Proportion 0.30 0.56 0.80 1.00
##
## Mean item complexity = 1.7
## Test of the hypothesis that 4 factors are sufficient.
##
## df null model = 66 with the objective function = 10.7 with Chi Square = 472.51
## df of the model are 24 and the objective function was 1.47
##
## The root mean square of the residuals (RMSR) is 0.04
## The df corrected root mean square of the residuals is 0.06
##
## The harmonic n.obs is 50 with the empirical chi square 9.84 with prob < 1
## The total n.obs was 50 with Likelihood Chi Square = 60.87 with prob < 4.8e-05
##
## Tucker Lewis Index of factoring reliability = 0.732
## RMSEA index = 0.174 and the 90 % confidence intervals are 0.122 0.233
## BIC = -33.02
## Fit based upon off diagonal values = 0.99
## Measures of factor score adequacy
## PA1 PA2 PA4 PA3
## Correlation of (regression) scores with factors 0.94 0.93 0.91 0.95
## Multiple R square of scores with factors 0.89 0.87 0.82 0.91
## Minimum correlation of possible factor scores 0.78 0.74 0.65 0.82
<- FA_PA_V_4F %>%
(FA_PA_V_4F_Summary model_parameters(sort = TRUE, threshold = "max"))
## # Rotated loadings from Factor Analysis (varimax-rotation)
##
## Variable | PA1 | PA2 | PA4 | PA3 | Complexity | Uniqueness
## --------------------------------------------------------------
## POTL | 0.85 | | | | 1.46 | 0.11
## EXPR | 0.73 | | | | 1.53 | 0.32
## ACAD | 0.71 | | | | 1.53 | 0.36
## JFIT | 0.61 | | | | 2.38 | 0.27
## ORGN | | 0.84 | | | 1.41 | 0.14
## COMM | | 0.76 | | | 1.55 | 0.27
## CFIT | | 0.65 | | | 2.22 | 0.24
## SCON | | | 0.82 | | 1.39 | 0.21
## APPR | | | 0.70 | | 1.67 | 0.35
## LIKE | | | 0.69 | | 1.84 | 0.34
## LETT | | | | 0.88 | 1.31 | 0.11
## RESM | | | | 0.83 | 1.62 | 0.12
##
## The 4 latent factors (varimax rotation) accounted for 76.28% of the total variance of the original data (PA1 = 22.93%, PA2 = 19.92%, PA4 = 18.41%, PA3 = 15.03%).
summary(FA_PA_V_4F_Summary)
## # (Explained) Variance of Components
##
## Parameter | PA1 | PA2 | PA4 | PA3
## ---------------------------------------------------------------
## Eigenvalues | 6.152 | 1.259 | 0.943 | 0.800
## Variance Explained | 0.229 | 0.199 | 0.184 | 0.150
## Variance Explained (Cumulative) | 0.229 | 0.429 | 0.613 | 0.763
## Variance Explained (Proportion) | 0.301 | 0.261 | 0.241 | 0.197
##################################
# Extracting the residuals
# from the Exploratory Factor Analysis
##################################
<- residuals(FA_PA_V_4F,
(FA_PA_V_4F_Residual diag=FALSE,
na.rm=TRUE))
## ACAD APPR COMM CFIT EXPR JFIT LETT LIKE ORGN POTL RESM
## ACAD NA
## APPR 0.04 NA
## COMM 0.07 0.01 NA
## CFIT -0.06 -0.02 -0.05 NA
## EXPR 0.05 -0.03 0.01 -0.05 NA
## JFIT -0.07 -0.03 -0.07 0.15 -0.01 NA
## LETT -0.03 -0.01 -0.01 0.00 0.02 0.00 NA
## LIKE -0.03 -0.02 -0.03 0.02 -0.03 0.07 0.02 NA
## ORGN 0.03 0.02 0.08 -0.05 0.04 -0.06 0.01 -0.03 NA
## POTL 0.05 0.03 0.01 -0.02 0.00 -0.03 0.01 -0.01 0.01 NA
## RESM 0.02 0.03 0.02 0.01 -0.01 -0.01 0.00 -0.01 -0.03 -0.01 NA
## SCON -0.06 -0.01 -0.03 0.04 0.04 0.03 -0.01 0.05 -0.01 -0.03 -0.01
## [1] NA
##################################
# Obtaining Fit Indices
##################################
<- FA_PA_V_4F$rms) (FA_PA_V_4F_RMS
## [1] 0.03861068
<- FA_PA_V_4F$TLI) (FA_PA_V_4F_TLI
## [1] 0.7317578
<- FA_PA_V_4F$BIC) (FA_PA_V_4F_BIC
## [1] -33.01886
<- max(abs(FA_PA_V_4F_Residual),na.rm=TRUE)) (FA_PA_V_4F_MaxResidual
## [1] 0.1504566
<- sum(FA_PA_V_4F_Residual>abs(0.05),na.rm=TRUE)) (FA_PA_V_4F_HighResidual
## [1] 10
<- length(DPA.Descriptors.Numeric)*(length(DPA.Descriptors.Numeric)-1)/2) (FA_PA_V_4F_TotalResidual
## [1] 66
<- FA_PA_V_4F_HighResidual/FA_PA_V_4F_TotalResidual) (FA_PA_V_4F_HighResidualRate
## [1] 0.1515152
##################################
# Graph the factor loading matrices
##################################
fa.diagram(FA_PA_V_4F,
sort=TRUE,
cut=0,
digits=3,
main="Principal Axes Factor Extraction + Varimax Rotation : 4 Factors",
cex=0.75)
##################################
# computing the internal consistency
# measure of reliability using the
# Cronbach's alpha coefficient
# for each factor
##################################
alpha(DPA.Descriptors.Numeric[,c("POTL","EXPR","ACAD","JFIT")])
##
## Reliability analysis
## Call: alpha(x = DPA.Descriptors.Numeric[, c("POTL", "EXPR", "ACAD",
## "JFIT")])
##
## raw_alpha std.alpha G6(smc) average_r S/N ase mean sd median_r
## 0.88 0.88 0.87 0.66 7.6 0.028 7.3 1.2 0.69
##
## 95% confidence boundaries
## lower alpha upper
## Feldt 0.81 0.88 0.93
## Duhachek 0.82 0.88 0.93
##
## Reliability if an item is dropped:
## raw_alpha std.alpha G6(smc) average_r S/N alpha se var.r med.r
## POTL 0.79 0.80 0.74 0.58 4.1 0.051 0.0063 0.54
## EXPR 0.86 0.86 0.84 0.68 6.4 0.036 0.0169 0.71
## ACAD 0.84 0.84 0.80 0.64 5.4 0.040 0.0111 0.70
## JFIT 0.89 0.89 0.85 0.72 7.8 0.028 0.0043 0.70
##
## Item statistics
## n raw.r std.r r.cor r.drop mean sd
## POTL 50 0.93 0.93 0.92 0.87 7.3 1.4
## EXPR 50 0.83 0.84 0.75 0.71 7.3 1.4
## ACAD 50 0.86 0.87 0.83 0.76 7.4 1.3
## JFIT 50 0.82 0.80 0.71 0.65 7.0 1.6
##
## Non missing response frequency for each item
## 3 4 5 6 7 8 9 10 miss
## POTL 0.00 0.04 0.06 0.18 0.22 0.30 0.18 0.02 0
## EXPR 0.00 0.00 0.10 0.20 0.24 0.24 0.18 0.04 0
## ACAD 0.00 0.02 0.02 0.22 0.28 0.24 0.18 0.04 0
## JFIT 0.06 0.00 0.06 0.22 0.26 0.24 0.12 0.04 0
alpha(DPA.Descriptors.Numeric[,c("ORGN","COMM","CFIT")])
##
## Reliability analysis
## Call: alpha(x = DPA.Descriptors.Numeric[, c("ORGN", "COMM", "CFIT")])
##
## raw_alpha std.alpha G6(smc) average_r S/N ase mean sd median_r
## 0.87 0.87 0.85 0.69 6.7 0.034 6.9 1.4 0.62
##
## 95% confidence boundaries
## lower alpha upper
## Feldt 0.79 0.87 0.92
## Duhachek 0.80 0.87 0.93
##
## Reliability if an item is dropped:
## raw_alpha std.alpha G6(smc) average_r S/N alpha se var.r med.r
## ORGN 0.74 0.74 0.59 0.59 2.9 0.073 NA 0.59
## COMM 0.77 0.77 0.62 0.62 3.3 0.066 NA 0.62
## CFIT 0.92 0.93 0.86 0.86 12.5 0.021 NA 0.86
##
## Item statistics
## n raw.r std.r r.cor r.drop mean sd
## ORGN 50 0.93 0.93 0.91 0.83 6.9 1.6
## COMM 50 0.91 0.92 0.89 0.80 6.9 1.5
## CFIT 50 0.84 0.83 0.65 0.63 6.9 1.6
##
## Non missing response frequency for each item
## 3 4 5 6 7 8 9 10 miss
## ORGN 0.02 0.04 0.20 0.10 0.24 0.24 0.16 0.00 0
## COMM 0.04 0.04 0.06 0.20 0.30 0.28 0.06 0.02 0
## CFIT 0.02 0.06 0.16 0.12 0.22 0.30 0.08 0.04 0
alpha(DPA.Descriptors.Numeric[,c("SCON","APPR","LIKE")])
##
## Reliability analysis
## Call: alpha(x = DPA.Descriptors.Numeric[, c("SCON", "APPR", "LIKE")])
##
## raw_alpha std.alpha G6(smc) average_r S/N ase mean sd median_r
## 0.87 0.87 0.83 0.7 6.9 0.031 7.4 0.99 0.7
##
## 95% confidence boundaries
## lower alpha upper
## Feldt 0.80 0.87 0.92
## Duhachek 0.81 0.87 0.93
##
## Reliability if an item is dropped:
## raw_alpha std.alpha G6(smc) average_r S/N alpha se var.r med.r
## SCON 0.78 0.78 0.64 0.64 3.5 0.062 NA 0.64
## APPR 0.86 0.86 0.75 0.75 6.1 0.040 NA 0.75
## LIKE 0.82 0.82 0.70 0.70 4.6 0.051 NA 0.70
##
## Item statistics
## n raw.r std.r r.cor r.drop mean sd
## SCON 50 0.92 0.91 0.86 0.80 7.3 1.2
## APPR 50 0.86 0.87 0.76 0.71 7.4 1.0
## LIKE 50 0.90 0.89 0.82 0.76 7.4 1.1
##
## Non missing response frequency for each item
## 4 5 6 7 8 9 10 miss
## SCON 0.00 0.08 0.14 0.32 0.28 0.18 0.00 0
## APPR 0.00 0.02 0.16 0.32 0.38 0.10 0.02 0
## LIKE 0.02 0.04 0.12 0.32 0.36 0.14 0.00 0
alpha(DPA.Descriptors.Numeric[,c("LETT","RESM")])
##
## Reliability analysis
## Call: alpha(x = DPA.Descriptors.Numeric[, c("LETT", "RESM")])
##
## raw_alpha std.alpha G6(smc) average_r S/N ase mean sd median_r
## 0.91 0.91 0.84 0.84 10 0.025 7.2 1.6 0.84
##
## 95% confidence boundaries
## lower alpha upper
## Feldt 0.84 0.91 0.95
## Duhachek 0.86 0.91 0.96
##
## Reliability if an item is dropped:
## raw_alpha std.alpha G6(smc) average_r S/N alpha se var.r med.r
## LETT 0.83 0.84 0.7 0.84 5.1 NA 0 0.84
## RESM 0.84 0.84 0.7 0.84 5.1 NA 0 0.84
##
## Item statistics
## n raw.r std.r r.cor r.drop mean sd
## LETT 50 0.96 0.96 0.88 0.84 7.2 1.7
## RESM 50 0.96 0.96 0.88 0.84 7.2 1.7
##
## Non missing response frequency for each item
## 4 5 6 7 8 9 10 miss
## LETT 0.06 0.12 0.14 0.22 0.24 0.12 0.10 0
## RESM 0.08 0.06 0.22 0.18 0.16 0.24 0.06 0
##################################
# Formulating the dandelion plot to
# visualize both factor variances and loadings
# from the factor loading matrices
##################################
<- factload(DPA.Descriptors.Numeric,
FA_PA_V_4F_FactorLoading cormeth = "pearson",
method = "prax",
nfac = 4,
rotation = "varimax")
<- rev(rainbow(100, start = 0, end = 0.2))
DandelionPlotPalette
dandelion(FA_PA_V_4F_FactorLoading,
bound=0,
mcex=c(1,1.2),
palet=DandelionPlotPalette)
##################################
# Conducting exploratory factor analysis
# using Principal Axes extraction
# and Varimax rotation
# with 5 factors
##################################
<- fa(DPA.Descriptors.Numeric,
(FA_PA_V_5F nfactors = 5,
fm="pa",
rotate = "varimax",
residuals=TRUE,
SMC=TRUE,
n.obs=nrow(DPA.Descriptors.Numeric)))
## Factor Analysis using method = pa
## Call: fa(r = DPA.Descriptors.Numeric, nfactors = 5, n.obs = nrow(DPA.Descriptors.Numeric),
## rotate = "varimax", residuals = TRUE, SMC = TRUE, fm = "pa")
## Standardized loadings (pattern matrix) based upon correlation matrix
## PA5 PA4 PA2 PA3 PA1 h2 u2 com
## ACAD 0.82 0.21 0.21 0.14 0.14 0.79 0.208 1.4
## APPR 0.27 0.66 0.32 0.18 0.05 0.64 0.355 2.0
## COMM 0.14 0.25 0.83 0.21 0.19 0.86 0.143 1.5
## CFIT 0.29 0.21 0.38 0.20 0.74 0.86 0.144 2.2
## EXPR 0.70 0.17 -0.06 0.33 0.19 0.67 0.331 1.8
## JFIT 0.37 0.24 0.23 0.21 0.80 0.93 0.065 2.0
## LETT 0.17 0.07 0.18 0.89 0.21 0.89 0.105 1.3
## LIKE 0.16 0.72 0.25 0.19 0.24 0.69 0.306 1.8
## ORGN 0.09 0.32 0.83 0.08 0.26 0.89 0.115 1.6
## POTL 0.78 0.28 0.18 0.13 0.36 0.87 0.132 1.9
## RESM 0.28 0.31 0.13 0.82 0.10 0.87 0.127 1.6
## SCON 0.22 0.86 0.16 0.09 0.17 0.85 0.153 1.3
##
## PA5 PA4 PA2 PA3 PA1
## SS loadings 2.26 2.21 1.90 1.82 1.63
## Proportion Var 0.19 0.18 0.16 0.15 0.14
## Cumulative Var 0.19 0.37 0.53 0.68 0.82
## Proportion Explained 0.23 0.23 0.19 0.19 0.17
## Cumulative Proportion 0.23 0.46 0.65 0.83 1.00
##
## Mean item complexity = 1.7
## Test of the hypothesis that 5 factors are sufficient.
##
## df null model = 66 with the objective function = 10.7 with Chi Square = 472.51
## df of the model are 16 and the objective function was 0.47
##
## The root mean square of the residuals (RMSR) is 0.01
## The df corrected root mean square of the residuals is 0.03
##
## The harmonic n.obs is 50 with the empirical chi square 1.45 with prob < 1
## The total n.obs was 50 with Likelihood Chi Square = 19.16 with prob < 0.26
##
## Tucker Lewis Index of factoring reliability = 0.965
## RMSEA index = 0.06 and the 90 % confidence intervals are 0 0.153
## BIC = -43.43
## Fit based upon off diagonal values = 1
## Measures of factor score adequacy
## PA5 PA4 PA2 PA3 PA1
## Correlation of (regression) scores with factors 0.92 0.92 0.94 0.95 0.94
## Multiple R square of scores with factors 0.85 0.85 0.88 0.91 0.88
## Minimum correlation of possible factor scores 0.71 0.70 0.77 0.82 0.76
<- FA_PA_V_5F %>%
(FA_PA_V_5F_Summary model_parameters(sort = TRUE, threshold = "max"))
## # Rotated loadings from Factor Analysis (varimax-rotation)
##
## Variable | PA5 | PA4 | PA2 | PA3 | PA1 | Complexity | Uniqueness
## ---------------------------------------------------------------------
## ACAD | 0.82 | | | | | 1.41 | 0.21
## POTL | 0.78 | | | | | 1.92 | 0.13
## EXPR | 0.70 | | | | | 1.77 | 0.33
## SCON | | 0.86 | | | | 1.32 | 0.15
## LIKE | | 0.72 | | | | 1.75 | 0.31
## APPR | | 0.66 | | | | 1.99 | 0.36
## COMM | | | 0.83 | | | 1.49 | 0.14
## ORGN | | | 0.83 | | | 1.57 | 0.11
## LETT | | | | 0.89 | | 1.29 | 0.11
## RESM | | | | 0.82 | | 1.63 | 0.13
## JFIT | | | | | 0.80 | 1.97 | 0.07
## CFIT | | | | | 0.74 | 2.24 | 0.14
##
## The 5 latent factors (varimax rotation) accounted for 81.80% of the total variance of the original data (PA5 = 18.81%, PA4 = 18.44%, PA2 = 15.86%, PA3 = 15.15%, PA1 = 13.55%).
summary(FA_PA_V_5F_Summary)
## # (Explained) Variance of Components
##
## Parameter | PA5 | PA4 | PA2 | PA3 | PA1
## -----------------------------------------------------------------------
## Eigenvalues | 6.211 | 1.294 | 0.967 | 0.867 | 0.477
## Variance Explained | 0.188 | 0.184 | 0.159 | 0.152 | 0.135
## Variance Explained (Cumulative) | 0.188 | 0.372 | 0.531 | 0.683 | 0.818
## Variance Explained (Proportion) | 0.230 | 0.225 | 0.194 | 0.185 | 0.166
##################################
# Extracting the residuals
# from the Exploratory Factor Analysis
##################################
<- residuals(FA_PA_V_5F,
(FA_PA_V_5F_Residual diag=FALSE,
na.rm=TRUE))
## ACAD APPR COMM CFIT EXPR JFIT LETT LIKE ORGN POTL RESM
## ACAD NA
## APPR 0.01 NA
## COMM 0.01 -0.02 NA
## CFIT 0.01 0.00 0.00 NA
## EXPR 0.00 -0.04 0.00 -0.03 NA
## JFIT 0.00 0.00 0.00 0.00 0.01 NA
## LETT -0.02 -0.01 -0.01 0.00 0.02 -0.01 NA
## LIKE 0.01 0.00 0.00 -0.02 -0.02 0.02 0.02 NA
## ORGN -0.01 0.01 0.00 0.00 0.02 0.00 0.02 0.00 NA
## POTL -0.01 0.02 -0.01 0.01 0.01 -0.01 0.01 0.01 0.00 NA
## RESM 0.01 0.03 0.01 0.02 -0.02 0.00 0.00 -0.01 -0.03 -0.01 NA
## SCON -0.02 -0.01 0.01 0.01 0.05 -0.01 -0.01 0.01 0.01 -0.02 -0.01
## [1] NA
##################################
# Obtaining Fit Indices
##################################
<- FA_PA_V_5F$rms) (FA_PA_V_5F_RMS
## [1] 0.01483907
<- FA_PA_V_5F$TLI) (FA_PA_V_5F_TLI
## [1] 0.9648451
<- FA_PA_V_5F$BIC) (FA_PA_V_5F_BIC
## [1] -43.43181
<- max(abs(FA_PA_V_5F_Residual),na.rm=TRUE)) (FA_PA_V_5F_MaxResidual
## [1] 0.04835397
<- sum(FA_PA_V_5F_Residual>abs(0.05),na.rm=TRUE)) (FA_PA_V_5F_HighResidual
## [1] 0
<- length(DPA.Descriptors.Numeric)*(length(DPA.Descriptors.Numeric)-1)/2) (FA_PA_V_5F_TotalResidual
## [1] 66
<- FA_PA_V_5F_HighResidual/FA_PA_V_5F_TotalResidual) (FA_PA_V_5F_HighResidualRate
## [1] 0
##################################
# Graph the factor loading matrices
##################################
fa.diagram(FA_PA_V_5F,
sort=TRUE,
cut=0,
digits=3,
main="Principal Axes Factor Extraction + Varimax Rotation : 5 Factors",
cex=0.75)
##################################
# computing the internal consistency
# measure of reliability using the
# Cronbach's alpha coefficient
# for each factor
##################################
alpha(DPA.Descriptors.Numeric[,c("ACAD","POTL","EXPR")])
##
## Reliability analysis
## Call: alpha(x = DPA.Descriptors.Numeric[, c("ACAD", "POTL", "EXPR")])
##
## raw_alpha std.alpha G6(smc) average_r S/N ase mean sd median_r
## 0.89 0.89 0.85 0.72 7.8 0.028 7.3 1.2 0.7
##
## 95% confidence boundaries
## lower alpha upper
## Feldt 0.82 0.89 0.93
## Duhachek 0.83 0.89 0.94
##
## Reliability if an item is dropped:
## raw_alpha std.alpha G6(smc) average_r S/N alpha se var.r med.r
## ACAD 0.83 0.83 0.70 0.70 4.7 0.049 NA 0.70
## POTL 0.80 0.80 0.67 0.67 4.0 0.056 NA 0.67
## EXPR 0.88 0.89 0.80 0.80 7.8 0.032 NA 0.80
##
## Item statistics
## n raw.r std.r r.cor r.drop mean sd
## ACAD 50 0.91 0.91 0.85 0.79 7.4 1.3
## POTL 50 0.92 0.92 0.88 0.82 7.3 1.4
## EXPR 50 0.88 0.88 0.76 0.72 7.3 1.4
##
## Non missing response frequency for each item
## 4 5 6 7 8 9 10 miss
## ACAD 0.02 0.02 0.22 0.28 0.24 0.18 0.04 0
## POTL 0.04 0.06 0.18 0.22 0.30 0.18 0.02 0
## EXPR 0.00 0.10 0.20 0.24 0.24 0.18 0.04 0
alpha(DPA.Descriptors.Numeric[,c("SCON","LIKE","APPR")])
##
## Reliability analysis
## Call: alpha(x = DPA.Descriptors.Numeric[, c("SCON", "LIKE", "APPR")])
##
## raw_alpha std.alpha G6(smc) average_r S/N ase mean sd median_r
## 0.87 0.87 0.83 0.7 6.9 0.031 7.4 0.99 0.7
##
## 95% confidence boundaries
## lower alpha upper
## Feldt 0.80 0.87 0.92
## Duhachek 0.81 0.87 0.93
##
## Reliability if an item is dropped:
## raw_alpha std.alpha G6(smc) average_r S/N alpha se var.r med.r
## SCON 0.78 0.78 0.64 0.64 3.5 0.062 NA 0.64
## LIKE 0.82 0.82 0.70 0.70 4.6 0.051 NA 0.70
## APPR 0.86 0.86 0.75 0.75 6.1 0.040 NA 0.75
##
## Item statistics
## n raw.r std.r r.cor r.drop mean sd
## SCON 50 0.92 0.91 0.86 0.80 7.3 1.2
## LIKE 50 0.90 0.89 0.82 0.76 7.4 1.1
## APPR 50 0.86 0.87 0.76 0.71 7.4 1.0
##
## Non missing response frequency for each item
## 4 5 6 7 8 9 10 miss
## SCON 0.00 0.08 0.14 0.32 0.28 0.18 0.00 0
## LIKE 0.02 0.04 0.12 0.32 0.36 0.14 0.00 0
## APPR 0.00 0.02 0.16 0.32 0.38 0.10 0.02 0
alpha(DPA.Descriptors.Numeric[,c("COMM","ORGN")])
##
## Reliability analysis
## Call: alpha(x = DPA.Descriptors.Numeric[, c("COMM", "ORGN")])
##
## raw_alpha std.alpha G6(smc) average_r S/N ase mean sd median_r
## 0.92 0.93 0.86 0.86 12 0.021 6.9 1.5 0.86
##
## 95% confidence boundaries
## lower alpha upper
## Feldt 0.87 0.92 0.96
## Duhachek 0.88 0.92 0.97
##
## Reliability if an item is dropped:
## raw_alpha std.alpha G6(smc) average_r S/N alpha se var.r med.r
## COMM 0.80 0.86 0.74 0.86 6.2 NA 0 0.86
## ORGN 0.92 0.86 0.74 0.86 6.2 NA 0 0.86
##
## Item statistics
## n raw.r std.r r.cor r.drop mean sd
## COMM 50 0.96 0.96 0.9 0.86 6.9 1.5
## ORGN 50 0.97 0.96 0.9 0.86 6.9 1.6
##
## Non missing response frequency for each item
## 3 4 5 6 7 8 9 10 miss
## COMM 0.04 0.04 0.06 0.2 0.30 0.28 0.06 0.02 0
## ORGN 0.02 0.04 0.20 0.1 0.24 0.24 0.16 0.00 0
alpha(DPA.Descriptors.Numeric[,c("LETT","RESM")])
##
## Reliability analysis
## Call: alpha(x = DPA.Descriptors.Numeric[, c("LETT", "RESM")])
##
## raw_alpha std.alpha G6(smc) average_r S/N ase mean sd median_r
## 0.91 0.91 0.84 0.84 10 0.025 7.2 1.6 0.84
##
## 95% confidence boundaries
## lower alpha upper
## Feldt 0.84 0.91 0.95
## Duhachek 0.86 0.91 0.96
##
## Reliability if an item is dropped:
## raw_alpha std.alpha G6(smc) average_r S/N alpha se var.r med.r
## LETT 0.83 0.84 0.7 0.84 5.1 NA 0 0.84
## RESM 0.84 0.84 0.7 0.84 5.1 NA 0 0.84
##
## Item statistics
## n raw.r std.r r.cor r.drop mean sd
## LETT 50 0.96 0.96 0.88 0.84 7.2 1.7
## RESM 50 0.96 0.96 0.88 0.84 7.2 1.7
##
## Non missing response frequency for each item
## 4 5 6 7 8 9 10 miss
## LETT 0.06 0.12 0.14 0.22 0.24 0.12 0.10 0
## RESM 0.08 0.06 0.22 0.18 0.16 0.24 0.06 0
alpha(DPA.Descriptors.Numeric[,c("JFIT","CFIT")])
##
## Reliability analysis
## Call: alpha(x = DPA.Descriptors.Numeric[, c("JFIT", "CFIT")])
##
## raw_alpha std.alpha G6(smc) average_r S/N ase mean sd median_r
## 0.94 0.94 0.88 0.88 15 0.018 7 1.6 0.88
##
## 95% confidence boundaries
## lower alpha upper
## Feldt 0.89 0.94 0.96
## Duhachek 0.90 0.94 0.97
##
## Reliability if an item is dropped:
## raw_alpha std.alpha G6(smc) average_r S/N alpha se var.r med.r
## JFIT 0.87 0.88 0.78 0.88 7.5 NA 0 0.88
## CFIT 0.90 0.88 0.78 0.88 7.5 NA 0 0.88
##
## Item statistics
## n raw.r std.r r.cor r.drop mean sd
## JFIT 50 0.97 0.97 0.91 0.88 7.0 1.6
## CFIT 50 0.97 0.97 0.91 0.88 6.9 1.6
##
## Non missing response frequency for each item
## 3 4 5 6 7 8 9 10 miss
## JFIT 0.06 0.00 0.06 0.22 0.26 0.24 0.12 0.04 0
## CFIT 0.02 0.06 0.16 0.12 0.22 0.30 0.08 0.04 0
##################################
# Formulating the dandelion plot to
# visualize both factor variances and loadings
# from the factor loading matrices
##################################
<- factload(DPA.Descriptors.Numeric,
FA_PA_V_5F_FactorLoading cormeth = "pearson",
method = "prax",
nfac = 5,
rotation = "varimax")
<- rev(rainbow(100, start = 0, end = 0.2))
DandelionPlotPalette
dandelion(FA_PA_V_5F_FactorLoading,
bound=0,
mcex=c(1,1.2),
palet=DandelionPlotPalette)
par(mfrow=c(1,3))
fa.diagram(FA_PA_V_3F,
sort=TRUE,
cut=0,
digits=3,
main="Principal Axes Factor Extraction + Varimax Rotation : 3 Factors",
cex=0.75)
fa.diagram(FA_PA_V_4F,
sort=TRUE,
cut=0,
digits=3,
main="Principal Axes Factor Extraction + Varimax Rotation : 4 Factors",
cex=0.75)
fa.diagram(FA_PA_V_5F,
sort=TRUE,
cut=0,
digits=3,
main="Principal Axes Factor Extraction + Varimax Rotation : 5 Factors",
cex=0.75)
##################################
# Implementing various procedures for determining
# factor retention based on
# the maximum consensus between methods
##################################
<- parameters::n_factors(DPA.Descriptors.Numeric,
(FA_PA_P_MethodAgreementProcedure algorithm = "pa",
rotation = "promax"))
## # Method Agreement Procedure:
##
## The choice of 4 dimensions is supported by 5 (35.71%) methods out of 14 (Bentler, beta, Parallel analysis, Kaiser criterion, Scree (SE)).
as.data.frame(FA_PA_P_MethodAgreementProcedure)
## n_Factors Method Family
## 1 1 Acceleration factor Scree
## 2 1 Scree (R2) Scree_SE
## 3 2 Optimal coordinates Scree
## 4 3 CNG CNG
## 5 4 Bentler Bentler
## 6 4 beta Multiple_regression
## 7 4 Parallel analysis Scree
## 8 4 Kaiser criterion Scree
## 9 4 Scree (SE) Scree_SE
## 10 6 Bartlett Barlett
## 11 6 t Multiple_regression
## 12 6 p Multiple_regression
## 13 7 Anderson Barlett
## 14 7 Lawley Barlett
##################################
# Conducting exploratory factor analysis
# using Principal Axes extraction
# and Promax rotation
# with 3 factors
##################################
<- fa(DPA.Descriptors.Numeric,
(FA_PA_P_3F nfactors = 3,
fm="pa",
rotate = "promax",
residuals=TRUE,
SMC=TRUE,
n.obs=nrow(DPA.Descriptors.Numeric)))
## Factor Analysis using method = pa
## Call: fa(r = DPA.Descriptors.Numeric, nfactors = 3, n.obs = nrow(DPA.Descriptors.Numeric),
## rotate = "promax", residuals = TRUE, SMC = TRUE, fm = "pa")
## Standardized loadings (pattern matrix) based upon correlation matrix
## PA1 PA2 PA3 h2 u2 com
## ACAD 0.02 0.82 -0.06 0.65 0.35 1.0
## APPR 0.59 0.15 0.02 0.50 0.50 1.1
## COMM 0.91 -0.23 0.10 0.69 0.31 1.1
## CFIT 0.52 0.32 0.04 0.61 0.39 1.7
## EXPR -0.31 0.88 0.19 0.69 0.31 1.3
## JFIT 0.37 0.48 0.04 0.64 0.36 1.9
## LETT 0.03 -0.05 0.94 0.86 0.14 1.0
## LIKE 0.64 0.12 0.03 0.54 0.46 1.1
## ORGN 1.04 -0.24 -0.05 0.79 0.21 1.1
## POTL 0.08 0.95 -0.13 0.87 0.13 1.1
## RESM 0.07 0.09 0.82 0.83 0.17 1.0
## SCON 0.57 0.24 -0.07 0.51 0.49 1.4
##
## PA1 PA2 PA3
## SS loadings 3.56 2.92 1.70
## Proportion Var 0.30 0.24 0.14
## Cumulative Var 0.30 0.54 0.68
## Proportion Explained 0.44 0.36 0.21
## Cumulative Proportion 0.44 0.79 1.00
##
## With factor correlations of
## PA1 PA2 PA3
## PA1 1.00 0.64 0.48
## PA2 0.64 1.00 0.55
## PA3 0.48 0.55 1.00
##
## Mean item complexity = 1.2
## Test of the hypothesis that 3 factors are sufficient.
##
## df null model = 66 with the objective function = 10.7 with Chi Square = 472.51
## df of the model are 33 and the objective function was 2.52
##
## The root mean square of the residuals (RMSR) is 0.07
## The df corrected root mean square of the residuals is 0.1
##
## The harmonic n.obs is 50 with the empirical chi square 35.54 with prob < 0.35
## The total n.obs was 50 with Likelihood Chi Square = 106.33 with prob < 1.2e-09
##
## Tucker Lewis Index of factoring reliability = 0.619
## RMSEA index = 0.21 and the 90 % confidence intervals are 0.168 0.259
## BIC = -22.76
## Fit based upon off diagonal values = 0.98
## Measures of factor score adequacy
## PA1 PA2 PA3
## Correlation of (regression) scores with factors 0.96 0.97 0.96
## Multiple R square of scores with factors 0.93 0.93 0.91
## Minimum correlation of possible factor scores 0.85 0.86 0.83
<- FA_PA_P_3F %>%
(FA_PA_P_3F_Summary model_parameters(sort = TRUE, threshold = "max"))
## # Rotated loadings from Factor Analysis (promax-rotation)
##
## Variable | PA1 | PA2 | PA3 | Complexity | Uniqueness
## -------------------------------------------------------
## ORGN | 1.04 | | | 1.11 | 0.21
## COMM | 0.91 | | | 1.15 | 0.31
## LIKE | 0.64 | | | 1.07 | 0.46
## APPR | 0.59 | | | 1.13 | 0.50
## SCON | 0.57 | | | 1.37 | 0.49
## CFIT | 0.52 | | | 1.67 | 0.39
## POTL | | 0.95 | | 1.05 | 0.13
## EXPR | | 0.88 | | 1.34 | 0.31
## ACAD | | 0.82 | | 1.01 | 0.35
## JFIT | | 0.48 | | 1.91 | 0.36
## LETT | | | 0.94 | 1.01 | 0.14
## RESM | | | 0.82 | 1.04 | 0.17
##
## The 3 latent factors (promax rotation) accounted for 68.18% of the total variance of the original data (PA1 = 29.69%, PA2 = 24.31%, PA3 = 14.19%).
summary(FA_PA_P_3F_Summary)
## # (Explained) Variance of Components
##
## Parameter | PA1 | PA2 | PA3
## -------------------------------------------------------
## Eigenvalues | 6.069 | 1.209 | 0.903
## Variance Explained | 0.297 | 0.243 | 0.142
## Variance Explained (Cumulative) | 0.297 | 0.540 | 0.682
## Variance Explained (Proportion) | 0.435 | 0.357 | 0.208
##################################
# Extracting the residuals
# from the Exploratory Factor Analysis
##################################
<- residuals(FA_PA_P_3F,
(FA_PA_P_3F_Residual diag=FALSE,
na.rm=TRUE))
## ACAD APPR COMM CFIT EXPR JFIT LETT LIKE ORGN POTL RESM
## ACAD NA
## APPR 0.03 NA
## COMM 0.07 -0.06 NA
## CFIT -0.04 -0.13 0.02 NA
## EXPR 0.04 -0.02 0.00 -0.06 NA
## JFIT -0.06 -0.12 -0.01 0.27 -0.01 NA
## LETT -0.02 -0.05 0.01 0.04 0.02 0.03 NA
## LIKE -0.04 0.12 -0.09 -0.08 -0.03 -0.02 -0.01 NA
## ORGN 0.03 -0.04 0.13 0.04 0.03 0.00 0.03 -0.08 NA
## POTL 0.04 0.00 0.02 0.03 -0.01 0.01 0.01 -0.03 0.01 NA
## RESM 0.02 0.09 -0.01 -0.05 -0.01 -0.05 0.00 0.04 -0.06 -0.02 NA
## SCON -0.06 0.20 -0.10 -0.09 0.05 -0.08 -0.07 0.24 -0.08 -0.05 0.06
## [1] NA
##################################
# Obtaining Fit Indices
##################################
<- FA_PA_P_3F$rms) (FA_PA_P_3F_RMS
## [1] 0.07338105
<- FA_PA_P_3F$TLI) (FA_PA_P_3F_TLI
## [1] 0.6191606
<- FA_PA_P_3F$BIC) (FA_PA_P_3F_BIC
## [1] -22.76274
<- max(abs(FA_PA_P_3F_Residual),na.rm=TRUE)) (FA_PA_P_3F_MaxResidual
## [1] 0.2668687
<- sum(FA_PA_P_3F_Residual>abs(0.05),na.rm=TRUE)) (FA_PA_P_3F_HighResidual
## [1] 18
<- length(DPA.Descriptors.Numeric)*(length(DPA.Descriptors.Numeric)-1)/2) (FA_PA_P_3F_TotalResidual
## [1] 66
<- FA_PA_P_3F_HighResidual/FA_PA_P_3F_TotalResidual) (FA_PA_P_3F_HighResidualRate
## [1] 0.2727273
##################################
# Graph the factor loading matrices
##################################
fa.diagram(FA_PA_P_3F,
sort=TRUE,
cut=0,
digits=3,
main="Principal Axes Factor Extraction + Promax Rotation : 3 Factors",
cex=0.75)
##################################
# computing the internal consistency
# measure of reliability using the
# Cronbach's alpha coefficient
# for each factor
##################################
alpha(DPA.Descriptors.Numeric[,c("ORGN","COMM","LIKE","APPR","SCON","CFIT")])
##
## Reliability analysis
## Call: alpha(x = DPA.Descriptors.Numeric[, c("ORGN", "COMM", "LIKE",
## "APPR", "SCON", "CFIT")])
##
## raw_alpha std.alpha G6(smc) average_r S/N ase mean sd median_r
## 0.88 0.89 0.9 0.57 7.8 0.026 7.1 1.1 0.53
##
## 95% confidence boundaries
## lower alpha upper
## Feldt 0.82 0.88 0.92
## Duhachek 0.83 0.88 0.93
##
## Reliability if an item is dropped:
## raw_alpha std.alpha G6(smc) average_r S/N alpha se var.r med.r
## ORGN 0.84 0.86 0.85 0.55 6.0 0.036 0.014 0.49
## COMM 0.85 0.87 0.86 0.56 6.4 0.034 0.012 0.53
## LIKE 0.86 0.86 0.88 0.56 6.4 0.030 0.019 0.52
## APPR 0.86 0.87 0.89 0.57 6.7 0.030 0.019 0.51
## SCON 0.86 0.87 0.87 0.57 6.5 0.029 0.015 0.53
## CFIT 0.87 0.88 0.90 0.59 7.3 0.029 0.020 0.53
##
## Item statistics
## n raw.r std.r r.cor r.drop mean sd
## ORGN 50 0.87 0.84 0.84 0.78 6.9 1.6
## COMM 50 0.84 0.81 0.79 0.74 6.9 1.5
## LIKE 50 0.78 0.81 0.77 0.69 7.4 1.1
## APPR 50 0.75 0.79 0.73 0.67 7.4 1.0
## SCON 50 0.76 0.80 0.76 0.67 7.3 1.2
## CFIT 50 0.78 0.75 0.66 0.64 6.9 1.6
##
## Non missing response frequency for each item
## 3 4 5 6 7 8 9 10 miss
## ORGN 0.02 0.04 0.20 0.10 0.24 0.24 0.16 0.00 0
## COMM 0.04 0.04 0.06 0.20 0.30 0.28 0.06 0.02 0
## LIKE 0.00 0.02 0.04 0.12 0.32 0.36 0.14 0.00 0
## APPR 0.00 0.00 0.02 0.16 0.32 0.38 0.10 0.02 0
## SCON 0.00 0.00 0.08 0.14 0.32 0.28 0.18 0.00 0
## CFIT 0.02 0.06 0.16 0.12 0.22 0.30 0.08 0.04 0
alpha(DPA.Descriptors.Numeric[,c("POTL","EXPR","ACAD","JFIT")])
##
## Reliability analysis
## Call: alpha(x = DPA.Descriptors.Numeric[, c("POTL", "EXPR", "ACAD",
## "JFIT")])
##
## raw_alpha std.alpha G6(smc) average_r S/N ase mean sd median_r
## 0.88 0.88 0.87 0.66 7.6 0.028 7.3 1.2 0.69
##
## 95% confidence boundaries
## lower alpha upper
## Feldt 0.81 0.88 0.93
## Duhachek 0.82 0.88 0.93
##
## Reliability if an item is dropped:
## raw_alpha std.alpha G6(smc) average_r S/N alpha se var.r med.r
## POTL 0.79 0.80 0.74 0.58 4.1 0.051 0.0063 0.54
## EXPR 0.86 0.86 0.84 0.68 6.4 0.036 0.0169 0.71
## ACAD 0.84 0.84 0.80 0.64 5.4 0.040 0.0111 0.70
## JFIT 0.89 0.89 0.85 0.72 7.8 0.028 0.0043 0.70
##
## Item statistics
## n raw.r std.r r.cor r.drop mean sd
## POTL 50 0.93 0.93 0.92 0.87 7.3 1.4
## EXPR 50 0.83 0.84 0.75 0.71 7.3 1.4
## ACAD 50 0.86 0.87 0.83 0.76 7.4 1.3
## JFIT 50 0.82 0.80 0.71 0.65 7.0 1.6
##
## Non missing response frequency for each item
## 3 4 5 6 7 8 9 10 miss
## POTL 0.00 0.04 0.06 0.18 0.22 0.30 0.18 0.02 0
## EXPR 0.00 0.00 0.10 0.20 0.24 0.24 0.18 0.04 0
## ACAD 0.00 0.02 0.02 0.22 0.28 0.24 0.18 0.04 0
## JFIT 0.06 0.00 0.06 0.22 0.26 0.24 0.12 0.04 0
alpha(DPA.Descriptors.Numeric[,c("LETT","RESM")])
##
## Reliability analysis
## Call: alpha(x = DPA.Descriptors.Numeric[, c("LETT", "RESM")])
##
## raw_alpha std.alpha G6(smc) average_r S/N ase mean sd median_r
## 0.91 0.91 0.84 0.84 10 0.025 7.2 1.6 0.84
##
## 95% confidence boundaries
## lower alpha upper
## Feldt 0.84 0.91 0.95
## Duhachek 0.86 0.91 0.96
##
## Reliability if an item is dropped:
## raw_alpha std.alpha G6(smc) average_r S/N alpha se var.r med.r
## LETT 0.83 0.84 0.7 0.84 5.1 NA 0 0.84
## RESM 0.84 0.84 0.7 0.84 5.1 NA 0 0.84
##
## Item statistics
## n raw.r std.r r.cor r.drop mean sd
## LETT 50 0.96 0.96 0.88 0.84 7.2 1.7
## RESM 50 0.96 0.96 0.88 0.84 7.2 1.7
##
## Non missing response frequency for each item
## 4 5 6 7 8 9 10 miss
## LETT 0.06 0.12 0.14 0.22 0.24 0.12 0.10 0
## RESM 0.08 0.06 0.22 0.18 0.16 0.24 0.06 0
##################################
# Formulating the dandelion plot to
# visualize both factor variances and loadings
# from the factor loading matrices
##################################
<- factload(DPA.Descriptors.Numeric,
FA_PA_P_3F_FactorLoading cormeth = "pearson",
method = "prax",
nfac = 3,
rotation = "promax")
<- rev(rainbow(100, start = 0, end = 0.2))
DandelionPlotPalette
dandelion(FA_PA_P_3F_FactorLoading,
bound=0,
mcex=c(1,1.2),
palet=DandelionPlotPalette)
##################################
# Conducting exploratory factor analysis
# using Principal Axes extraction
# and Promax rotation
# with 4 factors
##################################
<- fa(DPA.Descriptors.Numeric,
(FA_PA_P_4F nfactors = 4,
fm="pa",
rotate = "promax",
residuals=TRUE,
SMC=TRUE,
n.obs=nrow(DPA.Descriptors.Numeric)))
## Factor Analysis using method = pa
## Call: fa(r = DPA.Descriptors.Numeric, nfactors = 4, n.obs = nrow(DPA.Descriptors.Numeric),
## rotate = "promax", residuals = TRUE, SMC = TRUE, fm = "pa")
## Standardized loadings (pattern matrix) based upon correlation matrix
## PA1 PA2 PA4 PA3 h2 u2 com
## ACAD 0.77 -0.02 0.11 -0.04 0.64 0.36 1.0
## APPR 0.04 0.09 0.72 0.04 0.65 0.35 1.0
## COMM -0.14 0.82 0.11 0.10 0.73 0.27 1.1
## CFIT 0.44 0.64 -0.14 0.01 0.76 0.24 1.9
## EXPR 0.81 -0.28 0.03 0.19 0.68 0.32 1.4
## JFIT 0.57 0.46 -0.10 0.02 0.73 0.27 2.0
## LETT -0.01 0.14 -0.16 0.95 0.89 0.11 1.1
## LIKE 0.02 0.16 0.68 0.05 0.66 0.34 1.1
## ORGN -0.17 0.92 0.17 -0.05 0.86 0.14 1.1
## POTL 0.94 0.04 0.08 -0.13 0.89 0.11 1.1
## RESM 0.04 -0.08 0.20 0.85 0.88 0.12 1.1
## SCON 0.11 -0.01 0.87 -0.09 0.79 0.21 1.1
##
## PA1 PA2 PA4 PA3
## SS loadings 2.85 2.47 2.09 1.74
## Proportion Var 0.24 0.21 0.17 0.15
## Cumulative Var 0.24 0.44 0.62 0.76
## Proportion Explained 0.31 0.27 0.23 0.19
## Cumulative Proportion 0.31 0.58 0.81 1.00
##
## With factor correlations of
## PA1 PA2 PA4 PA3
## PA1 1.00 0.53 0.52 0.54
## PA2 0.53 1.00 0.56 0.41
## PA4 0.52 0.56 1.00 0.42
## PA3 0.54 0.41 0.42 1.00
##
## Mean item complexity = 1.3
## Test of the hypothesis that 4 factors are sufficient.
##
## df null model = 66 with the objective function = 10.7 with Chi Square = 472.51
## df of the model are 24 and the objective function was 1.47
##
## The root mean square of the residuals (RMSR) is 0.04
## The df corrected root mean square of the residuals is 0.06
##
## The harmonic n.obs is 50 with the empirical chi square 9.84 with prob < 1
## The total n.obs was 50 with Likelihood Chi Square = 60.87 with prob < 4.8e-05
##
## Tucker Lewis Index of factoring reliability = 0.732
## RMSEA index = 0.174 and the 90 % confidence intervals are 0.122 0.233
## BIC = -33.02
## Fit based upon off diagonal values = 0.99
## Measures of factor score adequacy
## PA1 PA2 PA4 PA3
## Correlation of (regression) scores with factors 0.97 0.96 0.95 0.97
## Multiple R square of scores with factors 0.94 0.93 0.89 0.94
## Minimum correlation of possible factor scores 0.88 0.85 0.79 0.88
<- FA_PA_P_4F %>%
(FA_PA_P_4F_Summary model_parameters(sort = TRUE, threshold = "max"))
## # Rotated loadings from Factor Analysis (promax-rotation)
##
## Variable | PA1 | PA2 | PA4 | PA3 | Complexity | Uniqueness
## --------------------------------------------------------------
## POTL | 0.94 | | | | 1.06 | 0.11
## EXPR | 0.81 | | | | 1.36 | 0.32
## ACAD | 0.77 | | | | 1.05 | 0.36
## JFIT | 0.57 | | | | 1.99 | 0.27
## ORGN | | 0.92 | | | 1.14 | 0.14
## COMM | | 0.82 | | | 1.13 | 0.27
## CFIT | | 0.64 | | | 1.88 | 0.24
## SCON | | | 0.87 | | 1.05 | 0.21
## APPR | | | 0.72 | | 1.04 | 0.35
## LIKE | | | 0.68 | | 1.12 | 0.34
## LETT | | | | 0.95 | 1.11 | 0.11
## RESM | | | | 0.85 | 1.13 | 0.12
##
## The 4 latent factors (promax rotation) accounted for 76.28% of the total variance of the original data (PA1 = 23.74%, PA2 = 20.58%, PA4 = 17.43%, PA3 = 14.53%).
summary(FA_PA_P_4F_Summary)
## # (Explained) Variance of Components
##
## Parameter | PA1 | PA2 | PA4 | PA3
## ---------------------------------------------------------------
## Eigenvalues | 6.152 | 1.259 | 0.943 | 0.800
## Variance Explained | 0.237 | 0.206 | 0.174 | 0.145
## Variance Explained (Cumulative) | 0.237 | 0.443 | 0.618 | 0.763
## Variance Explained (Proportion) | 0.311 | 0.270 | 0.229 | 0.190
##################################
# Extracting the residuals
# from the Exploratory Factor Analysis
##################################
<- residuals(FA_PA_P_4F,
(FA_PA_P_4F_Residual diag=FALSE,
na.rm=TRUE))
## ACAD APPR COMM CFIT EXPR JFIT LETT LIKE ORGN POTL RESM
## ACAD NA
## APPR 0.04 NA
## COMM 0.07 0.01 NA
## CFIT -0.06 -0.02 -0.05 NA
## EXPR 0.05 -0.03 0.01 -0.05 NA
## JFIT -0.07 -0.03 -0.07 0.15 -0.01 NA
## LETT -0.03 -0.01 -0.01 0.00 0.02 0.00 NA
## LIKE -0.03 -0.02 -0.03 0.02 -0.03 0.07 0.02 NA
## ORGN 0.03 0.02 0.08 -0.05 0.04 -0.06 0.01 -0.03 NA
## POTL 0.05 0.03 0.01 -0.02 0.00 -0.03 0.01 -0.01 0.01 NA
## RESM 0.02 0.03 0.02 0.01 -0.01 -0.01 0.00 -0.01 -0.03 -0.01 NA
## SCON -0.06 -0.01 -0.03 0.04 0.04 0.03 -0.01 0.05 -0.01 -0.03 -0.01
## [1] NA
##################################
# Obtaining Fit Indices
##################################
<- FA_PA_P_4F$rms) (FA_PA_P_4F_RMS
## [1] 0.03861068
<- FA_PA_P_4F$TLI) (FA_PA_P_4F_TLI
## [1] 0.7317578
<- FA_PA_P_4F$BIC) (FA_PA_P_4F_BIC
## [1] -33.01886
<- max(abs(FA_PA_P_4F_Residual),na.rm=TRUE)) (FA_PA_P_4F_MaxResidual
## [1] 0.1504566
<- sum(FA_PA_P_4F_Residual>abs(0.05),na.rm=TRUE)) (FA_PA_P_4F_HighResidual
## [1] 10
<- length(DPA.Descriptors.Numeric)*(length(DPA.Descriptors.Numeric)-1)/2) (FA_PA_P_4F_TotalResidual
## [1] 66
<- FA_PA_P_4F_HighResidual/FA_PA_P_4F_TotalResidual) (FA_PA_P_4F_HighResidualRate
## [1] 0.1515152
##################################
# Graph the factor loading matrices
##################################
fa.diagram(FA_PA_P_4F,
sort=TRUE,
cut=0,
digits=3,
main="Principal Axes Factor Extraction + Promax Rotation : 4 Factors",
cex=0.75)
##################################
# computing the internal consistency
# measure of reliability using the
# Cronbach's alpha coefficient
# for each factor
##################################
alpha(DPA.Descriptors.Numeric[,c("POTL","EXPR","ACAD","JFIT")])
##
## Reliability analysis
## Call: alpha(x = DPA.Descriptors.Numeric[, c("POTL", "EXPR", "ACAD",
## "JFIT")])
##
## raw_alpha std.alpha G6(smc) average_r S/N ase mean sd median_r
## 0.88 0.88 0.87 0.66 7.6 0.028 7.3 1.2 0.69
##
## 95% confidence boundaries
## lower alpha upper
## Feldt 0.81 0.88 0.93
## Duhachek 0.82 0.88 0.93
##
## Reliability if an item is dropped:
## raw_alpha std.alpha G6(smc) average_r S/N alpha se var.r med.r
## POTL 0.79 0.80 0.74 0.58 4.1 0.051 0.0063 0.54
## EXPR 0.86 0.86 0.84 0.68 6.4 0.036 0.0169 0.71
## ACAD 0.84 0.84 0.80 0.64 5.4 0.040 0.0111 0.70
## JFIT 0.89 0.89 0.85 0.72 7.8 0.028 0.0043 0.70
##
## Item statistics
## n raw.r std.r r.cor r.drop mean sd
## POTL 50 0.93 0.93 0.92 0.87 7.3 1.4
## EXPR 50 0.83 0.84 0.75 0.71 7.3 1.4
## ACAD 50 0.86 0.87 0.83 0.76 7.4 1.3
## JFIT 50 0.82 0.80 0.71 0.65 7.0 1.6
##
## Non missing response frequency for each item
## 3 4 5 6 7 8 9 10 miss
## POTL 0.00 0.04 0.06 0.18 0.22 0.30 0.18 0.02 0
## EXPR 0.00 0.00 0.10 0.20 0.24 0.24 0.18 0.04 0
## ACAD 0.00 0.02 0.02 0.22 0.28 0.24 0.18 0.04 0
## JFIT 0.06 0.00 0.06 0.22 0.26 0.24 0.12 0.04 0
alpha(DPA.Descriptors.Numeric[,c("ORGN","COMM","CFIT")])
##
## Reliability analysis
## Call: alpha(x = DPA.Descriptors.Numeric[, c("ORGN", "COMM", "CFIT")])
##
## raw_alpha std.alpha G6(smc) average_r S/N ase mean sd median_r
## 0.87 0.87 0.85 0.69 6.7 0.034 6.9 1.4 0.62
##
## 95% confidence boundaries
## lower alpha upper
## Feldt 0.79 0.87 0.92
## Duhachek 0.80 0.87 0.93
##
## Reliability if an item is dropped:
## raw_alpha std.alpha G6(smc) average_r S/N alpha se var.r med.r
## ORGN 0.74 0.74 0.59 0.59 2.9 0.073 NA 0.59
## COMM 0.77 0.77 0.62 0.62 3.3 0.066 NA 0.62
## CFIT 0.92 0.93 0.86 0.86 12.5 0.021 NA 0.86
##
## Item statistics
## n raw.r std.r r.cor r.drop mean sd
## ORGN 50 0.93 0.93 0.91 0.83 6.9 1.6
## COMM 50 0.91 0.92 0.89 0.80 6.9 1.5
## CFIT 50 0.84 0.83 0.65 0.63 6.9 1.6
##
## Non missing response frequency for each item
## 3 4 5 6 7 8 9 10 miss
## ORGN 0.02 0.04 0.20 0.10 0.24 0.24 0.16 0.00 0
## COMM 0.04 0.04 0.06 0.20 0.30 0.28 0.06 0.02 0
## CFIT 0.02 0.06 0.16 0.12 0.22 0.30 0.08 0.04 0
alpha(DPA.Descriptors.Numeric[,c("SCON","APPR","LIKE")])
##
## Reliability analysis
## Call: alpha(x = DPA.Descriptors.Numeric[, c("SCON", "APPR", "LIKE")])
##
## raw_alpha std.alpha G6(smc) average_r S/N ase mean sd median_r
## 0.87 0.87 0.83 0.7 6.9 0.031 7.4 0.99 0.7
##
## 95% confidence boundaries
## lower alpha upper
## Feldt 0.80 0.87 0.92
## Duhachek 0.81 0.87 0.93
##
## Reliability if an item is dropped:
## raw_alpha std.alpha G6(smc) average_r S/N alpha se var.r med.r
## SCON 0.78 0.78 0.64 0.64 3.5 0.062 NA 0.64
## APPR 0.86 0.86 0.75 0.75 6.1 0.040 NA 0.75
## LIKE 0.82 0.82 0.70 0.70 4.6 0.051 NA 0.70
##
## Item statistics
## n raw.r std.r r.cor r.drop mean sd
## SCON 50 0.92 0.91 0.86 0.80 7.3 1.2
## APPR 50 0.86 0.87 0.76 0.71 7.4 1.0
## LIKE 50 0.90 0.89 0.82 0.76 7.4 1.1
##
## Non missing response frequency for each item
## 4 5 6 7 8 9 10 miss
## SCON 0.00 0.08 0.14 0.32 0.28 0.18 0.00 0
## APPR 0.00 0.02 0.16 0.32 0.38 0.10 0.02 0
## LIKE 0.02 0.04 0.12 0.32 0.36 0.14 0.00 0
alpha(DPA.Descriptors.Numeric[,c("LETT","RESM")])
##
## Reliability analysis
## Call: alpha(x = DPA.Descriptors.Numeric[, c("LETT", "RESM")])
##
## raw_alpha std.alpha G6(smc) average_r S/N ase mean sd median_r
## 0.91 0.91 0.84 0.84 10 0.025 7.2 1.6 0.84
##
## 95% confidence boundaries
## lower alpha upper
## Feldt 0.84 0.91 0.95
## Duhachek 0.86 0.91 0.96
##
## Reliability if an item is dropped:
## raw_alpha std.alpha G6(smc) average_r S/N alpha se var.r med.r
## LETT 0.83 0.84 0.7 0.84 5.1 NA 0 0.84
## RESM 0.84 0.84 0.7 0.84 5.1 NA 0 0.84
##
## Item statistics
## n raw.r std.r r.cor r.drop mean sd
## LETT 50 0.96 0.96 0.88 0.84 7.2 1.7
## RESM 50 0.96 0.96 0.88 0.84 7.2 1.7
##
## Non missing response frequency for each item
## 4 5 6 7 8 9 10 miss
## LETT 0.06 0.12 0.14 0.22 0.24 0.12 0.10 0
## RESM 0.08 0.06 0.22 0.18 0.16 0.24 0.06 0
##################################
# Formulating the dandelion plot to
# visualize both factor variances and loadings
# from the factor loading matrices
##################################
<- factload(DPA.Descriptors.Numeric,
FA_PA_P_4F_FactorLoading cormeth = "pearson",
method = "prax",
nfac = 4,
rotation = "promax")
<- rev(rainbow(100, start = 0, end = 0.2))
DandelionPlotPalette
dandelion(FA_PA_P_4F_FactorLoading,
bound=0,
mcex=c(1,1.2),
palet=DandelionPlotPalette)
##################################
# Conducting exploratory factor analysis
# using Principal Axes extraction
# and Promax rotation
# with 5 factors
##################################
<- fa(DPA.Descriptors.Numeric,
(FA_PA_P_5F nfactors = 5,
fm="pa",
rotate = "promax",
residuals=TRUE,
SMC=TRUE,
n.obs=nrow(DPA.Descriptors.Numeric)))
## Factor Analysis using method = pa
## Call: fa(r = DPA.Descriptors.Numeric, nfactors = 5, n.obs = nrow(DPA.Descriptors.Numeric),
## rotate = "promax", residuals = TRUE, SMC = TRUE, fm = "pa")
## Standardized loadings (pattern matrix) based upon correlation matrix
## PA5 PA4 PA2 PA1 PA3 h2 u2 com
## ACAD 0.95 -0.05 0.16 -0.10 -0.07 0.79 0.208 1.1
## APPR 0.13 0.67 0.18 -0.16 0.03 0.64 0.355 1.4
## COMM 0.04 -0.05 0.91 -0.01 0.10 0.86 0.143 1.0
## CFIT 0.02 -0.01 0.17 0.81 0.02 0.86 0.144 1.1
## EXPR 0.73 0.00 -0.21 0.05 0.20 0.67 0.331 1.3
## JFIT 0.08 0.05 -0.05 0.91 0.02 0.93 0.065 1.0
## LETT -0.06 -0.15 0.08 0.09 0.96 0.89 0.105 1.1
## LIKE -0.11 0.78 0.02 0.13 0.05 0.69 0.306 1.1
## ORGN -0.04 0.08 0.87 0.10 -0.05 0.89 0.115 1.1
## POTL 0.80 0.05 0.02 0.22 -0.11 0.87 0.132 1.2
## RESM 0.07 0.18 -0.02 -0.09 0.85 0.87 0.127 1.1
## SCON -0.01 1.00 -0.11 0.04 -0.09 0.85 0.153 1.0
##
## PA5 PA4 PA2 PA1 PA3
## SS loadings 2.22 2.18 1.85 1.81 1.76
## Proportion Var 0.18 0.18 0.15 0.15 0.15
## Cumulative Var 0.18 0.37 0.52 0.67 0.82
## Proportion Explained 0.23 0.22 0.19 0.18 0.18
## Cumulative Proportion 0.23 0.45 0.64 0.82 1.00
##
## With factor correlations of
## PA5 PA4 PA2 PA1 PA3
## PA5 1.00 0.57 0.36 0.61 0.52
## PA4 0.57 1.00 0.59 0.52 0.45
## PA2 0.36 0.59 1.00 0.55 0.35
## PA1 0.61 0.52 0.55 1.00 0.46
## PA3 0.52 0.45 0.35 0.46 1.00
##
## Mean item complexity = 1.1
## Test of the hypothesis that 5 factors are sufficient.
##
## df null model = 66 with the objective function = 10.7 with Chi Square = 472.51
## df of the model are 16 and the objective function was 0.47
##
## The root mean square of the residuals (RMSR) is 0.01
## The df corrected root mean square of the residuals is 0.03
##
## The harmonic n.obs is 50 with the empirical chi square 1.45 with prob < 1
## The total n.obs was 50 with Likelihood Chi Square = 19.16 with prob < 0.26
##
## Tucker Lewis Index of factoring reliability = 0.965
## RMSEA index = 0.06 and the 90 % confidence intervals are 0 0.153
## BIC = -43.43
## Fit based upon off diagonal values = 1
## Measures of factor score adequacy
## PA5 PA4 PA2 PA1 PA3
## Correlation of (regression) scores with factors 0.96 0.96 0.97 0.97 0.97
## Multiple R square of scores with factors 0.92 0.92 0.93 0.95 0.94
## Minimum correlation of possible factor scores 0.85 0.84 0.86 0.90 0.88
<- FA_PA_P_5F %>%
(FA_PA_P_5F_Summary model_parameters(sort = TRUE, threshold = "max"))
## # Rotated loadings from Factor Analysis (promax-rotation)
##
## Variable | PA5 | PA4 | PA2 | PA1 | PA3 | Complexity | Uniqueness
## ---------------------------------------------------------------------
## ACAD | 0.95 | | | | | 1.10 | 0.21
## POTL | 0.80 | | | | | 1.20 | 0.13
## EXPR | 0.73 | | | | | 1.32 | 0.33
## SCON | | 1.00 | | | | 1.04 | 0.15
## LIKE | | 0.78 | | | | 1.10 | 0.31
## APPR | | 0.67 | | | | 1.35 | 0.36
## COMM | | | 0.91 | | | 1.04 | 0.14
## ORGN | | | 0.87 | | | 1.05 | 0.11
## JFIT | | | | 0.91 | | 1.03 | 0.07
## CFIT | | | | 0.81 | | 1.09 | 0.14
## LETT | | | | | 0.96 | 1.09 | 0.11
## RESM | | | | | 0.85 | 1.12 | 0.13
##
## The 5 latent factors (promax rotation) accounted for 81.80% of the total variance of the original data (PA5 = 18.48%, PA4 = 18.16%, PA2 = 15.39%, PA1 = 15.12%, PA3 = 14.65%).
summary(FA_PA_P_5F_Summary)
## # (Explained) Variance of Components
##
## Parameter | PA5 | PA4 | PA2 | PA1 | PA3
## -----------------------------------------------------------------------
## Eigenvalues | 6.211 | 1.294 | 0.967 | 0.867 | 0.477
## Variance Explained | 0.185 | 0.182 | 0.154 | 0.151 | 0.147
## Variance Explained (Cumulative) | 0.185 | 0.366 | 0.520 | 0.672 | 0.818
## Variance Explained (Proportion) | 0.226 | 0.222 | 0.188 | 0.185 | 0.179
##################################
# Extracting the residuals
# from the Exploratory Factor Analysis
##################################
<- residuals(FA_PA_P_5F,
(FA_PA_P_5F_Residual diag=FALSE,
na.rm=TRUE))
## ACAD APPR COMM CFIT EXPR JFIT LETT LIKE ORGN POTL RESM
## ACAD NA
## APPR 0.01 NA
## COMM 0.01 -0.02 NA
## CFIT 0.01 0.00 0.00 NA
## EXPR 0.00 -0.04 0.00 -0.03 NA
## JFIT 0.00 0.00 0.00 0.00 0.01 NA
## LETT -0.02 -0.01 -0.01 0.00 0.02 -0.01 NA
## LIKE 0.01 0.00 0.00 -0.02 -0.02 0.02 0.02 NA
## ORGN -0.01 0.01 0.00 0.00 0.02 0.00 0.02 0.00 NA
## POTL -0.01 0.02 -0.01 0.01 0.01 -0.01 0.01 0.01 0.00 NA
## RESM 0.01 0.03 0.01 0.02 -0.02 0.00 0.00 -0.01 -0.03 -0.01 NA
## SCON -0.02 -0.01 0.01 0.01 0.05 -0.01 -0.01 0.01 0.01 -0.02 -0.01
## [1] NA
##################################
# Obtaining Fit Indices
##################################
<- FA_PA_P_5F$rms) (FA_PA_P_5F_RMS
## [1] 0.01483907
<- FA_PA_P_5F$TLI) (FA_PA_P_5F_TLI
## [1] 0.9648451
<- FA_PA_P_5F$BIC) (FA_PA_P_5F_BIC
## [1] -43.43181
<- max(abs(FA_PA_P_5F_Residual),na.rm=TRUE)) (FA_PA_P_5F_MaxResidual
## [1] 0.04835397
<- sum(FA_PA_P_5F_Residual>abs(0.05),na.rm=TRUE)) (FA_PA_P_5F_HighResidual
## [1] 0
<- length(DPA.Descriptors.Numeric)*(length(DPA.Descriptors.Numeric)-1)/2) (FA_PA_P_5F_TotalResidual
## [1] 66
<- FA_PA_P_5F_HighResidual/FA_PA_P_5F_TotalResidual) (FA_PA_P_5F_HighResidualRate
## [1] 0
##################################
# Graph the factor loading matrices
##################################
fa.diagram(FA_PA_P_5F,
sort=TRUE,
cut=0,
digits=3,
main="Principal Axes Factor Extraction + Promax Rotation : 5 Factors",
cex=0.75)
##################################
# computing the internal consistency
# measure of reliability using the
# Cronbach's alpha coefficient
# for each factor
##################################
alpha(DPA.Descriptors.Numeric[,c("ACAD","POTL","EXPR")])
##
## Reliability analysis
## Call: alpha(x = DPA.Descriptors.Numeric[, c("ACAD", "POTL", "EXPR")])
##
## raw_alpha std.alpha G6(smc) average_r S/N ase mean sd median_r
## 0.89 0.89 0.85 0.72 7.8 0.028 7.3 1.2 0.7
##
## 95% confidence boundaries
## lower alpha upper
## Feldt 0.82 0.89 0.93
## Duhachek 0.83 0.89 0.94
##
## Reliability if an item is dropped:
## raw_alpha std.alpha G6(smc) average_r S/N alpha se var.r med.r
## ACAD 0.83 0.83 0.70 0.70 4.7 0.049 NA 0.70
## POTL 0.80 0.80 0.67 0.67 4.0 0.056 NA 0.67
## EXPR 0.88 0.89 0.80 0.80 7.8 0.032 NA 0.80
##
## Item statistics
## n raw.r std.r r.cor r.drop mean sd
## ACAD 50 0.91 0.91 0.85 0.79 7.4 1.3
## POTL 50 0.92 0.92 0.88 0.82 7.3 1.4
## EXPR 50 0.88 0.88 0.76 0.72 7.3 1.4
##
## Non missing response frequency for each item
## 4 5 6 7 8 9 10 miss
## ACAD 0.02 0.02 0.22 0.28 0.24 0.18 0.04 0
## POTL 0.04 0.06 0.18 0.22 0.30 0.18 0.02 0
## EXPR 0.00 0.10 0.20 0.24 0.24 0.18 0.04 0
alpha(DPA.Descriptors.Numeric[,c("SCON","LIKE","APPR")])
##
## Reliability analysis
## Call: alpha(x = DPA.Descriptors.Numeric[, c("SCON", "LIKE", "APPR")])
##
## raw_alpha std.alpha G6(smc) average_r S/N ase mean sd median_r
## 0.87 0.87 0.83 0.7 6.9 0.031 7.4 0.99 0.7
##
## 95% confidence boundaries
## lower alpha upper
## Feldt 0.80 0.87 0.92
## Duhachek 0.81 0.87 0.93
##
## Reliability if an item is dropped:
## raw_alpha std.alpha G6(smc) average_r S/N alpha se var.r med.r
## SCON 0.78 0.78 0.64 0.64 3.5 0.062 NA 0.64
## LIKE 0.82 0.82 0.70 0.70 4.6 0.051 NA 0.70
## APPR 0.86 0.86 0.75 0.75 6.1 0.040 NA 0.75
##
## Item statistics
## n raw.r std.r r.cor r.drop mean sd
## SCON 50 0.92 0.91 0.86 0.80 7.3 1.2
## LIKE 50 0.90 0.89 0.82 0.76 7.4 1.1
## APPR 50 0.86 0.87 0.76 0.71 7.4 1.0
##
## Non missing response frequency for each item
## 4 5 6 7 8 9 10 miss
## SCON 0.00 0.08 0.14 0.32 0.28 0.18 0.00 0
## LIKE 0.02 0.04 0.12 0.32 0.36 0.14 0.00 0
## APPR 0.00 0.02 0.16 0.32 0.38 0.10 0.02 0
alpha(DPA.Descriptors.Numeric[,c("COMM","ORGN")])
##
## Reliability analysis
## Call: alpha(x = DPA.Descriptors.Numeric[, c("COMM", "ORGN")])
##
## raw_alpha std.alpha G6(smc) average_r S/N ase mean sd median_r
## 0.92 0.93 0.86 0.86 12 0.021 6.9 1.5 0.86
##
## 95% confidence boundaries
## lower alpha upper
## Feldt 0.87 0.92 0.96
## Duhachek 0.88 0.92 0.97
##
## Reliability if an item is dropped:
## raw_alpha std.alpha G6(smc) average_r S/N alpha se var.r med.r
## COMM 0.80 0.86 0.74 0.86 6.2 NA 0 0.86
## ORGN 0.92 0.86 0.74 0.86 6.2 NA 0 0.86
##
## Item statistics
## n raw.r std.r r.cor r.drop mean sd
## COMM 50 0.96 0.96 0.9 0.86 6.9 1.5
## ORGN 50 0.97 0.96 0.9 0.86 6.9 1.6
##
## Non missing response frequency for each item
## 3 4 5 6 7 8 9 10 miss
## COMM 0.04 0.04 0.06 0.2 0.30 0.28 0.06 0.02 0
## ORGN 0.02 0.04 0.20 0.1 0.24 0.24 0.16 0.00 0
alpha(DPA.Descriptors.Numeric[,c("LETT","RESM")])
##
## Reliability analysis
## Call: alpha(x = DPA.Descriptors.Numeric[, c("LETT", "RESM")])
##
## raw_alpha std.alpha G6(smc) average_r S/N ase mean sd median_r
## 0.91 0.91 0.84 0.84 10 0.025 7.2 1.6 0.84
##
## 95% confidence boundaries
## lower alpha upper
## Feldt 0.84 0.91 0.95
## Duhachek 0.86 0.91 0.96
##
## Reliability if an item is dropped:
## raw_alpha std.alpha G6(smc) average_r S/N alpha se var.r med.r
## LETT 0.83 0.84 0.7 0.84 5.1 NA 0 0.84
## RESM 0.84 0.84 0.7 0.84 5.1 NA 0 0.84
##
## Item statistics
## n raw.r std.r r.cor r.drop mean sd
## LETT 50 0.96 0.96 0.88 0.84 7.2 1.7
## RESM 50 0.96 0.96 0.88 0.84 7.2 1.7
##
## Non missing response frequency for each item
## 4 5 6 7 8 9 10 miss
## LETT 0.06 0.12 0.14 0.22 0.24 0.12 0.10 0
## RESM 0.08 0.06 0.22 0.18 0.16 0.24 0.06 0
alpha(DPA.Descriptors.Numeric[,c("JFIT","CFIT")])
##
## Reliability analysis
## Call: alpha(x = DPA.Descriptors.Numeric[, c("JFIT", "CFIT")])
##
## raw_alpha std.alpha G6(smc) average_r S/N ase mean sd median_r
## 0.94 0.94 0.88 0.88 15 0.018 7 1.6 0.88
##
## 95% confidence boundaries
## lower alpha upper
## Feldt 0.89 0.94 0.96
## Duhachek 0.90 0.94 0.97
##
## Reliability if an item is dropped:
## raw_alpha std.alpha G6(smc) average_r S/N alpha se var.r med.r
## JFIT 0.87 0.88 0.78 0.88 7.5 NA 0 0.88
## CFIT 0.90 0.88 0.78 0.88 7.5 NA 0 0.88
##
## Item statistics
## n raw.r std.r r.cor r.drop mean sd
## JFIT 50 0.97 0.97 0.91 0.88 7.0 1.6
## CFIT 50 0.97 0.97 0.91 0.88 6.9 1.6
##
## Non missing response frequency for each item
## 3 4 5 6 7 8 9 10 miss
## JFIT 0.06 0.00 0.06 0.22 0.26 0.24 0.12 0.04 0
## CFIT 0.02 0.06 0.16 0.12 0.22 0.30 0.08 0.04 0
##################################
# Formulating the dandelion plot to
# visualize both factor variances and loadings
# from the factor loading matrices
##################################
<- factload(DPA.Descriptors.Numeric,
FA_PA_P_5F_FactorLoading cormeth = "pearson",
method = "prax",
nfac = 5,
rotation = "promax")
<- rev(rainbow(100, start = 0, end = 0.2))
DandelionPlotPalette
dandelion(FA_PA_P_5F_FactorLoading,
bound=0,
mcex=c(1,1.2),
palet=DandelionPlotPalette)
par(mfrow=c(1,3))
fa.diagram(FA_PA_P_3F,
sort=TRUE,
cut=0,
digits=3,
main="Principal Axes Factor Extraction + Promax Rotation : 3 Factors",
cex=0.75)
fa.diagram(FA_PA_P_4F,
sort=TRUE,
cut=0,
digits=3,
main="Principal Axes Factor Extraction + Promax Rotation : 4 Factors",
cex=0.75)
fa.diagram(FA_PA_P_5F,
sort=TRUE,
cut=0,
digits=3,
main="Principal Axes Factor Extraction + Promax Rotation : 5 Factors",
cex=0.75)
##################################
# Implementing various procedures for determining
# factor retention based on
# the maximum consensus between methods
##################################
<- parameters::n_factors(DPA.Descriptors.Numeric,
(FA_ML_V_MethodAgreementProcedure algorithm = "mle",
rotation = "varimax"))
## # Method Agreement Procedure:
##
## The choice of 4 dimensions is supported by 5 (26.32%) methods out of 19 (Bentler, beta, Parallel analysis, Kaiser criterion, Scree (SE)).
as.data.frame(FA_ML_V_MethodAgreementProcedure)
## n_Factors Method Family
## 1 1 Acceleration factor Scree
## 2 1 Scree (R2) Scree_SE
## 3 1 VSS complexity 1 VSS
## 4 2 Optimal coordinates Scree
## 5 2 VSS complexity 2 VSS
## 6 3 CNG CNG
## 7 4 Bentler Bentler
## 8 4 beta Multiple_regression
## 9 4 Parallel analysis Scree
## 10 4 Kaiser criterion Scree
## 11 4 Scree (SE) Scree_SE
## 12 5 Velicer's MAP Velicers_MAP
## 13 5 BIC BIC
## 14 6 Bartlett Barlett
## 15 6 t Multiple_regression
## 16 6 p Multiple_regression
## 17 6 BIC (adjusted) BIC
## 18 7 Anderson Barlett
## 19 7 Lawley Barlett
##################################
# Conducting exploratory factor analysis
# using Maximum Likelihood extraction
# and Varimax rotation
# with 3 factors
##################################
<- fa(DPA.Descriptors.Numeric,
(FA_ML_V_3F nfactors = 3,
fm="ml",
rotate = "varimax",
residuals=TRUE,
SMC=TRUE,
n.obs=nrow(DPA.Descriptors.Numeric)))
## Factor Analysis using method = ml
## Call: fa(r = DPA.Descriptors.Numeric, nfactors = 3, n.obs = nrow(DPA.Descriptors.Numeric),
## rotate = "varimax", residuals = TRUE, SMC = TRUE, fm = "ml")
## Standardized loadings (pattern matrix) based upon correlation matrix
## ML3 ML2 ML1 h2 u2 com
## ACAD 0.76 0.24 0.20 0.67 0.326 1.3
## APPR 0.36 0.48 0.32 0.46 0.543 2.7
## COMM 0.16 0.85 0.23 0.80 0.203 1.2
## CFIT 0.53 0.56 0.19 0.62 0.377 2.2
## EXPR 0.71 0.04 0.32 0.61 0.385 1.4
## JFIT 0.62 0.45 0.21 0.62 0.379 2.1
## LETT 0.22 0.25 0.78 0.71 0.289 1.4
## LIKE 0.35 0.48 0.29 0.44 0.563 2.6
## ORGN 0.15 0.96 0.07 0.96 0.043 1.1
## POTL 0.90 0.29 0.14 0.92 0.079 1.3
## RESM 0.30 0.19 0.93 1.00 0.005 1.3
## SCON 0.39 0.43 0.25 0.40 0.597 2.6
##
## ML3 ML2 ML1
## SS loadings 3.15 3.04 2.02
## Proportion Var 0.26 0.25 0.17
## Cumulative Var 0.26 0.52 0.68
## Proportion Explained 0.38 0.37 0.25
## Cumulative Proportion 0.38 0.75 1.00
##
## Mean item complexity = 1.8
## Test of the hypothesis that 3 factors are sufficient.
##
## df null model = 66 with the objective function = 10.7 with Chi Square = 472.51
## df of the model are 33 and the objective function was 2.22
##
## The root mean square of the residuals (RMSR) is 0.08
## The df corrected root mean square of the residuals is 0.11
##
## The harmonic n.obs is 50 with the empirical chi square 41.84 with prob < 0.14
## The total n.obs was 50 with Likelihood Chi Square = 93.49 with prob < 1.1e-07
##
## Tucker Lewis Index of factoring reliability = 0.686
## RMSEA index = 0.19 and the 90 % confidence intervals are 0.148 0.24
## BIC = -35.6
## Fit based upon off diagonal values = 0.98
## Measures of factor score adequacy
## ML3 ML2 ML1
## Correlation of (regression) scores with factors 0.96 0.98 0.99
## Multiple R square of scores with factors 0.92 0.96 0.99
## Minimum correlation of possible factor scores 0.84 0.92 0.97
<- FA_ML_V_3F %>%
(FA_ML_V_3F_Summary model_parameters(sort = TRUE, threshold = "max"))
## # Rotated loadings from Factor Analysis (varimax-rotation)
##
## Variable | ML3 | ML2 | ML1 | Complexity | Uniqueness
## -------------------------------------------------------
## POTL | 0.90 | | | 1.25 | 0.08
## ACAD | 0.76 | | | 1.35 | 0.33
## EXPR | 0.71 | | | 1.39 | 0.39
## JFIT | 0.62 | | | 2.09 | 0.38
## ORGN | | 0.96 | | 1.06 | 0.04
## COMM | | 0.85 | | 1.22 | 0.20
## CFIT | | 0.56 | | 2.24 | 0.38
## LIKE | | 0.48 | | 2.56 | 0.56
## APPR | | 0.48 | | 2.67 | 0.54
## SCON | | 0.43 | | 2.60 | 0.60
## RESM | | | 0.93 | 1.29 | 4.98e-03
## LETT | | | 0.78 | 1.38 | 0.29
##
## The 3 latent factors (varimax rotation) accounted for 68.42% of the total variance of the original data (ML3 = 26.22%, ML2 = 25.33%, ML1 = 16.87%).
summary(FA_ML_V_3F_Summary)
## # (Explained) Variance of Components
##
## Parameter | ML3 | ML2 | ML1
## -------------------------------------------------------
## Eigenvalues | 6.079 | 1.261 | 0.922
## Variance Explained | 0.262 | 0.253 | 0.169
## Variance Explained (Cumulative) | 0.262 | 0.515 | 0.684
## Variance Explained (Proportion) | 0.383 | 0.370 | 0.247
##################################
# Extracting the residuals
# from the Exploratory Factor Analysis
##################################
<- residuals(FA_ML_V_3F,
(FA_ML_V_3F_Residual diag=FALSE,
na.rm=TRUE))
## ACAD APPR COMM CFIT EXPR JFIT LETT LIKE ORGN POTL RESM
## ACAD NA
## APPR 0.02 NA
## COMM 0.04 -0.04 NA
## CFIT -0.07 -0.10 -0.01 NA
## EXPR 0.05 -0.07 -0.02 -0.06 NA
## JFIT -0.08 -0.09 -0.02 0.27 0.00 NA
## LETT -0.06 -0.14 -0.02 0.05 0.06 0.06 NA
## LIKE -0.04 0.19 -0.04 -0.02 -0.06 0.04 -0.06 NA
## ORGN 0.00 0.00 0.00 -0.01 0.01 -0.01 0.01 -0.01 NA
## POTL 0.01 0.01 0.00 0.00 0.00 -0.01 0.00 -0.01 0.00 NA
## RESM 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 NA
## SCON -0.04 0.27 -0.05 -0.03 0.03 -0.02 -0.15 0.34 0.00 -0.01 0.00
## [1] NA
##################################
# Obtaining Fit Indices
##################################
<- FA_ML_V_3F$rms) (FA_ML_V_3F_RMS
## [1] 0.07961754
<- FA_ML_V_3F$TLI) (FA_ML_V_3F_TLI
## [1] 0.6858498
<- FA_ML_V_3F$BIC) (FA_ML_V_3F_BIC
## [1] -35.60434
<- max(abs(FA_ML_V_3F_Residual),na.rm=TRUE)) (FA_ML_V_3F_MaxResidual
## [1] 0.3363878
<- sum(FA_ML_V_3F_Residual>abs(0.05),na.rm=TRUE)) (FA_ML_V_3F_HighResidual
## [1] 16
<- length(DPA.Descriptors.Numeric)*(length(DPA.Descriptors.Numeric)-1)/2) (FA_ML_V_3F_TotalResidual
## [1] 66
<- FA_ML_V_3F_HighResidual/FA_ML_V_3F_TotalResidual) (FA_ML_V_3F_HighResidualRate
## [1] 0.2424242
##################################
# Graph the factor loading matrices
##################################
fa.diagram(FA_ML_V_3F,
sort=TRUE,
cut=0,
digits=3,
main="Maximum Likelihood Factor Extraction + Varimax Rotation : 3 Factors",
cex=0.75)
##################################
# computing the internal consistency
# measure of reliability using the
# Cronbach's alpha coefficient
# for each factor
##################################
alpha(DPA.Descriptors.Numeric[,c("POTL","ACAD","EXPR","JFIT")])
##
## Reliability analysis
## Call: alpha(x = DPA.Descriptors.Numeric[, c("POTL", "ACAD", "EXPR",
## "JFIT")])
##
## raw_alpha std.alpha G6(smc) average_r S/N ase mean sd median_r
## 0.88 0.88 0.87 0.66 7.6 0.028 7.3 1.2 0.69
##
## 95% confidence boundaries
## lower alpha upper
## Feldt 0.81 0.88 0.93
## Duhachek 0.82 0.88 0.93
##
## Reliability if an item is dropped:
## raw_alpha std.alpha G6(smc) average_r S/N alpha se var.r med.r
## POTL 0.79 0.80 0.74 0.58 4.1 0.051 0.0063 0.54
## ACAD 0.84 0.84 0.80 0.64 5.4 0.040 0.0111 0.70
## EXPR 0.86 0.86 0.84 0.68 6.4 0.036 0.0169 0.71
## JFIT 0.89 0.89 0.85 0.72 7.8 0.028 0.0043 0.70
##
## Item statistics
## n raw.r std.r r.cor r.drop mean sd
## POTL 50 0.93 0.93 0.92 0.87 7.3 1.4
## ACAD 50 0.86 0.87 0.83 0.76 7.4 1.3
## EXPR 50 0.83 0.84 0.75 0.71 7.3 1.4
## JFIT 50 0.82 0.80 0.71 0.65 7.0 1.6
##
## Non missing response frequency for each item
## 3 4 5 6 7 8 9 10 miss
## POTL 0.00 0.04 0.06 0.18 0.22 0.30 0.18 0.02 0
## ACAD 0.00 0.02 0.02 0.22 0.28 0.24 0.18 0.04 0
## EXPR 0.00 0.00 0.10 0.20 0.24 0.24 0.18 0.04 0
## JFIT 0.06 0.00 0.06 0.22 0.26 0.24 0.12 0.04 0
alpha(DPA.Descriptors.Numeric[,c("ORGN","COMM","LIKE","APPR","SCON","CFIT")])
##
## Reliability analysis
## Call: alpha(x = DPA.Descriptors.Numeric[, c("ORGN", "COMM", "LIKE",
## "APPR", "SCON", "CFIT")])
##
## raw_alpha std.alpha G6(smc) average_r S/N ase mean sd median_r
## 0.88 0.89 0.9 0.57 7.8 0.026 7.1 1.1 0.53
##
## 95% confidence boundaries
## lower alpha upper
## Feldt 0.82 0.88 0.92
## Duhachek 0.83 0.88 0.93
##
## Reliability if an item is dropped:
## raw_alpha std.alpha G6(smc) average_r S/N alpha se var.r med.r
## ORGN 0.84 0.86 0.85 0.55 6.0 0.036 0.014 0.49
## COMM 0.85 0.87 0.86 0.56 6.4 0.034 0.012 0.53
## LIKE 0.86 0.86 0.88 0.56 6.4 0.030 0.019 0.52
## APPR 0.86 0.87 0.89 0.57 6.7 0.030 0.019 0.51
## SCON 0.86 0.87 0.87 0.57 6.5 0.029 0.015 0.53
## CFIT 0.87 0.88 0.90 0.59 7.3 0.029 0.020 0.53
##
## Item statistics
## n raw.r std.r r.cor r.drop mean sd
## ORGN 50 0.87 0.84 0.84 0.78 6.9 1.6
## COMM 50 0.84 0.81 0.79 0.74 6.9 1.5
## LIKE 50 0.78 0.81 0.77 0.69 7.4 1.1
## APPR 50 0.75 0.79 0.73 0.67 7.4 1.0
## SCON 50 0.76 0.80 0.76 0.67 7.3 1.2
## CFIT 50 0.78 0.75 0.66 0.64 6.9 1.6
##
## Non missing response frequency for each item
## 3 4 5 6 7 8 9 10 miss
## ORGN 0.02 0.04 0.20 0.10 0.24 0.24 0.16 0.00 0
## COMM 0.04 0.04 0.06 0.20 0.30 0.28 0.06 0.02 0
## LIKE 0.00 0.02 0.04 0.12 0.32 0.36 0.14 0.00 0
## APPR 0.00 0.00 0.02 0.16 0.32 0.38 0.10 0.02 0
## SCON 0.00 0.00 0.08 0.14 0.32 0.28 0.18 0.00 0
## CFIT 0.02 0.06 0.16 0.12 0.22 0.30 0.08 0.04 0
alpha(DPA.Descriptors.Numeric[,c("RESM","LETT")])
##
## Reliability analysis
## Call: alpha(x = DPA.Descriptors.Numeric[, c("RESM", "LETT")])
##
## raw_alpha std.alpha G6(smc) average_r S/N ase mean sd median_r
## 0.91 0.91 0.84 0.84 10 0.025 7.2 1.6 0.84
##
## 95% confidence boundaries
## lower alpha upper
## Feldt 0.84 0.91 0.95
## Duhachek 0.86 0.91 0.96
##
## Reliability if an item is dropped:
## raw_alpha std.alpha G6(smc) average_r S/N alpha se var.r med.r
## RESM 0.84 0.84 0.7 0.84 5.1 NA 0 0.84
## LETT 0.83 0.84 0.7 0.84 5.1 NA 0 0.84
##
## Item statistics
## n raw.r std.r r.cor r.drop mean sd
## RESM 50 0.96 0.96 0.88 0.84 7.2 1.7
## LETT 50 0.96 0.96 0.88 0.84 7.2 1.7
##
## Non missing response frequency for each item
## 4 5 6 7 8 9 10 miss
## RESM 0.08 0.06 0.22 0.18 0.16 0.24 0.06 0
## LETT 0.06 0.12 0.14 0.22 0.24 0.12 0.10 0
##################################
# Formulating the dandelion plot to
# visualize both factor variances and loadings
# from the factor loading matrices
##################################
<- factload(DPA.Descriptors.Numeric,
FA_ML_V_3F_FactorLoading cormeth = "pearson",
method = "mle",
nfac = 3,
rotation = "varimax")
<- rev(rainbow(100, start = 0, end = 0.2))
DandelionPlotPalette
dandelion(FA_ML_V_3F_FactorLoading,
bound=0,
mcex=c(1,1.2),
palet=DandelionPlotPalette)
##################################
# Conducting exploratory factor analysis
# using Maximum Likelihood extraction
# and Varimax rotation
# with 4 factors
##################################
<- fa(DPA.Descriptors.Numeric,
(FA_ML_V_4F nfactors = 4,
fm="ml",
rotate = "varimax",
residuals=TRUE,
SMC=TRUE,
n.obs=nrow(DPA.Descriptors.Numeric)))
## Factor Analysis using method = ml
## Call: fa(r = DPA.Descriptors.Numeric, nfactors = 4, n.obs = nrow(DPA.Descriptors.Numeric),
## rotate = "varimax", residuals = TRUE, SMC = TRUE, fm = "ml")
## Standardized loadings (pattern matrix) based upon correlation matrix
## ML3 ML4 ML2 ML1 h2 u2 com
## ACAD 0.49 0.38 0.12 0.24 0.45 0.546 2.5
## APPR 0.18 0.72 0.29 0.22 0.68 0.325 1.7
## COMM 0.21 0.26 0.79 0.23 0.79 0.206 1.6
## CFIT 0.78 0.16 0.42 0.19 0.85 0.148 1.8
## EXPR 0.50 0.30 -0.07 0.35 0.46 0.535 2.6
## JFIT 0.87 0.19 0.29 0.19 0.91 0.089 1.4
## LETT 0.27 0.06 0.22 0.81 0.78 0.224 1.4
## LIKE 0.31 0.67 0.27 0.17 0.65 0.350 1.9
## ORGN 0.23 0.30 0.91 0.06 0.97 0.027 1.4
## POTL 0.66 0.40 0.15 0.18 0.65 0.347 1.9
## RESM 0.22 0.33 0.10 0.91 1.00 0.005 1.4
## SCON 0.27 0.81 0.19 0.10 0.78 0.220 1.4
##
## ML3 ML4 ML2 ML1
## SS loadings 2.71 2.36 2.00 1.91
## Proportion Var 0.23 0.20 0.17 0.16
## Cumulative Var 0.23 0.42 0.59 0.75
## Proportion Explained 0.30 0.26 0.22 0.21
## Cumulative Proportion 0.30 0.56 0.79 1.00
##
## Mean item complexity = 1.7
## Test of the hypothesis that 4 factors are sufficient.
##
## df null model = 66 with the objective function = 10.7 with Chi Square = 472.51
## df of the model are 24 and the objective function was 1.36
##
## The root mean square of the residuals (RMSR) is 0.06
## The df corrected root mean square of the residuals is 0.1
##
## The harmonic n.obs is 50 with the empirical chi square 22.17 with prob < 0.57
## The total n.obs was 50 with Likelihood Chi Square = 56.38 with prob < 2e-04
##
## Tucker Lewis Index of factoring reliability = 0.764
## RMSEA index = 0.163 and the 90 % confidence intervals are 0.11 0.223
## BIC = -37.51
## Fit based upon off diagonal values = 0.99
## Measures of factor score adequacy
## ML3 ML4 ML2 ML1
## Correlation of (regression) scores with factors 0.95 0.91 0.97 0.99
## Multiple R square of scores with factors 0.91 0.83 0.95 0.98
## Minimum correlation of possible factor scores 0.82 0.65 0.90 0.95
<- FA_ML_V_4F %>%
(FA_ML_V_4F_Summary model_parameters(sort = TRUE, threshold = "max"))
## # Rotated loadings from Factor Analysis (varimax-rotation)
##
## Variable | ML3 | ML4 | ML2 | ML1 | Complexity | Uniqueness
## --------------------------------------------------------------
## JFIT | 0.87 | | | | 1.43 | 0.09
## CFIT | 0.78 | | | | 1.79 | 0.15
## POTL | 0.66 | | | | 1.94 | 0.35
## EXPR | 0.50 | | | | 2.56 | 0.54
## ACAD | 0.49 | | | | 2.54 | 0.55
## SCON | | 0.81 | | | 1.37 | 0.22
## APPR | | 0.72 | | | 1.66 | 0.32
## LIKE | | 0.67 | | | 1.90 | 0.35
## ORGN | | | 0.91 | | 1.37 | 0.03
## COMM | | | 0.79 | | 1.58 | 0.21
## RESM | | | | 0.91 | 1.41 | 5.00e-03
## LETT | | | | 0.81 | 1.39 | 0.22
##
## The 4 latent factors (varimax rotation) accounted for 74.82% of the total variance of the original data (ML3 = 22.58%, ML4 = 19.64%, ML2 = 16.70%, ML1 = 15.90%).
summary(FA_ML_V_4F_Summary)
## # (Explained) Variance of Components
##
## Parameter | ML3 | ML4 | ML2 | ML1
## ---------------------------------------------------------------
## Eigenvalues | 6.146 | 1.248 | 0.890 | 0.846
## Variance Explained | 0.226 | 0.196 | 0.167 | 0.159
## Variance Explained (Cumulative) | 0.226 | 0.422 | 0.589 | 0.748
## Variance Explained (Proportion) | 0.302 | 0.263 | 0.223 | 0.212
##################################
# Extracting the residuals
# from the Exploratory Factor Analysis
##################################
<- residuals(FA_ML_V_4F,
(FA_ML_V_4F_Residual diag=FALSE,
na.rm=TRUE))
## ACAD APPR COMM CFIT EXPR JFIT LETT LIKE ORGN POTL RESM
## ACAD NA
## APPR 0.03 NA
## COMM 0.05 -0.01 NA
## CFIT -0.04 0.00 0.00 NA
## EXPR 0.24 -0.05 -0.02 -0.08 NA
## JFIT -0.04 0.00 0.00 0.01 -0.01 NA
## LETT -0.04 -0.03 -0.03 -0.01 0.06 0.00 NA
## LIKE -0.08 -0.01 0.00 -0.01 -0.09 0.03 0.04 NA
## ORGN 0.00 0.00 0.00 0.00 0.01 0.00 0.01 0.00 NA
## POTL 0.26 0.03 0.02 -0.02 0.20 -0.02 0.00 -0.05 0.00 NA
## RESM 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 NA
## SCON -0.08 -0.01 -0.01 0.02 0.00 0.00 -0.01 0.05 0.00 -0.05 0.00
## [1] NA
##################################
# Obtaining Fit Indices
##################################
<- FA_ML_V_4F$rms) (FA_ML_V_4F_RMS
## [1] 0.05795189
<- FA_ML_V_4F$TLI) (FA_ML_V_4F_TLI
## [1] 0.7644223
<- FA_ML_V_4F$BIC) (FA_ML_V_4F_BIC
## [1] -37.50857
<- max(abs(FA_ML_V_4F_Residual),na.rm=TRUE)) (FA_ML_V_4F_MaxResidual
## [1] 0.2590579
<- sum(FA_ML_V_4F_Residual>abs(0.05),na.rm=TRUE)) (FA_ML_V_4F_HighResidual
## [1] 10
<- length(DPA.Descriptors.Numeric)*(length(DPA.Descriptors.Numeric)-1)/2) (FA_ML_V_4F_TotalResidual
## [1] 66
<- FA_ML_V_4F_HighResidual/FA_ML_V_4F_TotalResidual) (FA_ML_V_4F_HighResidualRate
## [1] 0.1515152
##################################
# Graph the factor loading matrices
##################################
fa.diagram(FA_ML_V_4F,
sort=TRUE,
cut=0,
digits=3,
main="Maximum Likelihood Factor Extraction + Varimax Rotation : 4 Factors",
cex=0.75)
##################################
# computing the internal consistency
# measure of reliability using the
# Cronbach's alpha coefficient
# for each factor
##################################
alpha(DPA.Descriptors.Numeric[,c("JFIT","CFIT","POTL","EXPR","ACAD")])
##
## Reliability analysis
## Call: alpha(x = DPA.Descriptors.Numeric[, c("JFIT", "CFIT", "POTL",
## "EXPR", "ACAD")])
##
## raw_alpha std.alpha G6(smc) average_r S/N ase mean sd median_r
## 0.9 0.9 0.92 0.64 8.8 0.024 7.2 1.2 0.66
##
## 95% confidence boundaries
## lower alpha upper
## Feldt 0.84 0.9 0.94
## Duhachek 0.85 0.9 0.94
##
## Reliability if an item is dropped:
## raw_alpha std.alpha G6(smc) average_r S/N alpha se var.r med.r
## JFIT 0.86 0.87 0.86 0.62 6.5 0.034 0.021 0.66
## CFIT 0.88 0.88 0.87 0.66 7.6 0.028 0.011 0.69
## POTL 0.85 0.85 0.88 0.58 5.6 0.036 0.029 0.53
## EXPR 0.89 0.89 0.91 0.68 8.5 0.025 0.022 0.68
## ACAD 0.88 0.88 0.90 0.64 7.3 0.029 0.028 0.68
##
## Item statistics
## n raw.r std.r r.cor r.drop mean sd
## JFIT 50 0.88 0.87 0.86 0.80 7.0 1.6
## CFIT 50 0.84 0.82 0.80 0.72 6.9 1.6
## POTL 50 0.91 0.92 0.90 0.85 7.3 1.4
## EXPR 50 0.76 0.78 0.71 0.64 7.3 1.4
## ACAD 50 0.81 0.83 0.78 0.72 7.4 1.3
##
## Non missing response frequency for each item
## 3 4 5 6 7 8 9 10 miss
## JFIT 0.06 0.00 0.06 0.22 0.26 0.24 0.12 0.04 0
## CFIT 0.02 0.06 0.16 0.12 0.22 0.30 0.08 0.04 0
## POTL 0.00 0.04 0.06 0.18 0.22 0.30 0.18 0.02 0
## EXPR 0.00 0.00 0.10 0.20 0.24 0.24 0.18 0.04 0
## ACAD 0.00 0.02 0.02 0.22 0.28 0.24 0.18 0.04 0
alpha(DPA.Descriptors.Numeric[,c("SCON","APPR","LIKE")])
##
## Reliability analysis
## Call: alpha(x = DPA.Descriptors.Numeric[, c("SCON", "APPR", "LIKE")])
##
## raw_alpha std.alpha G6(smc) average_r S/N ase mean sd median_r
## 0.87 0.87 0.83 0.7 6.9 0.031 7.4 0.99 0.7
##
## 95% confidence boundaries
## lower alpha upper
## Feldt 0.80 0.87 0.92
## Duhachek 0.81 0.87 0.93
##
## Reliability if an item is dropped:
## raw_alpha std.alpha G6(smc) average_r S/N alpha se var.r med.r
## SCON 0.78 0.78 0.64 0.64 3.5 0.062 NA 0.64
## APPR 0.86 0.86 0.75 0.75 6.1 0.040 NA 0.75
## LIKE 0.82 0.82 0.70 0.70 4.6 0.051 NA 0.70
##
## Item statistics
## n raw.r std.r r.cor r.drop mean sd
## SCON 50 0.92 0.91 0.86 0.80 7.3 1.2
## APPR 50 0.86 0.87 0.76 0.71 7.4 1.0
## LIKE 50 0.90 0.89 0.82 0.76 7.4 1.1
##
## Non missing response frequency for each item
## 4 5 6 7 8 9 10 miss
## SCON 0.00 0.08 0.14 0.32 0.28 0.18 0.00 0
## APPR 0.00 0.02 0.16 0.32 0.38 0.10 0.02 0
## LIKE 0.02 0.04 0.12 0.32 0.36 0.14 0.00 0
alpha(DPA.Descriptors.Numeric[,c("ORGN","COMM")])
##
## Reliability analysis
## Call: alpha(x = DPA.Descriptors.Numeric[, c("ORGN", "COMM")])
##
## raw_alpha std.alpha G6(smc) average_r S/N ase mean sd median_r
## 0.92 0.93 0.86 0.86 12 0.021 6.9 1.5 0.86
##
## 95% confidence boundaries
## lower alpha upper
## Feldt 0.87 0.92 0.96
## Duhachek 0.88 0.92 0.97
##
## Reliability if an item is dropped:
## raw_alpha std.alpha G6(smc) average_r S/N alpha se var.r med.r
## ORGN 0.92 0.86 0.74 0.86 6.2 NA 0 0.86
## COMM 0.80 0.86 0.74 0.86 6.2 NA 0 0.86
##
## Item statistics
## n raw.r std.r r.cor r.drop mean sd
## ORGN 50 0.97 0.96 0.9 0.86 6.9 1.6
## COMM 50 0.96 0.96 0.9 0.86 6.9 1.5
##
## Non missing response frequency for each item
## 3 4 5 6 7 8 9 10 miss
## ORGN 0.02 0.04 0.20 0.1 0.24 0.24 0.16 0.00 0
## COMM 0.04 0.04 0.06 0.2 0.30 0.28 0.06 0.02 0
alpha(DPA.Descriptors.Numeric[,c("RESM","LETT")])
##
## Reliability analysis
## Call: alpha(x = DPA.Descriptors.Numeric[, c("RESM", "LETT")])
##
## raw_alpha std.alpha G6(smc) average_r S/N ase mean sd median_r
## 0.91 0.91 0.84 0.84 10 0.025 7.2 1.6 0.84
##
## 95% confidence boundaries
## lower alpha upper
## Feldt 0.84 0.91 0.95
## Duhachek 0.86 0.91 0.96
##
## Reliability if an item is dropped:
## raw_alpha std.alpha G6(smc) average_r S/N alpha se var.r med.r
## RESM 0.84 0.84 0.7 0.84 5.1 NA 0 0.84
## LETT 0.83 0.84 0.7 0.84 5.1 NA 0 0.84
##
## Item statistics
## n raw.r std.r r.cor r.drop mean sd
## RESM 50 0.96 0.96 0.88 0.84 7.2 1.7
## LETT 50 0.96 0.96 0.88 0.84 7.2 1.7
##
## Non missing response frequency for each item
## 4 5 6 7 8 9 10 miss
## RESM 0.08 0.06 0.22 0.18 0.16 0.24 0.06 0
## LETT 0.06 0.12 0.14 0.22 0.24 0.12 0.10 0
##################################
# Formulating the dandelion plot to
# visualize both factor variances and loadings
# from the factor loading matrices
##################################
<- factload(DPA.Descriptors.Numeric,
FA_ML_V_4F_FactorLoading cormeth = "pearson",
method = "mle",
nfac = 4,
rotation = "varimax")
<- rev(rainbow(100, start = 0, end = 0.2))
DandelionPlotPalette
dandelion(FA_ML_V_4F_FactorLoading,
bound=0,
mcex=c(1,1.2),
palet=DandelionPlotPalette)
##################################
# Conducting exploratory factor analysis
# using Maximum Likelihood extraction
# and Varimax rotation
# with 5 factors
##################################
<- fa(DPA.Descriptors.Numeric,
(FA_ML_V_5F nfactors = 5,
fm="ml",
rotate = "varimax",
residuals=TRUE,
SMC=TRUE,
n.obs=nrow(DPA.Descriptors.Numeric)))
## Factor Analysis using method = ml
## Call: fa(r = DPA.Descriptors.Numeric, nfactors = 5, n.obs = nrow(DPA.Descriptors.Numeric),
## rotate = "varimax", residuals = TRUE, SMC = TRUE, fm = "ml")
## Standardized loadings (pattern matrix) based upon correlation matrix
## ML5 ML4 ML2 ML1 ML3 h2 u2 com
## ACAD 0.81 0.20 0.20 0.17 0.14 0.78 0.218 1.4
## APPR 0.28 0.65 0.31 0.21 0.05 0.65 0.353 2.1
## COMM 0.14 0.25 0.79 0.24 0.20 0.80 0.196 1.6
## CFIT 0.30 0.22 0.37 0.21 0.72 0.85 0.154 2.3
## EXPR 0.69 0.19 -0.04 0.29 0.20 0.64 0.362 1.7
## JFIT 0.37 0.23 0.23 0.21 0.81 0.95 0.050 1.9
## LETT 0.19 0.07 0.20 0.81 0.21 0.77 0.229 1.4
## LIKE 0.17 0.71 0.24 0.18 0.25 0.68 0.319 1.8
## ORGN 0.10 0.31 0.89 0.07 0.25 0.96 0.035 1.5
## POTL 0.79 0.27 0.18 0.12 0.35 0.87 0.132 1.8
## RESM 0.27 0.30 0.10 0.90 0.10 1.00 0.005 1.5
## SCON 0.22 0.87 0.17 0.09 0.16 0.87 0.130 1.3
##
## ML5 ML4 ML2 ML1 ML3
## SS loadings 2.29 2.18 1.92 1.82 1.61
## Proportion Var 0.19 0.18 0.16 0.15 0.13
## Cumulative Var 0.19 0.37 0.53 0.68 0.82
## Proportion Explained 0.23 0.22 0.20 0.19 0.16
## Cumulative Proportion 0.23 0.45 0.65 0.84 1.00
##
## Mean item complexity = 1.7
## Test of the hypothesis that 5 factors are sufficient.
##
## df null model = 66 with the objective function = 10.7 with Chi Square = 472.51
## df of the model are 16 and the objective function was 0.42
##
## The root mean square of the residuals (RMSR) is 0.02
## The df corrected root mean square of the residuals is 0.04
##
## The harmonic n.obs is 50 with the empirical chi square 2.44 with prob < 1
## The total n.obs was 50 with Likelihood Chi Square = 17.27 with prob < 0.37
##
## Tucker Lewis Index of factoring reliability = 0.986
## RMSEA index = 0.034 and the 90 % confidence intervals are 0 0.141
## BIC = -45.32
## Fit based upon off diagonal values = 1
## Measures of factor score adequacy
## ML5 ML4 ML2 ML1 ML3
## Correlation of (regression) scores with factors 0.92 0.93 0.97 0.99 0.95
## Multiple R square of scores with factors 0.85 0.86 0.94 0.98 0.90
## Minimum correlation of possible factor scores 0.71 0.72 0.88 0.96 0.80
<- FA_ML_V_5F %>%
(FA_ML_V_5F_Summary model_parameters(sort = TRUE, threshold = "max"))
## # Rotated loadings from Factor Analysis (varimax-rotation)
##
## Variable | ML5 | ML4 | ML2 | ML1 | ML3 | Complexity | Uniqueness
## ---------------------------------------------------------------------
## ACAD | 0.81 | | | | | 1.40 | 0.22
## POTL | 0.79 | | | | | 1.84 | 0.13
## EXPR | 0.69 | | | | | 1.71 | 0.36
## SCON | | 0.87 | | | | 1.30 | 0.13
## LIKE | | 0.71 | | | | 1.81 | 0.32
## APPR | | 0.65 | | | | 2.14 | 0.35
## ORGN | | | 0.89 | | | 1.45 | 0.04
## COMM | | | 0.79 | | | 1.62 | 0.20
## RESM | | | | 0.90 | | 1.47 | 4.99e-03
## LETT | | | | 0.81 | | 1.40 | 0.23
## JFIT | | | | | 0.81 | 1.94 | 0.05
## CFIT | | | | | 0.72 | 2.34 | 0.15
##
## The 5 latent factors (varimax rotation) accounted for 81.81% of the total variance of the original data (ML5 = 19.05%, ML4 = 18.17%, ML2 = 15.99%, ML1 = 15.16%, ML3 = 13.44%).
summary(FA_ML_V_5F_Summary)
## # (Explained) Variance of Components
##
## Parameter | ML5 | ML4 | ML2 | ML1 | ML3
## -----------------------------------------------------------------------
## Eigenvalues | 6.215 | 1.301 | 0.958 | 0.877 | 0.477
## Variance Explained | 0.190 | 0.182 | 0.160 | 0.152 | 0.134
## Variance Explained (Cumulative) | 0.190 | 0.372 | 0.532 | 0.684 | 0.818
## Variance Explained (Proportion) | 0.233 | 0.222 | 0.195 | 0.185 | 0.164
##################################
# Extracting the residuals
# from the Exploratory Factor Analysis
##################################
<- residuals(FA_ML_V_5F,
(FA_ML_V_5F_Residual diag=FALSE,
na.rm=TRUE))
## ACAD APPR COMM CFIT EXPR JFIT LETT LIKE ORGN POTL RESM
## ACAD NA
## APPR 0.01 NA
## COMM 0.02 -0.01 NA
## CFIT 0.00 0.00 0.00 NA
## EXPR 0.00 -0.07 -0.03 -0.05 NA
## JFIT 0.00 0.00 0.00 0.00 0.01 NA
## LETT -0.04 -0.04 -0.03 -0.01 0.07 0.00 NA
## LIKE 0.01 0.01 0.01 -0.03 -0.04 0.01 0.03 NA
## ORGN 0.00 0.00 0.00 0.00 0.01 0.00 0.01 0.00 NA
## POTL 0.00 0.01 0.00 0.01 0.01 0.00 0.01 0.01 0.00 NA
## RESM 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 NA
## SCON -0.01 -0.01 0.00 0.01 0.04 0.00 -0.01 0.00 0.00 0.00 0.00
## [1] NA
##################################
# Obtaining Fit Indices
##################################
<- FA_ML_V_5F$rms) (FA_ML_V_5F_RMS
## [1] 0.01923904
<- FA_ML_V_5F$TLI) (FA_ML_V_5F_TLI
## [1] 0.9858829
<- FA_ML_V_5F$BIC) (FA_ML_V_5F_BIC
## [1] -45.32318
<- max(abs(FA_ML_V_5F_Residual),na.rm=TRUE)) (FA_ML_V_5F_MaxResidual
## [1] 0.0733741
<- sum(FA_ML_V_5F_Residual>abs(0.05),na.rm=TRUE)) (FA_ML_V_5F_HighResidual
## [1] 2
<- length(DPA.Descriptors.Numeric)*(length(DPA.Descriptors.Numeric)-1)/2) (FA_ML_V_5F_TotalResidual
## [1] 66
<- FA_ML_V_5F_HighResidual/FA_ML_V_5F_TotalResidual) (FA_ML_V_5F_HighResidualRate
## [1] 0.03030303
##################################
# Graph the factor loading matrices
##################################
fa.diagram(FA_ML_V_5F,
sort=TRUE,
cut=0,
digits=3,
main="Maximum Likelihood Factor Extraction + Varimax Rotation : 5 Factors",
cex=0.75)
##################################
# computing the internal consistency
# measure of reliability using the
# Cronbach's alpha coefficient
# for each factor
##################################
alpha(DPA.Descriptors.Numeric[,c("ACAD","POTL","EXPR")])
##
## Reliability analysis
## Call: alpha(x = DPA.Descriptors.Numeric[, c("ACAD", "POTL", "EXPR")])
##
## raw_alpha std.alpha G6(smc) average_r S/N ase mean sd median_r
## 0.89 0.89 0.85 0.72 7.8 0.028 7.3 1.2 0.7
##
## 95% confidence boundaries
## lower alpha upper
## Feldt 0.82 0.89 0.93
## Duhachek 0.83 0.89 0.94
##
## Reliability if an item is dropped:
## raw_alpha std.alpha G6(smc) average_r S/N alpha se var.r med.r
## ACAD 0.83 0.83 0.70 0.70 4.7 0.049 NA 0.70
## POTL 0.80 0.80 0.67 0.67 4.0 0.056 NA 0.67
## EXPR 0.88 0.89 0.80 0.80 7.8 0.032 NA 0.80
##
## Item statistics
## n raw.r std.r r.cor r.drop mean sd
## ACAD 50 0.91 0.91 0.85 0.79 7.4 1.3
## POTL 50 0.92 0.92 0.88 0.82 7.3 1.4
## EXPR 50 0.88 0.88 0.76 0.72 7.3 1.4
##
## Non missing response frequency for each item
## 4 5 6 7 8 9 10 miss
## ACAD 0.02 0.02 0.22 0.28 0.24 0.18 0.04 0
## POTL 0.04 0.06 0.18 0.22 0.30 0.18 0.02 0
## EXPR 0.00 0.10 0.20 0.24 0.24 0.18 0.04 0
alpha(DPA.Descriptors.Numeric[,c("SCON","LIKE","APPR")])
##
## Reliability analysis
## Call: alpha(x = DPA.Descriptors.Numeric[, c("SCON", "LIKE", "APPR")])
##
## raw_alpha std.alpha G6(smc) average_r S/N ase mean sd median_r
## 0.87 0.87 0.83 0.7 6.9 0.031 7.4 0.99 0.7
##
## 95% confidence boundaries
## lower alpha upper
## Feldt 0.80 0.87 0.92
## Duhachek 0.81 0.87 0.93
##
## Reliability if an item is dropped:
## raw_alpha std.alpha G6(smc) average_r S/N alpha se var.r med.r
## SCON 0.78 0.78 0.64 0.64 3.5 0.062 NA 0.64
## LIKE 0.82 0.82 0.70 0.70 4.6 0.051 NA 0.70
## APPR 0.86 0.86 0.75 0.75 6.1 0.040 NA 0.75
##
## Item statistics
## n raw.r std.r r.cor r.drop mean sd
## SCON 50 0.92 0.91 0.86 0.80 7.3 1.2
## LIKE 50 0.90 0.89 0.82 0.76 7.4 1.1
## APPR 50 0.86 0.87 0.76 0.71 7.4 1.0
##
## Non missing response frequency for each item
## 4 5 6 7 8 9 10 miss
## SCON 0.00 0.08 0.14 0.32 0.28 0.18 0.00 0
## LIKE 0.02 0.04 0.12 0.32 0.36 0.14 0.00 0
## APPR 0.00 0.02 0.16 0.32 0.38 0.10 0.02 0
alpha(DPA.Descriptors.Numeric[,c("ORGN","COMM")])
##
## Reliability analysis
## Call: alpha(x = DPA.Descriptors.Numeric[, c("ORGN", "COMM")])
##
## raw_alpha std.alpha G6(smc) average_r S/N ase mean sd median_r
## 0.92 0.93 0.86 0.86 12 0.021 6.9 1.5 0.86
##
## 95% confidence boundaries
## lower alpha upper
## Feldt 0.87 0.92 0.96
## Duhachek 0.88 0.92 0.97
##
## Reliability if an item is dropped:
## raw_alpha std.alpha G6(smc) average_r S/N alpha se var.r med.r
## ORGN 0.92 0.86 0.74 0.86 6.2 NA 0 0.86
## COMM 0.80 0.86 0.74 0.86 6.2 NA 0 0.86
##
## Item statistics
## n raw.r std.r r.cor r.drop mean sd
## ORGN 50 0.97 0.96 0.9 0.86 6.9 1.6
## COMM 50 0.96 0.96 0.9 0.86 6.9 1.5
##
## Non missing response frequency for each item
## 3 4 5 6 7 8 9 10 miss
## ORGN 0.02 0.04 0.20 0.1 0.24 0.24 0.16 0.00 0
## COMM 0.04 0.04 0.06 0.2 0.30 0.28 0.06 0.02 0
alpha(DPA.Descriptors.Numeric[,c("RESM","LETT")])
##
## Reliability analysis
## Call: alpha(x = DPA.Descriptors.Numeric[, c("RESM", "LETT")])
##
## raw_alpha std.alpha G6(smc) average_r S/N ase mean sd median_r
## 0.91 0.91 0.84 0.84 10 0.025 7.2 1.6 0.84
##
## 95% confidence boundaries
## lower alpha upper
## Feldt 0.84 0.91 0.95
## Duhachek 0.86 0.91 0.96
##
## Reliability if an item is dropped:
## raw_alpha std.alpha G6(smc) average_r S/N alpha se var.r med.r
## RESM 0.84 0.84 0.7 0.84 5.1 NA 0 0.84
## LETT 0.83 0.84 0.7 0.84 5.1 NA 0 0.84
##
## Item statistics
## n raw.r std.r r.cor r.drop mean sd
## RESM 50 0.96 0.96 0.88 0.84 7.2 1.7
## LETT 50 0.96 0.96 0.88 0.84 7.2 1.7
##
## Non missing response frequency for each item
## 4 5 6 7 8 9 10 miss
## RESM 0.08 0.06 0.22 0.18 0.16 0.24 0.06 0
## LETT 0.06 0.12 0.14 0.22 0.24 0.12 0.10 0
alpha(DPA.Descriptors.Numeric[,c("JFIT","CFIT")])
##
## Reliability analysis
## Call: alpha(x = DPA.Descriptors.Numeric[, c("JFIT", "CFIT")])
##
## raw_alpha std.alpha G6(smc) average_r S/N ase mean sd median_r
## 0.94 0.94 0.88 0.88 15 0.018 7 1.6 0.88
##
## 95% confidence boundaries
## lower alpha upper
## Feldt 0.89 0.94 0.96
## Duhachek 0.90 0.94 0.97
##
## Reliability if an item is dropped:
## raw_alpha std.alpha G6(smc) average_r S/N alpha se var.r med.r
## JFIT 0.87 0.88 0.78 0.88 7.5 NA 0 0.88
## CFIT 0.90 0.88 0.78 0.88 7.5 NA 0 0.88
##
## Item statistics
## n raw.r std.r r.cor r.drop mean sd
## JFIT 50 0.97 0.97 0.91 0.88 7.0 1.6
## CFIT 50 0.97 0.97 0.91 0.88 6.9 1.6
##
## Non missing response frequency for each item
## 3 4 5 6 7 8 9 10 miss
## JFIT 0.06 0.00 0.06 0.22 0.26 0.24 0.12 0.04 0
## CFIT 0.02 0.06 0.16 0.12 0.22 0.30 0.08 0.04 0
##################################
# Formulating the dandelion plot to
# visualize both factor variances and loadings
# from the factor loading matrices
##################################
<- factload(DPA.Descriptors.Numeric,
FA_ML_V_5F_FactorLoading cormeth = "pearson",
method = "mle",
nfac = 5,
rotation = "varimax")
<- rev(rainbow(100, start = 0, end = 0.2))
DandelionPlotPalette
dandelion(FA_ML_V_5F_FactorLoading,
bound=0,
mcex=c(1,1.2),
palet=DandelionPlotPalette)
par(mfrow=c(1,3))
fa.diagram(FA_ML_V_3F,
sort=TRUE,
cut=0,
digits=3,
main="Maximum Likelihood Factor Extraction + Varimax Rotation : 3 Factors",
cex=0.75)
fa.diagram(FA_ML_V_4F,
sort=TRUE,
cut=0,
digits=3,
main="Maximum Likelihood Factor Extraction + Varimax Rotation : 4 Factors",
cex=0.75)
fa.diagram(FA_ML_V_5F,
sort=TRUE,
cut=0,
digits=3,
main="Maximum Likelihood Factor Extraction + Varimax Rotation : 5 Factors",
cex=0.75)
##################################
# Implementing various procedures for determining
# factor retention based on
# the maximum consensus between methods
##################################
<- parameters::n_factors(DPA.Descriptors.Numeric,
(FA_ML_P_MethodAgreementProcedure algorithm = "mle",
rotation = "promax"))
## # Method Agreement Procedure:
##
## The choice of 4 dimensions is supported by 5 (26.32%) methods out of 19 (Bentler, beta, Parallel analysis, Kaiser criterion, Scree (SE)).
as.data.frame(FA_ML_P_MethodAgreementProcedure)
## n_Factors Method Family
## 1 1 Acceleration factor Scree
## 2 1 Scree (R2) Scree_SE
## 3 1 VSS complexity 1 VSS
## 4 2 Optimal coordinates Scree
## 5 2 VSS complexity 2 VSS
## 6 3 CNG CNG
## 7 4 Bentler Bentler
## 8 4 beta Multiple_regression
## 9 4 Parallel analysis Scree
## 10 4 Kaiser criterion Scree
## 11 4 Scree (SE) Scree_SE
## 12 5 Velicer's MAP Velicers_MAP
## 13 5 BIC BIC
## 14 6 Bartlett Barlett
## 15 6 t Multiple_regression
## 16 6 p Multiple_regression
## 17 6 BIC (adjusted) BIC
## 18 7 Anderson Barlett
## 19 7 Lawley Barlett
##################################
# Conducting exploratory factor analysis
# using Maximum Likelihood extraction
# and Promax rotation
# with 3 factors
##################################
<- fa(DPA.Descriptors.Numeric,
(FA_ML_P_3F nfactors = 3,
fm="ml",
rotate = "promax",
residuals=TRUE,
SMC=TRUE,
n.obs=nrow(DPA.Descriptors.Numeric)))
## Factor Analysis using method = ml
## Call: fa(r = DPA.Descriptors.Numeric, nfactors = 3, n.obs = nrow(DPA.Descriptors.Numeric),
## rotate = "promax", residuals = TRUE, SMC = TRUE, fm = "ml")
## Standardized loadings (pattern matrix) based upon correlation matrix
## ML3 ML2 ML1 h2 u2 com
## ACAD 0.88 -0.04 -0.05 0.67 0.326 1.0
## APPR 0.19 0.40 0.19 0.46 0.543 1.9
## COMM -0.20 0.99 0.05 0.80 0.203 1.1
## CFIT 0.44 0.47 -0.05 0.62 0.377 2.0
## EXPR 0.85 -0.32 0.17 0.61 0.385 1.4
## JFIT 0.60 0.28 -0.04 0.62 0.379 1.4
## LETT -0.08 0.04 0.87 0.71 0.289 1.0
## LIKE 0.19 0.41 0.15 0.44 0.563 1.7
## ORGN -0.20 1.18 -0.18 0.96 0.043 1.1
## POTL 1.08 -0.02 -0.18 0.92 0.079 1.1
## RESM -0.02 -0.10 1.06 1.00 0.005 1.0
## SCON 0.28 0.35 0.09 0.40 0.597 2.1
##
## ML3 ML2 ML1
## SS loadings 3.27 3.05 1.89
## Proportion Var 0.27 0.25 0.16
## Cumulative Var 0.27 0.53 0.68
## Proportion Explained 0.40 0.37 0.23
## Cumulative Proportion 0.40 0.77 1.00
##
## With factor correlations of
## ML3 ML2 ML1
## ML3 1.00 0.67 0.64
## ML2 0.67 1.00 0.58
## ML1 0.64 0.58 1.00
##
## Mean item complexity = 1.4
## Test of the hypothesis that 3 factors are sufficient.
##
## df null model = 66 with the objective function = 10.7 with Chi Square = 472.51
## df of the model are 33 and the objective function was 2.22
##
## The root mean square of the residuals (RMSR) is 0.08
## The df corrected root mean square of the residuals is 0.11
##
## The harmonic n.obs is 50 with the empirical chi square 41.84 with prob < 0.14
## The total n.obs was 50 with Likelihood Chi Square = 93.49 with prob < 1.1e-07
##
## Tucker Lewis Index of factoring reliability = 0.686
## RMSEA index = 0.19 and the 90 % confidence intervals are 0.148 0.24
## BIC = -35.6
## Fit based upon off diagonal values = 0.98
## Measures of factor score adequacy
## ML3 ML2 ML1
## Correlation of (regression) scores with factors 0.98 0.99 1.00
## Multiple R square of scores with factors 0.96 0.97 1.00
## Minimum correlation of possible factor scores 0.91 0.95 0.99
<- FA_ML_P_3F %>%
(FA_ML_P_3F_Summary model_parameters(sort = TRUE, threshold = "max"))
## # Rotated loadings from Factor Analysis (promax-rotation)
##
## Variable | ML3 | ML2 | ML1 | Complexity | Uniqueness
## -------------------------------------------------------
## POTL | 1.08 | | | 1.06 | 0.08
## ACAD | 0.88 | | | 1.01 | 0.33
## EXPR | 0.85 | | | 1.36 | 0.39
## JFIT | 0.60 | | | 1.44 | 0.38
## ORGN | | 1.18 | | 1.10 | 0.04
## COMM | | 0.99 | | 1.09 | 0.20
## CFIT | | 0.47 | | 2.02 | 0.38
## LIKE | | 0.41 | | 1.70 | 0.56
## APPR | | 0.40 | | 1.90 | 0.54
## SCON | | 0.35 | | 2.08 | 0.60
## RESM | | | 1.06 | 1.02 | 4.98e-03
## LETT | | | 0.87 | 1.02 | 0.29
##
## The 3 latent factors (promax rotation) accounted for 68.42% of the total variance of the original data (ML3 = 27.29%, ML2 = 25.39%, ML1 = 15.75%).
summary(FA_ML_P_3F_Summary)
## # (Explained) Variance of Components
##
## Parameter | ML3 | ML2 | ML1
## -------------------------------------------------------
## Eigenvalues | 6.079 | 1.261 | 0.922
## Variance Explained | 0.273 | 0.254 | 0.157
## Variance Explained (Cumulative) | 0.273 | 0.527 | 0.684
## Variance Explained (Proportion) | 0.399 | 0.371 | 0.230
##################################
# Extracting the residuals
# from the Exploratory Factor Analysis
##################################
<- residuals(FA_ML_P_3F,
(FA_ML_P_3F_Residual diag=FALSE,
na.rm=TRUE))
## ACAD APPR COMM CFIT EXPR JFIT LETT LIKE ORGN POTL RESM
## ACAD NA
## APPR 0.02 NA
## COMM 0.04 -0.04 NA
## CFIT -0.07 -0.10 -0.01 NA
## EXPR 0.05 -0.07 -0.02 -0.06 NA
## JFIT -0.08 -0.09 -0.02 0.27 0.00 NA
## LETT -0.06 -0.14 -0.02 0.05 0.06 0.06 NA
## LIKE -0.04 0.19 -0.04 -0.02 -0.06 0.04 -0.06 NA
## ORGN 0.00 0.00 0.00 -0.01 0.01 -0.01 0.01 -0.01 NA
## POTL 0.01 0.01 0.00 0.00 0.00 -0.01 0.00 -0.01 0.00 NA
## RESM 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 NA
## SCON -0.04 0.27 -0.05 -0.03 0.03 -0.02 -0.15 0.34 0.00 -0.01 0.00
## [1] NA
##################################
# Obtaining Fit Indices
##################################
<- FA_ML_P_3F$rms) (FA_ML_P_3F_RMS
## [1] 0.07961754
<- FA_ML_P_3F$TLI) (FA_ML_P_3F_TLI
## [1] 0.6858498
<- FA_ML_P_3F$BIC) (FA_ML_P_3F_BIC
## [1] -35.60434
<- max(abs(FA_ML_P_3F_Residual),na.rm=TRUE)) (FA_ML_P_3F_MaxResidual
## [1] 0.3363878
<- sum(FA_ML_P_3F_Residual>abs(0.05),na.rm=TRUE)) (FA_ML_P_3F_HighResidual
## [1] 16
<- length(DPA.Descriptors.Numeric)*(length(DPA.Descriptors.Numeric)-1)/2) (FA_ML_P_3F_TotalResidual
## [1] 66
<- FA_ML_P_3F_HighResidual/FA_ML_P_3F_TotalResidual) (FA_ML_P_3F_HighResidualRate
## [1] 0.2424242
##################################
# Graph the factor loading matrices
##################################
fa.diagram(FA_ML_P_3F,
sort=TRUE,
cut=0,
digits=3,
main="Maximum Likelihood Factor Extraction + Promax Rotation : 3 Factors",
cex=0.75)
##################################
# computing the internal consistency
# measure of reliability using the
# Cronbach's alpha coefficient
# for each factor
##################################
alpha(DPA.Descriptors.Numeric[,c("POTL","ACAD","EXPR","JFIT")])
##
## Reliability analysis
## Call: alpha(x = DPA.Descriptors.Numeric[, c("POTL", "ACAD", "EXPR",
## "JFIT")])
##
## raw_alpha std.alpha G6(smc) average_r S/N ase mean sd median_r
## 0.88 0.88 0.87 0.66 7.6 0.028 7.3 1.2 0.69
##
## 95% confidence boundaries
## lower alpha upper
## Feldt 0.81 0.88 0.93
## Duhachek 0.82 0.88 0.93
##
## Reliability if an item is dropped:
## raw_alpha std.alpha G6(smc) average_r S/N alpha se var.r med.r
## POTL 0.79 0.80 0.74 0.58 4.1 0.051 0.0063 0.54
## ACAD 0.84 0.84 0.80 0.64 5.4 0.040 0.0111 0.70
## EXPR 0.86 0.86 0.84 0.68 6.4 0.036 0.0169 0.71
## JFIT 0.89 0.89 0.85 0.72 7.8 0.028 0.0043 0.70
##
## Item statistics
## n raw.r std.r r.cor r.drop mean sd
## POTL 50 0.93 0.93 0.92 0.87 7.3 1.4
## ACAD 50 0.86 0.87 0.83 0.76 7.4 1.3
## EXPR 50 0.83 0.84 0.75 0.71 7.3 1.4
## JFIT 50 0.82 0.80 0.71 0.65 7.0 1.6
##
## Non missing response frequency for each item
## 3 4 5 6 7 8 9 10 miss
## POTL 0.00 0.04 0.06 0.18 0.22 0.30 0.18 0.02 0
## ACAD 0.00 0.02 0.02 0.22 0.28 0.24 0.18 0.04 0
## EXPR 0.00 0.00 0.10 0.20 0.24 0.24 0.18 0.04 0
## JFIT 0.06 0.00 0.06 0.22 0.26 0.24 0.12 0.04 0
alpha(DPA.Descriptors.Numeric[,c("ORGN","COMM","LIKE","APPR","SCON","CFIT")])
##
## Reliability analysis
## Call: alpha(x = DPA.Descriptors.Numeric[, c("ORGN", "COMM", "LIKE",
## "APPR", "SCON", "CFIT")])
##
## raw_alpha std.alpha G6(smc) average_r S/N ase mean sd median_r
## 0.88 0.89 0.9 0.57 7.8 0.026 7.1 1.1 0.53
##
## 95% confidence boundaries
## lower alpha upper
## Feldt 0.82 0.88 0.92
## Duhachek 0.83 0.88 0.93
##
## Reliability if an item is dropped:
## raw_alpha std.alpha G6(smc) average_r S/N alpha se var.r med.r
## ORGN 0.84 0.86 0.85 0.55 6.0 0.036 0.014 0.49
## COMM 0.85 0.87 0.86 0.56 6.4 0.034 0.012 0.53
## LIKE 0.86 0.86 0.88 0.56 6.4 0.030 0.019 0.52
## APPR 0.86 0.87 0.89 0.57 6.7 0.030 0.019 0.51
## SCON 0.86 0.87 0.87 0.57 6.5 0.029 0.015 0.53
## CFIT 0.87 0.88 0.90 0.59 7.3 0.029 0.020 0.53
##
## Item statistics
## n raw.r std.r r.cor r.drop mean sd
## ORGN 50 0.87 0.84 0.84 0.78 6.9 1.6
## COMM 50 0.84 0.81 0.79 0.74 6.9 1.5
## LIKE 50 0.78 0.81 0.77 0.69 7.4 1.1
## APPR 50 0.75 0.79 0.73 0.67 7.4 1.0
## SCON 50 0.76 0.80 0.76 0.67 7.3 1.2
## CFIT 50 0.78 0.75 0.66 0.64 6.9 1.6
##
## Non missing response frequency for each item
## 3 4 5 6 7 8 9 10 miss
## ORGN 0.02 0.04 0.20 0.10 0.24 0.24 0.16 0.00 0
## COMM 0.04 0.04 0.06 0.20 0.30 0.28 0.06 0.02 0
## LIKE 0.00 0.02 0.04 0.12 0.32 0.36 0.14 0.00 0
## APPR 0.00 0.00 0.02 0.16 0.32 0.38 0.10 0.02 0
## SCON 0.00 0.00 0.08 0.14 0.32 0.28 0.18 0.00 0
## CFIT 0.02 0.06 0.16 0.12 0.22 0.30 0.08 0.04 0
alpha(DPA.Descriptors.Numeric[,c("RESM","LETT")])
##
## Reliability analysis
## Call: alpha(x = DPA.Descriptors.Numeric[, c("RESM", "LETT")])
##
## raw_alpha std.alpha G6(smc) average_r S/N ase mean sd median_r
## 0.91 0.91 0.84 0.84 10 0.025 7.2 1.6 0.84
##
## 95% confidence boundaries
## lower alpha upper
## Feldt 0.84 0.91 0.95
## Duhachek 0.86 0.91 0.96
##
## Reliability if an item is dropped:
## raw_alpha std.alpha G6(smc) average_r S/N alpha se var.r med.r
## RESM 0.84 0.84 0.7 0.84 5.1 NA 0 0.84
## LETT 0.83 0.84 0.7 0.84 5.1 NA 0 0.84
##
## Item statistics
## n raw.r std.r r.cor r.drop mean sd
## RESM 50 0.96 0.96 0.88 0.84 7.2 1.7
## LETT 50 0.96 0.96 0.88 0.84 7.2 1.7
##
## Non missing response frequency for each item
## 4 5 6 7 8 9 10 miss
## RESM 0.08 0.06 0.22 0.18 0.16 0.24 0.06 0
## LETT 0.06 0.12 0.14 0.22 0.24 0.12 0.10 0
##################################
# Formulating the dandelion plot to
# visualize both factor variances and loadings
# from the factor loading matrices
##################################
<- factload(DPA.Descriptors.Numeric,
FA_ML_P_3F_FactorLoading cormeth = "pearson",
method = "mle",
nfac = 3,
rotation = "promax")
<- rev(rainbow(100, start = 0, end = 0.2))
DandelionPlotPalette
dandelion(FA_ML_P_3F_FactorLoading,
bound=0,
mcex=c(1,1.2),
palet=DandelionPlotPalette)
##################################
# Conducting exploratory factor analysis
# using Maximum Likelihood extraction
# and Promax rotation
# with 4 factors
##################################
<- fa(DPA.Descriptors.Numeric,
(FA_ML_P_4F nfactors = 4,
fm="ml",
rotate = "promax",
residuals=TRUE,
SMC=TRUE,
n.obs=nrow(DPA.Descriptors.Numeric)))
## Factor Analysis using method = ml
## Call: fa(r = DPA.Descriptors.Numeric, nfactors = 4, n.obs = nrow(DPA.Descriptors.Numeric),
## rotate = "promax", residuals = TRUE, SMC = TRUE, fm = "ml")
## Standardized loadings (pattern matrix) based upon correlation matrix
## ML3 ML4 ML1 ML2 h2 u2 com
## ACAD 0.44 0.26 0.07 -0.03 0.45 0.546 1.7
## APPR -0.13 0.80 0.07 0.15 0.68 0.325 1.1
## COMM 0.03 0.10 0.16 0.76 0.79 0.206 1.1
## CFIT 0.91 -0.18 -0.04 0.28 0.85 0.148 1.3
## EXPR 0.47 0.16 0.22 -0.24 0.46 0.535 2.2
## JFIT 1.04 -0.16 -0.07 0.11 0.91 0.089 1.1
## LETT 0.06 -0.21 0.90 0.14 0.78 0.224 1.2
## LIKE 0.09 0.70 -0.02 0.11 0.65 0.350 1.1
## ORGN 0.08 0.16 -0.06 0.89 0.97 0.027 1.1
## POTL 0.70 0.22 -0.06 -0.04 0.65 0.347 1.2
## RESM -0.12 0.15 0.99 -0.03 1.00 0.005 1.1
## SCON 0.01 0.93 -0.12 0.01 0.78 0.220 1.0
##
## ML3 ML4 ML1 ML2
## SS loadings 2.93 2.36 1.85 1.84
## Proportion Var 0.24 0.20 0.15 0.15
## Cumulative Var 0.24 0.44 0.60 0.75
## Proportion Explained 0.33 0.26 0.21 0.20
## Cumulative Proportion 0.33 0.59 0.80 1.00
##
## With factor correlations of
## ML3 ML4 ML1 ML2
## ML3 1.00 0.66 0.60 0.40
## ML4 0.66 1.00 0.53 0.41
## ML1 0.60 0.53 1.00 0.27
## ML2 0.40 0.41 0.27 1.00
##
## Mean item complexity = 1.3
## Test of the hypothesis that 4 factors are sufficient.
##
## df null model = 66 with the objective function = 10.7 with Chi Square = 472.51
## df of the model are 24 and the objective function was 1.36
##
## The root mean square of the residuals (RMSR) is 0.06
## The df corrected root mean square of the residuals is 0.1
##
## The harmonic n.obs is 50 with the empirical chi square 22.17 with prob < 0.57
## The total n.obs was 50 with Likelihood Chi Square = 56.38 with prob < 2e-04
##
## Tucker Lewis Index of factoring reliability = 0.764
## RMSEA index = 0.163 and the 90 % confidence intervals are 0.11 0.223
## BIC = -37.51
## Fit based upon off diagonal values = 0.99
## Measures of factor score adequacy
## ML3 ML4 ML1 ML2
## Correlation of (regression) scores with factors 0.98 0.95 1.00 0.98
## Multiple R square of scores with factors 0.95 0.90 0.99 0.97
## Minimum correlation of possible factor scores 0.90 0.81 0.99 0.93
<- FA_ML_P_4F %>%
(FA_ML_P_4F_Summary model_parameters(sort = TRUE, threshold = "max"))
## # Rotated loadings from Factor Analysis (promax-rotation)
##
## Variable | ML3 | ML4 | ML1 | ML2 | Complexity | Uniqueness
## --------------------------------------------------------------
## JFIT | 1.04 | | | | 1.08 | 0.09
## CFIT | 0.91 | | | | 1.27 | 0.15
## POTL | 0.70 | | | | 1.22 | 0.35
## EXPR | 0.47 | | | | 2.21 | 0.54
## ACAD | 0.44 | | | | 1.67 | 0.55
## SCON | | 0.93 | | | 1.04 | 0.22
## APPR | | 0.80 | | | 1.14 | 0.32
## LIKE | | 0.70 | | | 1.08 | 0.35
## RESM | | | 0.99 | | 1.08 | 5.00e-03
## LETT | | | 0.90 | | 1.18 | 0.22
## ORGN | | | | 0.89 | 1.09 | 0.03
## COMM | | | | 0.76 | 1.13 | 0.21
##
## The 4 latent factors (promax rotation) accounted for 74.82% of the total variance of the original data (ML3 = 24.45%, ML4 = 19.64%, ML1 = 15.41%, ML2 = 15.32%).
summary(FA_ML_P_4F_Summary)
## # (Explained) Variance of Components
##
## Parameter | ML3 | ML4 | ML1 | ML2
## ---------------------------------------------------------------
## Eigenvalues | 6.146 | 1.248 | 0.890 | 0.846
## Variance Explained | 0.245 | 0.196 | 0.154 | 0.153
## Variance Explained (Cumulative) | 0.245 | 0.441 | 0.595 | 0.748
## Variance Explained (Proportion) | 0.327 | 0.263 | 0.206 | 0.205
##################################
# Extracting the residuals
# from the Exploratory Factor Analysis
##################################
<- residuals(FA_ML_P_4F,
(FA_ML_P_4F_Residual diag=FALSE,
na.rm=TRUE))
## ACAD APPR COMM CFIT EXPR JFIT LETT LIKE ORGN POTL RESM
## ACAD NA
## APPR 0.03 NA
## COMM 0.05 -0.01 NA
## CFIT -0.04 0.00 0.00 NA
## EXPR 0.24 -0.05 -0.02 -0.08 NA
## JFIT -0.04 0.00 0.00 0.01 -0.01 NA
## LETT -0.04 -0.03 -0.03 -0.01 0.06 0.00 NA
## LIKE -0.08 -0.01 0.00 -0.01 -0.09 0.03 0.04 NA
## ORGN 0.00 0.00 0.00 0.00 0.01 0.00 0.01 0.00 NA
## POTL 0.26 0.03 0.02 -0.02 0.20 -0.02 0.00 -0.05 0.00 NA
## RESM 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 NA
## SCON -0.08 -0.01 -0.01 0.02 0.00 0.00 -0.01 0.05 0.00 -0.05 0.00
## [1] NA
##################################
# Obtaining Fit Indices
##################################
<- FA_ML_P_4F$rms) (FA_ML_P_4F_RMS
## [1] 0.05795189
<- FA_ML_P_4F$TLI) (FA_ML_P_4F_TLI
## [1] 0.7644223
<- FA_ML_P_4F$BIC) (FA_ML_P_4F_BIC
## [1] -37.50857
<- max(abs(FA_ML_P_4F_Residual),na.rm=TRUE)) (FA_ML_P_4F_MaxResidual
## [1] 0.2590579
<- sum(FA_ML_P_4F_Residual>abs(0.05),na.rm=TRUE)) (FA_ML_P_4F_HighResidual
## [1] 10
<- length(DPA.Descriptors.Numeric)*(length(DPA.Descriptors.Numeric)-1)/2) (FA_ML_P_4F_TotalResidual
## [1] 66
<- FA_ML_P_4F_HighResidual/FA_ML_P_4F_TotalResidual) (FA_ML_P_4F_HighResidualRate
## [1] 0.1515152
##################################
# Graph the factor loading matrices
##################################
fa.diagram(FA_ML_P_4F,
sort=TRUE,
cut=0,
digits=3,
main="Maximum Likelihood Factor Extraction + Promax Rotation : 4 Factors",
cex=0.75)
##################################
# computing the internal consistency
# measure of reliability using the
# Cronbach's alpha coefficient
# for each factor
##################################
alpha(DPA.Descriptors.Numeric[,c("JFIT","CFIT","POTL","EXPR","ACAD")])
##
## Reliability analysis
## Call: alpha(x = DPA.Descriptors.Numeric[, c("JFIT", "CFIT", "POTL",
## "EXPR", "ACAD")])
##
## raw_alpha std.alpha G6(smc) average_r S/N ase mean sd median_r
## 0.9 0.9 0.92 0.64 8.8 0.024 7.2 1.2 0.66
##
## 95% confidence boundaries
## lower alpha upper
## Feldt 0.84 0.9 0.94
## Duhachek 0.85 0.9 0.94
##
## Reliability if an item is dropped:
## raw_alpha std.alpha G6(smc) average_r S/N alpha se var.r med.r
## JFIT 0.86 0.87 0.86 0.62 6.5 0.034 0.021 0.66
## CFIT 0.88 0.88 0.87 0.66 7.6 0.028 0.011 0.69
## POTL 0.85 0.85 0.88 0.58 5.6 0.036 0.029 0.53
## EXPR 0.89 0.89 0.91 0.68 8.5 0.025 0.022 0.68
## ACAD 0.88 0.88 0.90 0.64 7.3 0.029 0.028 0.68
##
## Item statistics
## n raw.r std.r r.cor r.drop mean sd
## JFIT 50 0.88 0.87 0.86 0.80 7.0 1.6
## CFIT 50 0.84 0.82 0.80 0.72 6.9 1.6
## POTL 50 0.91 0.92 0.90 0.85 7.3 1.4
## EXPR 50 0.76 0.78 0.71 0.64 7.3 1.4
## ACAD 50 0.81 0.83 0.78 0.72 7.4 1.3
##
## Non missing response frequency for each item
## 3 4 5 6 7 8 9 10 miss
## JFIT 0.06 0.00 0.06 0.22 0.26 0.24 0.12 0.04 0
## CFIT 0.02 0.06 0.16 0.12 0.22 0.30 0.08 0.04 0
## POTL 0.00 0.04 0.06 0.18 0.22 0.30 0.18 0.02 0
## EXPR 0.00 0.00 0.10 0.20 0.24 0.24 0.18 0.04 0
## ACAD 0.00 0.02 0.02 0.22 0.28 0.24 0.18 0.04 0
alpha(DPA.Descriptors.Numeric[,c("SCON","APPR","LIKE")])
##
## Reliability analysis
## Call: alpha(x = DPA.Descriptors.Numeric[, c("SCON", "APPR", "LIKE")])
##
## raw_alpha std.alpha G6(smc) average_r S/N ase mean sd median_r
## 0.87 0.87 0.83 0.7 6.9 0.031 7.4 0.99 0.7
##
## 95% confidence boundaries
## lower alpha upper
## Feldt 0.80 0.87 0.92
## Duhachek 0.81 0.87 0.93
##
## Reliability if an item is dropped:
## raw_alpha std.alpha G6(smc) average_r S/N alpha se var.r med.r
## SCON 0.78 0.78 0.64 0.64 3.5 0.062 NA 0.64
## APPR 0.86 0.86 0.75 0.75 6.1 0.040 NA 0.75
## LIKE 0.82 0.82 0.70 0.70 4.6 0.051 NA 0.70
##
## Item statistics
## n raw.r std.r r.cor r.drop mean sd
## SCON 50 0.92 0.91 0.86 0.80 7.3 1.2
## APPR 50 0.86 0.87 0.76 0.71 7.4 1.0
## LIKE 50 0.90 0.89 0.82 0.76 7.4 1.1
##
## Non missing response frequency for each item
## 4 5 6 7 8 9 10 miss
## SCON 0.00 0.08 0.14 0.32 0.28 0.18 0.00 0
## APPR 0.00 0.02 0.16 0.32 0.38 0.10 0.02 0
## LIKE 0.02 0.04 0.12 0.32 0.36 0.14 0.00 0
alpha(DPA.Descriptors.Numeric[,c("ORGN","COMM")])
##
## Reliability analysis
## Call: alpha(x = DPA.Descriptors.Numeric[, c("ORGN", "COMM")])
##
## raw_alpha std.alpha G6(smc) average_r S/N ase mean sd median_r
## 0.92 0.93 0.86 0.86 12 0.021 6.9 1.5 0.86
##
## 95% confidence boundaries
## lower alpha upper
## Feldt 0.87 0.92 0.96
## Duhachek 0.88 0.92 0.97
##
## Reliability if an item is dropped:
## raw_alpha std.alpha G6(smc) average_r S/N alpha se var.r med.r
## ORGN 0.92 0.86 0.74 0.86 6.2 NA 0 0.86
## COMM 0.80 0.86 0.74 0.86 6.2 NA 0 0.86
##
## Item statistics
## n raw.r std.r r.cor r.drop mean sd
## ORGN 50 0.97 0.96 0.9 0.86 6.9 1.6
## COMM 50 0.96 0.96 0.9 0.86 6.9 1.5
##
## Non missing response frequency for each item
## 3 4 5 6 7 8 9 10 miss
## ORGN 0.02 0.04 0.20 0.1 0.24 0.24 0.16 0.00 0
## COMM 0.04 0.04 0.06 0.2 0.30 0.28 0.06 0.02 0
alpha(DPA.Descriptors.Numeric[,c("RESM","LETT")])
##
## Reliability analysis
## Call: alpha(x = DPA.Descriptors.Numeric[, c("RESM", "LETT")])
##
## raw_alpha std.alpha G6(smc) average_r S/N ase mean sd median_r
## 0.91 0.91 0.84 0.84 10 0.025 7.2 1.6 0.84
##
## 95% confidence boundaries
## lower alpha upper
## Feldt 0.84 0.91 0.95
## Duhachek 0.86 0.91 0.96
##
## Reliability if an item is dropped:
## raw_alpha std.alpha G6(smc) average_r S/N alpha se var.r med.r
## RESM 0.84 0.84 0.7 0.84 5.1 NA 0 0.84
## LETT 0.83 0.84 0.7 0.84 5.1 NA 0 0.84
##
## Item statistics
## n raw.r std.r r.cor r.drop mean sd
## RESM 50 0.96 0.96 0.88 0.84 7.2 1.7
## LETT 50 0.96 0.96 0.88 0.84 7.2 1.7
##
## Non missing response frequency for each item
## 4 5 6 7 8 9 10 miss
## RESM 0.08 0.06 0.22 0.18 0.16 0.24 0.06 0
## LETT 0.06 0.12 0.14 0.22 0.24 0.12 0.10 0
##################################
# Formulating the dandelion plot to
# visualize both factor variances and loadings
# from the factor loading matrices
##################################
<- factload(DPA.Descriptors.Numeric,
FA_ML_P_4F_FactorLoading cormeth = "pearson",
method = "mle",
nfac = 4,
rotation = "promax")
<- rev(rainbow(100, start = 0, end = 0.2))
DandelionPlotPalette
dandelion(FA_ML_P_4F_FactorLoading,
bound=0,
mcex=c(1,1.2),
palet=DandelionPlotPalette)
##################################
# Conducting exploratory factor analysis
# using Maximum Likelihood extraction
# and Promax rotation
# with 5 factors
##################################
<- fa(DPA.Descriptors.Numeric,
(FA_ML_P_5F nfactors = 5,
fm="ml",
rotate = "promax",
residuals=TRUE,
SMC=TRUE,
n.obs=nrow(DPA.Descriptors.Numeric)))
## Factor Analysis using method = ml
## Call: fa(r = DPA.Descriptors.Numeric, nfactors = 5, n.obs = nrow(DPA.Descriptors.Numeric),
## rotate = "promax", residuals = TRUE, SMC = TRUE, fm = "ml")
## Standardized loadings (pattern matrix) based upon correlation matrix
## ML5 ML4 ML2 ML3 ML1 h2 u2 com
## ACAD 0.95 -0.06 0.13 -0.10 -0.04 0.78 0.218 1.1
## APPR 0.15 0.64 0.18 -0.17 0.07 0.65 0.353 1.5
## COMM 0.02 -0.02 0.85 0.00 0.12 0.80 0.196 1.0
## CFIT 0.03 0.00 0.16 0.79 0.03 0.85 0.154 1.1
## EXPR 0.73 0.02 -0.19 0.06 0.15 0.64 0.362 1.2
## JFIT 0.07 0.04 -0.05 0.93 0.02 0.95 0.050 1.0
## LETT -0.03 -0.15 0.09 0.10 0.87 0.77 0.229 1.1
## LIKE -0.09 0.76 0.02 0.15 0.03 0.68 0.319 1.1
## ORGN -0.04 0.06 0.96 0.06 -0.09 0.96 0.035 1.0
## POTL 0.82 0.04 0.03 0.20 -0.12 0.87 0.132 1.2
## RESM 0.03 0.17 -0.08 -0.08 0.96 1.00 0.005 1.1
## SCON -0.03 1.02 -0.09 0.03 -0.09 0.87 0.130 1.0
##
## ML5 ML4 ML2 ML3 ML1
## SS loadings 2.23 2.15 1.87 1.80 1.77
## Proportion Var 0.19 0.18 0.16 0.15 0.15
## Cumulative Var 0.19 0.36 0.52 0.67 0.82
## Proportion Explained 0.23 0.22 0.19 0.18 0.18
## Cumulative Proportion 0.23 0.45 0.64 0.82 1.00
##
## With factor correlations of
## ML5 ML4 ML2 ML3 ML1
## ML5 1.00 0.57 0.39 0.62 0.53
## ML4 0.57 1.00 0.58 0.51 0.46
## ML2 0.39 0.58 1.00 0.56 0.40
## ML3 0.62 0.51 0.56 1.00 0.47
## ML1 0.53 0.46 0.40 0.47 1.00
##
## Mean item complexity = 1.1
## Test of the hypothesis that 5 factors are sufficient.
##
## df null model = 66 with the objective function = 10.7 with Chi Square = 472.51
## df of the model are 16 and the objective function was 0.42
##
## The root mean square of the residuals (RMSR) is 0.02
## The df corrected root mean square of the residuals is 0.04
##
## The harmonic n.obs is 50 with the empirical chi square 2.44 with prob < 1
## The total n.obs was 50 with Likelihood Chi Square = 17.27 with prob < 0.37
##
## Tucker Lewis Index of factoring reliability = 0.986
## RMSEA index = 0.034 and the 90 % confidence intervals are 0 0.141
## BIC = -45.32
## Fit based upon off diagonal values = 1
## Measures of factor score adequacy
## ML5 ML4 ML2 ML3 ML1
## Correlation of (regression) scores with factors 0.96 0.96 0.98 0.98 1.00
## Multiple R square of scores with factors 0.92 0.93 0.97 0.96 0.99
## Minimum correlation of possible factor scores 0.85 0.85 0.94 0.92 0.98
<- FA_ML_P_5F %>%
(FA_ML_P_5F_Summary model_parameters(sort = TRUE, threshold = "max"))
## # Rotated loadings from Factor Analysis (promax-rotation)
##
## Variable | ML5 | ML4 | ML2 | ML3 | ML1 | Complexity | Uniqueness
## ---------------------------------------------------------------------
## ACAD | 0.95 | | | | | 1.07 | 0.22
## POTL | 0.82 | | | | | 1.17 | 0.13
## EXPR | 0.73 | | | | | 1.24 | 0.36
## SCON | | 1.02 | | | | 1.03 | 0.13
## LIKE | | 0.76 | | | | 1.12 | 0.32
## APPR | | 0.64 | | | | 1.45 | 0.35
## ORGN | | | 0.96 | | | 1.04 | 0.04
## COMM | | | 0.85 | | | 1.04 | 0.20
## JFIT | | | | 0.93 | | 1.02 | 0.05
## CFIT | | | | 0.79 | | 1.09 | 0.15
## RESM | | | | | 0.96 | 1.09 | 4.99e-03
## LETT | | | | | 0.87 | 1.11 | 0.23
##
## The 5 latent factors (promax rotation) accounted for 81.81% of the total variance of the original data (ML5 = 18.55%, ML4 = 17.95%, ML2 = 15.60%, ML3 = 15.00%, ML1 = 14.72%).
summary(FA_ML_P_5F_Summary)
## # (Explained) Variance of Components
##
## Parameter | ML5 | ML4 | ML2 | ML3 | ML1
## -----------------------------------------------------------------------
## Eigenvalues | 6.215 | 1.301 | 0.958 | 0.877 | 0.477
## Variance Explained | 0.185 | 0.179 | 0.156 | 0.150 | 0.147
## Variance Explained (Cumulative) | 0.185 | 0.365 | 0.521 | 0.671 | 0.818
## Variance Explained (Proportion) | 0.227 | 0.219 | 0.191 | 0.183 | 0.180
##################################
# Extracting the residuals
# from the Exploratory Factor Analysis
##################################
<- residuals(FA_ML_P_5F,
(FA_ML_P_5F_Residual diag=FALSE,
na.rm=TRUE))
## ACAD APPR COMM CFIT EXPR JFIT LETT LIKE ORGN POTL RESM
## ACAD NA
## APPR 0.01 NA
## COMM 0.02 -0.01 NA
## CFIT 0.00 0.00 0.00 NA
## EXPR 0.00 -0.07 -0.03 -0.05 NA
## JFIT 0.00 0.00 0.00 0.00 0.01 NA
## LETT -0.04 -0.04 -0.03 -0.01 0.07 0.00 NA
## LIKE 0.01 0.01 0.01 -0.03 -0.04 0.01 0.03 NA
## ORGN 0.00 0.00 0.00 0.00 0.01 0.00 0.01 0.00 NA
## POTL 0.00 0.01 0.00 0.01 0.01 0.00 0.01 0.01 0.00 NA
## RESM 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 NA
## SCON -0.01 -0.01 0.00 0.01 0.04 0.00 -0.01 0.00 0.00 0.00 0.00
## [1] NA
##################################
# Obtaining Fit Indices
##################################
<- FA_ML_P_5F$rms) (FA_ML_P_5F_RMS
## [1] 0.01923904
<- FA_ML_P_5F$TLI) (FA_ML_P_5F_TLI
## [1] 0.9858829
<- FA_ML_P_5F$BIC) (FA_ML_P_5F_BIC
## [1] -45.32318
<- max(abs(FA_ML_P_5F_Residual),na.rm=TRUE)) (FA_ML_P_5F_MaxResidual
## [1] 0.0733741
<- sum(FA_ML_P_5F_Residual>abs(0.05),na.rm=TRUE)) (FA_ML_P_5F_HighResidual
## [1] 2
<- length(DPA.Descriptors.Numeric)*(length(DPA.Descriptors.Numeric)-1)/2) (FA_ML_P_5F_TotalResidual
## [1] 66
<- FA_ML_P_5F_HighResidual/FA_ML_P_5F_TotalResidual) (FA_ML_P_5F_HighResidualRate
## [1] 0.03030303
##################################
# Graph the factor loading matrices
##################################
fa.diagram(FA_ML_P_5F,
sort=TRUE,
cut=0,
digits=3,
main="Maximum Likelihood Factor Extraction + Promax Rotation : 5 Factors",
cex=0.75)
##################################
# computing the internal consistency
# measure of reliability using the
# Cronbach's alpha coefficient
# for each factor
##################################
alpha(DPA.Descriptors.Numeric[,c("ACAD","POTL","EXPR")])
##
## Reliability analysis
## Call: alpha(x = DPA.Descriptors.Numeric[, c("ACAD", "POTL", "EXPR")])
##
## raw_alpha std.alpha G6(smc) average_r S/N ase mean sd median_r
## 0.89 0.89 0.85 0.72 7.8 0.028 7.3 1.2 0.7
##
## 95% confidence boundaries
## lower alpha upper
## Feldt 0.82 0.89 0.93
## Duhachek 0.83 0.89 0.94
##
## Reliability if an item is dropped:
## raw_alpha std.alpha G6(smc) average_r S/N alpha se var.r med.r
## ACAD 0.83 0.83 0.70 0.70 4.7 0.049 NA 0.70
## POTL 0.80 0.80 0.67 0.67 4.0 0.056 NA 0.67
## EXPR 0.88 0.89 0.80 0.80 7.8 0.032 NA 0.80
##
## Item statistics
## n raw.r std.r r.cor r.drop mean sd
## ACAD 50 0.91 0.91 0.85 0.79 7.4 1.3
## POTL 50 0.92 0.92 0.88 0.82 7.3 1.4
## EXPR 50 0.88 0.88 0.76 0.72 7.3 1.4
##
## Non missing response frequency for each item
## 4 5 6 7 8 9 10 miss
## ACAD 0.02 0.02 0.22 0.28 0.24 0.18 0.04 0
## POTL 0.04 0.06 0.18 0.22 0.30 0.18 0.02 0
## EXPR 0.00 0.10 0.20 0.24 0.24 0.18 0.04 0
alpha(DPA.Descriptors.Numeric[,c("SCON","LIKE","APPR")])
##
## Reliability analysis
## Call: alpha(x = DPA.Descriptors.Numeric[, c("SCON", "LIKE", "APPR")])
##
## raw_alpha std.alpha G6(smc) average_r S/N ase mean sd median_r
## 0.87 0.87 0.83 0.7 6.9 0.031 7.4 0.99 0.7
##
## 95% confidence boundaries
## lower alpha upper
## Feldt 0.80 0.87 0.92
## Duhachek 0.81 0.87 0.93
##
## Reliability if an item is dropped:
## raw_alpha std.alpha G6(smc) average_r S/N alpha se var.r med.r
## SCON 0.78 0.78 0.64 0.64 3.5 0.062 NA 0.64
## LIKE 0.82 0.82 0.70 0.70 4.6 0.051 NA 0.70
## APPR 0.86 0.86 0.75 0.75 6.1 0.040 NA 0.75
##
## Item statistics
## n raw.r std.r r.cor r.drop mean sd
## SCON 50 0.92 0.91 0.86 0.80 7.3 1.2
## LIKE 50 0.90 0.89 0.82 0.76 7.4 1.1
## APPR 50 0.86 0.87 0.76 0.71 7.4 1.0
##
## Non missing response frequency for each item
## 4 5 6 7 8 9 10 miss
## SCON 0.00 0.08 0.14 0.32 0.28 0.18 0.00 0
## LIKE 0.02 0.04 0.12 0.32 0.36 0.14 0.00 0
## APPR 0.00 0.02 0.16 0.32 0.38 0.10 0.02 0
alpha(DPA.Descriptors.Numeric[,c("ORGN","COMM")])
##
## Reliability analysis
## Call: alpha(x = DPA.Descriptors.Numeric[, c("ORGN", "COMM")])
##
## raw_alpha std.alpha G6(smc) average_r S/N ase mean sd median_r
## 0.92 0.93 0.86 0.86 12 0.021 6.9 1.5 0.86
##
## 95% confidence boundaries
## lower alpha upper
## Feldt 0.87 0.92 0.96
## Duhachek 0.88 0.92 0.97
##
## Reliability if an item is dropped:
## raw_alpha std.alpha G6(smc) average_r S/N alpha se var.r med.r
## ORGN 0.92 0.86 0.74 0.86 6.2 NA 0 0.86
## COMM 0.80 0.86 0.74 0.86 6.2 NA 0 0.86
##
## Item statistics
## n raw.r std.r r.cor r.drop mean sd
## ORGN 50 0.97 0.96 0.9 0.86 6.9 1.6
## COMM 50 0.96 0.96 0.9 0.86 6.9 1.5
##
## Non missing response frequency for each item
## 3 4 5 6 7 8 9 10 miss
## ORGN 0.02 0.04 0.20 0.1 0.24 0.24 0.16 0.00 0
## COMM 0.04 0.04 0.06 0.2 0.30 0.28 0.06 0.02 0
alpha(DPA.Descriptors.Numeric[,c("RESM","LETT")])
##
## Reliability analysis
## Call: alpha(x = DPA.Descriptors.Numeric[, c("RESM", "LETT")])
##
## raw_alpha std.alpha G6(smc) average_r S/N ase mean sd median_r
## 0.91 0.91 0.84 0.84 10 0.025 7.2 1.6 0.84
##
## 95% confidence boundaries
## lower alpha upper
## Feldt 0.84 0.91 0.95
## Duhachek 0.86 0.91 0.96
##
## Reliability if an item is dropped:
## raw_alpha std.alpha G6(smc) average_r S/N alpha se var.r med.r
## RESM 0.84 0.84 0.7 0.84 5.1 NA 0 0.84
## LETT 0.83 0.84 0.7 0.84 5.1 NA 0 0.84
##
## Item statistics
## n raw.r std.r r.cor r.drop mean sd
## RESM 50 0.96 0.96 0.88 0.84 7.2 1.7
## LETT 50 0.96 0.96 0.88 0.84 7.2 1.7
##
## Non missing response frequency for each item
## 4 5 6 7 8 9 10 miss
## RESM 0.08 0.06 0.22 0.18 0.16 0.24 0.06 0
## LETT 0.06 0.12 0.14 0.22 0.24 0.12 0.10 0
alpha(DPA.Descriptors.Numeric[,c("JFIT","CFIT")])
##
## Reliability analysis
## Call: alpha(x = DPA.Descriptors.Numeric[, c("JFIT", "CFIT")])
##
## raw_alpha std.alpha G6(smc) average_r S/N ase mean sd median_r
## 0.94 0.94 0.88 0.88 15 0.018 7 1.6 0.88
##
## 95% confidence boundaries
## lower alpha upper
## Feldt 0.89 0.94 0.96
## Duhachek 0.90 0.94 0.97
##
## Reliability if an item is dropped:
## raw_alpha std.alpha G6(smc) average_r S/N alpha se var.r med.r
## JFIT 0.87 0.88 0.78 0.88 7.5 NA 0 0.88
## CFIT 0.90 0.88 0.78 0.88 7.5 NA 0 0.88
##
## Item statistics
## n raw.r std.r r.cor r.drop mean sd
## JFIT 50 0.97 0.97 0.91 0.88 7.0 1.6
## CFIT 50 0.97 0.97 0.91 0.88 6.9 1.6
##
## Non missing response frequency for each item
## 3 4 5 6 7 8 9 10 miss
## JFIT 0.06 0.00 0.06 0.22 0.26 0.24 0.12 0.04 0
## CFIT 0.02 0.06 0.16 0.12 0.22 0.30 0.08 0.04 0
##################################
# Formulating the dandelion plot to
# visualize both factor variances and loadings
# from the factor loading matrices
##################################
<- factload(DPA.Descriptors.Numeric,
FA_ML_P_5F_FactorLoading cormeth = "pearson",
method = "mle",
nfac = 5,
rotation = "promax")
<- rev(rainbow(100, start = 0, end = 0.2))
DandelionPlotPalette
dandelion(FA_ML_P_5F_FactorLoading,
bound=0,
mcex=c(1,1.2),
palet=DandelionPlotPalette)
par(mfrow=c(1,3))
fa.diagram(FA_ML_P_3F,
sort=TRUE,
cut=0,
digits=3,
main="Maximum Likelihood Factor Extraction + Promax Rotation : 3 Factors",
cex=0.75)
fa.diagram(FA_ML_P_4F,
sort=TRUE,
cut=0,
digits=3,
main="Maximum Likelihood Factor Extraction + Promax Rotation : 4 Factors",
cex=0.75)
fa.diagram(FA_ML_P_5F,
sort=TRUE,
cut=0,
digits=3,
main="Maximum Likelihood Factor Extraction + Promax Rotation : 5 Factors",
cex=0.75)
##################################
# Consolidating the fit indices
##################################
<- c(FA_PA_V_3F_RMS,
FA_RMSSummary
FA_PA_V_4F_RMS,
FA_PA_V_5F_RMS,
FA_PA_P_3F_RMS,
FA_PA_P_4F_RMS,
FA_PA_P_5F_RMS,
FA_ML_V_3F_RMS,
FA_ML_V_4F_RMS,
FA_ML_V_5F_RMS,
FA_ML_P_3F_RMS,
FA_ML_P_4F_RMS,
FA_ML_P_5F_RMS)
<- c(FA_PA_V_3F_TLI,
FA_TLISummary
FA_PA_V_4F_TLI,
FA_PA_V_5F_TLI,
FA_PA_P_3F_TLI,
FA_PA_P_4F_TLI,
FA_PA_P_5F_TLI,
FA_ML_V_3F_TLI,
FA_ML_V_4F_TLI,
FA_ML_V_5F_TLI,
FA_ML_P_3F_TLI,
FA_ML_P_4F_TLI,
FA_ML_P_5F_TLI)
<- c(FA_PA_V_3F_BIC,
FA_BICSummary
FA_PA_V_4F_BIC,
FA_PA_V_5F_BIC,
FA_PA_P_3F_BIC,
FA_PA_P_4F_BIC,
FA_PA_P_5F_BIC,
FA_ML_V_3F_BIC,
FA_ML_V_4F_BIC,
FA_ML_V_5F_BIC,
FA_ML_P_3F_BIC,
FA_ML_P_4F_BIC,
FA_ML_P_5F_BIC)
<- c(FA_PA_V_3F_HighResidualRate,
FA_HighResidualRateSummary
FA_PA_V_4F_HighResidualRate,
FA_PA_V_5F_HighResidualRate,
FA_PA_P_3F_HighResidualRate,
FA_PA_P_4F_HighResidualRate,
FA_PA_P_5F_HighResidualRate,
FA_ML_V_3F_HighResidualRate,
FA_ML_V_4F_HighResidualRate,
FA_ML_V_5F_HighResidualRate,
FA_ML_P_3F_HighResidualRate,
FA_ML_P_4F_HighResidualRate,
FA_ML_P_5F_HighResidualRate)
<- c("FA_PA_V_3F",
FA_AlgorithmSummary "FA_PA_V_4F",
"FA_PA_V_5F",
"FA_PA_P_3F",
"FA_PA_P_4F",
"FA_PA_P_5F",
"FA_ML_V_3F",
"FA_ML_V_4F",
"FA_ML_V_5F",
"FA_ML_P_3F",
"FA_ML_P_4F",
"FA_ML_P_5F")
<- cbind(FA_RMSSummary,
FA_Summary
FA_TLISummary,
FA_BICSummary,
FA_HighResidualRateSummary,
FA_AlgorithmSummary)
<- as.data.frame(FA_Summary)
FA_Summary names(FA_Summary) <- c("RMS",
"TLI",
"BIC",
"HighResidualRate",
"Algorithm")
$RMS <- as.numeric(as.character(FA_Summary$RMS))
FA_Summary$TLI <- as.numeric(as.character(FA_Summary$TLI))
FA_Summary$BIC <- as.numeric(as.character(FA_Summary$BIC))
FA_Summary$HighResidualRate <- as.numeric(as.character(FA_Summary$HighResidualRate))
FA_Summary
$Algorithm <- factor(FA_Summary$Algorithm ,
FA_Summarylevels = c("FA_PA_V_3F",
"FA_PA_V_4F",
"FA_PA_V_5F",
"FA_PA_P_3F",
"FA_PA_P_4F",
"FA_PA_P_5F",
"FA_ML_V_3F",
"FA_ML_V_4F",
"FA_ML_V_5F",
"FA_ML_P_3F",
"FA_ML_P_4F",
"FA_ML_P_5F"))
print(FA_Summary, row.names=FALSE)
## RMS TLI BIC HighResidualRate Algorithm
## 0.07338105 0.6191606 -22.76274 0.27272727 FA_PA_V_3F
## 0.03861068 0.7317578 -33.01886 0.15151515 FA_PA_V_4F
## 0.01483907 0.9648451 -43.43181 0.00000000 FA_PA_V_5F
## 0.07338105 0.6191606 -22.76274 0.27272727 FA_PA_P_3F
## 0.03861068 0.7317578 -33.01886 0.15151515 FA_PA_P_4F
## 0.01483907 0.9648451 -43.43181 0.00000000 FA_PA_P_5F
## 0.07961754 0.6858498 -35.60434 0.24242424 FA_ML_V_3F
## 0.05795189 0.7644223 -37.50857 0.15151515 FA_ML_V_4F
## 0.01923904 0.9858829 -45.32318 0.03030303 FA_ML_V_5F
## 0.07961754 0.6858498 -35.60434 0.24242424 FA_ML_P_3F
## 0.05795189 0.7644223 -37.50857 0.15151515 FA_ML_P_4F
## 0.01923904 0.9858829 -45.32318 0.03030303 FA_ML_P_5F
##################################
# Consolidating all calculated values
# for the Standardized Root Mean Square of the Residual
##################################
<- dotplot(Algorithm ~ RMS,
(RMS_Plot data = FA_Summary,
main = "Algorithm Comparison : Standardized Root Mean Square of the Residual",
ylab = "Algorithm",
xlab = "RMSR",
auto.key = list(adj=1),
type=c("p", "h"),
origin = 0,
alpha = 0.45,
pch = 16,
cex = 2))
##################################
# Consolidating all calculated values
# for the Tucker-Lewis Fit Index
##################################
<- dotplot(Algorithm ~ TLI,
(TLI_Plot data = FA_Summary,
main = "Algorithm Comparison : Tucker-Lewis Fit Index",
ylab = "Algorithm",
xlab = "TLI",
auto.key = list(adj=1),
type=c("p", "h"),
origin = 0,
alpha = 0.45,
pch = 16,
cex = 2))
##################################
# Consolidating all calculated values
# for the Bayesian Information Criterion
##################################
<- dotplot(Algorithm ~ BIC,
(BIC_Plot data = FA_Summary,
main = "Algorithm Comparison : Bayesian Information Criterion",
ylab = "Algorithm",
xlab = "BIC",
auto.key = list(adj=1),
type=c("p", "h"),
origin = 0,
alpha = 0.45,
pch = 16,
cex = 2))
##################################
# Consolidating all calculated values
# for the High Residual Rate
##################################
<- dotplot(Algorithm ~ HighResidualRate,
(HighResidualRate_Plot data = FA_Summary,
main = "Algorithm Comparison : High Residual Rate ",
ylab = "Algorithm",
xlab = "High Residual Rate",
auto.key = list(adj=1),
type=c("p", "h"),
origin = 0,
alpha = 0.45,
pch = 16,
cex = 2))
##################################
# Plotting the Factor Loading Diagram
# for the optimal EFA model
##################################
fa.diagram(FA_PA_P_5F,
sort=TRUE,
cut=0,
digits=3,
main="Principal Axes Factor Extraction + Promax Rotation : 5 Factors",
cex=0.75)
##################################
# Plotting the Dandelion Plot
# for the optimal EFA model
##################################
dandelion(FA_PA_P_5F_FactorLoading,
bound=0,
mcex=c(1,1.2),
palet=DandelionPlotPalette)