Stablishing the latent models for 4 and 7 response options
library(lavaan) #library to establish models
onef_cor0_load03_05_4op <- '
F1 =~ 0.35*x1 + 0.40*x2 + 0.45*x3 + 0.49*x4
x1 | -1.5*t1 + 0*t2 + 1.5*t3
x2 | -1.5*t1 + 0*t2 + 1.5*t3
x3 | -1.5*t1 + 0*t2 + 1.5*t3
x4 | -1.5*t1 + 0*t2 + 1.5*t3
' #low fact loading, 4 response options
onef_cor0_load05_07_4op <- '
F1 =~ 0.55*x1 + 0.60*x2 + 0.65*x3 + 0.70*x4
x1 | -1.5*t1 + 0*t2 + 1.5*t3
x2 | -1.5*t1 + 0*t2 + 1.5*t3
x3 | -1.5*t1 + 0*t2 + 1.5*t3
x4 | -1.5*t1 + 0*t2 + 1.5*t3
'#moderate fact loading, 4 response options
onef_cor0_load07_09_4op <- '
F1 =~ 0.75*x1 + 0.80*x2 + 0.85*x3 + 0.90*x4
x1 | -1.5*t1 + 0*t2 + 1.5*t3
x2 | -1.5*t1 + 0*t2 + 1.5*t3
x3 | -1.5*t1 + 0*t2 + 1.5*t3
x4 | -1.5*t1 + 0*t2 + 1.5*t3
' #High fact loading, 4 response options
onef_cor0_load03_05_7op <- '
F1 =~ 0.35*x1 + 0.40*x2 + 0.45*x3 + 0.49*x4
x1 | -2.5*t1 + -1.8*t2 + -1.2*t3 + -0.5*t4 + 0.5*t5 + 1.8*t6
x2 | -2.5*t1 + -1.8*t2 + -1.2*t3 + -0.5*t4 + 0.5*t5 + 1.8*t6
x3 | -2.5*t1 + -1.8*t2 + -1.2*t3 + -0.5*t4 + 0.5*t5 + 1.8*t6
x4 | -2.5*t1 + -1.8*t2 + -1.2*t3 + -0.5*t4 + 0.5*t5 + 1.8*t6
' #low fact loading, 7 response options
onef_cor0_load05_07_7op <- '
F1 =~ 0.55*x1 + 0.60*x2 + 0.65*x3 + 0.70*x4
x1 | -2.5*t1 + -1.8*t2 + -1.2*t3 + -0.5*t4 + 0.5*t5 + 1.8*t6
x2 | -2.5*t1 + -1.8*t2 + -1.2*t3 + -0.5*t4 + 0.5*t5 + 1.8*t6
x3 | -2.5*t1 + -1.8*t2 + -1.2*t3 + -0.5*t4 + 0.5*t5 + 1.8*t6
x4 | -2.5*t1 + -1.8*t2 + -1.2*t3 + -0.5*t4 + 0.5*t5 + 1.8*t6
'#moderate fact loading, 7 response options
onef_cor0_load07_09_7op <- '
F1 =~ 0.75*x1 + 0.80*x2 + 0.85*x3 + 0.90*x4
x1 | -2.5*t1 + -1.8*t2 + -1.2*t3 + -0.5*t4 + 0.5*t5 + 1.8*t6
x2 | -2.5*t1 + -1.8*t2 + -1.2*t3 + -0.5*t4 + 0.5*t5 + 1.8*t6
x3 | -2.5*t1 + -1.8*t2 + -1.2*t3 + -0.5*t4 + 0.5*t5 + 1.8*t6
x4 | -2.5*t1 + -1.8*t2 + -1.2*t3 + -0.5*t4 + 0.5*t5 + 1.8*t6
' #High fact loading, 7 response options
#save models
mod1f_4op<- c(onef_cor0_load03_05_4op, onef_cor0_load05_07_4op, onef_cor0_load07_09_4op)
mod1f_7op<- c(onef_cor0_load03_05_7op, onef_cor0_load05_07_7op, onef_cor0_load07_09_7op)
Then create empty objects to start the simulation besides fixed objects.
library(doParallel) #library for parallel process
library(foreach) #library for conditional coding
iter<-500 # iterations
registerDoParallel(cores = 4) # cores for dev.
cor_matrices <- list(NULL) # cor matrix
n1 <- 100 # sample size
n2 <- 250 # sample size
n3 <- 500 # sample size
Create the data sets
set.seed(141) #set seed
#empty objects
data_4op_100<- list(NULL)
data_4op_250<- list(NULL)
data_4op_500 <- list(NULL)
data_7op_100<- list(NULL)
data_7op_250<- list(NULL)
data_7op_500 <- list(NULL)
# 4 options, n = 100
for (i in 1:iter) {
data_4op_100[[i]] <- lapply(1:3, function(b) {
lavaan::simulateData(model = mod1f_4op[[b]], sample.nobs = n1, ordered = c("x1", "x2", "x3", "x4"),
model.type = "cfa", return.type = "data.frame",
return.fit = FALSE, standardized = FALSE, empirical = TRUE)
})
}
# 4 options, n = 250
for (i in 1:iter) {
data_4op_250[[i]] <- lapply(1:3, function(b) {
lavaan::simulateData(model = mod1f_4op[[b]], sample.nobs = n2, ordered = c("x1", "x2", "x3", "x4"),
model.type = "cfa", return.type = "data.frame",
return.fit = FALSE, standardized = FALSE, empirical = TRUE)
})
}
# 4 options, n = 500
for (i in 1:iter) {
data_4op_500[[i]] <- lapply(1:3, function(b) {
lavaan::simulateData(model = mod1f_4op[[b]], sample.nobs = n3, ordered = c("x1", "x2", "x3", "x4"),
model.type = "cfa", return.type = "data.frame",
return.fit = FALSE, standardized = FALSE, empirical = TRUE)
})
}
# 7 options, n = 100
for (i in 1:iter) {
data_7op_100[[i]] <- lapply(1:3, function(b) {
lavaan::simulateData(model = mod1f_7op[[b]], sample.nobs = n1, ordered = c("x1", "x2", "x3", "x4"),
model.type = "cfa", return.type = "data.frame",
return.fit = FALSE, standardized = FALSE, empirical = TRUE)
})
}
# 7 options, n = 250
for (i in 1:iter) {
data_7op_250[[i]] <- lapply(1:3, function(b) {
lavaan::simulateData(model = mod1f_7op[[b]], sample.nobs = n2, ordered = c("x1", "x2", "x3", "x4"),
model.type = "cfa", return.type = "data.frame",
return.fit = FALSE, standardized = FALSE, empirical = TRUE)
})
}
# 7 options, n = 500
for (i in 1:iter) {
data_7op_500[[i]] <- lapply(1:3, function(b) {
lavaan::simulateData(model = mod1f_7op[[b]], sample.nobs = n3, ordered = c("x1", "x2", "x3", "x4"),
model.type = "cfa", return.type = "data.frame",
return.fit = FALSE, standardized = FALSE, empirical = TRUE)
})
}
Verificacion
# Función para obtener estadísticas de resumen de las listas de bases de datos
summary_data_sets <- function(data_list) {
min_vals <- sapply(data_list, function(dataset) sapply(dataset, function(df) apply(df, 2, min)))
max_vals <- sapply(data_list, function(dataset) sapply(dataset, function(df) apply(df, 2, max)))
mean_vals <- sapply(data_list, function(dataset) sapply(dataset, function(df) apply(df, 2, mean)))
# Promedio general sobre las 500 iteraciones
min_avg <- apply(min_vals, 1, mean)
max_avg <- apply(max_vals, 1, mean)
mean_avg <- apply(mean_vals, 1, mean)
return(list(Min=min_avg, Max=max_avg, Mean=mean_avg))
}
# Función para obtener la media de las correlaciones de Pearson
average_correlations <- function(data_list) {
cor_matrices <- lapply(data_list, function(dataset) {
lapply(dataset, function(df) cor(df, method = "pearson", use = "complete.obs"))
})
# Promedio de las matrices de correlación
avg_cor_matrix <- Reduce("+", lapply(cor_matrices, function(lst) Reduce("+", lst) / length(lst))) / length(cor_matrices)
return(avg_cor_matrix)
}
# Aplicar funciones a cada conjunto de datos
summary_4op_100 <- summary_data_sets(data_4op_100)
summary_4op_250 <- summary_data_sets(data_4op_250)
summary_4op_500 <- summary_data_sets(data_4op_500)
summary_7op_100 <- summary_data_sets(data_7op_100)
summary_7op_250 <- summary_data_sets(data_7op_250)
summary_7op_500 <- summary_data_sets(data_7op_500)
cor_4op_100 <- average_correlations(data_4op_100)
cor_4op_250 <- average_correlations(data_4op_250)
cor_4op_500 <- average_correlations(data_4op_500)
cor_7op_100 <- average_correlations(data_7op_100)
cor_7op_250 <- average_correlations(data_7op_250)
cor_7op_500 <- average_correlations(data_7op_500)
# Mostrar resultados
summary_4op_100
## $Min
## [1] 1 1 1 1 1 1 1 1 1 1 1 1
##
## $Max
## [1] 4 4 4 4 4 4 4 4 4 4 4 4
##
## $Mean
## [1] 2.50114 2.50150 2.49884 2.50280 2.49766 2.49852 2.50098 2.50100 2.49836
## [10] 2.50108 2.49968 2.50048
summary_4op_250
## $Min
## [1] 1 1 1 1 1 1 1 1 1 1 1 1
##
## $Max
## [1] 4 4 4 4 4 4 4 4 4 4 4 4
##
## $Mean
## [1] 2.501152 2.499600 2.499464 2.499704 2.499576 2.497264 2.499888 2.500448
## [9] 2.499328 2.499160 2.500256 2.500856
summary_4op_500
## $Min
## [1] 1 1 1 1 1 1 1 1 1 1 1 1
##
## $Max
## [1] 4 4 4 4 4 4 4 4 4 4 4 4
##
## $Mean
## [1] 2.499412 2.499472 2.499528 2.500040 2.500592 2.500860 2.499832 2.499688
## [9] 2.499800 2.499880 2.500040 2.499868
summary_7op_100
## $Min
## [1] 1.564 1.524 1.542 1.502 1.534 1.538 1.534 1.542 1.544 1.498 1.482 1.528
##
## $Max
## [1] 6.994 6.992 7.000 6.990 6.994 6.994 6.994 6.992 6.996 6.994 6.994 6.996
##
## $Mean
## [1] 4.87948 4.88040 4.87890 4.87820 4.87646 4.87808 4.87976 4.87758 4.87844
## [10] 4.87778 4.87772 4.87894
summary_7op_250
## $Min
## [1] 1.178 1.188 1.168 1.174 1.184 1.218 1.210 1.182 1.202 1.192 1.178 1.182
##
## $Max
## [1] 7 7 7 7 7 7 7 7 7 7 7 7
##
## $Mean
## [1] 4.878976 4.879640 4.877336 4.879216 4.878928 4.879272 4.878080 4.880672
## [9] 4.878616 4.877592 4.877528 4.878520
summary_7op_500
## $Min
## [1] 1.032 1.028 1.032 1.024 1.024 1.036 1.032 1.034 1.042 1.016 1.016 1.038
##
## $Max
## [1] 7 7 7 7 7 7 7 7 7 7 7 7
##
## $Mean
## [1] 4.878572 4.878748 4.878076 4.879432 4.878728 4.878144 4.878712 4.877888
## [9] 4.878160 4.878624 4.879028 4.879072
cor_4op_100
## x1 x2 x3 x4
## x1 1.0000000 0.3002293 0.3221193 0.3462829
## x2 0.3002293 1.0000000 0.3491698 0.3751875
## x3 0.3221193 0.3491698 1.0000000 0.4046910
## x4 0.3462829 0.3751875 0.4046910 1.0000000
cor_4op_250
## x1 x2 x3 x4
## x1 1.0000000 0.2995553 0.3217369 0.3440986
## x2 0.2995553 1.0000000 0.3488629 0.3747273
## x3 0.3217369 0.3488629 1.0000000 0.4043827
## x4 0.3440986 0.3747273 0.4043827 1.0000000
cor_4op_500
## x1 x2 x3 x4
## x1 1.0000000 0.2980322 0.3231735 0.3443799
## x2 0.2980322 1.0000000 0.3496760 0.3742700
## x3 0.3231735 0.3496760 1.0000000 0.4035966
## x4 0.3443799 0.3742700 0.4035966 1.0000000
cor_7op_100
## x1 x2 x3 x4
## x1 1.0000000 0.3284230 0.3527039 0.3775340
## x2 0.3284230 1.0000000 0.3845802 0.4106638
## x3 0.3527039 0.3845802 1.0000000 0.4436355
## x4 0.3775340 0.4106638 0.4436355 1.0000000
cor_7op_250
## x1 x2 x3 x4
## x1 1.0000000 0.3253510 0.3510355 0.3765199
## x2 0.3253510 1.0000000 0.3814186 0.4094741
## x3 0.3510355 0.3814186 1.0000000 0.4416258
## x4 0.3765199 0.4094741 0.4416258 1.0000000
cor_7op_500
## x1 x2 x3 x4
## x1 1.0000000 0.3269467 0.3520318 0.3756514
## x2 0.3269467 1.0000000 0.3824459 0.4093706
## x3 0.3520318 0.3824459 1.0000000 0.4417527
## x4 0.3756514 0.4093706 0.4417527 1.0000000
*Estimating the correlation structures: Pearson - polycor
#function for cleaning matrix (names)
clean_matrix <- function(mat) {
if (is.matrix(mat)) {
# Suppress rows and cols names
rownames(mat) <- NULL
colnames(mat) <- NULL
# Verify every object is numeric
as.matrix(mat)
} else {
stop("No matrix")
}
}
cor_4op_100p<- list(NULL)
cor_4op_250p<- list(NULL)
cor_4op_500p <- list(NULL)
cor_7op_100p<- list(NULL)
cor_7op_250p<- list(NULL)
cor_7op_500p <- list(NULL)
cor_4op_100sp<- list(NULL)
cor_4op_250sp<- list(NULL)
cor_4op_500sp <- list(NULL)
cor_7op_100sp<- list(NULL)
cor_7op_250sp<- list(NULL)
cor_7op_500sp <- list(NULL)
# cor for 4 options and n = 100
for (i in 1:iter) {
cor_4op_100p[[i]] <- foreach(dataset = data_4op_100[[i]], .combine = 'list', .multicombine = TRUE, .options.RNG = 141) %dopar% {
cor_matrixp <- cor(as.matrix(dataset), method = "pearson")
clean_matrix(cor_matrixp)
}
cor_4op_100sp[[i]] <- foreach(dataset = data_4op_100[[i]], .combine = 'list', .multicombine = TRUE, .options.RNG = 141) %dopar% {
cor_matrixp <- cor(as.matrix(dataset), method = "spearman")
clean_matrix(cor_matrixp)
}
}
# cor for 4 options and n = 250
for (i in 1:iter) {
cor_4op_250p[[i]] <- foreach(dataset = data_4op_250[[i]], .combine = 'list', .multicombine = TRUE, .options.RNG = 141) %dopar% {
cor_matrixp <- cor(as.matrix(dataset), method = "pearson")
clean_matrix(cor_matrixp)
}
cor_4op_250sp[[i]] <- foreach(dataset = data_4op_250[[i]], .combine = 'list', .multicombine = TRUE, .options.RNG = 141) %dopar% {
cor_matrixp <- cor(as.matrix(dataset), method = "spearman")
clean_matrix(cor_matrixp)
}
}
# cor for 4 options and n = 500
for (i in 1:iter) {
cor_4op_500p[[i]] <- foreach(dataset = data_4op_500[[i]], .combine = 'list',.multicombine = TRUE, .options.RNG = 141) %dopar% {
cor_matrixp <- cor(as.matrix(dataset), method = "pearson")
clean_matrix(cor_matrixp)
}
cor_4op_500sp[[i]] <- foreach(dataset = data_4op_500[[i]], .combine = 'list',.multicombine = TRUE, .options.RNG = 141) %dopar% {
cor_matrixp <- cor(as.matrix(dataset), method = "spearman")
clean_matrix(cor_matrixp)
}
}
# cor for 7 options and n = 100
for (i in 1:iter) {
cor_7op_100p[[i]] <- foreach(dataset = data_7op_100[[i]], .combine = 'list',.multicombine = TRUE, .options.RNG = 141) %dopar% {
cor_matrixp <- cor(as.matrix(dataset), method = "pearson")
clean_matrix(cor_matrixp)
}
cor_7op_100sp[[i]] <- foreach(dataset = data_7op_100[[i]], .combine = 'list',.multicombine = TRUE, .options.RNG = 141) %dopar% {
cor_matrixp <- cor(as.matrix(dataset), method = "spearman")
clean_matrix(cor_matrixp)
}
}
# cor for 7 options and n = 250
for (i in 1:iter) {
cor_7op_250p[[i]] <- foreach(dataset = data_7op_250[[i]], .combine = 'list', .multicombine = TRUE, .options.RNG = 141) %dopar% {
cor_matrixp <- cor(as.matrix(dataset), method = "pearson")
clean_matrix(cor_matrixp)
}
cor_7op_250sp[[i]] <- foreach(dataset = data_7op_250[[i]], .combine = 'list', .multicombine = TRUE, .options.RNG = 141) %dopar% {
cor_matrixp <- cor(as.matrix(dataset), method = "spearman")
clean_matrix(cor_matrixp)
}
}
# cor for 7 options and n = 500
for (i in 1:iter) {
cor_7op_500p[[i]] <- foreach(dataset = data_7op_500[[i]], .combine = 'list', .multicombine = TRUE, .options.RNG = 141) %dopar% {
cor_matrixp <- cor(as.matrix(dataset), method = "pearson")
clean_matrix(cor_matrixp)
}
cor_7op_500sp[[i]] <- foreach(dataset = data_7op_500[[i]], .combine = 'list', .multicombine = TRUE, .options.RNG = 141) %dopar% {
cor_matrixp <- cor(as.matrix(dataset), method = "spearman")
clean_matrix(cor_matrixp)
}
}
library(psych)
library(doRNG)
set.seed(141)
pa_4op_100p <- foreach(j = 1:3, .combine = 'list', .multicombine = TRUE, .packages = c("psych", "foreach", "doRNG")) %:% foreach(i = 1:iter, .combine = 'c', .packages = "psych", .options.RNG = 141) %dopar% {
set.seed(141 + i + j)
res <- fa.parallel(cor_4op_100p[[i]][[j]], fa = "fa", fm = "pa", n.obs = n1, plot = FALSE)
res$nfact
}
pa_4op_100sp <- foreach(j = 1:3, .combine = 'list', .multicombine = TRUE, .packages = c("psych", "foreach", "doRNG")) %:%
foreach(i = 1:iter, .combine = 'c', .packages = "psych", .options.RNG = 141) %dopar% {
set.seed(141 + i + j)
res <- fa.parallel(cor_4op_100sp[[i]][[j]], fa = "fa", fm = "pa", n.obs = n1, plot = FALSE)
res$nfact
}
pa_4op_250p <- foreach(j = 1:3, .combine = 'list', .multicombine = TRUE, .packages = c("psych", "foreach", "doRNG")) %:%
foreach(i = 1:iter, .combine = 'c', .packages = "psych", .options.RNG = 141) %dopar% {
set.seed(141 + i + j)
res <- fa.parallel(cor_4op_250p[[i]][[j]], fa = "fa", fm = "pa", n.obs = n2, plot = FALSE)
res$nfact
}
pa_4op_250sp <- foreach(j = 1:3, .combine = 'list',.multicombine = TRUE, .packages = c("psych", "foreach", "doRNG")) %:%
foreach(i = 1:iter, .combine = 'c', .packages = "psych", .options.RNG = 141) %dopar% {
set.seed(141 + i + j)
res <- fa.parallel(cor_4op_250sp[[i]][[j]], fa = "fa", fm = "pa", n.obs = n2, plot = FALSE)
res$nfact
}
pa_4op_500p <- foreach(j = 1:3, .combine = 'list', .multicombine = TRUE, .packages = c("psych", "foreach", "doRNG")) %:%
foreach(i = 1:iter, .combine = 'c', .packages = "psych", .options.RNG = 141) %dopar% {
set.seed(141 + i + j)
res <- fa.parallel(cor_4op_500p[[i]][[j]], fa = "fa", fm = "pa", n.obs = n3, plot = FALSE)
res$nfact
}
pa_4op_500sp <- foreach(j = 1:3, .combine = 'list', .multicombine = TRUE, .packages = c("psych", "foreach", "doRNG")) %:%
foreach(i = 1:iter, .combine = 'c', .packages = "psych", .options.RNG = 141) %dopar% {
set.seed(141 + i + j)
res <- fa.parallel(cor_4op_500sp[[i]][[j]], fa = "fa", fm = "pa", n.obs = n3, plot = FALSE)
res$nfact
}
pa_7op_100p <- foreach(j = 1:3, .combine = 'list',.multicombine = TRUE, .packages = c("psych", "foreach", "doRNG")) %:%
foreach(i = 1:iter, .combine = 'c', .packages = "psych", .options.RNG = 141) %dopar% {
set.seed(141 + i + j)
res <- fa.parallel(cor_7op_100p[[i]][[j]], fa = "fa", fm = "pa", n.obs = n1, plot = FALSE)
res$nfact
}
pa_7op_100sp <- foreach(j = 1:3, .combine = 'list', .multicombine = TRUE, .packages = c("psych", "foreach", "doRNG")) %:%
foreach(i = 1:iter, .combine = 'c', .packages = "psych", .options.RNG = 141) %dopar% {
set.seed(141 + i + j)
res <- fa.parallel(cor_7op_100sp[[i]][[j]], fa = "fa", fm = "pa", n.obs = n1, plot = FALSE)
res$nfact
}
pa_7op_250p <- foreach(j = 1:3, .combine = 'list', .multicombine = TRUE, .packages = c("psych", "foreach", "doRNG")) %:%
foreach(i = 1:iter, .combine = 'c', .packages = "psych", .options.RNG = 141) %dopar% {
set.seed(141 + i + j)
res <- fa.parallel(cor_7op_250p[[i]][[j]], fa = "fa", fm = "pa", n.obs = n2, plot = FALSE)
res$nfact
}
pa_7op_250sp <- foreach(j = 1:3, .combine = 'list',.multicombine = TRUE, .packages = c("psych", "foreach", "doRNG")) %:%
foreach(i = 1:iter, .combine = 'c', .packages = "psych", .options.RNG = 141) %dopar% {
set.seed(141 + i + j)
res <- fa.parallel(cor_7op_250sp[[i]][[j]], fa = "fa", fm = "pa", n.obs = n2, plot = FALSE)
res$nfact
}
pa_7op_500p <- foreach(j = 1:3, .combine = 'list',.multicombine = TRUE, .packages = c("psych", "foreach", "doRNG")) %:%
foreach(i = 1:iter, .combine = 'c', .packages = "psych", .options.RNG = 141) %dopar% {
set.seed(141 + i + j)
res <- fa.parallel(cor_7op_500p[[i]][[j]], fa = "fa", fm = "pa", n.obs = n3, plot = FALSE)
res$nfact
}
pa_7op_500sp <- foreach(j = 1:3, .combine = 'list', .multicombine = TRUE, .packages = c("psych", "foreach", "doRNG")) %:%
foreach(i = 1:iter, .combine = 'c', .packages = "psych", .options.RNG = 141) %dopar% {
set.seed(141 + i + j)
res <- fa.parallel(cor_7op_500sp[[i]][[j]], fa = "fa", fm = "pa", n.obs = n3, plot = FALSE)
res$nfact
}
library(EFA.dimensions)
set.seed(141)
MAP_4op_100p <- foreach(j = 1:3, .combine = 'list', .multicombine = TRUE, .packages = c("EFA.dimensions", "foreach", "doRNG")) %:%
foreach(i = 1:iter, .combine = 'c', .packages = "EFA.dimensions", .options.RNG = 141) %dopar% {
set.seed(141 + i + j)
res <- MAP(cor_4op_100p[[i]][[j]], Ncases = n1)
res$NfactorsMAP
}
MAP_4op_100sp<- foreach(j = 1:3, .combine = 'list', .multicombine = TRUE, .packages = c("EFA.dimensions", "foreach", "doRNG")) %:%
foreach(i = 1:iter, .combine = 'c', .packages = "EFA.dimensions", .options.RNG = 141) %dopar% {
set.seed(141 + i + j)
res <- MAP(cor_4op_100sp[[i]][[j]], Ncases = n1)
res$NfactorsMAP
}
MAP_4op_250p <- foreach(j = 1:3, .combine = 'list',.multicombine = TRUE, .packages = c("EFA.dimensions", "foreach", "doRNG")) %:%
foreach(i = 1:iter, .combine = 'c', .packages = "EFA.dimensions", .options.RNG = 141) %dopar% {
set.seed(141 + i + j)
res <- MAP(cor_4op_250p[[i]][[j]], Ncases = n2)
res$NfactorsMAP
}
MAP_4op_250sp <- foreach(j = 1:3, .combine = 'list', .multicombine = TRUE, .packages = c("EFA.dimensions", "foreach", "doRNG")) %:%
foreach(i = 1:iter, .combine = 'c', .packages = "EFA.dimensions", .options.RNG = 141) %dopar% {
set.seed(141 + i + j)
res <- MAP(cor_4op_250sp[[i]][[j]], Ncases = n2)
res$NfactorsMAP
}
MAP_4op_500p <- foreach(j = 1:3, .combine = 'list',.multicombine = TRUE, .packages = c("EFA.dimensions", "foreach", "doRNG")) %:%
foreach(i = 1:iter, .combine = 'c', .packages = "EFA.dimensions", .options.RNG = 141) %dopar% {
set.seed(141 + i + j)
res <- MAP(cor_4op_500p[[i]][[j]], Ncases = n3)
res$NfactorsMAP
}
MAP_4op_500sp <- foreach(j = 1:3, .combine = 'list', .multicombine = TRUE, .packages = c("EFA.dimensions", "foreach", "doRNG")) %:%
foreach(i = 1:iter, .combine = 'c', .packages = "EFA.dimensions", .options.RNG = 141) %dopar% {
set.seed(141 + i + j)
res <- MAP(cor_4op_500sp[[i]][[j]], Ncases = n3)
res$NfactorsMAP
}
MAP_7op_100p <- foreach(j = 1:3, .combine = 'list',.multicombine = TRUE, .packages = c("EFA.dimensions", "foreach", "doRNG")) %:%
foreach(i = 1:iter, .combine = 'c', .packages = "EFA.dimensions", .options.RNG = 141) %dopar% {
set.seed(141 + i + j)
res <- MAP(cor_7op_100p[[i]][[j]], Ncases = n1)
res$NfactorsMAP
}
MAP_7op_100sp<- foreach(j = 1:3, .combine = 'list', .multicombine = TRUE, .packages = c("EFA.dimensions", "foreach", "doRNG")) %:%
foreach(i = 1:iter, .combine = 'c', .packages = "EFA.dimensions", .options.RNG = 141) %dopar% {
set.seed(141 + i + j)
res <- MAP(cor_7op_100sp[[i]][[j]], Ncases = n1)
res$NfactorsMAP
}
MAP_7op_250p <- foreach(j = 1:3, .combine = 'list', .multicombine = TRUE, .packages = c("EFA.dimensions", "foreach", "doRNG")) %:%
foreach(i = 1:iter, .combine = 'c', .packages = "EFA.dimensions", .options.RNG = 141) %dopar% {
set.seed(141 + i + j)
res <- MAP(cor_7op_250p[[i]][[j]], Ncases = n2)
res$NfactorsMAP
}
MAP_7op_250sp <- foreach(j = 1:3, .combine = 'list',.multicombine = TRUE, .packages = c("EFA.dimensions", "foreach", "doRNG")) %:%
foreach(i = 1:iter, .combine = 'c', .packages = "EFA.dimensions", .options.RNG = 141) %dopar% {
set.seed(141 + i + j)
res <- MAP(cor_7op_250sp[[i]][[j]], Ncases = n2)
res$NfactorsMAP
}
MAP_7op_500p <- foreach(j = 1:3, .combine = 'list', .multicombine = TRUE, .packages = c("EFA.dimensions", "foreach", "doRNG")) %:%
foreach(i = 1:iter, .combine = 'c', .packages = "EFA.dimensions", .options.RNG = 141) %dopar% {
set.seed(141 + i + j)
res <- MAP(cor_7op_500p[[i]][[j]], Ncases = n3)
res$NfactorsMAP
}
MAP_7op_500sp <- foreach(j = 1:3, .combine = 'list', .multicombine = TRUE, .packages = c("EFA.dimensions", "foreach", "doRNG")) %:%
foreach(i = 1:iter, .combine = 'c', .packages = "EFA.dimensions", .options.RNG = 141) %dopar% {
set.seed(141 + i + j)
res <- MAP(cor_7op_500sp[[i]][[j]], Ncases = n3)
res$NfactorsMAP
}
library(EGAnet)
set.seed(141)
EGA_4op_100p<- foreach(j = 1:3, .combine = 'list', .multicombine = TRUE, .packages = c("EGAnet", "foreach", "doRNG")) %:%
foreach(i = 1:iter, .combine = 'c', .packages = "EGAnet", .options.RNG = 141) %dopar% {
set.seed(141 + i + j)
res <- tryCatch(EGA(cor_4op_100p[[i]][[j]], n = n1, plot.EGA = FALSE),
warn=FALSE, error=function(e) return(NA))
res$n.dim
}
EGA_4op_100sp <- foreach(j = 1:3, .combine = 'list', .multicombine = TRUE, .packages = c("EGAnet", "foreach", "doRNG")) %:%
foreach(i = 1:iter, .combine = 'c', .packages = "EGAnet", .options.RNG = 141) %dopar% {
set.seed(141 + i + j)
res <- tryCatch(EGA(cor_4op_100sp[[i]][[j]], n = n1, plot.EGA = FALSE),
warn=FALSE, error=function(e) return(NA))
res$n.dim
}
EGA_4op_250p<- foreach(j = 1:3, .combine = 'list', .multicombine = TRUE, .packages = c("EGAnet", "foreach", "doRNG")) %:%
foreach(i = 1:iter, .combine = 'c', .packages = "EGAnet", .options.RNG = 141) %dopar% {
set.seed(141 + i + j)
res <- tryCatch(EGA(cor_4op_250p[[i]][[j]], n = n2, plot.EGA = FALSE),
warn=FALSE, error=function(e) return(NA))
res$n.dim
}
EGA_4op_250sp <- foreach(j = 1:3, .combine = 'list', .multicombine = TRUE, .packages = c("EGAnet", "foreach", "doRNG")) %:%
foreach(i = 1:iter, .combine = 'c', .packages = "EGAnet", .options.RNG = 141) %dopar% {
set.seed(141 + i + j)
res <- tryCatch(EGA(cor_4op_250sp[[i]][[j]], n = n2, plot.EGA = FALSE),
warn=FALSE, error=function(e) return(NA))
res$n.dim
}
EGA_4op_500p<- foreach(j = 1:3, .combine = 'list', .multicombine = TRUE, .packages = c("EGAnet", "foreach", "doRNG")) %:%
foreach(i = 1:iter, .combine = 'c', .packages = "EGAnet", .options.RNG = 141) %dopar% {
set.seed(141 + i + j)
res <- tryCatch(EGA(cor_4op_500p[[i]][[j]], n = n3, plot.EGA = FALSE),
warn=FALSE, error=function(e) return(NA))
res$n.dim
}
EGA_4op_500sp <- foreach(j = 1:3, .combine = 'list', .multicombine = TRUE, .packages = c("EGAnet", "foreach", "doRNG")) %:%
foreach(i = 1:iter, .combine = 'c', .packages = "EGAnet", .options.RNG = 141) %dopar% {
set.seed(141 + i + j)
res <- tryCatch(EGA(cor_4op_500sp[[i]][[j]], n = n3, plot.EGA = FALSE),
warn=FALSE, error=function(e) return(NA))
res$n.dim
}
EGA_7op_100p<- foreach(j = 1:3, .combine = 'list', .multicombine = TRUE, .packages = c("EGAnet", "foreach", "doRNG")) %:%
foreach(i = 1:iter, .combine = 'c', .packages = "EGAnet", .options.RNG = 141) %dopar% {
set.seed(141 + i + j)
res <- tryCatch(EGA(cor_4op_100p[[i]][[j]], n = n1, plot.EGA = FALSE),
warn=FALSE, error=function(e) return(NA))
res$n.dim
}
EGA_7op_100sp <- foreach(j = 1:3, .combine = 'list', .multicombine = TRUE, .packages = c("EGAnet", "foreach", "doRNG")) %:%
foreach(i = 1:iter, .combine = 'c', .packages = "EGAnet", .options.RNG = 141) %dopar% {
set.seed(141 + i + j)
res <- tryCatch(EGA(cor_4op_100sp[[i]][[j]], n = n1, plot.EGA = FALSE),
warn=FALSE, error=function(e) return(NA))
res$n.dim
}
EGA_7op_250p<- foreach(j = 1:3, .combine = 'list', .multicombine = TRUE, .packages = c("EGAnet", "foreach", "doRNG")) %:%
foreach(i = 1:iter, .combine = 'c', .packages = "EGAnet", .options.RNG = 141) %dopar% {
set.seed(141 + i + j)
res <- tryCatch(EGA(cor_4op_250p[[i]][[j]], n = n2, plot.EGA = FALSE),
warn=FALSE, error=function(e) return(NA))
res$n.dim
}
EGA_7op_250sp <- foreach(j = 1:3, .combine = 'list', .multicombine = TRUE, .packages = c("EGAnet", "foreach", "doRNG")) %:%
foreach(i = 1:iter, .combine = 'c', .packages = "EGAnet", .options.RNG = 141) %dopar% {
set.seed(141 + i + j)
res <- tryCatch(EGA(cor_4op_250sp[[i]][[j]], n = n2, plot.EGA = FALSE),
warn=FALSE, error=function(e) return(NA))
res$n.dim
}
EGA_7op_500p<- foreach(j = 1:3, .combine = 'list', .multicombine = TRUE, .packages = c("EGAnet", "foreach", "doRNG")) %:%
foreach(i = 1:iter, .combine = 'c', .packages = "EGAnet", .options.RNG = 141) %dopar% {
set.seed(141 + i + j)
res <- tryCatch(EGA(cor_4op_500p[[i]][[j]], n = n3, plot.EGA = FALSE),
warn=FALSE, error=function(e) return(NA))
res$n.dim
}
EGA_7op_500sp <- foreach(j = 1:3, .combine = 'list', .multicombine = TRUE, .packages = c("EGAnet", "foreach", "doRNG")) %:%
foreach(i = 1:iter, .combine = 'c', .packages = "EGAnet", .options.RNG = 141) %dopar% {
set.seed(141 + i + j)
res <- tryCatch(EGA(cor_4op_500sp[[i]][[j]], n = n3, plot.EGA = FALSE),
warn=FALSE, error=function(e) return(NA))
res$n.dim
}
Applyed to the data set
library(Gifi)
set.seed(141)
KP_4op_100 <- foreach(j = 1:3, .combine = 'list', .multicombine = TRUE, .packages = c("Gifi", "foreach", "doRNG")) %:%
foreach(i = 1:iter, .combine = 'c', .packages = "Gifi", .options.RNG = 141) %dopar% {
set.seed(141 + i + j)
res <- princals(data_4op_100[[i]][[j]])
sum(res$evals >= 1, na.rm = T)
}
KP_4op_250 <- foreach(j = 1:3, .combine = 'list', .multicombine = TRUE, .packages = c("Gifi", "foreach", "doRNG")) %:%
foreach(i = 1:iter, .combine = 'c', .packages = "Gifi", .options.RNG = 141) %dopar% {
set.seed(141 + i + j)
res <- princals(data_4op_250[[i]][[j]])
sum(res$evals >= 1, na.rm = T)
}
KP_4op_500 <- foreach(j = 1:3, .combine = 'list', .multicombine = TRUE, .packages = c("Gifi", "foreach", "doRNG")) %:%
foreach(i = 1:iter, .combine = 'c', .packages = "Gifi", .options.RNG = 141) %dopar% {
set.seed(141 + i + j)
res <- princals(data_4op_500[[i]][[j]])
sum(res$evals >= 1, na.rm = T)
}
KP_7op_100 <- foreach(j = 1:3, .combine = 'list', .multicombine = TRUE, .packages = c("Gifi", "foreach", "doRNG")) %:%
foreach(i = 1:iter, .combine = 'c', .packages = "Gifi", .options.RNG = 141) %dopar% {
set.seed(141 + i + j)
res <- princals(data_4op_100[[i]][[j]])
sum(res$evals >= 1, na.rm = T)
}
KP_7op_250 <- foreach(j = 1:3, .combine = 'list', .multicombine = TRUE, .packages = c("Gifi", "foreach", "doRNG")) %:%
foreach(i = 1:iter, .combine = 'c', .packages = "Gifi", .options.RNG = 141) %dopar% {
set.seed(141 + i + j)
res <- princals(data_4op_250[[i]][[j]])
sum(res$evals >= 1, na.rm = T)
}
KP_7op_500 <- foreach(j = 1:3, .combine = 'list', .multicombine = TRUE, .packages = c("Gifi", "foreach", "doRNG")) %:%
foreach(i = 1:iter, .combine = 'c', .packages = "Gifi", .options.RNG = 141) %dopar% {
set.seed(141 + i + j)
res <- princals(data_4op_500[[i]][[j]])
sum(res$evals >= 1, na.rm = T)
}
#Create a function to process all lists
process_list <- function(lista) {
vector <- unlist(lista)
split(vector, ceiling(seq_along(vector) / iter))
}
listas <- list(pa_4op_100p, pa_4op_100sp, pa_4op_250p, pa_4op_250sp, pa_4op_500p, pa_4op_500sp,
pa_7op_100p, pa_7op_100sp, pa_7op_250p, pa_7op_250sp, pa_7op_500p, pa_7op_500sp,MAP_4op_100p, MAP_4op_100sp, MAP_4op_250p, MAP_4op_250sp, MAP_4op_500p, MAP_4op_500sp, MAP_7op_100p, MAP_7op_100sp, MAP_7op_250p, MAP_7op_250sp, MAP_7op_500p, MAP_7op_500sp, EGA_4op_100p, EGA_4op_100sp, EGA_4op_250p, EGA_4op_250sp, EGA_4op_500p, EGA_4op_500sp, EGA_7op_100p, EGA_7op_100sp, EGA_7op_250p, EGA_7op_250sp, EGA_7op_500p, EGA_7op_500sp, KP_4op_100, KP_4op_250, KP_4op_500, KP_7op_100, KP_7op_250, KP_7op_500)
bloqs <- lapply(listas, process_list) # process all lists
names(bloqs) <- c("pa_4op_100p", "pa_4op_100sp", "pa_4op_250p", "pa_4op_250sp", "pa_4op_500p", "pa_4op_500sp","pa_7op_100p", "pa_7op_100sp", "pa_7op_250p", "pa_7op_250sp", "pa_7op_500p", "pa_7op_500sp", "MAP_4op_100p", "MAP_4op_100sp", "MAP_4op_250p", "MAP_4op_250sp", "MAP_4op_500p", "MAP_4op_500sp", "MAP_7op_100p", "MAP_7op_100sp", "MAP_7op_250p", "MAP_7op_250sp", "MAP_7op_500p", "MAP_7op_500sp", "EGA_4op_100p", "EGA_4op_100sp", "EGA_4op_250p", "EGA_4op_250sp", "EGA_4op_500p", "EGA_4op_500sp", "EGA_7op_100p", "EGA_7op_100sp", "EGA_7op_250p", "EGA_7op_250sp", "EGA_7op_500p", "EGA_7op_500sp", "KP_4op_100", "KP_4op_250", "KP_4op_500", "KP_7op_100", "KP_7op_250", "KP_7op_500") #blocs names
Performance measures
pc <- function(results, correct_value = 1) {
correct_counts <- sum(results == correct_value)
correct_counts / length(results)
} #proportion of correct estimation
mbe <- function(results, correct_value = 1) {
sum(correct_value - results) / length(results)
} #mean bias error
mae <- function(results, correct_value = 1) {
mean(abs(correct_value - results))
} #mean absolute error
results <- lapply(bloqs, function(bloque) {
lapply(bloque, function(data) {
list(
PC = pc(data),
MBE = mbe(data),
MAE = mae(data)
)
})
})
data_frames <- lapply(results, function(res) {
do.call(rbind, lapply(res, function(r) {
data.frame(PC = r$PC, MBE = r$MBE, MAE = r$MAE)
}))
})
names(data_frames) <- c("pa_4op_100p", "pa_4op_100sp", "pa_4op_250p", "pa_4op_250sp", "pa_4op_500p", "pa_4op_500sp","pa_7op_100p", "pa_7op_100sp", "pa_7op_250p", "pa_7op_250sp", "pa_7op_500p", "pa_7op_500sp", "MAP_4op_100p", "MAP_4op_100sp", "MAP_4op_250p", "MAP_4op_250sp", "MAP_4op_500p", "MAP_4op_500sp", "MAP_7op_100p", "MAP_7op_100sp", "MAP_7op_250p", "MAP_7op_250sp", "MAP_7op_500p", "MAP_7op_500sp", "EGA_4op_100p", "EGA_4op_100sp", "EGA_4op_250p", "EGA_4op_250sp", "EGA_4op_500p", "EGA_4op_500sp", "EGA_7op_100p", "EGA_7op_100sp", "EGA_7op_250p", "EGA_7op_250sp", "EGA_7op_500p", "EGA_7op_500sp", "KP_4op_100", "KP_4op_250", "KP_4op_500", "KP_7op_100", "KP_7op_250", "KP_7op_500")
newnames<- c("Lfl_O", "Mfl_O", "Hfl_O")
data_frames <- lapply(data_frames, function(df) {
rownames(df) <- newnames
return(df)
})
data_frames
## $pa_4op_100p
## PC MBE MAE
## Lfl_O 0.576 0.150 0.454
## Mfl_O 0.872 -0.144 0.144
## Hfl_O 0.962 -0.038 0.038
##
## $pa_4op_100sp
## PC MBE MAE
## Lfl_O 0.514 0.168 0.520
## Mfl_O 0.844 -0.190 0.190
## Hfl_O 0.930 -0.078 0.078
##
## $pa_4op_250p
## PC MBE MAE
## Lfl_O 0.806 -0.204 0.224
## Mfl_O 0.880 -0.146 0.146
## Hfl_O 0.964 -0.042 0.042
##
## $pa_4op_250sp
## PC MBE MAE
## Lfl_O 0.768 -0.232 0.272
## Mfl_O 0.830 -0.198 0.198
## Hfl_O 0.916 -0.098 0.098
##
## $pa_4op_500p
## PC MBE MAE
## Lfl_O 0.852 -0.180 0.180
## Mfl_O 0.870 -0.146 0.146
## Hfl_O 0.962 -0.040 0.040
##
## $pa_4op_500sp
## PC MBE MAE
## Lfl_O 0.800 -0.256 0.256
## Mfl_O 0.842 -0.190 0.190
## Hfl_O 0.914 -0.098 0.098
##
## $pa_7op_100p
## PC MBE MAE
## Lfl_O 0.752 0.094 0.258
## Mfl_O 0.952 -0.056 0.056
## Hfl_O 0.992 -0.008 0.008
##
## $pa_7op_100sp
## PC MBE MAE
## Lfl_O 0.740 0.074 0.286
## Mfl_O 0.944 -0.068 0.068
## Hfl_O 0.986 -0.016 0.016
##
## $pa_7op_250p
## PC MBE MAE
## Lfl_O 0.948 -0.060 0.064
## Mfl_O 0.946 -0.058 0.058
## Hfl_O 0.996 -0.006 0.006
##
## $pa_7op_250sp
## PC MBE MAE
## Lfl_O 0.926 -0.082 0.086
## Mfl_O 0.942 -0.064 0.064
## Hfl_O 0.994 -0.006 0.006
##
## $pa_7op_500p
## PC MBE MAE
## Lfl_O 0.918 -0.104 0.104
## Mfl_O 0.952 -0.052 0.052
## Hfl_O 1.000 0.000 0.000
##
## $pa_7op_500sp
## PC MBE MAE
## Lfl_O 0.900 -0.112 0.112
## Mfl_O 0.954 -0.052 0.052
## Hfl_O 0.988 -0.014 0.014
##
## $MAP_4op_100p
## PC MBE MAE
## Lfl_O 0.000 1.000 1.000
## Mfl_O 0.422 0.578 0.578
## Hfl_O 1.000 0.000 0.000
##
## $MAP_4op_100sp
## PC MBE MAE
## Lfl_O 0.000 1.000 1.000
## Mfl_O 0.324 0.676 0.676
## Hfl_O 1.000 0.000 0.000
##
## $MAP_4op_250p
## PC MBE MAE
## Lfl_O 0.000 1.000 1.000
## Mfl_O 0.398 0.602 0.602
## Hfl_O 1.000 0.000 0.000
##
## $MAP_4op_250sp
## PC MBE MAE
## Lfl_O 0.000 1.000 1.000
## Mfl_O 0.182 0.818 0.818
## Hfl_O 1.000 0.000 0.000
##
## $MAP_4op_500p
## PC MBE MAE
## Lfl_O 0.00 1.00 1.00
## Mfl_O 0.33 0.67 0.67
## Hfl_O 1.00 0.00 0.00
##
## $MAP_4op_500sp
## PC MBE MAE
## Lfl_O 0.000 1.000 1.000
## Mfl_O 0.134 0.866 0.866
## Hfl_O 1.000 0.000 0.000
##
## $MAP_7op_100p
## PC MBE MAE
## Lfl_O 0.000 1.000 1.000
## Mfl_O 0.888 0.112 0.112
## Hfl_O 1.000 0.000 0.000
##
## $MAP_7op_100sp
## PC MBE MAE
## Lfl_O 0.000 1.000 1.000
## Mfl_O 0.784 0.216 0.216
## Hfl_O 1.000 0.000 0.000
##
## $MAP_7op_250p
## PC MBE MAE
## Lfl_O 0.000 1.000 1.000
## Mfl_O 0.944 0.056 0.056
## Hfl_O 1.000 0.000 0.000
##
## $MAP_7op_250sp
## PC MBE MAE
## Lfl_O 0.000 1.000 1.000
## Mfl_O 0.854 0.146 0.146
## Hfl_O 1.000 0.000 0.000
##
## $MAP_7op_500p
## PC MBE MAE
## Lfl_O 0.000 1.000 1.000
## Mfl_O 0.988 0.012 0.012
## Hfl_O 1.000 0.000 0.000
##
## $MAP_7op_500sp
## PC MBE MAE
## Lfl_O 0.00 1.00 1.00
## Mfl_O 0.92 0.08 0.08
## Hfl_O 1.00 0.00 0.00
##
## $EGA_4op_100p
## PC MBE MAE
## Lfl_O 0.972 0.024 0.028
## Mfl_O 1.000 0.000 0.000
## Hfl_O 1.000 0.000 0.000
##
## $EGA_4op_100sp
## PC MBE MAE
## Lfl_O 0.952 0.044 0.048
## Mfl_O 1.000 0.000 0.000
## Hfl_O 1.000 0.000 0.000
##
## $EGA_4op_250p
## PC MBE MAE
## Lfl_O 1 0 0
## Mfl_O 1 0 0
## Hfl_O 1 0 0
##
## $EGA_4op_250sp
## PC MBE MAE
## Lfl_O 1 0 0
## Mfl_O 1 0 0
## Hfl_O 1 0 0
##
## $EGA_4op_500p
## PC MBE MAE
## Lfl_O 1 0 0
## Mfl_O 1 0 0
## Hfl_O 1 0 0
##
## $EGA_4op_500sp
## PC MBE MAE
## Lfl_O 1 0 0
## Mfl_O 1 0 0
## Hfl_O 1 0 0
##
## $EGA_7op_100p
## PC MBE MAE
## Lfl_O 0.972 0.024 0.028
## Mfl_O 1.000 0.000 0.000
## Hfl_O 1.000 0.000 0.000
##
## $EGA_7op_100sp
## PC MBE MAE
## Lfl_O 0.952 0.044 0.048
## Mfl_O 1.000 0.000 0.000
## Hfl_O 1.000 0.000 0.000
##
## $EGA_7op_250p
## PC MBE MAE
## Lfl_O 1 0 0
## Mfl_O 1 0 0
## Hfl_O 1 0 0
##
## $EGA_7op_250sp
## PC MBE MAE
## Lfl_O 1 0 0
## Mfl_O 1 0 0
## Hfl_O 1 0 0
##
## $EGA_7op_500p
## PC MBE MAE
## Lfl_O 1 0 0
## Mfl_O 1 0 0
## Hfl_O 1 0 0
##
## $EGA_7op_500sp
## PC MBE MAE
## Lfl_O 1 0 0
## Mfl_O 1 0 0
## Hfl_O 1 0 0
##
## $KP_4op_100
## PC MBE MAE
## Lfl_O 0.132 -0.868 0.868
## Mfl_O 0.754 -0.246 0.246
## Hfl_O 0.986 -0.014 0.014
##
## $KP_4op_250
## PC MBE MAE
## Lfl_O 0.410 -0.590 0.590
## Mfl_O 0.986 -0.014 0.014
## Hfl_O 1.000 0.000 0.000
##
## $KP_4op_500
## PC MBE MAE
## Lfl_O 0.794 -0.206 0.206
## Mfl_O 1.000 0.000 0.000
## Hfl_O 1.000 0.000 0.000
##
## $KP_7op_100
## PC MBE MAE
## Lfl_O 0.132 -0.868 0.868
## Mfl_O 0.754 -0.246 0.246
## Hfl_O 0.986 -0.014 0.014
##
## $KP_7op_250
## PC MBE MAE
## Lfl_O 0.410 -0.590 0.590
## Mfl_O 0.986 -0.014 0.014
## Hfl_O 1.000 0.000 0.000
##
## $KP_7op_500
## PC MBE MAE
## Lfl_O 0.794 -0.206 0.206
## Mfl_O 1.000 0.000 0.000
## Hfl_O 1.000 0.000 0.000
saveRDS(data_frames, file = "P1f4vpf.rds")