Este tutorial apresenta um procedimento para realizar um estudo de simulação, visando testar procedimentos para validação de construto e seleção de modelo em Análise Fatorial Confirmatória (CFA). Os pacotes necessários estão listados abaixo.

suppressMessages(library(future))
suppressMessages(library(future.apply))
suppressMessages(library(ggplot2))
suppressMessages(library(HDInterval))
suppressMessages(library(lavaan))
suppressMessages(library(psych))
suppressMessages(library(simsem))
suppressMessages(library(tidyr))

Estudos de simulação são úteis no planejamento de estudos e na exploração das forças e fraquezas de métodos estatísticos. Eles são especialmente úteis quando um problema é complexo demais para ser analisado algebricamente. Como a análise fatorial envolve álgebra matricial iterativa e é afetada por muitas variáveis (número de indicadores, fatores, design estrutural, tipo de estimador etc.), a maioria de suas propriedades em relação à validade de construto e seleção de modelo é melhor abordada por estudos de simulação.

A validade de construto é um passo necessário para operacionalizar conceitos que não podem ser definidos por um único critério ou universo de critérios, e tanto análises fatoriais exploratórias quanto confirmatórias têm sido o padrão-ouro para isso. Além disso, os pesquisadores geralmente se preocupam se o construto é unidimensional ou pode ser dividido em subdimensões, como elas se correlacionam entre si e qual indicador se relaciona com qual dimensão. Quando a teoria sozinha não responde a essa pergunta, procedimentos de seleção de modelo podem ser usados para classificar os modelos que melhor equilibram ajuste do modelo e parcimônia.

Para julgar se um método pode identificar a estrutura que gerou os dados, precisamos saber a resposta de antemão. Se possível, os pesquisadores podem usar modelos disponíveis na literatura para basear suas simulações. No entanto, os pesquisadores são livres para explorar estruturas que considerem plausíveis. No simsem, precisamos informar as cargas fatoriais não padronizadas. Porém, as cargas não padronizadas dependem da variância dos indicadores, o que pode ser difícil de prever e teorizar. Ao definir a média do fator como 0 e as variâncias dos fatores e dos indicadores como 1, as cargas não padronizadas igualam-se às cargas padronizadas, que são as correlações de Pearson entre os fatores e os indicadores, quando o modelo ajustado é igual à estrutura populacional. Assim, fixaremos todas as variâncias em 1 em todos os modelos apresentados aqui.

Além disso, variaremos as cargas fatoriais em valores equidistantes entre 0,5 e 0,8. Essa faixa foi escolhida porque nossa experiência sugere que a maioria dos casos empíricos cai nela. No exemplo aqui apresentado, os limiares (thresholds) também foram variados para reproduzir a não-normalidade comumente observada em casos empíricos.Um exemplo de estrutura populacional com 20 itens Likert de 5 pontos é dado abaixo.

1 Índice \(S\)

1.1 Modelo unidimensional

#Population model
Populacao<-'#specific factors
G=~.800*I1+.784*I2+.768*I3+.753*I4+.737*I5+.721*I6+.705*I7+.689*I8+.674*I9+.658*I10+.642*I11+.626*I12+.611*I13+.595*I14+.579*I15+.563*I16+.547*I17+.532*I18+.516*I19+.500*I20

#thresholds
I20|(-1.612)*t1+(-.572)*t2+.007*t3+1.040*t4
I19|(-1.283)*t1+(-.458)*t2+.010*t3+.270*t4
I18|(-.691)*t1+.183*t2+1.509*t3+2.996*t4
I17|(-1.400)*t1+(-1.021)*t2+.974*t3+1.126*t4
I16|(-1.214)*t1+(-.769)*t2+(-.601)*t3+(-.505)*t4
I15|(-1.115)*t1+(-.249)*t2+(-.156)*t3+.206*t4
I14|(-1.268)*t1+.112*t2+.595*t3+.649*t4
I13|(-.702)*t1+(-.613)*t2+(-.259)*t3+.630*t4
I12|(-.518)*t1+(-.021)*t2+.198*t3+.400*t4
I11|(-1.062)*t1+(-.225)*t2+(-.200)*t3+.663*t4
I10|(-1.358)*t1+(-1.237)*t2+.168*t3+1.357*t4
I9|(-.077)*t1+.026*t2+.782*t3+0.912*t4
I8|(-.852)*t1+(-.440)*t2+.418*t3+0.607*t4
I7|(-1.245)*t1+(-.557)*t2+0.350*t3+.638*t4
I6|(-0.130)*t1+(-0.009)*t2+0.292*t3+0.910*t4
I5|(-1.176)*t1+(-0.640)*t2+0.657*t3+1.613*t4
I4|(-1.687)*t1+(-0.970)*t2+(-0.778)*t3+1.267*t4
I3|(-1.237)*t1+(-0.288)*t2+(-0.230)*t3+0.409*t4
I2|(-0.947)*t1+(-0.409)*t2+(-0.286)*t3+(-0.064)*t4
I1|(-0.589)*t1+0.443*t2+0.950*t3+1.760*t4

#média latente
G~0*1

#variância latente
G~~1*G'

Quando alguém está se familiarizando com o lavaan, pode querer verificar se o código mencionado acima representa o modelo desejado. Importante: mesmo pesquisadores experientes podem ficar incertos se tudo está correto quando o modelo é complexo. Para confirmar que o código mencionado acima é o modelo desejado, mesmo sem dados, podemos plotá-lo com as funções lavaan::lavaanify e semPlot::semPaths.

# check if the model is right
lavaan.table <- lavaan::lavaanify(Populacao)
semPlot::semPaths(lavaan.table,
                  whatLabels = "est",
                  edge.color = "black")
title("Modelo unidimensional - 20 itens politômicos") #change it according to your model

# gráfico simplificado
semPlot::semPaths(lavaan.table,
                  whatLabels = "est",
                  edge.color = "black",
                  intercepts = FALSE,
                  residuals = FALSE)
title("Modelo unidimensional - 20 itens politômicos (simplificado)") #change it according to your model

Embora a maior parte da teoria que sustenta a análise fatorial assuma que os indicadores são intervalares, esse cenário é raro nas ciências sociais. Na maioria das vezes, os construtos são medidos por meio de questionários com indicadores ordinais, como indicadores Likert (níveis mais altos indicam maior concordância com a frase, ex.: 1 = discordo totalmente; 5 = concordo totalmente) e indicadores de diferencial semântico (respostas representam dois conceitos opostos, ex.: 1 = muito triste; 5 = muito feliz). Para criar um modelo com indicadores ordinais, é necessário informar seus limiares. Cada indicador tem \({k-1}\) limiares, onde \(k\) é o número de categorias em um indicador. Isso significa que um item com 5 pontos tem \({5-1=4}\) limiares.

O limiar corresponde ao valor em uma distribuição normal padronizada que é igual à probabilidade cumulativa de escolher todas as categorias anteriores. Portanto, se os limiares do item 20 são -1.612, -0.572, 0.007 e 1.040, então 5.3% da população assinalam a categoria “Discordo fortemente”, 23.1% assinalam a categoria “Discordo” (ou seja \({5.3\%+23.1\%=28.4\%}\) assinalam “Discordo fortemente” ou “Discordo”), 21.9% assinalam a opção “neutro” (\(28.4\% + 21.9\%=50.3\%\) assinalam “neutro” ou categoria inferior), 34.8% assinalam “concordo” (\(50.3\% + 34.8\% = 85.1\%\) assinalam “concordo” ou categoria inferior) e 14.9% (\(100\% - 85.1\% = 14.9\%\)) assinalam “concordo fortemente”. Isso pode ser verificado com o código:

print(round(pnorm(c(-1.612,
                    -.572,
                    .007,
                    1.040), 
                  mean = 0, 
                  sd = 1),
            3))
[1] 0.053 0.284 0.503 0.851
# Fazendo o caminho inverso
print(round(qnorm(c(0.053,
                    0.284,
                    0.503,
                    0.851),
                  mean = 0,
                  sd = 1)
            ,3))
[1] -1.616 -0.571  0.008  1.041

Para permitir comparações entre análises, a função simsem::sim será usada para gerar uma lista de conjuntos de dados. Para isso, é necessário definir dataOnly = TRUE. Ao realizar um estudo, o número de conjuntos de dados deve ser grande, e recomendamos pelo menos 10.000 para cada tamanho de amostra. No nosso estudo, como as simulações levam horas para terminar, salvamos cada tamanho de amostra em um objeto simsem diferente. Nesses casos, definimos nRep = 1e4 e n = n para gerar 10.000 conjuntos de dados com n observações cada. Neste tutorial, para simplificar e acelerar os códigos, vamos salvar apenas 100 conjuntos para cada tamanho de amostra. Para gerar conjuntos de dados com diferentes tamanhos de amostra, defina nRep = NULL e insira um vetor numérico em n. No parâmetro model, escreva o nome da estrutura populacional. Definimos seed=123 para permitir replicação e multicore = TRUE para realizar computações mais rápidas.

data.sim <- simsem::sim(model = Populacao, 
                        seed = 123, 
                        multicore = TRUE, 
                        n = rep(seq(100,1000,length.out = 7),
                                each = 100), 
                        dataOnly = TRUE)
The RNGkind() was changed from "Mersenne-Twister" to RNGkind("L'Ecuyer-CMRG") in order to enable the multiple streams in the parallel package.
To set a RNG seed using the previous RNGkind(), you can use
    RNGkind("Mersenne-Twister","Inversion","Rejection")
 or 
    set.seed(seed, kind = "Mersenne-Twister")
Progress tracker is not available when 'multicore' is TRUE.

Para termos uma ideia de como ficou a distribuição dos dados, vamos criar um gráfico com o primeiro banco de dados de \(n = 1000\).

# Pegar o primeiro banco de dados com n=1000
data1 <- data.sim[[601]]

# Mudar formato do banco de dados para facilitar visualização gráfica
data1 <- tidyr::pivot_longer(data1,
                             cols = 1:20)
data1$value <- ordered(data1$value)

# construção do gráfico
ggplot2::ggplot(data1,
                mapping = ggplot2::aes(x = value))+
  ggplot2::geom_bar()+
  ggplot2::facet_wrap(~name)+
  ggplot2::labs(title = "Distribuição dos 20 itens em uma das simulações",
                x = "Opção assinalada",
                y = "Frequência absoluta")

# matrix de correlação de Pearson
GGally::ggcorr(data = NULL,
               cor_matrix = cor(data.sim[[601]]),
               label = TRUE,
               label_round = 2,
               label_size = 2)

# matrix de correlação policórica
GGally::ggcorr(data = NULL,
               cor_matrix = lavaan::lavCor(data.sim[[601]], 
                                           ordered = TRUE),
               label = TRUE,
               label_round = 2,
               label_size = 2)

# delete data1 to save memory
rm(data1)

Antes de mostrar como realizar a análise confirmatória, apresentaremos um índice original destinado a explorar a estrutura latente mais provável que gerou os dados, o índice (\(S\)). Embora análises confirmatórias possam ser realizadas sem análises exploratórias, análises exploratórias e descritivas podem fornecer insights sobre a adequação de perseguir certas hipóteses e auxiliar na formulação de hipóteses alternativas. O índice \(S\) é calculado como

\[ S=\frac{1^\circ\ \text{valor singular}}{2^\circ\ \text{valor singular}} \]

A racionalidade é que os valores singulares (que são autovalores/eigenvalues robustos) medem a quantidade de variância explicada por um fator comum. Se os dados provêm de uma estrutura unidimensional, o primeiro fator (ou seja, o primeiro valor singular) deve explicar muito mais variância do que qualquer fator adicional, enquanto uma estrutura de primeira ordem deve ter pelo menos dois fatores com valores quase iguais. Modelos hierárquicos são casos intermediários. No entanto, os valores singulares são sensíveis às variâncias dos indicadores e, consequentemente, se eles tiverem variâncias que diferem muito entre si (por exemplo, altura de uma pessoa em metros e peso em quilogramas), o índice \(S\) pode refletir a diferença na variância dos indicadores em vez da estrutura latente. Por essa razão, é importante que os valores singulares sejam calculados com base em matrizes de correlação. A figura abaixo são screeplots que ilustram a relação entre o índice \(S\) e os valores singulares.

Como o índice \(S\) é novo, não há uma função já construída no R para calculá-lo e, portanto, precisamos criá-la. O código abaixo cria a função calculate_S para calcular os índices \(S\) com base na matriz de correlação de Pearson e na matriz de correlação policórica. O índice \(S\) calculado por meio de correlações de Pearson representa o índice \(S\) quando os indicadores são tratados como se fossem intervalares e pode sempre ser usado. O índice \(S\) calculado por meio de correlações policóricas trata os indicadores como ordinais e deve ser desabilitado quando os indicadores gerados são intervalares porque, caso contrário, tende a calcular \(n-1\) limiares, o que consome muito RAM e tempo. Além disso, usamos a função lavaan::lavCor para calcular as correlações policóricas porque, dependendo do número de limiares, tamanho da amostra e valores dos limiares, os conjuntos de dados podem conter indicadores com número diferente de categorias (por exemplo, indicadores têm 5 valores possíveis, mas um indicador tem apenas 4 valores observados), e a função lavaan::lavCor é a única que consegue lidar com esses casos, até onde sabemos.

# Define function to calculate S index
calculate_S <- function(data) 
{
  # S index calculated based on Pearson matrix
  cov.mat <- cor(data)
  svd.vec <- svd(cov.mat)$d[1:2]
  sample.size <- nrow(data)
  S.cor <- as.numeric(svd.vec[1] / svd.vec[2])
  
  # S index calculated based on polychoric matrix
  cor.mat <- lavaan::lavCor(data, ordered = TRUE)
  svd.poly <- svd(cor.mat)$d[1:2]
  S.poly <- as.numeric(svd.poly[1] / svd.poly[2])
  
  list(sample.size = sample.size, S.cor = S.cor, S.poly = S.poly)
}

Com a função calculate_S criada, precisamos criar um loop para calcular o índice \(S\) para cada conjunto de dados. A função lapply pode ser usada para isso e geralmente é suficiente quando apenas as matrizes de correlação de Pearson são usadas. No entanto, ao usar as matrizes de correlação policórica, pode levar várias horas para terminar se o número de conjuntos de dados for grande. Mostramos como tornar as computações mais rápidas usando os pacotes future e parallel para configurar a paralelização e a função future.apply::future_lapply para executar o loop. Em seguida, do.call é usado para transformar a saída de future.apply::future_lapply(result.S) em um data frame e remover o result.S para economizar memória.

# parallelize function
future::plan(future::multisession, 
             workers = parallel::detectCores() - 1)
result.S <- future.apply::future_lapply(data.sim, 
                                        calculate_S)

# Convert the result in a data frame
S.data <- do.call(rbind, lapply(result.S, as.data.frame))
rm(result.S)

Agora que os índices \(S\) estão em um data frame, estatísticas descritivas podem ser usadas para explorar seu comportamento. A função psych::describe pode ser usada para obter informações sobre média, mediana, desvio-padrão, assimetria e curtose segmentadas por tamanho de amostra. A função HDInterval::hdi fornece o intervalo de predição de 95% dos índices \(S\), e podemos segmentar por tamanho de amostra por meio da função tapply. Representações gráficas de sua distribuição, como boxplots e densityplots, também podem ser desenhadas. No código abaixo, mostramos como usar o pacote ggplot2 para desenhar densityplots segmentados por tamanho de amostra.

# Describe S index per sample size
print(psych::describe(S.cor + S.poly ~ sample.size, 
                      data = S.data))

 Descriptive statistics by group 
sample.size: 100
       vars   n mean   sd median trimmed  mad  min  max range  skew kurtosis
S.cor     1 100 6.09 0.76   6.14    6.09 0.77 4.30 8.01  3.70  0.03    -0.13
S.poly    2 100 7.07 0.96   7.04    7.08 0.90 4.77 9.29  4.52 -0.10    -0.30
         se
S.cor  0.08
S.poly 0.10
------------------------------------------------------------ 
sample.size: 250
       vars   n mean   sd median trimmed  mad  min   max range skew kurtosis
S.cor     1 100 7.36 0.64   7.31    7.35 0.62 5.91  9.06  3.15 0.13    -0.38
S.poly    2 100 8.83 0.81   8.73    8.84 0.81 6.98 11.09  4.11 0.06    -0.34
         se
S.cor  0.06
S.poly 0.08
------------------------------------------------------------ 
sample.size: 400
       vars   n mean   sd median trimmed  mad  min   max range  skew kurtosis
S.cor     1 100 7.80 0.50   7.85    7.80 0.53 6.70  8.83  2.12 -0.10    -0.73
S.poly    2 100 9.54 0.71   9.54    9.53 0.77 8.12 11.35  3.23  0.09    -0.63
         se
S.cor  0.05
S.poly 0.07
------------------------------------------------------------ 
sample.size: 550
       vars   n  mean   sd median trimmed  mad  min   max range skew kurtosis
S.cor     1 100  8.21 0.52   8.18    8.20 0.42 6.89 10.03  3.14 0.39     0.78
S.poly    2 100 10.11 0.73  10.08   10.07 0.59 8.07 12.96  4.88 0.56     1.67
         se
S.cor  0.05
S.poly 0.07
------------------------------------------------------------ 
sample.size: 700
       vars   n  mean   sd median trimmed  mad  min   max range skew kurtosis
S.cor     1 100  8.32 0.41   8.26    8.31 0.44 7.63  9.32  1.69 0.25     -0.7
S.poly    2 100 10.32 0.60  10.29   10.30 0.59 9.21 11.78  2.57 0.23     -0.6
         se
S.cor  0.04
S.poly 0.06
------------------------------------------------------------ 
sample.size: 850
       vars   n  mean   sd median trimmed  mad  min   max range skew kurtosis
S.cor     1 100  8.46 0.40   8.48    8.45 0.40 7.42  9.58  2.15 0.24     0.04
S.poly    2 100 10.50 0.53  10.47   10.48 0.54 9.34 12.12  2.78 0.39    -0.17
         se
S.cor  0.04
S.poly 0.05
------------------------------------------------------------ 
sample.size: 1000
       vars   n  mean   sd median trimmed  mad  min   max range skew kurtosis
S.cor     1 100  8.53 0.41   8.49    8.51 0.40 7.82  9.92  2.10 0.80     1.08
S.poly    2 100 10.64 0.57  10.58   10.61 0.51 9.54 12.42  2.89 0.63     0.79
         se
S.cor  0.04
S.poly 0.06
tapply(S.data[,grep("S.",colnames(S.data))],
       S.data$sample.size,
       HDInterval::hdi)
$`100`
         S.cor   S.poly
lower 4.634571 4.995470
upper 7.574089 8.739149
attr(,"credMass")
[1] 0.95

$`250`
         S.cor    S.poly
lower 6.256360  7.275367
upper 8.612367 10.369116
attr(,"credMass")
[1] 0.95

$`400`
         S.cor    S.poly
lower 6.858959  8.118845
upper 8.710979 10.671851
attr(,"credMass")
[1] 0.95

$`550`
         S.cor   S.poly
lower 7.369741  9.04034
upper 9.220402 11.72437
attr(,"credMass")
[1] 0.95

$`700`
         S.cor    S.poly
lower 7.631860  9.230186
upper 9.036156 11.471322
attr(,"credMass")
[1] 0.95

$`850`
         S.cor    S.poly
lower 7.719046  9.626719
upper 9.186817 11.493153
attr(,"credMass")
[1] 0.95

$`1000`
         S.cor    S.poly
lower 7.822380  9.601489
upper 9.114757 11.717387
attr(,"credMass")
[1] 0.95
# Plot observed density of S indices generated by Pearson matrices 
plot(ggplot2::ggplot(data = S.data, 
                     mapping = ggplot2::aes(x = S.cor))+
       ggplot2::geom_density(fill = "black")+
       ggplot2::geom_vline(xintercept = 2)+
       ggplot2::geom_vline(xintercept = 3)+
       ggplot2::facet_wrap(facets = ~sample.size)+
       ggplot2::labs(x = "S index",
                     title = "S index density per sample size",
                     subtitle = "20 polytomous indicators - unidimensional population 
                     Pearson matrix"))

# Plot observed density of S indices generated by polychoric matrices
plot(ggplot2::ggplot(data = S.data, 
                     mapping = ggplot2::aes(x = S.poly))+
       ggplot2::geom_density(fill = "black")+
       ggplot2::geom_vline(xintercept = 2)+
       ggplot2::geom_vline(xintercept = 3)+
       ggplot2::facet_wrap(facets = ~sample.size)+
       ggplot2::labs(x = "S index",
                     title = "S index density per sample size",
                     subtitle = "20 polytomous indicators - unidimensional population 
                     polychoric matrix"))

Como mostrado anteriormente, nossa experiência indica que quando o índice \(S \leq2\), isso indica uma estrutura de primeira ordem. Quando \(2 < S \leq 3\), isso indica uma estrutura hierárquica (ou seja, de segunda ordem e bifator), e \(S > 3\) indica uma estrutura unidimensional. Para testar nossa hipótese, criamos duas novas colunas em S.data. Na coluna S.cor.cls, salvaremos a classificação dos índices \(S\) calculados por meio de correlações de Pearson, e em S.poly.cls salvaremos a classificação dos índices \(S\) calculados por meio de correlações policóricas. Lembre-se de que, se os dados gerados forem intervalares, não calculamos as correlações policóricas e todas as partes do código que se referem a elas devem ser desabilitadas.

Em seguida, a função S_classify é criada para aplicar as regras de classificação mencionadas acima a todos os índices \(S\) gerados. A função future.apply::future_lapply será usada novamente em vez de um lapply regular para tornar as computações mais rápidas.

#classify S
S.data$S.cor.cls <- NA_character_
S.data$S.poly.cls <- NA_character_
namecols <- c("S.cor","S.poly")
nameclss <- paste0(namecols,".cls")

# Classify S index
for(j in seq_along(namecols)) {
  S.data[, nameclss[j]] <- cut(S.data[, namecols[j]], 
                                breaks = c(-Inf, 2, 3, Inf),
                                labels = c("Primeira_Ordem", "Bifatorial", "Unidimensional"),
                                right = TRUE)
}

Aqui sabemos que todos os conjuntos de dados provêm de uma estrutura unidimensional, portanto todos os índices \(S\) devem ser classificados como unidimensionais. Para verificar com que frequência predizemos corretamente a estrutura parental, usamos ftable.

ftable(S.data[,c("sample.size",nameclss[1])])
            S.cor.cls Primeira_Ordem Bifatorial Unidimensional
sample.size                                                   
100                                0          0            100
250                                0          0            100
400                                0          0            100
550                                0          0            100
700                                0          0            100
850                                0          0            100
1000                               0          0            100
ftable(S.data[,c("sample.size",nameclss[2])])
            S.poly.cls Primeira_Ordem Bifatorial Unidimensional
sample.size                                                    
100                                 0          0            100
250                                 0          0            100
400                                 0          0            100
550                                 0          0            100
700                                 0          0            100
850                                 0          0            100
1000                                0          0            100

Portanto, todos os data frames foram classificados corretamente como provenientes de uma estrutura unidimensional tanto para a matriz de Pearson quanto para a matriz policórica, independente do tamanho da amostra.

1.2 Modelo de primeira ordem ortogonal

Repitamos as análises com um modelo de primeira ordem, com 3 fatores ortogonais.

#Population model
Populacao<-'#specific factors
F1 =~ .800*I1+.500*I2+.768*I3+.516*I4+.737*I5+.532*I6+.705*I7 
F2 =~ .689*I8+.674*I9+.658*I10+.642*I11+.626*I12+.611*I13+.595*I14 
F3 =~ .579*I15+.563*I16+.547*I17+.721*I18+.753*I19+.784*I20 

#thresholds
I20|(-1.612)*t1+(-.572)*t2+.007*t3+1.040*t4
I19|(-1.283)*t1+(-.458)*t2+.010*t3+.270*t4
I18|(-.691)*t1+.183*t2+1.509*t3+2.996*t4
I17|(-1.400)*t1+(-1.021)*t2+.974*t3+1.126*t4
I16|(-1.214)*t1+(-.769)*t2+(-.601)*t3+(-.505)*t4
I15|(-1.115)*t1+(-.249)*t2+(-.156)*t3+.206*t4
I14|(-1.268)*t1+.112*t2+.595*t3+.649*t4
I13|(-.702)*t1+(-.613)*t2+(-.259)*t3+.630*t4
I12|(-.518)*t1+(-.021)*t2+.198*t3+.400*t4
I11|(-1.062)*t1+(-.225)*t2+(-.200)*t3+.663*t4
I10|(-1.358)*t1+(-1.237)*t2+.168*t3+1.357*t4
I9|(-.077)*t1+.026*t2+.782*t3+0.912*t4
I8|(-.852)*t1+(-.440)*t2+.418*t3+0.607*t4
I7|(-1.245)*t1+(-.557)*t2+0.350*t3+.638*t4
I6|(-0.130)*t1+(-0.009)*t2+0.292*t3+0.910*t4
I5|(-1.176)*t1+(-0.640)*t2+0.657*t3+1.613*t4
I4|(-1.687)*t1+(-0.970)*t2+(-0.778)*t3+1.267*t4
I3|(-1.237)*t1+(-0.288)*t2+(-0.230)*t3+0.409*t4
I2|(-0.947)*t1+(-0.409)*t2+(-0.286)*t3+(-0.064)*t4
I1|(-0.589)*t1+0.443*t2+0.950*t3+1.760*t4

#média latente
F1 + F2 + F3 ~ 0*1

#variância latente
F1 ~~ 1*F1
F2 ~~ 1*F2
F3 ~~ 1*F3

#Correlação fatorial
F1 ~~ 0*F2 + 0*F3
F2 ~~ 0*F3'

# check if the model is right
lavaan.table <- lavaan::lavaanify(Populacao)
semPlot::semPaths(lavaan.table,
                  whatLabels = "est",
                  edge.color = "black")
title("Modelo primeira ordem fatorial ortogonal - 20 itens politômicos") #change it according to your model

# gráfico simplificado
semPlot::semPaths(lavaan.table,
                  whatLabels = "est",
                  edge.color = "black",
                  intercepts = FALSE,
                  residuals = FALSE)
title("Modelo primeira ordem fatorial ortogonal - 20 itens politômicos (simplificado)")

#simulacao
data.sim.fst000 <- simsem::sim(model = Populacao, 
                        seed = 123, 
                        multicore = TRUE, 
                        n = rep(seq(100,1000,length.out = 7),
                                each = 100), 
                        dataOnly = TRUE)
Progress tracker is not available when 'multicore' is TRUE.
result.S <- future.apply::future_lapply(data.sim.fst000, 
                                        calculate_S)

# Convert the result in a data frame
S.data.fst000 <- do.call(rbind, lapply(result.S, as.data.frame))
rm(result.S)

# Exemplo de matrix de correlação de Pearson
GGally::ggcorr(data = NULL,
               cor_matrix = cor(data.sim.fst000[[601]]),
               label = TRUE,
               label_round = 2,
               label_size = 2)

# Exemplo dematrix de correlação policórica
GGally::ggcorr(data = NULL,
               cor_matrix = lavaan::lavCor(data.sim.fst000[[601]], 
                                           ordered = TRUE),
               label = TRUE,
               label_round = 2,
               label_size = 2)

# Describe S index per sample size
print(psych::describe(S.cor + S.poly ~ sample.size, 
                      data = S.data.fst000))

 Descriptive statistics by group 
sample.size: 100
       vars   n mean   sd median trimmed  mad  min  max range skew kurtosis
S.cor     1 100 1.22 0.12   1.21    1.21 0.13 1.02 1.58  0.57 0.60    -0.37
S.poly    2 100 1.23 0.13   1.23    1.23 0.14 1.01 1.65  0.64 0.55    -0.10
         se
S.cor  0.01
S.poly 0.01
------------------------------------------------------------ 
sample.size: 250
       vars   n mean   sd median trimmed  mad  min  max range skew kurtosis
S.cor     1 100 1.12 0.07   1.11    1.12 0.07 1.02 1.30  0.28 0.66    -0.38
S.poly    2 100 1.13 0.08   1.11    1.12 0.07 1.02 1.33  0.31 0.75    -0.18
         se
S.cor  0.01
S.poly 0.01
------------------------------------------------------------ 
sample.size: 400
       vars   n mean   sd median trimmed  mad  min  max range skew kurtosis
S.cor     1 100  1.1 0.05   1.09     1.1 0.05 1.02 1.25  0.23 0.64    -0.23
S.poly    2 100  1.1 0.05   1.10     1.1 0.05 1.02 1.26  0.24 0.74     0.09
         se
S.cor  0.01
S.poly 0.01
------------------------------------------------------------ 
sample.size: 550
       vars   n mean   sd median trimmed  mad  min  max range skew kurtosis
S.cor     1 100 1.09 0.05   1.08    1.09 0.05 1.01 1.28  0.28 1.01     0.94
S.poly    2 100 1.10 0.06   1.08    1.09 0.05 1.01 1.31  0.30 1.15     1.74
         se
S.cor  0.01
S.poly 0.01
------------------------------------------------------------ 
sample.size: 700
       vars   n mean   sd median trimmed  mad  min  max range skew kurtosis se
S.cor     1 100 1.08 0.04   1.08    1.08 0.04 1.01 1.18  0.18 0.31    -0.63  0
S.poly    2 100 1.08 0.04   1.08    1.08 0.04 1.01 1.18  0.16 0.38    -0.72  0
------------------------------------------------------------ 
sample.size: 850
       vars   n mean   sd median trimmed  mad  min  max range skew kurtosis se
S.cor     1 100 1.07 0.04   1.06    1.07 0.04 1.01 1.24  0.23 1.16     2.90  0
S.poly    2 100 1.07 0.04   1.07    1.07 0.04 1.01 1.24  0.23 1.13     2.71  0
------------------------------------------------------------ 
sample.size: 1000
       vars   n mean   sd median trimmed  mad min  max range skew kurtosis se
S.cor     1 100 1.07 0.05   1.07    1.07 0.04   1 1.23  0.23 1.08     1.44  0
S.poly    2 100 1.08 0.05   1.07    1.07 0.04   1 1.27  0.26 1.29     2.07  0
tapply(S.data.fst000[,grep("S.",colnames(S.data.fst000))],
       S.data.fst000$sample.size,
       HDInterval::hdi)
$`100`
         S.cor  S.poly
lower 1.015065 1.00975
upper 1.445590 1.46527
attr(,"credMass")
[1] 0.95

$`250`
         S.cor   S.poly
lower 1.020465 1.022709
upper 1.261783 1.273453
attr(,"credMass")
[1] 0.95

$`400`
         S.cor   S.poly
lower 1.016591 1.016665
upper 1.202850 1.204630
attr(,"credMass")
[1] 0.95

$`550`
         S.cor   S.poly
lower 1.025368 1.014757
upper 1.200021 1.197242
attr(,"credMass")
[1] 0.95

$`700`
         S.cor   S.poly
lower 1.005417 1.016686
upper 1.146089 1.163506
attr(,"credMass")
[1] 0.95

$`850`
         S.cor   S.poly
lower 1.007007 1.005503
upper 1.145252 1.139589
attr(,"credMass")
[1] 0.95

$`1000`
         S.cor   S.poly
lower 1.000258 1.003122
upper 1.154925 1.167328
attr(,"credMass")
[1] 0.95
# Plot observed density of S indices generated by Pearson matrices 
plot(ggplot2::ggplot(data = S.data.fst000, 
                     mapping = ggplot2::aes(x = S.cor))+
       ggplot2::geom_density(fill = "black")+
       ggplot2::geom_vline(xintercept = 2)+
       ggplot2::geom_vline(xintercept = 3)+
       ggplot2::facet_wrap(facets = ~sample.size)+
       ggplot2::labs(x = "S index",
                     title = "S index density per sample size",
                     subtitle = "20 polytomous indicators - first-order (rho=0.00) population 
                     Pearson matrix"))

# Plot observed density of S indices generated by polychoric matrices
plot(ggplot2::ggplot(data = S.data.fst000, 
                     mapping = ggplot2::aes(x = S.poly))+
       ggplot2::geom_density(fill = "black")+
       ggplot2::geom_vline(xintercept = 2)+
       ggplot2::geom_vline(xintercept = 3)+
       ggplot2::facet_wrap(facets = ~sample.size)+
       ggplot2::labs(x = "S index",
                     title = "S index density per sample size",
                     subtitle = "20 polytomous indicators - first-order (rho=0.00) population 
                     polychoric matrix"))

#classify S
S.data.fst000$S.cor.cls <- NA_character_
S.data.fst000$S.poly.cls <- NA_character_
namecols <- c("S.cor","S.poly")
nameclss <- paste0(namecols,".cls")

# Classify S index
for(j in seq_along(namecols)) {
  S.data.fst000[, nameclss[j]] <- cut(S.data.fst000[, namecols[j]], 
                               breaks = c(-Inf, 2, 3, Inf),
                               labels = c("Primeira_Ordem", "Bifatorial",
                                          "Unidimensional"),
                               right = TRUE)
}

ftable(S.data.fst000[,c("sample.size",nameclss[1])])
            S.cor.cls Primeira_Ordem Bifatorial Unidimensional
sample.size                                                   
100                              100          0              0
250                              100          0              0
400                              100          0              0
550                              100          0              0
700                              100          0              0
850                              100          0              0
1000                             100          0              0
ftable(S.data.fst000[,c("sample.size",nameclss[2])])
            S.poly.cls Primeira_Ordem Bifatorial Unidimensional
sample.size                                                    
100                               100          0              0
250                               100          0              0
400                               100          0              0
550                               100          0              0
700                               100          0              0
850                               100          0              0
1000                              100          0              0
# Delete data concerning orthogonal models to save memory
rm("S.data.fst000",
     "data.sim.fst000")

1.3 Modelo de primeira ordem (\(\rho = 0.5\))

#Population model
Populacao<-'#specific factors
F1 =~ .800*I1+.500*I2+.768*I3+.516*I4+.737*I5+.532*I6+.705*I7 
F2 =~ .689*I8+.674*I9+.658*I10+.642*I11+.626*I12+.611*I13+.595*I14 
F3 =~ .579*I15+.563*I16+.547*I17+.721*I18+.753*I19+.784*I20 

#thresholds
I20|(-1.612)*t1+(-.572)*t2+.007*t3+1.040*t4
I19|(-1.283)*t1+(-.458)*t2+.010*t3+.270*t4
I18|(-.691)*t1+.183*t2+1.509*t3+2.996*t4
I17|(-1.400)*t1+(-1.021)*t2+.974*t3+1.126*t4
I16|(-1.214)*t1+(-.769)*t2+(-.601)*t3+(-.505)*t4
I15|(-1.115)*t1+(-.249)*t2+(-.156)*t3+.206*t4
I14|(-1.268)*t1+.112*t2+.595*t3+.649*t4
I13|(-.702)*t1+(-.613)*t2+(-.259)*t3+.630*t4
I12|(-.518)*t1+(-.021)*t2+.198*t3+.400*t4
I11|(-1.062)*t1+(-.225)*t2+(-.200)*t3+.663*t4
I10|(-1.358)*t1+(-1.237)*t2+.168*t3+1.357*t4
I9|(-.077)*t1+.026*t2+.782*t3+0.912*t4
I8|(-.852)*t1+(-.440)*t2+.418*t3+0.607*t4
I7|(-1.245)*t1+(-.557)*t2+0.350*t3+.638*t4
I6|(-0.130)*t1+(-0.009)*t2+0.292*t3+0.910*t4
I5|(-1.176)*t1+(-0.640)*t2+0.657*t3+1.613*t4
I4|(-1.687)*t1+(-0.970)*t2+(-0.778)*t3+1.267*t4
I3|(-1.237)*t1+(-0.288)*t2+(-0.230)*t3+0.409*t4
I2|(-0.947)*t1+(-0.409)*t2+(-0.286)*t3+(-0.064)*t4
I1|(-0.589)*t1+0.443*t2+0.950*t3+1.760*t4

#média latente
F1 + F2 + F3 ~ 0*1

#variância latente
F1 ~~ 1*F1
F2 ~~ 1*F2
F3 ~~ 1*F3

#Correlação fatorial
F1 ~~ 0.5*F2 + 0.5*F3
F2 ~~ 0.5*F3'

# check if the model is right
lavaan.table <- lavaan::lavaanify(Populacao)
semPlot::semPaths(lavaan.table,
                  whatLabels = "est",
                  edge.color = "black")
title("Modelo primeira ordem fatorial correlacionado - 20 itens politômicos") #change it according to your model

# gráfico simplificado
semPlot::semPaths(lavaan.table,
                  whatLabels = "est",
                  edge.color = "black",
                  intercepts = FALSE,
                  residuals = FALSE)
title("Modelo primeira ordem fatorial correlacionado - 20 itens politômicos (simplificado)")

#simulacao
data.sim.fst050 <- simsem::sim(model = Populacao, 
                        seed = 123, 
                        multicore = TRUE, 
                        n = rep(seq(100,1000,length.out = 7),
                                each = 100), 
                        dataOnly = TRUE)
Progress tracker is not available when 'multicore' is TRUE.
result.S <- future.apply::future_lapply(data.sim.fst050, 
                                        calculate_S)

# Convert the result in a data frame
S.data.fst050 <- do.call(rbind, lapply(result.S, as.data.frame))
rm(result.S)

# Exemplo de matrix de correlação de Pearson
GGally::ggcorr(data = NULL,
               cor_matrix = cor(data.sim.fst050[[601]]),
               label = TRUE,
               label_round = 2,
               label_size = 2)

# Exemplo dematrix de correlação policórica
GGally::ggcorr(data = NULL,
               cor_matrix = lavaan::lavCor(data.sim.fst050[[601]], 
                                           ordered = TRUE),
               label = TRUE,
               label_round = 2,
               label_size = 2)

# Describe S index per sample size
print(psych::describe(S.cor + S.poly ~ sample.size, 
                      data = S.data.fst050))

 Descriptive statistics by group 
sample.size: 100
       vars   n mean   sd median trimmed  mad  min  max range skew kurtosis
S.cor     1 100 2.58 0.43   2.55    2.55 0.45 1.67 3.57  1.90 0.47    -0.42
S.poly    2 100 2.74 0.49   2.68    2.70 0.48 1.74 4.09  2.34 0.61    -0.27
         se
S.cor  0.04
S.poly 0.05
------------------------------------------------------------ 
sample.size: 250
       vars   n mean   sd median trimmed  mad  min  max range skew kurtosis
S.cor     1 100 2.76 0.33   2.71    2.74 0.32 2.24 3.50  1.26 0.44    -0.73
S.poly    2 100 2.94 0.37   2.89    2.92 0.37 2.25 3.82  1.57 0.41    -0.78
         se
S.cor  0.03
S.poly 0.04
------------------------------------------------------------ 
sample.size: 400
       vars   n mean   sd median trimmed  mad  min  max range skew kurtosis
S.cor     1 100 2.76 0.20   2.73    2.76 0.19 2.24 3.25  1.00 0.22    -0.29
S.poly    2 100 2.94 0.23   2.92    2.94 0.20 2.30 3.46  1.16 0.19    -0.22
         se
S.cor  0.02
S.poly 0.02
------------------------------------------------------------ 
sample.size: 550
       vars   n mean   sd median trimmed  mad  min  max range skew kurtosis
S.cor     1 100 2.83 0.24   2.80    2.83 0.22 2.27 3.66  1.39 0.35     0.63
S.poly    2 100 3.03 0.27   3.01    3.02 0.25 2.43 3.93  1.50 0.28     0.34
         se
S.cor  0.02
S.poly 0.03
------------------------------------------------------------ 
sample.size: 700
       vars   n mean   sd median trimmed  mad  min  max range  skew kurtosis
S.cor     1 100 2.80 0.21   2.81    2.80 0.19 2.39 3.41  1.02 -0.07    -0.25
S.poly    2 100 2.98 0.23   3.00    2.99 0.23 2.49 3.62  1.13 -0.17    -0.31
         se
S.cor  0.02
S.poly 0.02
------------------------------------------------------------ 
sample.size: 850
       vars   n mean   sd median trimmed  mad  min  max range  skew kurtosis
S.cor     1 100 2.82 0.16   2.83    2.82 0.15 2.43 3.17  0.74 -0.03    -0.28
S.poly    2 100 3.02 0.19   3.01    3.02 0.18 2.55 3.43  0.88  0.03    -0.24
         se
S.cor  0.02
S.poly 0.02
------------------------------------------------------------ 
sample.size: 1000
       vars   n mean   sd median trimmed  mad  min  max range skew kurtosis
S.cor     1 100 2.81 0.18    2.8     2.8 0.17 2.37 3.29  0.92 0.17    -0.06
S.poly    2 100 3.00 0.20    3.0     3.0 0.20 2.56 3.61  1.05 0.28    -0.05
         se
S.cor  0.02
S.poly 0.02
tapply(S.data.fst050[,grep("S.",colnames(S.data.fst050))],
       S.data.fst050$sample.size,
       HDInterval::hdi)
$`100`
         S.cor   S.poly
lower 1.965563 2.025508
upper 3.526540 3.782371
attr(,"credMass")
[1] 0.95

$`250`
         S.cor   S.poly
lower 2.264514 2.371447
upper 3.419091 3.651757
attr(,"credMass")
[1] 0.95

$`400`
         S.cor   S.poly
lower 2.478959 2.545824
upper 3.245196 3.399385
attr(,"credMass")
[1] 0.95

$`550`
         S.cor   S.poly
lower 2.412545 2.562767
upper 3.333624 3.572389
attr(,"credMass")
[1] 0.95

$`700`
         S.cor   S.poly
lower 2.401469 2.491861
upper 3.103255 3.307070
attr(,"credMass")
[1] 0.95

$`850`
         S.cor   S.poly
lower 2.535328 2.731492
upper 3.169513 3.431459
attr(,"credMass")
[1] 0.95

$`1000`
         S.cor   S.poly
lower 2.415748 2.565833
upper 3.151700 3.383767
attr(,"credMass")
[1] 0.95
# Plot observed density of S indices generated by Pearson matrices 
plot(ggplot2::ggplot(data = S.data.fst050, 
                     mapping = ggplot2::aes(x = S.cor))+
       ggplot2::geom_density(fill = "black")+
       ggplot2::geom_vline(xintercept = 2)+
       ggplot2::geom_vline(xintercept = 3)+
       ggplot2::facet_wrap(facets = ~sample.size)+
       ggplot2::labs(x = "S index",
                     title = "S index density per sample size",
                     subtitle = "20 polytomous indicators - first-order (rho=0.50) population 
                     Pearson matrix"))

# Plot observed density of S indices generated by polychoric matrices
plot(ggplot2::ggplot(data = S.data.fst050, 
                     mapping = ggplot2::aes(x = S.poly))+
       ggplot2::geom_density(fill = "black")+
       ggplot2::geom_vline(xintercept = 2)+
       ggplot2::geom_vline(xintercept = 3)+
       ggplot2::facet_wrap(facets = ~sample.size)+
       ggplot2::labs(x = "S index",
                     title = "S index density per sample size",
                     subtitle = "20 polytomous indicators - first-order (rho=0.50) population 
                     polychoric matrix"))

#classify S
S.data.fst050$S.cor.cls <- ""
S.data.fst050$S.poly.cls <- ""
namecols <- c("S.cor","S.poly")
nameclss <- paste0(namecols,".cls")

# Classify S
for(j in seq_along(namecols)) {
  S.data.fst050[, nameclss[j]] <- cut(S.data.fst050[, namecols[j]], 
                               breaks = c(-Inf, 2, 3, Inf),
                               labels = c("Primeira_Ordem", "Bifatorial",
                                          "Unidimensional"),
                               right = TRUE)
}

ftable(S.data.fst050[,c("sample.size",nameclss[1])])
            S.cor.cls Primeira_Ordem Bifatorial Unidimensional
sample.size                                                   
100                                5         79             16
250                                0         75             25
400                                0         86             14
550                                0         77             23
700                                0         81             19
850                                0         86             14
1000                               0         86             14
ftable(S.data.fst050[,c("sample.size",nameclss[2])])
            S.poly.cls Primeira_Ordem Bifatorial Unidimensional
sample.size                                                    
100                                 1         71             28
250                                 0         62             38
400                                 0         66             34
550                                 0         44             56
700                                 0         48             52
850                                 0         47             53
1000                                0         53             47

1.4 Bifatorial

#Population model
Populacao<-'#specific factors
F1 =~ .189*I1+.310*I2+.698*I3+.330*I4+.654*I5+.35*I6+.606*I7
F2 =~ .45*I8+.556*I9+.39*I10+.502*I11+.41*I12+.443*I13+.43*I14
F3 =~ .376*I15+.37*I16+.297*I17+.47*I18+.742*I19+.49*I20

#General Factor
G=~.48*I1+.720*I2+.320*I3+.676*I4+.340*I5+.630*I6+.36*I7+.338*I8+.38*I9+.530*I10+.4*I11+.473*I12+.42*I13+.411*I14+.44*I15+.581*I16+.46*I17+.249*I18+0.300*I19+.100*I20

#Factor correlation
F1 ~~ 0*F2 + 0*F3 + 0*G
F2 ~~ 0*F3 + 0*G
F3 ~~ 0*G

#intercepts
I20|(-1.612)*t1+(-.572)*t2+.007*t3+1.040*t4
I19|(-1.283)*t1+(-.458)*t2+.010*t3+.270*t4
I18|(-.691)*t1+.183*t2+1.509*t3+2.996*t4
I17|(-1.400)*t1+(-1.021)*t2+.974*t3+1.126*t4
I16|(-1.214)*t1+(-.769)*t2+(-.601)*t3+(-.505)*t4
I15|(-1.115)*t1+(-.249)*t2+(-.156)*t3+.206*t4
I14|(-1.268)*t1+.112*t2+.595*t3+.649*t4
I13|(-.702)*t1+(-.613)*t2+(-.259)*t3+.630*t4
I12|(-.518)*t1+(-.021)*t2+.198*t3+.400*t4
I11|(-1.062)*t1+(-.225)*t2+(-.200)*t3+.663*t4
I10|(-1.358)*t1+(-1.237)*t2+.168*t3+1.357*t4
I9|(-.077)*t1+.026*t2+.782*t3+0.912*t4
I8|(-.852)*t1+(-.440)*t2+.418*t3+0.607*t4
I7|(-1.245)*t1+(-.557)*t2+0.350*t3+.638*t4
I6|(-0.130)*t1+(-0.009)*t2+0.292*t3+0.910*t4
I5|(-1.176)*t1+(-0.640)*t2+0.657*t3+1.613*t4
I4|(-1.687)*t1+(-0.970)*t2+(-0.778)*t3+1.267*t4
I3|(-1.237)*t1+(-0.288)*t2+(-0.230)*t3+0.409*t4
I2|(-0.947)*t1+(-0.409)*t2+(-0.286)*t3+(-0.064)*t4
I1|(-0.589)*t1+0.443*t2+0.950*t3+1.760*t4

#média latente
F1 + F2 + F3 + G ~ 0*1

#variância latente
F1~~1*F1; F2~~1*F2; F3~~1*F3; G~~1*G'

# check if the model is right
lavaan.table <- lavaan::lavaanify(Populacao)
semPlot::semPaths(lavaan.table,
                  whatLabels = "est",
                  edge.color = "black",
                  bifactor = "G",
                  layout = "tree2")
title("Modelo bifatorial - 20 itens politômicos") #change it according to your model

# gráfico simplificado
semPlot::semPaths(lavaan.table,
                  whatLabels = "est",
                  edge.color = "black",
                  intercepts = FALSE,
                  residuals = FALSE,
                  bifactor = "G",
                  layout = "tree2")
title("Modelo bifatorial - 20 itens politômicos (simplificado)")

#simulacao
data.sim.bif <- simsem::sim(model = Populacao, 
                        seed = 123, 
                        multicore = TRUE, 
                        n = rep(seq(100,1000,length.out = 7),
                                each = 100), 
                        dataOnly = TRUE)
Progress tracker is not available when 'multicore' is TRUE.
result.S <- future.apply::future_lapply(data.sim.bif, 
                                        calculate_S)

# Convert the result in a data frame
S.data.bif <- do.call(rbind, lapply(result.S, as.data.frame))
rm(result.S)

# Exemplo de matrix de correlação de Pearson
GGally::ggcorr(data = NULL,
               cor_matrix = cor(data.sim.bif[[601]]),
               label = TRUE,
               label_round = 2,
               label_size = 2)

# Exemplo dematrix de correlação policórica
GGally::ggcorr(data = NULL,
               cor_matrix = lavaan::lavCor(data.sim.bif[[601]], 
                                           ordered = TRUE),
               label = TRUE,
               label_round = 2,
               label_size = 2)

# Describe S index per sample size
print(psych::describe(S.cor + S.poly ~ sample.size, 
                      data = S.data.bif))

 Descriptive statistics by group 
sample.size: 100
       vars   n mean   sd median trimmed  mad  min  max range skew kurtosis
S.cor     1 100  2.3 0.36   2.25    2.28 0.39 1.62 3.11   1.5 0.29    -0.77
S.poly    2 100  2.5 0.42   2.44    2.49 0.42 1.73 3.43   1.7 0.26    -0.83
         se
S.cor  0.04
S.poly 0.04
------------------------------------------------------------ 
sample.size: 250
       vars   n mean   sd median trimmed  mad  min  max range skew kurtosis
S.cor     1 100 2.43 0.26   2.41    2.42 0.29 1.96 2.95  0.98 0.24    -1.07
S.poly    2 100 2.66 0.30   2.65    2.65 0.36 2.12 3.27  1.15 0.26    -1.07
         se
S.cor  0.03
S.poly 0.03
------------------------------------------------------------ 
sample.size: 400
       vars   n mean   sd median trimmed  mad  min  max range  skew kurtosis
S.cor     1 100 2.46 0.18   2.46    2.46 0.19 1.99 2.84  0.85 -0.06    -0.48
S.poly    2 100 2.69 0.21   2.68    2.69 0.20 2.13 3.10  0.98 -0.04    -0.52
         se
S.cor  0.02
S.poly 0.02
------------------------------------------------------------ 
sample.size: 550
       vars   n mean   sd median trimmed  mad  min  max range skew kurtosis
S.cor     1 100 2.53 0.19   2.55    2.53 0.18 2.07 3.19  1.11 0.05     0.58
S.poly    2 100 2.77 0.22   2.78    2.77 0.19 2.23 3.47  1.25 0.05     0.52
         se
S.cor  0.02
S.poly 0.02
------------------------------------------------------------ 
sample.size: 700
       vars   n mean   sd median trimmed  mad  min  max range  skew kurtosis
S.cor     1 100 2.48 0.16   2.48    2.48 0.16 2.06 2.85  0.79 -0.10    -0.34
S.poly    2 100 2.72 0.18   2.74    2.73 0.19 2.24 3.12  0.88 -0.17    -0.41
         se
S.cor  0.02
S.poly 0.02
------------------------------------------------------------ 
sample.size: 850
       vars   n mean   sd median trimmed  mad  min  max range  skew kurtosis
S.cor     1 100 2.50 0.14   2.51    2.51 0.14 2.07 2.82  0.75 -0.27     0.17
S.poly    2 100 2.75 0.16   2.76    2.75 0.17 2.26 3.11  0.86 -0.22     0.10
         se
S.cor  0.01
S.poly 0.02
------------------------------------------------------------ 
sample.size: 1000
       vars   n mean   sd median trimmed  mad  min  max range skew kurtosis
S.cor     1 100 2.50 0.16   2.48    2.49 0.14 2.12 3.13  1.01 0.69     1.73
S.poly    2 100 2.74 0.19   2.73    2.74 0.15 2.32 3.44  1.12 0.62     1.44
         se
S.cor  0.02
S.poly 0.02
tapply(S.data.bif[,grep("S.",colnames(S.data.bif))],
       S.data.bif$sample.size,
       HDInterval::hdi)
$`100`
         S.cor   S.poly
lower 1.664553 1.815992
upper 2.982458 3.296384
attr(,"credMass")
[1] 0.95

$`250`
         S.cor   S.poly
lower 2.039371 2.212083
upper 2.907064 3.235844
attr(,"credMass")
[1] 0.95

$`400`
         S.cor   S.poly
lower 2.080382 2.366157
upper 2.782011 3.104395
attr(,"credMass")
[1] 0.95

$`550`
         S.cor   S.poly
lower 2.110314 2.267494
upper 2.826659 3.156665
attr(,"credMass")
[1] 0.95

$`700`
         S.cor   S.poly
lower 2.170502 2.436368
upper 2.788782 3.116945
attr(,"credMass")
[1] 0.95

$`850`
         S.cor   S.poly
lower 2.282211 2.483749
upper 2.822177 3.112865
attr(,"credMass")
[1] 0.95

$`1000`
         S.cor   S.poly
lower 2.117699 2.320225
upper 2.769758 3.022446
attr(,"credMass")
[1] 0.95
# Plot observed density of S indices generated by Pearson matrices 
plot(ggplot2::ggplot(data = S.data.bif, 
                     mapping = ggplot2::aes(x = S.cor))+
       ggplot2::geom_density(fill = "black")+
       ggplot2::geom_vline(xintercept = 2)+
       ggplot2::geom_vline(xintercept = 3)+
       ggplot2::facet_wrap(facets = ~sample.size)+
       ggplot2::labs(x = "S index",
                     title = "S index density per sample size",
                     subtitle = "20 polytomous indicators - bifactor population 
                     Pearson matrix"))

# Plot observed density of S indices generated by polychoric matrices
plot(ggplot2::ggplot(data = S.data.bif, 
                     mapping = ggplot2::aes(x = S.poly))+
       ggplot2::geom_density(fill = "black")+
       ggplot2::geom_vline(xintercept = 2)+
       ggplot2::geom_vline(xintercept = 3)+
       ggplot2::facet_wrap(facets = ~sample.size)+
       ggplot2::labs(x = "S index",
                     title = "S index density per sample size",
                     subtitle = "20 polytomous indicators - bifactor population 
                     polychoric matrix"))

#classify S
S.data.bif$S.cor.cls <- ""
S.data.bif$S.poly.cls <- ""
namecols <- c("S.cor","S.poly")
nameclss <- paste0(namecols,".cls")

# Classify S
for(j in seq_along(namecols)) {
  S.data.bif[, nameclss[j]] <- cut(S.data.bif[, namecols[j]], 
                               breaks = c(-Inf, 2, 3, Inf),
                               labels = c("Primeira_Ordem", "Bifatorial",
                                          "Unidimensional"),
                               right = TRUE)
}

ftable(S.data.bif[,c("sample.size",nameclss[1])])
            S.cor.cls Primeira_Ordem Bifatorial Unidimensional
sample.size                                                   
100                               24         73              3
250                                2         98              0
400                                1         99              0
550                                0         99              1
700                                0        100              0
850                                0        100              0
1000                               0         99              1
ftable(S.data.bif[,c("sample.size",nameclss[2])])
            S.poly.cls Primeira_Ordem Bifatorial Unidimensional
sample.size                                                    
100                                13         70             17
250                                 0         81             19
400                                 0         93              7
550                                 0         87             13
700                                 0         96              4
850                                 0         92              8
1000                                0         93              7

1.5 Segunda ordem

#Population model
Populacao<-'#specific factors
F1 =~ .800*I1+.500*I2+.768*I3+.516*I4+.737*I5+.532*I6+.705*I7 
F2 =~ .689*I8+.674*I9+.658*I10+.642*I11+.626*I12+.611*I13+.595*I14 
F3 =~ .579*I15+.563*I16+.547*I17+.721*I18+.753*I19+.784*I20

G =~ 0.707*F1 + 0.707*F2 + 0.707*F3

#thresholds
I20|(-1.612)*t1+(-.572)*t2+.007*t3+1.040*t4
I19|(-1.283)*t1+(-.458)*t2+.010*t3+.270*t4
I18|(-.691)*t1+.183*t2+1.509*t3+2.996*t4
I17|(-1.400)*t1+(-1.021)*t2+.974*t3+1.126*t4
I16|(-1.214)*t1+(-.769)*t2+(-.601)*t3+(-.505)*t4
I15|(-1.115)*t1+(-.249)*t2+(-.156)*t3+.206*t4
I14|(-1.268)*t1+.112*t2+.595*t3+.649*t4
I13|(-.702)*t1+(-.613)*t2+(-.259)*t3+.630*t4
I12|(-.518)*t1+(-.021)*t2+.198*t3+.400*t4
I11|(-1.062)*t1+(-.225)*t2+(-.200)*t3+.663*t4
I10|(-1.358)*t1+(-1.237)*t2+.168*t3+1.357*t4
I9|(-.077)*t1+.026*t2+.782*t3+0.912*t4
I8|(-.852)*t1+(-.440)*t2+.418*t3+0.607*t4
I7|(-1.245)*t1+(-.557)*t2+0.350*t3+.638*t4
I6|(-0.130)*t1+(-0.009)*t2+0.292*t3+0.910*t4
I5|(-1.176)*t1+(-0.640)*t2+0.657*t3+1.613*t4
I4|(-1.687)*t1+(-0.970)*t2+(-0.778)*t3+1.267*t4
I3|(-1.237)*t1+(-0.288)*t2+(-0.230)*t3+0.409*t4
I2|(-0.947)*t1+(-0.409)*t2+(-0.286)*t3+(-0.064)*t4
I1|(-0.589)*t1+0.443*t2+0.950*t3+1.760*t4

#média latente
F1 + F2 + F3 + G ~ 0*1

#variância latente
G ~~ 1*G
F1 ~~ (1-0.707^2)*F1
F2 ~~ (1-0.707^2)*F2
F3 ~~ (1-0.707^2)*F3'

# check if the model is right
lavaan.table <- lavaan::lavaanify(Populacao)
semPlot::semPaths(lavaan.table,
                  whatLabels = "est",
                  edge.color = "black")
title("Modelo segunda ordem - 20 itens politômicos") #change it according to your model

# gráfico simplificado
semPlot::semPaths(lavaan.table,
                  whatLabels = "est",
                  edge.color = "black",
                  intercepts = FALSE,
                  residuals = FALSE)
title("Modelo segunda ordem - 20 itens politômicos (simplificado)")

#simulacao
data.sim.scn <- simsem::sim(model = Populacao, 
                        seed = 123, 
                        multicore = TRUE, 
                        n = rep(seq(100,1000,length.out = 7),
                                each = 100), 
                        dataOnly = TRUE)
Progress tracker is not available when 'multicore' is TRUE.
result.S <- future.apply::future_lapply(data.sim.scn, 
                                        calculate_S)

# Convert the result in a data frame
S.data.scn <- do.call(rbind, lapply(result.S, as.data.frame))
rm(result.S)

# Exemplo de matrix de correlação de Pearson
GGally::ggcorr(data = NULL,
               cor_matrix = cor(data.sim.scn[[601]]),
               label = TRUE,
               label_round = 2,
               label_size = 2)

# Exemplo dematrix de correlação policórica
GGally::ggcorr(data = NULL,
               cor_matrix = lavaan::lavCor(data.sim.scn[[601]], 
                                           ordered = TRUE),
               label = TRUE,
               label_round = 2,
               label_size = 2)

# Describe S index per sample size
print(psych::describe(S.cor + S.poly ~ sample.size, 
                      data = S.data.scn))

 Descriptive statistics by group 
sample.size: 100
       vars   n mean   sd median trimmed  mad  min  max range skew kurtosis
S.cor     1 100 2.59 0.44   2.58    2.56 0.47 1.73 3.68  1.95 0.53    -0.39
S.poly    2 100 2.77 0.49   2.73    2.73 0.52 1.74 4.01  2.27 0.52    -0.44
         se
S.cor  0.04
S.poly 0.05
------------------------------------------------------------ 
sample.size: 250
       vars   n mean   sd median trimmed  mad  min  max range skew kurtosis
S.cor     1 100 2.75 0.32   2.68    2.73 0.33 2.16 3.59  1.44 0.43    -0.62
S.poly    2 100 2.93 0.36   2.86    2.91 0.38 2.23 3.69  1.45 0.38    -0.81
         se
S.cor  0.03
S.poly 0.04
------------------------------------------------------------ 
sample.size: 400
       vars   n mean   sd median trimmed  mad  min  max range skew kurtosis
S.cor     1 100 2.76 0.21   2.75    2.76 0.21 2.20 3.21  1.01 0.06    -0.50
S.poly    2 100 2.94 0.24   2.92    2.94 0.25 2.28 3.52  1.24 0.10    -0.45
         se
S.cor  0.02
S.poly 0.02
------------------------------------------------------------ 
sample.size: 550
       vars   n mean   sd median trimmed  mad  min  max range skew kurtosis
S.cor     1 100 2.85 0.25   2.84    2.84 0.22 2.35 3.80  1.45 0.54     1.18
S.poly    2 100 3.05 0.28   3.04    3.03 0.24 2.46 4.14  1.68 0.58     1.22
         se
S.cor  0.02
S.poly 0.03
------------------------------------------------------------ 
sample.size: 700
       vars   n mean   sd median trimmed  mad  min  max range  skew kurtosis
S.cor     1 100 2.79 0.21   2.80    2.80 0.19 2.33 3.31  0.99 -0.08    -0.28
S.poly    2 100 2.98 0.24   2.99    2.99 0.24 2.45 3.59  1.15 -0.15    -0.32
         se
S.cor  0.02
S.poly 0.02
------------------------------------------------------------ 
sample.size: 850
       vars   n mean   sd median trimmed  mad  min  max range skew kurtosis
S.cor     1 100 2.84 0.17   2.82    2.83 0.16 2.38 3.22  0.83 0.06    -0.22
S.poly    2 100 3.02 0.19   3.01    3.02 0.19 2.51 3.51  0.99 0.12    -0.15
         se
S.cor  0.02
S.poly 0.02
------------------------------------------------------------ 
sample.size: 1000
       vars   n mean   sd median trimmed  mad  min  max range skew kurtosis
S.cor     1 100  2.8 0.17   2.82    2.80 0.19 2.42 3.27  0.85 0.26    -0.08
S.poly    2 100  3.0 0.19   3.00    2.99 0.21 2.59 3.55  0.96 0.32    -0.16
         se
S.cor  0.02
S.poly 0.02
tapply(S.data.scn[,grep("S.",colnames(S.data.scn))],
       S.data.scn$sample.size,
       HDInterval::hdi)
$`100`
         S.cor   S.poly
lower 1.973264 2.101892
upper 3.452301 3.802748
attr(,"credMass")
[1] 0.95

$`250`
         S.cor   S.poly
lower 2.265843 2.434465
upper 3.393622 3.688011
attr(,"credMass")
[1] 0.95

$`400`
         S.cor   S.poly
lower 2.406380 2.539167
upper 3.149199 3.385203
attr(,"credMass")
[1] 0.95

$`550`
         S.cor   S.poly
lower 2.352981 2.549038
upper 3.252841 3.605454
attr(,"credMass")
[1] 0.95

$`700`
         S.cor   S.poly
lower 2.362402 2.446663
upper 3.112649 3.340072
attr(,"credMass")
[1] 0.95

$`850`
         S.cor   S.poly
lower 2.575647 2.695237
upper 3.215129 3.417053
attr(,"credMass")
[1] 0.95

$`1000`
         S.cor   S.poly
lower 2.547215 2.592444
upper 3.235290 3.337201
attr(,"credMass")
[1] 0.95
# Plot observed density of S indices generated by Pearson matrices 
plot(ggplot2::ggplot(data = S.data.scn, 
                     mapping = ggplot2::aes(x = S.cor))+
       ggplot2::geom_density(fill = "black")+
       ggplot2::geom_vline(xintercept = 2)+
       ggplot2::geom_vline(xintercept = 3)+
       ggplot2::facet_wrap(facets = ~sample.size)+
       ggplot2::labs(x = "S index",
                     title = "S index density per sample size",
                     subtitle = "20 polytomous indicators - second-order population 
                     Pearson matrix"))

# Plot observed density of S indices generated by polychoric matrices
plot(ggplot2::ggplot(data = S.data.scn, 
                     mapping = ggplot2::aes(x = S.poly))+
       ggplot2::geom_density(fill = "black")+
       ggplot2::geom_vline(xintercept = 2)+
       ggplot2::geom_vline(xintercept = 3)+
       ggplot2::facet_wrap(facets = ~sample.size)+
       ggplot2::labs(x = "S index",
                     title = "S index density per sample size",
                     subtitle = "20 polytomous indicators - second-order population 
                     polychoric matrix"))

#classify S
S.data.scn$S.cor.cls <- ""
S.data.scn$S.poly.cls <- ""
namecols <- c("S.cor","S.poly")
nameclss <- paste0(namecols,".cls")

# Classify S
for(j in seq_along(namecols)) {
  S.data.scn[, nameclss[j]] <- cut(S.data.scn[, namecols[j]], 
                               breaks = c(-Inf, 2, 3, Inf),
                               labels = c("Primeira_Ordem", "Bifatorial",
                                          "Unidimensional"),
                               right = TRUE)
}

ftable(S.data.scn[,c("sample.size",nameclss[1])])
            S.cor.cls Primeira_Ordem Bifatorial Unidimensional
sample.size                                                   
100                                4         80             16
250                                0         76             24
400                                0         84             16
550                                0         78             22
700                                0         83             17
850                                0         86             14
1000                               0         89             11
ftable(S.data.scn[,c("sample.size",nameclss[2])])
            S.poly.cls Primeira_Ordem Bifatorial Unidimensional
sample.size                                                    
100                                 1         72             27
250                                 0         61             39
400                                 0         64             36
550                                 0         42             58
700                                 0         52             48
850                                 0         45             55
1000                                0         49             51

1.6 Resumo do índice \(S\)

A tabela abaixo é um resumo dos resultados encontrados com \(n = 250\) e até dois fatores específicos ou de primeira-ordem.

desc.n0250 <- data.frame(indicator_type = c(rep("interval",3),
                                       rep("ordinal_polythomic",6),
                                       rep("ordinal_dichotomic",6)),
                         indicator_number = rep(c(6, 10, 20), times = 5),
                         matrix = c(rep(c("Pearson", "polychoric"), 
                                      times = 2, each = 3),
                                    rep("Pearson", time = 3)))
ntimes <- nrow(desc.n0250)
desc.n0250 <- rbind(desc.n0250, desc.n0250, desc.n0250, desc.n0250,
                    desc.n0250, desc.n0250, desc.n0250)
desc.n0250$model <- rep(c("first order rho=0", "first order rho=.25",
                          "second order", "bifactor", "first order rho=.50",
                          "first order rho=.75", "unidimensional"),
                        each = ntimes)
desc.n0250$S_median <- c(1.33, 1.41, 1.50, 1.34, 1.41, 1.49, 1.13, 1.17, 1.36,
                         1.35, 1.42, 1.49, 1.24, 1.33, 1.43, 
                         1.55, 1.68, 1.77, 1.55, 1.67, 1.80, 1.33, 1.43, 1.66,
                         1.55, 1.67, 1.80, 1.37, 1.50, 1.66, 
                         1.74, 1.91, 2.00, 1.72, 1.90, 2.09, 1.47, 1.64, 1.92,
                         1.72, 1.90, 2.08, 1.47, 1.65, 1.90, 
                         1.77, 2.09, 2.40, 1.75, 2.07, 2.40, 1.62, 1.98, 2.30,
                         1.75, 2.05, 2.38, 1.51, 1.77, 2.10,
                         2.12, 2.42, 2.52, 2.10, 2.40, 2.73, 1.72, 2.02, 2.45,
                         2.08, 2.37, 2.70, 1.67, 1.93, 2.30,
                         3.06, 3.85, 4.09, 2.93, 3.80, 4.70, 2.19, 2.93, 3.93,
                         2.87, 3.61, 4.66, 2.08, 2.62, 3.48, 
                         4.04, 5.76, 6.25, 3.92, 5.53, 8.76, 2.66, 3.85, 6.30,
                         3.63, 4.48, 7.32, 2.50, 3.37, 5.19)
desc.n0250$LB95PI <- c(1.05, 1.10, 1.16, 1.14, 1.21, 1.28, 1.01, 1.01, 1.12,
                       1.09, 1.16, 1.24, 1.04, 1.10, 1.18,
                       1.20, 1.29, 1.36, 1.22, 1.32, 1.44, 1.04, 1.12, 1.30,
                       1.16, 1.27, 1.39, 1.10, 1.20, 1.32,
                       1.33, 1.46, 1.54, 1.32, 1.48, 1.74, 1.14, 1.26, 1.53,
                       1.25, 1.40, 1.57, 1.16, 1.29, 1.50,
                       1.36, 1.60, 1.83, 1.33, 1.58, 1.85, 1.29, 1.53, 1.78,
                       1.22, 1.47, 1.77, 1.18, 1.39, 1.64,
                       1.62, 1.85, 1.94, 1.59, 1.67, 2.10, 1.33, 1.44, 1.89,
                       1.48, 1.70, 2.00, 1.31, 1.51, 1.80,
                       2.40, 2.97, 3.14, 2.29, 2.89, 3.70, 1.73, 2.28, 3.14,
                       2.06, 2.63, 3.40, 1.64, 2.07, 2.74,
                       3.15, 4.58, 5.07, 3.11, 3.91, 7.13, 2.07, 2.75, 5.12,
                       2.70, 3.75, 5.84, 2.02, 2.74, 4.28)
desc.n0250$UB95PI <- c(1.65, 1.77, 1.88, 1.55, 1.64, 1.74, 1.32, 1.37, 1.63,
                       1.66, 1.72, 1.79, 1.46, 1.58, 1.72,
                       1.95, 2.12, 2.22, 1.93, 2.06, 2.22, 1.65, 1.80, 2.05,
                       2.05, 2.15, 2.27, 1.67, 1.83, 2.04,
                       2.19, 2.41, 2.52, 2.19, 2.39, 2.52, 1.84, 2.05, 2.35,
                       2.32, 2.48, 2.65, 1.82, 2.03, 2.35,
                       2.23, 2.64, 3.03, 2.26, 2.63, 3.02, 2.02, 2.47, 2.89,
                       2.38, 2.73, 3.07, 1.88, 2.21, 2.61,
                       2.67, 3.05, 3.17, 2.69, 3.21, 3.45, 2.17, 2.68, 3.08,
                       2.82, 3.16, 3.52, 2.07, 2.41, 2.84,
                       3.83, 4.84, 5.08, 3.80, 4.82, 6.15, 2.77, 3.63, 5.06,
                       3.80, 4.74, 6.08, 2.55, 3.22, 4.27,
                       4.99, 7.05, 7.49, 4.84, 6.58, 10.49, 3.33, 4.73, 7.57,
                       4.74, 6.14, 8.97, 3.04, 4.03, 6.16)
desc.n0250$range <- desc.n0250$UB95PI - desc.n0250$LB95PI

kable.n0250 <- knitr::kable(desc.n0250, 
             col.names = c("indicator type", "indicator number", "matrix type",
                           "population model", "S index median",
                           "Lower bound 95% Predictive Interval",
                           "Upper bound 95% Predictive Interval",
                           "95% Predictive Interval range"),
             align = "c",
             caption = "S index median and 95% prediction interval per condition when n = 250")
kable.n0250 <- kableExtra::kable_styling(kable.n0250,
                                         bootstrap_options = "striped")
kable.n0250
S index median and 95% prediction interval per condition when n = 250
indicator type indicator number matrix type population model S index median Lower bound 95% Predictive Interval Upper bound 95% Predictive Interval 95% Predictive Interval range
interval 6 Pearson first order rho=0 1.33 1.05 1.65 0.60
interval 10 Pearson first order rho=0 1.41 1.10 1.77 0.67
interval 20 Pearson first order rho=0 1.50 1.16 1.88 0.72
ordinal_polythomic 6 polychoric first order rho=0 1.34 1.14 1.55 0.41
ordinal_polythomic 10 polychoric first order rho=0 1.41 1.21 1.64 0.43
ordinal_polythomic 20 polychoric first order rho=0 1.49 1.28 1.74 0.46
ordinal_polythomic 6 Pearson first order rho=0 1.13 1.01 1.32 0.31
ordinal_polythomic 10 Pearson first order rho=0 1.17 1.01 1.37 0.36
ordinal_polythomic 20 Pearson first order rho=0 1.36 1.12 1.63 0.51
ordinal_dichotomic 6 polychoric first order rho=0 1.35 1.09 1.66 0.57
ordinal_dichotomic 10 polychoric first order rho=0 1.42 1.16 1.72 0.56
ordinal_dichotomic 20 polychoric first order rho=0 1.49 1.24 1.79 0.55
ordinal_dichotomic 6 Pearson first order rho=0 1.24 1.04 1.46 0.42
ordinal_dichotomic 10 Pearson first order rho=0 1.33 1.10 1.58 0.48
ordinal_dichotomic 20 Pearson first order rho=0 1.43 1.18 1.72 0.54
interval 6 Pearson first order rho=.25 1.55 1.20 1.95 0.75
interval 10 Pearson first order rho=.25 1.68 1.29 2.12 0.83
interval 20 Pearson first order rho=.25 1.77 1.36 2.22 0.86
ordinal_polythomic 6 polychoric first order rho=.25 1.55 1.22 1.93 0.71
ordinal_polythomic 10 polychoric first order rho=.25 1.67 1.32 2.06 0.74
ordinal_polythomic 20 polychoric first order rho=.25 1.80 1.44 2.22 0.78
ordinal_polythomic 6 Pearson first order rho=.25 1.33 1.04 1.65 0.61
ordinal_polythomic 10 Pearson first order rho=.25 1.43 1.12 1.80 0.68
ordinal_polythomic 20 Pearson first order rho=.25 1.66 1.30 2.05 0.75
ordinal_dichotomic 6 polychoric first order rho=.25 1.55 1.16 2.05 0.89
ordinal_dichotomic 10 polychoric first order rho=.25 1.67 1.27 2.15 0.88
ordinal_dichotomic 20 polychoric first order rho=.25 1.80 1.39 2.27 0.88
ordinal_dichotomic 6 Pearson first order rho=.25 1.37 1.10 1.67 0.57
ordinal_dichotomic 10 Pearson first order rho=.25 1.50 1.20 1.83 0.63
ordinal_dichotomic 20 Pearson first order rho=.25 1.66 1.32 2.04 0.72
interval 6 Pearson second order 1.74 1.33 2.19 0.86
interval 10 Pearson second order 1.91 1.46 2.41 0.95
interval 20 Pearson second order 2.00 1.54 2.52 0.98
ordinal_polythomic 6 polychoric second order 1.72 1.32 2.19 0.87
ordinal_polythomic 10 polychoric second order 1.90 1.48 2.39 0.91
ordinal_polythomic 20 polychoric second order 2.09 1.74 2.52 0.78
ordinal_polythomic 6 Pearson second order 1.47 1.14 1.84 0.70
ordinal_polythomic 10 Pearson second order 1.64 1.26 2.05 0.79
ordinal_polythomic 20 Pearson second order 1.92 1.53 2.35 0.82
ordinal_dichotomic 6 polychoric second order 1.72 1.25 2.32 1.07
ordinal_dichotomic 10 polychoric second order 1.90 1.40 2.48 1.08
ordinal_dichotomic 20 polychoric second order 2.08 1.57 2.65 1.08
ordinal_dichotomic 6 Pearson second order 1.47 1.16 1.82 0.66
ordinal_dichotomic 10 Pearson second order 1.65 1.29 2.03 0.74
ordinal_dichotomic 20 Pearson second order 1.90 1.50 2.35 0.85
interval 6 Pearson bifactor 1.77 1.36 2.23 0.87
interval 10 Pearson bifactor 2.09 1.60 2.64 1.04
interval 20 Pearson bifactor 2.40 1.83 3.03 1.20
ordinal_polythomic 6 polychoric bifactor 1.75 1.33 2.26 0.93
ordinal_polythomic 10 polychoric bifactor 2.07 1.58 2.63 1.05
ordinal_polythomic 20 polychoric bifactor 2.40 1.85 3.02 1.17
ordinal_polythomic 6 Pearson bifactor 1.62 1.29 2.02 0.73
ordinal_polythomic 10 Pearson bifactor 1.98 1.53 2.47 0.94
ordinal_polythomic 20 Pearson bifactor 2.30 1.78 2.89 1.11
ordinal_dichotomic 6 polychoric bifactor 1.75 1.22 2.38 1.16
ordinal_dichotomic 10 polychoric bifactor 2.05 1.47 2.73 1.26
ordinal_dichotomic 20 polychoric bifactor 2.38 1.77 3.07 1.30
ordinal_dichotomic 6 Pearson bifactor 1.51 1.18 1.88 0.70
ordinal_dichotomic 10 Pearson bifactor 1.77 1.39 2.21 0.82
ordinal_dichotomic 20 Pearson bifactor 2.10 1.64 2.61 0.97
interval 6 Pearson first order rho=.50 2.12 1.62 2.67 1.05
interval 10 Pearson first order rho=.50 2.42 1.85 3.05 1.20
interval 20 Pearson first order rho=.50 2.52 1.94 3.17 1.23
ordinal_polythomic 6 polychoric first order rho=.50 2.10 1.59 2.69 1.10
ordinal_polythomic 10 polychoric first order rho=.50 2.40 1.67 3.21 1.54
ordinal_polythomic 20 polychoric first order rho=.50 2.73 2.10 3.45 1.35
ordinal_polythomic 6 Pearson first order rho=.50 1.72 1.33 2.17 0.84
ordinal_polythomic 10 Pearson first order rho=.50 2.02 1.44 2.68 1.24
ordinal_polythomic 20 Pearson first order rho=.50 2.45 1.89 3.08 1.19
ordinal_dichotomic 6 polychoric first order rho=.50 2.08 1.48 2.82 1.34
ordinal_dichotomic 10 polychoric first order rho=.50 2.37 1.70 3.16 1.46
ordinal_dichotomic 20 polychoric first order rho=.50 2.70 2.00 3.52 1.52
ordinal_dichotomic 6 Pearson first order rho=.50 1.67 1.31 2.07 0.76
ordinal_dichotomic 10 Pearson first order rho=.50 1.93 1.51 2.41 0.90
ordinal_dichotomic 20 Pearson first order rho=.50 2.30 1.80 2.84 1.04
interval 6 Pearson first order rho=.75 3.06 2.40 3.83 1.43
interval 10 Pearson first order rho=.75 3.85 2.97 4.84 1.87
interval 20 Pearson first order rho=.75 4.09 3.14 5.08 1.94
ordinal_polythomic 6 polychoric first order rho=.75 2.93 2.29 3.80 1.51
ordinal_polythomic 10 polychoric first order rho=.75 3.80 2.89 4.82 1.93
ordinal_polythomic 20 polychoric first order rho=.75 4.70 3.70 6.15 2.45
ordinal_polythomic 6 Pearson first order rho=.75 2.19 1.73 2.77 1.04
ordinal_polythomic 10 Pearson first order rho=.75 2.93 2.28 3.63 1.35
ordinal_polythomic 20 Pearson first order rho=.75 3.93 3.14 5.06 1.92
ordinal_dichotomic 6 polychoric first order rho=.75 2.87 2.06 3.80 1.74
ordinal_dichotomic 10 polychoric first order rho=.75 3.61 2.63 4.74 2.11
ordinal_dichotomic 20 polychoric first order rho=.75 4.66 3.40 6.08 2.68
ordinal_dichotomic 6 Pearson first order rho=.75 2.08 1.64 2.55 0.91
ordinal_dichotomic 10 Pearson first order rho=.75 2.62 2.07 3.22 1.15
ordinal_dichotomic 20 Pearson first order rho=.75 3.48 2.74 4.27 1.53
interval 6 Pearson unidimensional 4.04 3.15 4.99 1.84
interval 10 Pearson unidimensional 5.76 4.58 7.05 2.47
interval 20 Pearson unidimensional 6.25 5.07 7.49 2.42
ordinal_polythomic 6 polychoric unidimensional 3.92 3.11 4.84 1.73
ordinal_polythomic 10 polychoric unidimensional 5.53 3.91 6.58 2.67
ordinal_polythomic 20 polychoric unidimensional 8.76 7.13 10.49 3.36
ordinal_polythomic 6 Pearson unidimensional 2.66 2.07 3.33 1.26
ordinal_polythomic 10 Pearson unidimensional 3.85 2.75 4.73 1.98
ordinal_polythomic 20 Pearson unidimensional 6.30 5.12 7.57 2.45
ordinal_dichotomic 6 polychoric unidimensional 3.63 2.70 4.74 2.04
ordinal_dichotomic 10 polychoric unidimensional 4.48 3.75 6.14 2.39
ordinal_dichotomic 20 polychoric unidimensional 7.32 5.84 8.97 3.13
ordinal_dichotomic 6 Pearson unidimensional 2.50 2.02 3.04 1.02
ordinal_dichotomic 10 Pearson unidimensional 3.37 2.74 4.03 1.29
ordinal_dichotomic 20 Pearson unidimensional 5.19 4.28 6.16 1.88

1.6.1 Efeitos sobre o índice \(S\)

  • Númbero de itens: Aumentar o número de itens aumenta o índice \(S\), reduzindo o poder do índice \(S\) para todos os modelos de primeira ordem e aumentando o poder dos modelos unidimensionais, bifatoriais e de segunda-ordem. O modelo bifatorial só chegou a 90% de poder ao termos 20 itens. O modelo de segunda-ordem só chegou a 90% de poder ao termos 20 itens e calcularmos o índice S com a matriz de correlação policórica.

  • Correlação fatorial: Para modelos de primeira ordem, a medida que a correlação fatorial aumenta, o poder do índice S diminui. O modelo com \(\rho=0.75\) nunca atingiu 90% de poder.

  • Tipo de correlação e item: Quando os itens são dicotômicos ou politômicos e se usa a matriz de correlação policórica, o índice \(S\) é maior que o calculado pela matriz de correlação de Pearson. Consequentemente, o poder do índice \(S\) aumenta para os modelos unidimensional, bifatorial e de segunda-ordem quando calculado por correlações policóricas, e aumenta para os modelos de primeira ordem quando calculado por correlações de Pearson.

2 CFA

Apesar da simplicidade do índice \(S\), suas propriedades ainda são amplamente desconhecidas e não podem ser usadas para testar hipóteses. Por exemplo, mesmo que ele prediga corretamente que existem dois ou mais fatores, não diz nada sobre como os indicadores estão distribuídos ao longo dos fatores. Testar e comparar diferentes modelos pode aumentar nossa confiança sobre a estrutura desconhecida de dados empíricos. Vejamos se a CFA consegue identificar corretamente a origem dos dados diante de hipóteses alternativas.

Vamos começar tentando identificar se o modelo unidimensional. Primeiro, temos que criar os modelos a serem testados que aqui serão: unidimensional, 3 fatores de primeira-ordem com correlação, bifatorial com 3 fatores específicos ou segunda-ordem com 3 fatores de primeira-ordem.

2.1 Gerando os dados

unidimensional <- '#estrutura
G =~ I1+I2+I3+I4+I5+I6+I7+I8+I9+I10+I11+I12+I13+I14+I15+I16+I17+I18+I19+I20'

primeira.ordem <- '#estrutura
F1 =~ I1+I2+I3+I4+I5+I6+I7
F2 =~ I8+I9+I10+I11+I12+I13+I14
F3 =~ I15+I16+I17+I18+I19+I20'

bifatorial <- '#estrutura
F1 =~ I1+I2+I3+I4+I5+I6+I7
F2 =~ I8+I9+I10+I11+I12+I13+I14
F3 =~ I15+I16+I17+I18+I19+I20
G =~ I1+I2+I3+I4+I5+I6+I7+I8+I9+I10+I11+I12+I13+I14+I15+I16+I17+I18+I19+I20'

segunda.ordem <- '#estrutura
F1 =~ I1+I2+I3+I4+I5+I6+I7
F2 =~ I8+I9+I10+I11+I12+I13+I14
F3 =~ I15+I16+I17+I18+I19+I20
G =~ F1 + F2 + F3'

Para obter resultados comparáveis aos obtidos ao analisar os índices \(S\), usaremos os mesmos dados gerados anteriormente. Na função simsem::sim, passamos o modelo a ser testado para o parâmetro model, a lista de conjuntos de dados para rawData, e a função a ser usada do pacote lavaan é chamada pelo parâmetro lavaanfun. Outros parâmetros usados pelo pacote lavaan também podem ser passados para simsem::sim. Aqui, definiremos estimate = "MLR" e ordered = FALSE, o que faz com que os dados sejam tratados como intervalares, mas tem a vantagem de permitir calcular o critério de informação bayesiano ajustado pelo tamanho amostral (SABIC). Também definimos std.lv = TRUE para identificar o modelo restringindo a média do fator a 0 e a variância do fator a 1. O parâmetro orthogonal deve ser TRUE se for desejável restringir as correlações fatoriais a 0, como ao ajustar um modelo bifatorial.

A função simsem::summary fornece muitas informações úteis, como as estimativas médias das cargas fatoriais, a correlação entre os índices de qualidade de ajuste mais usados, bem como pontos de corte para cada índice variando em função da probabilidade de erro Tipo I (\(\alpha\)), tempo gasto para rodar todas as análises, taxa de convergência e, para casos não convergentes, o motivo da não convergência.

sim.u <- simsem::sim(model = unidimensional, 
                     rawData = data.sim, 
                     lavaanfun = "cfa", 
                     seed = 123,  
                     multicore = TRUE,
                     estimator = "MLR", 
                     ordered = FALSE, 
                     orthogonal = FALSE, 
                     std.lv = TRUE)
Progress tracker is not available when 'multicore' is TRUE.
print(simsem::summary(sim.u))
RESULT OBJECT
Model Type
[1] "lavaan"
========= Fit Indices Cutoffs ============
Carregando namespace exigido: quantreg
     N chisq.scaled       aic       bic rmsea.scaled cfi.scaled tli.scaled
1  100      225.705  6210.118  6331.291        0.053          1      1.011
2  325      222.854 19998.450 20140.047        0.043          1      1.009
3  550      220.002 33786.782 33948.803        0.033          1      1.007
4  775      217.150 47575.114 47757.558        0.024          1      1.004
5 1000      214.299 61363.446 61566.314        0.014          1      1.002
   srmr
1 0.064
2 0.053
3 0.042
4 0.031
5 0.020
========= Parameter Estimates and Standard Errors ============
         Estimate Average Estimate SD Average SE Power (Not equal 0) Std Est
G=~I1               0.822       0.049      0.045                   1   0.736
G=~I2               1.121       0.063      0.057                   1   0.689
G=~I3               1.033       0.056      0.051                   1   0.707
G=~I4               0.614       0.051      0.051                   1   0.632
G=~I5               0.701       0.050      0.046                   1   0.692
G=~I6               1.047       0.062      0.058                   1   0.646
G=~I7               0.871       0.058      0.052                   1   0.668
G=~I8               0.931       0.068      0.056                   1   0.648
G=~I9               0.907       0.073      0.062                   1   0.595
G=~I10              0.587       0.052      0.049                   1   0.600
G=~I11              0.859       0.061      0.059                   1   0.593
G=~I12              0.955       0.069      0.066                   1   0.566
G=~I13              0.835       0.068      0.065                   1   0.555
G=~I14              0.733       0.062      0.060                   1   0.534
G=~I15              0.806       0.070      0.067                   1   0.519
G=~I16              0.667       0.073      0.074                   1   0.451
G=~I17              0.458       0.053      0.051                   1   0.471
G=~I18              0.447       0.048      0.042                   1   0.496
G=~I19              0.684       0.074      0.066                   1   0.474
G=~I20              0.539       0.060      0.054                   1   0.475
I1~~I1              0.568       0.049      0.044                   1   0.457
I2~~I2              1.389       0.112      0.100                   1   0.525
I3~~I3              1.064       0.085      0.079                   1   0.499
I4~~I4              0.563       0.056      0.046                   1   0.599
I5~~I5              0.533       0.046      0.041                   1   0.520
I6~~I6              1.527       0.118      0.104                   1   0.582
I7~~I7              0.939       0.079      0.069                   1   0.553
I8~~I8              1.193       0.100      0.086                   1   0.578
I9~~I9              1.495       0.117      0.102                   1   0.644
I10~~I10            0.609       0.060      0.051                   1   0.638
I11~~I11            1.355       0.097      0.088                   1   0.647
I12~~I12            1.932       0.128      0.120                   1   0.678
I13~~I13            1.560       0.116      0.107                   1   0.690
I14~~I14            1.344       0.093      0.087                   1   0.713
I15~~I15            1.754       0.117      0.103                   1   0.728
I16~~I16            1.735       0.139      0.121                   1   0.795
I17~~I17            0.731       0.063      0.059                   1   0.776
I18~~I18            0.609       0.045      0.040                   1   0.752
I19~~I19            1.603       0.107      0.093                   1   0.773
I20~~I20            0.994       0.071      0.063                   1   0.772
         Std Est SD Std Ave SE r_coef.n r_se.n
G=~I1         0.026      0.024   -0.006 -0.877
G=~I2         0.031      0.028    0.018 -0.864
G=~I3         0.030      0.028    0.029 -0.872
G=~I4         0.033      0.033    0.037 -0.876
G=~I5         0.032      0.029    0.091 -0.883
G=~I6         0.035      0.031   -0.007 -0.868
G=~I7         0.035      0.031   -0.010 -0.874
G=~I8         0.040      0.032   -0.002 -0.863
G=~I9         0.041      0.034    0.021 -0.870
G=~I10        0.037      0.034    0.015 -0.878
G=~I11        0.037      0.036   -0.065 -0.869
G=~I12        0.038      0.037   -0.051 -0.866
G=~I13        0.040      0.038    0.034 -0.869
G=~I14        0.040      0.039   -0.016 -0.874
G=~I15        0.043      0.040   -0.035 -0.869
G=~I16        0.043      0.043    0.012 -0.876
G=~I17        0.044      0.041   -0.034 -0.880
G=~I18        0.047      0.041   -0.001 -0.871
G=~I19        0.048      0.042   -0.029 -0.872
G=~I20        0.047      0.042   -0.015 -0.873
I1~~I1        0.039      0.035    0.141 -0.848
I2~~I2        0.043      0.039    0.063 -0.857
I3~~I3        0.042      0.039    0.035 -0.866
I4~~I4        0.041      0.041    0.056 -0.844
I5~~I5        0.043      0.040    0.114 -0.840
I6~~I6        0.045      0.040    0.062 -0.874
I7~~I7        0.046      0.041    0.109 -0.846
I8~~I8        0.050      0.041    0.069 -0.854
I9~~I9        0.048      0.040    0.096 -0.859
I10~~I10      0.044      0.041    0.071 -0.830
I11~~I11      0.044      0.042    0.176 -0.859
I12~~I12      0.043      0.041    0.069 -0.872
I13~~I13      0.044      0.042    0.025 -0.865
I14~~I14      0.042      0.041    0.063 -0.866
I15~~I15      0.044      0.041    0.126 -0.874
I16~~I16      0.039      0.039    0.011 -0.871
I17~~I17      0.041      0.039    0.021 -0.859
I18~~I18      0.046      0.040    0.046 -0.852
I19~~I19      0.047      0.040    0.135 -0.869
I20~~I20      0.044      0.040    0.064 -0.868
========= Correlation between Fit Indices ============
             chisq.scaled    aic    bic rmsea.scaled cfi.scaled tli.scaled
chisq.scaled        1.000 -0.105 -0.105        0.794     -0.619     -0.671
aic                -0.105  1.000  1.000       -0.504      0.524      0.483
bic                -0.105  1.000  1.000       -0.504      0.524      0.483
rmsea.scaled        0.794 -0.504 -0.504        1.000     -0.925     -0.941
cfi.scaled         -0.619  0.524  0.524       -0.925      1.000      0.991
tli.scaled         -0.671  0.483  0.483       -0.941      0.991      1.000
srmr                0.296 -0.871 -0.872        0.719     -0.763     -0.730
n                  -0.106  1.000  1.000       -0.504      0.524      0.483
               srmr      n
chisq.scaled  0.296 -0.106
aic          -0.871  1.000
bic          -0.872  1.000
rmsea.scaled  0.719 -0.504
cfi.scaled   -0.763  0.524
tli.scaled   -0.730  0.483
srmr          1.000 -0.872
n            -0.872  1.000
================== Replications =====================
Number of replications = 700 
Number of converged replications = 700 
Number of nonconverged replications: 
   1. Nonconvergent Results = 0 
   2. Nonconvergent results from multiple imputation = 0 
   3. At least one SE were negative or NA = 0 
   4. Nonpositive-definite latent or observed (residual) covariance matrix 
      (e.g., Heywood case or linear dependency) = 0 
NOTE: The sample size is varying.
NOTE: The data generation model is not the same as the analysis  model. See the summary of the population underlying data  generation by the summaryPopulation function.
NULL

A primeira parte (Model Type) nos diz que usamos um script do lavaan para especificar o modelo (simsem também aceita objetos MxModel, objetos SimSem e funções personalizadas). A seção Fit Indices Cutoffs indica que, para uma taxa de erro Tipo I de 0,05 e \(n = 325\), devemos usar rmsea.scaled menor ou igual a 0,043 como ponto de corte, e, ao aumentarmos o tamanho da amostra para \(n = 550\), então esse ponto de corte diminui para 0,033.

Mais importantes para nós são as três próximas seções. Em Parameter Estimates and Standard Errors, obtemos as estimativas dos parâmetros e o poder para detectar se eles são diferentes de zero. Podemos observar que todas as cargas fatoriais (Std Est) foram subestimadas. Em Correlation between Fit Indices, vemos que os índices podem ser divididos em dois grupos: o grupo I é composto por chisq.scaled, rmsea.scaled, cfi.scaled, tli.scaled e srmr; o grupo II contém aic, bic e n. Na seção Replications, somos informados de que todas as 700 replicações convergiram. Por fim, recebemos dois avisos: somos lembrados de que o tamanho amostral está variando (portanto, os resultados são médias ao longo de todos os tamanhos amostrais) e somos informados de que o modelo que tentamos ajustar aos dados é diferente do modelo gerador. Nesse caso, esse aviso está incorreto, mas, como usamos um banco de dados para realizar a análise em vez de informar a estrutura populacional e gerar novos dados, o procedimento não tem como saber de fato qual é a estrutura populacional.

Aqui sabemos que os dados vieram de uma estrutura unidimensional e que essa estrutura deve ser aceita com base na análise acima. Entretanto, não saberíamos disso em um estudo empírico, e um modelo de primeira ordem ainda seria plausível. Portanto, ajustaremos os mesmos conjuntos de dados aos demais modelos.

sim.f <- simsem::sim(model = primeira.ordem, 
                     rawData = data.sim,
                     lavaanfun = "cfa", 
                     seed = 123,  
                     multicore = TRUE, 
                     estimator = "MLR", 
                     ordered = FALSE, 
                     orthogonal = FALSE, 
                     std.lv = TRUE)
Progress tracker is not available when 'multicore' is TRUE.
print(simsem::summary(sim.f))
RESULT OBJECT
Model Type
[1] "lavaan"
========= Fit Indices Cutoffs ============
Warning in rq.fit.br(x, y, tau = tau, ...): Solution may be nonunique
Warning in rq.fit.br(x, y, tau = tau, ...): Solution may be nonunique
Warning in rq.fit.br(x, y, tau = tau, ...): Solution may be nonunique
Warning in rq.fit.br(x, y, tau = tau, ...): Solution may be nonunique
Warning in rq.fit.br(x, y, tau = tau, ...): Solution may be nonunique
Warning in rq.fit.br(x, y, tau = tau, ...): Solution may be nonunique
Warning in rq.fit.br(x, y, tau = tau, ...): Solution may be nonunique
Warning in rq.fit.br(x, y, tau = tau, ...): Solution may be nonunique
Warning in rq.fit.br(x, y, tau = tau, ...): Solution may be nonunique
Warning in rq.fit.br(x, y, tau = tau, ...): Solution may be nonunique
     N chisq.scaled       aic      bic rmsea.scaled cfi.scaled tli.scaled  srmr
1  100      222.745  6213.481  6338.43        0.052          1      1.012 0.064
2  325      219.701 20001.440 20151.33        0.043          1      1.010 0.053
3  550      216.658 33789.400 33964.24        0.033          1      1.007 0.042
4  775      213.615 47577.359 47777.14        0.023          1      1.004 0.031
5 1000      210.571 61365.318 61590.04        0.014          1      1.002 0.020
========= Parameter Estimates and Standard Errors ============
         Estimate Average Estimate SD Average SE Power (Not equal 0) Std Est
F1=~I1              0.821       0.049      0.045                   1   0.736
F1=~I2              1.120       0.063      0.057                   1   0.688
F1=~I3              1.032       0.056      0.051                   1   0.707
F1=~I4              0.613       0.052      0.051                   1   0.632
F1=~I5              0.700       0.050      0.046                   1   0.691
F1=~I6              1.047       0.062      0.058                   1   0.646
F1=~I7              0.870       0.058      0.052                   1   0.667
F2=~I8              0.931       0.068      0.057                   1   0.648
F2=~I9              0.907       0.074      0.062                   1   0.595
F2=~I10             0.586       0.052      0.049                   1   0.600
F2=~I11             0.859       0.062      0.060                   1   0.593
F2=~I12             0.955       0.070      0.067                   1   0.566
F2=~I13             0.834       0.069      0.065                   1   0.555
F2=~I14             0.733       0.062      0.061                   1   0.534
F3=~I15             0.806       0.073      0.068                   1   0.520
F3=~I16             0.666       0.075      0.075                   1   0.451
F3=~I17             0.458       0.054      0.052                   1   0.471
F3=~I18             0.447       0.049      0.043                   1   0.496
F3=~I19             0.683       0.077      0.067                   1   0.474
F3=~I20             0.539       0.062      0.055                   1   0.475
I1~~I1              0.569       0.049      0.044                   1   0.458
I2~~I2              1.390       0.114      0.100                   1   0.525
I3~~I3              1.065       0.086      0.080                   1   0.500
I4~~I4              0.563       0.057      0.046                   1   0.599
I5~~I5              0.534       0.047      0.041                   1   0.521
I6~~I6              1.527       0.118      0.104                   1   0.582
I7~~I7              0.940       0.080      0.069                   1   0.554
I8~~I8              1.193       0.101      0.088                   1   0.579
I9~~I9              1.495       0.119      0.103                   1   0.644
I10~~I10            0.610       0.061      0.051                   1   0.639
I11~~I11            1.356       0.098      0.089                   1   0.647
I12~~I12            1.933       0.129      0.121                   1   0.679
I13~~I13            1.560       0.116      0.107                   1   0.690
I14~~I14            1.344       0.094      0.088                   1   0.714
I15~~I15            1.753       0.124      0.106                   1   0.728
I16~~I16            1.736       0.142      0.123                   1   0.795
I17~~I17            0.731       0.064      0.060                   1   0.776
I18~~I18            0.610       0.046      0.040                   1   0.752
I19~~I19            1.603       0.109      0.095                   1   0.773
I20~~I20            0.994       0.073      0.064                   1   0.772
F1~~F2              1.002       0.020      0.017                   1   1.002
F1~~F3              1.003       0.033      0.028                   1   1.003
F2~~F3              1.000       0.034      0.033                   1   1.000
         Std Est SD Std Ave SE r_coef.n r_se.n
F1=~I1        0.027      0.024   -0.002 -0.878
F1=~I2        0.032      0.029    0.020 -0.863
F1=~I3        0.030      0.028    0.032 -0.871
F1=~I4        0.034      0.033    0.036 -0.876
F1=~I5        0.032      0.029    0.094 -0.883
F1=~I6        0.035      0.031   -0.010 -0.867
F1=~I7        0.035      0.031   -0.009 -0.873
F2=~I8        0.040      0.033   -0.007 -0.862
F2=~I9        0.042      0.035    0.014 -0.868
F2=~I10       0.037      0.035    0.016 -0.875
F2=~I11       0.038      0.036   -0.073 -0.867
F2=~I12       0.039      0.037   -0.054 -0.863
F2=~I13       0.041      0.038    0.028 -0.867
F2=~I14       0.040      0.039   -0.021 -0.872
F3=~I15       0.045      0.041   -0.055 -0.868
F3=~I16       0.045      0.044    0.004 -0.870
F3=~I17       0.045      0.042   -0.046 -0.873
F3=~I18       0.049      0.042   -0.007 -0.865
F3=~I19       0.050      0.044   -0.037 -0.865
F3=~I20       0.049      0.044   -0.020 -0.866
I1~~I1        0.039      0.035    0.136 -0.849
I2~~I2        0.044      0.039    0.060 -0.859
I3~~I3        0.043      0.039    0.030 -0.865
I4~~I4        0.042      0.041    0.056 -0.843
I5~~I5        0.044      0.040    0.109 -0.837
I6~~I6        0.045      0.040    0.065 -0.873
I7~~I7        0.047      0.041    0.108 -0.846
I8~~I8        0.051      0.042    0.075 -0.855
I9~~I9        0.049      0.041    0.104 -0.860
I10~~I10      0.044      0.041    0.068 -0.830
I11~~I11      0.045      0.043    0.183 -0.856
I12~~I12      0.044      0.042    0.074 -0.867
I13~~I13      0.045      0.042    0.032 -0.864
I14~~I14      0.043      0.041    0.068 -0.866
I15~~I15      0.046      0.043    0.143 -0.874
I16~~I16      0.041      0.040    0.018 -0.868
I17~~I17      0.042      0.040    0.030 -0.858
I18~~I18      0.048      0.042    0.056 -0.850
I19~~I19      0.048      0.041    0.145 -0.864
I20~~I20      0.046      0.041    0.070 -0.868
F1~~F2        0.020      0.017    0.009 -0.793
F1~~F3        0.033      0.028    0.019 -0.790
F2~~F3        0.034      0.033    0.073 -0.794
========= Correlation between Fit Indices ============
             chisq.scaled    aic    bic rmsea.scaled cfi.scaled tli.scaled
chisq.scaled        1.000 -0.100 -0.100        0.793     -0.617     -0.669
aic                -0.100  1.000  1.000       -0.502      0.520      0.477
bic                -0.100  1.000  1.000       -0.503      0.521      0.477
rmsea.scaled        0.793 -0.502 -0.503        1.000     -0.924     -0.941
cfi.scaled         -0.617  0.520  0.521       -0.924      1.000      0.990
tli.scaled         -0.669  0.477  0.477       -0.941      0.990      1.000
srmr                0.286 -0.871 -0.871        0.714     -0.757     -0.721
n                  -0.100  1.000  1.000       -0.502      0.521      0.477
               srmr      n
chisq.scaled  0.286 -0.100
aic          -0.871  1.000
bic          -0.871  1.000
rmsea.scaled  0.714 -0.502
cfi.scaled   -0.757  0.521
tli.scaled   -0.721  0.477
srmr          1.000 -0.871
n            -0.871  1.000
================== Replications =====================
Number of replications = 700 
Number of converged replications = 84 
Number of nonconverged replications: 
   1. Nonconvergent Results = 0 
   2. Nonconvergent results from multiple imputation = 0 
   3. At least one SE were negative or NA = 0 
   4. Nonpositive-definite latent or observed (residual) covariance matrix 
      (e.g., Heywood case or linear dependency) = 616 
NOTE: The sample size is varying.
NOTE: The data generation model is not the same as the analysis  model. See the summary of the population underlying data  generation by the summaryPopulation function.
NULL

No geral, os resultados são qualitativamente semelhantes e a maior diferença é que agora obtemos uma estimativa das correlações fatoriais (\(\text{cor(F1,F2)} =1,002,\ \text{SE}=0,020\), \(\text{cor(F1,F3)} =1,003,\ \text{SE}=0,033\) e \(\text{cor(F2,F3)} =1,000,\ \text{SE}=0,034\)) e que houve 616 casos que não convergiram devido a matrizes de covariância não positivamente definidas. Abaixo estão os resultados para os modelos bifatorial e de segunda-ordem.

sim.b <- simsem::sim(model = bifatorial, 
                     rawData = data.sim,
                     lavaanfun = "cfa", 
                     seed = 123,  
                     multicore = TRUE, 
                     estimator = "MLR", 
                     ordered = FALSE, 
                     orthogonal = TRUE, 
                     std.lv = TRUE)
Progress tracker is not available when 'multicore' is TRUE.
Warning in (function (..., deparse.level = 1) : number of columns of result is
not a multiple of vector length (arg 577)
print(simsem::summary(sim.b))
RESULT OBJECT
Model Type
[1] "lavaan"
========= Fit Indices Cutoffs ============
     N chisq.scaled       aic       bic rmsea.scaled cfi.scaled tli.scaled
1  100      193.053  6218.323  6415.618        0.049          1      1.020
2  325      190.781 20006.394 20230.772        0.040          1      1.016
3  550      188.508 33794.465 34045.926        0.031          1      1.012
4  775      186.235 47582.536 47861.080        0.022          1      1.008
5 1000      183.962 61370.607 61676.234        0.013          1      1.004
   srmr
1 0.058
2 0.048
3 0.038
4 0.028
5 0.019
========= Parameter Estimates and Standard Errors ============
         Estimate Average Estimate SD Average SE Power (Not equal 0) Std Est
F1=~I1              0.108       5.147      0.268               0.204   0.090
F1=~I2              1.163       6.966      0.275               0.192   0.713
F1=~I3              1.126       6.923      0.232               0.147   0.774
F1=~I4              0.054       4.665      0.170               0.193   0.044
F1=~I5              0.280       3.999      0.107               0.111   0.297
F1=~I6              0.799       6.421      0.233               0.164   0.493
F1=~I7              0.514       4.793      0.176               0.100   0.393
F2=~I8              0.840       6.220      0.301               0.148   0.584
F2=~I9              0.920       7.310      0.508               0.136   0.605
F2=~I10            -0.108       5.129      0.326               0.125  -0.089
F2=~I11             0.916       6.796      0.210               0.131   0.637
F2=~I12             0.968       7.189      0.224               0.134   0.575
F2=~I13             1.268       7.464      0.268               0.134   0.839
F2=~I14             0.572       6.024      0.201               0.146   0.410
F3=~I15             1.914       8.870      0.347               0.131   1.233
F3=~I16             1.546       7.190      0.245               0.151   1.045
F3=~I17             0.028       4.321      0.261               0.111   0.040
F3=~I18            -0.645       5.903      0.151               0.183  -0.718
F3=~I19             1.485       7.759      0.226               0.141   1.030
F3=~I20             0.578       6.552      0.195               0.165   0.498
G=~I1               0.825       0.050      0.047               1.000   0.739
G=~I2               1.120       0.061      0.060               1.000   0.688
G=~I3               1.030       0.056      0.053               1.000   0.705
G=~I4               0.614       0.053      0.052               1.000   0.633
G=~I5               0.701       0.051      0.047               1.000   0.691
G=~I6               1.046       0.064      0.060               1.000   0.645
G=~I7               0.868       0.059      0.053               1.000   0.666
G=~I8               0.931       0.070      0.057               1.000   0.647
G=~I9               0.907       0.073      0.062               1.000   0.595
G=~I10              0.588       0.052      0.049               1.000   0.601
G=~I11              0.859       0.063      0.060               1.000   0.594
G=~I12              0.954       0.069      0.067               1.000   0.565
G=~I13              0.836       0.069      0.065               1.000   0.556
G=~I14              0.733       0.062      0.061               1.000   0.534
G=~I15              0.806       0.070      0.067               1.000   0.519
G=~I16              0.666       0.072      0.074               1.000   0.450
G=~I17              0.458       0.053      0.051               1.000   0.471
G=~I18              0.448       0.048      0.042               1.000   0.497
G=~I19              0.683       0.073      0.066               1.000   0.474
G=~I20              0.539       0.061      0.054               1.000   0.474
I1~~I1            -25.895     117.585      0.747               0.920 -20.369
I2~~I2            -48.405     257.958      0.900               0.951 -17.994
I3~~I3            -48.049     240.937      0.852               0.963 -22.677
I4~~I4            -21.173     110.511      0.384               0.949 -21.143
I5~~I5            -15.514      95.533      0.122               0.981 -16.187
I6~~I6            -40.276     237.714      1.084               0.964 -15.057
I7~~I7            -22.259     157.914      0.398               0.971 -12.953
I8~~I8            -38.138     181.001      1.354               0.958 -18.712
I9~~I9            -52.711     265.175      7.692               0.954 -22.890
I10~~I10          -25.667     121.579      0.881               0.972 -27.638
I11~~I11          -45.594     226.857      1.103               0.969 -21.990
I12~~I12          -50.595     297.751      0.471               0.961 -17.851
I13~~I13          -55.682     302.812      1.163               0.958 -24.522
I14~~I14          -35.219     186.580      0.528               0.969 -18.384
I15~~I15          -80.466     354.070      1.747               0.949 -33.320
I16~~I16          -52.267     238.562      1.677               0.963 -23.756
I17~~I17          -17.910     102.159      1.301               0.963 -19.614
I18~~I18          -34.599     127.557      0.354               0.963 -41.764
I19~~I19          -60.715     252.679      1.054               0.968 -29.680
I20~~I20          -42.208     178.049      0.392               0.958 -33.021
         Std Est SD Std Ave SE r_coef.n r_se.n
F1=~I1        4.566      0.276    0.030  0.030
F1=~I2        4.247      0.187    0.010 -0.008
F1=~I3        4.755      0.181   -0.060 -0.034
F1=~I4        4.666      0.219   -0.081  0.006
F1=~I5        4.080      0.134   -0.119 -0.125
F1=~I6        3.927      0.158   -0.019 -0.016
F1=~I7        3.657      0.155   -0.068 -0.069
F2=~I8        4.357      0.228   -0.013 -0.032
F2=~I9        4.817      0.362    0.020 -0.018
F2=~I10       5.321      0.389   -0.056 -0.021
F2=~I11       4.719      0.162   -0.033 -0.115
F2=~I12       4.270      0.145   -0.005 -0.095
F2=~I13       4.954      0.206   -0.043  0.036
F2=~I14       4.354      0.168    0.032 -0.036
F3=~I15       5.708      0.251   -0.058 -0.010
F3=~I16       4.847      0.212   -0.071 -0.005
F3=~I17       4.519      0.306   -0.057 -0.058
F3=~I18       6.486      0.219   -0.075 -0.053
F3=~I19       5.426      0.198   -0.081 -0.009
F3=~I20       5.796      0.215   -0.012  0.035
G=~I1         0.028      0.026    0.017 -0.832
G=~I2         0.031      0.031    0.021 -0.824
G=~I3         0.031      0.030    0.054 -0.837
G=~I4         0.034      0.035    0.049 -0.864
G=~I5         0.034      0.031    0.107 -0.859
G=~I6         0.035      0.033    0.017 -0.847
G=~I7         0.036      0.032    0.005 -0.868
G=~I8         0.041      0.033   -0.006 -0.857
G=~I9         0.041      0.035    0.014 -0.865
G=~I10        0.038      0.035    0.013 -0.874
G=~I11        0.038      0.036   -0.082 -0.861
G=~I12        0.039      0.038   -0.036 -0.859
G=~I13        0.041      0.039    0.003 -0.866
G=~I14        0.040      0.039   -0.019 -0.869
G=~I15        0.043      0.040   -0.050 -0.869
G=~I16        0.042      0.043    0.000 -0.874
G=~I17        0.044      0.041   -0.028 -0.879
G=~I18        0.048      0.041   -0.029 -0.871
G=~I19        0.048      0.043   -0.016 -0.872
G=~I20        0.048      0.043   -0.004 -0.871
I1~~I1       89.154      2.034    0.061  0.035
I2~~I2       94.571      1.106    0.061 -0.010
I3~~I3      114.617      1.461    0.136 -0.036
I4~~I4      105.827      2.329    0.077  0.026
I5~~I5      105.388      1.615    0.083 -0.068
I6~~I6       87.486      1.021    0.078 -0.016
I7~~I7       93.384      1.198    0.144 -0.086
I8~~I8       89.004      1.433    0.063 -0.036
I9~~I9      116.271      4.560    0.089 -0.020
I10~~I10    132.765      3.692    0.077 -0.021
I11~~I11    110.204      1.286    0.049 -0.087
I12~~I12    105.286      0.787    0.081 -0.087
I13~~I13    136.468      2.063    0.136 -0.020
I14~~I14     97.570      1.249    0.049 -0.020
I15~~I15    147.020      2.059    0.125 -0.037
I16~~I16    106.296      2.725    0.109 -0.032
I17~~I17    112.549      3.122    0.049 -0.062
I18~~I18    151.376      2.717    0.066 -0.051
I19~~I19    124.749      2.270    0.141 -0.061
I20~~I20    140.079      2.358    0.097 -0.007
========= Correlation between Fit Indices ============
             chisq.scaled    aic    bic rmsea.scaled cfi.scaled tli.scaled
chisq.scaled            1     NA     NA           NA         NA         NA
aic                    NA  1.000  1.000           NA         NA         NA
bic                    NA  1.000  1.000           NA         NA         NA
rmsea.scaled           NA     NA     NA            1         NA         NA
cfi.scaled             NA     NA     NA           NA          1         NA
tli.scaled             NA     NA     NA           NA         NA          1
srmr                   NA -0.871 -0.871           NA         NA         NA
n                      NA  1.000  1.000           NA         NA         NA
               srmr      n
chisq.scaled     NA     NA
aic          -0.871  1.000
bic          -0.871  1.000
rmsea.scaled     NA     NA
cfi.scaled       NA     NA
tli.scaled       NA     NA
srmr          1.000 -0.871
n            -0.871  1.000
================== Replications =====================
Number of replications = 700 
Number of converged replications = 124 
Number of nonconverged replications: 
   1. Nonconvergent Results = 52 
   2. Nonconvergent results from multiple imputation = 0 
   3. At least one SE were negative or NA = 0 
   4. Nonpositive-definite latent or observed (residual) covariance matrix 
      (e.g., Heywood case or linear dependency) = 524 
NOTE: The sample size is varying.
NOTE: The data generation model is not the same as the analysis  model. See the summary of the population underlying data  generation by the summaryPopulation function.
NULL
sim.s <- simsem::sim(model = segunda.ordem, 
                     rawData = data.sim,
                     lavaanfun = "cfa", 
                     seed = 123,  
                     multicore = TRUE, 
                     estimator = "MLR", 
                     ordered = FALSE, 
                     orthogonal = FALSE, 
                     std.lv = TRUE)
Progress tracker is not available when 'multicore' is TRUE.
Warning in (function (..., deparse.level = 1) : number of columns of result is
not a multiple of vector length (arg 1)
print(simsem::summary(sim.s))
RESULT OBJECT
Model Type
[1] "lavaan"
========= Fit Indices Cutoffs ============
     N chisq.scaled       aic       bic rmsea.scaled cfi.scaled tli.scaled
1  100      222.586  6191.206  6317.017        0.055          1      1.011
2  325      221.215 19988.679 20140.924        0.044          1      1.010
3  550      219.845 33786.153 33964.831        0.034          1      1.009
4  775      218.475 47583.626 47788.739        0.023          1      1.007
5 1000      217.105 61381.100 61612.646        0.012          1      1.006
   srmr
1 0.063
2 0.052
3 0.042
4 0.031
5 0.020
========= Parameter Estimates and Standard Errors ============
         Estimate Average Estimate SD Average SE Power (Not equal 0) Std Est
F1=~I1              0.042       0.058      0.151               0.317   0.739
F1=~I2              0.057       0.079      0.205               0.324   0.691
F1=~I3              0.052       0.072      0.189               0.317   0.706
F1=~I4              0.031       0.041      0.115               0.317   0.632
F1=~I5              0.035       0.047      0.130               0.317   0.693
F1=~I6              0.053       0.071      0.191               0.317   0.646
F1=~I7              0.044       0.059      0.160               0.310   0.672
F2=~I8              0.056       0.074      0.160               0.373   0.652
F2=~I9              0.054       0.072      0.148               0.373   0.597
F2=~I10             0.035       0.046      0.096               0.366   0.601
F2=~I11             0.051       0.069      0.146               0.373   0.593
F2=~I12             0.057       0.076      0.163               0.366   0.569
F2=~I13             0.050       0.066      0.142               0.366   0.556
F2=~I14             0.043       0.058      0.117               0.352   0.532
F3=~I15             0.072       0.088      0.570               0.296   0.523
F3=~I16             0.059       0.072      0.501               0.289   0.451
F3=~I17             0.041       0.050      0.331               0.296   0.477
F3=~I18             0.040       0.047      0.322               0.303   0.497
F3=~I19             0.061       0.074      0.519               0.296   0.476
F3=~I20             0.048       0.060      0.378               0.275   0.479
G=~F1             319.088     490.467    120.626               0.310   0.996
G=~F2             295.080     443.409    102.666               0.366   0.995
G=~F3             260.875     691.087    205.053               0.296   0.991
I1~~I1              0.563       0.043      0.045               1.000   0.453
I2~~I2              1.385       0.104      0.102               1.000   0.522
I3~~I3              1.064       0.082      0.081               1.000   0.501
I4~~I4              0.565       0.051      0.047               1.000   0.599
I5~~I5              0.532       0.040      0.041               1.000   0.519
I6~~I6              1.525       0.109      0.105               1.000   0.581
I7~~I7              0.928       0.071      0.069               1.000   0.548
I8~~I8              1.184       0.089      0.090               1.000   0.574
I9~~I9              1.500       0.104      0.107               1.000   0.643
I10~~I10            0.609       0.057      0.053               1.000   0.638
I11~~I11            1.353       0.094      0.093               1.000   0.647
I12~~I12            1.925       0.115      0.126               1.000   0.675
I13~~I13            1.562       0.111      0.109               1.000   0.689
I14~~I14            1.345       0.090      0.091               1.000   0.715
I15~~I15            1.746       0.118      0.143               0.986   0.724
I16~~I16            1.725       0.131      0.142               0.986   0.795
I17~~I17            0.725       0.057      0.070               0.986   0.770
I18~~I18            0.611       0.041      0.050               0.986   0.751
I19~~I19            1.599       0.105      0.128               0.986   0.772
I20~~I20            0.988       0.067      0.078               0.986   0.769
         Std Est SD Std Ave SE r_coef.n r_se.n
F1=~I1        0.024      0.024   -0.216  0.118
F1=~I2        0.028      0.029   -0.217  0.121
F1=~I3        0.029      0.029   -0.222  0.118
F1=~I4        0.027      0.033   -0.207  0.121
F1=~I5        0.027      0.030   -0.203  0.122
F1=~I6        0.033      0.032   -0.217  0.114
F1=~I7        0.031      0.031   -0.213  0.117
F2=~I8        0.035      0.033   -0.277  0.015
F2=~I9        0.036      0.036   -0.271  0.018
F2=~I10       0.032      0.036   -0.267  0.015
F2=~I11       0.036      0.038   -0.280  0.015
F2=~I12       0.036      0.038   -0.272  0.014
F2=~I13       0.038      0.039   -0.275  0.016
F2=~I14       0.038      0.041   -0.269  0.017
F3=~I15       0.041      0.056   -0.320  0.132
F3=~I16       0.040      0.055   -0.315  0.133
F3=~I17       0.042      0.055   -0.322  0.130
F3=~I18       0.043      0.054   -0.320  0.133
F3=~I19       0.046      0.060   -0.318  0.133
F3=~I20       0.044      0.056   -0.314  0.133
G=~F1         0.008      0.015    0.252  0.113
G=~F2         0.009      0.014    0.306  0.033
G=~F3         0.016      0.058    0.210  0.140
I1~~I1        0.035      0.036    0.247 -0.776
I2~~I2        0.039      0.039    0.096 -0.816
I3~~I3        0.041      0.040    0.048 -0.859
I4~~I4        0.034      0.042    0.013 -0.855
I5~~I5        0.037      0.041    0.197 -0.838
I6~~I6        0.042      0.041    0.052 -0.864
I7~~I7        0.041      0.041    0.166 -0.852
I8~~I8        0.045      0.043    0.146 -0.701
I9~~I9        0.044      0.043    0.028 -0.741
I10~~I10      0.038      0.043    0.120 -0.814
I11~~I11      0.044      0.045    0.232 -0.767
I12~~I12      0.041      0.044    0.072 -0.777
I13~~I13      0.042      0.043    0.002 -0.834
I14~~I14      0.040      0.043    0.021 -0.753
I15~~I15      0.044      0.058    0.140  0.005
I16~~I16      0.037      0.050    0.074 -0.134
I17~~I17      0.041      0.052    0.027 -0.084
I18~~I18      0.042      0.054    0.089 -0.059
I19~~I19      0.045      0.057    0.152  0.009
I20~~I20      0.043      0.052    0.190 -0.070
========= Correlation between Fit Indices ============
             chisq.scaled    aic    bic rmsea.scaled cfi.scaled tli.scaled
chisq.scaled            1     NA     NA           NA         NA         NA
aic                    NA  1.000  1.000           NA         NA         NA
bic                    NA  1.000  1.000           NA         NA         NA
rmsea.scaled           NA     NA     NA            1         NA         NA
cfi.scaled             NA     NA     NA           NA          1         NA
tli.scaled             NA     NA     NA           NA         NA          1
srmr                   NA -0.858 -0.858           NA         NA         NA
n                      NA  1.000  1.000           NA         NA         NA
               srmr      n
chisq.scaled     NA     NA
aic          -0.858  1.000
bic          -0.858  1.000
rmsea.scaled     NA     NA
cfi.scaled       NA     NA
tli.scaled       NA     NA
srmr          1.000 -0.858
n            -0.858  1.000
================== Replications =====================
Number of replications = 700 
Number of converged replications = 142 
Number of nonconverged replications: 
   1. Nonconvergent Results = 471 
   2. Nonconvergent results from multiple imputation = 0 
   3. At least one SE were negative or NA = 87 
   4. Nonpositive-definite latent or observed (residual) covariance matrix 
      (e.g., Heywood case or linear dependency) = 0 
NOTE: The sample size is varying.
NOTE: The data generation model is not the same as the analysis  model. See the summary of the population underlying data  generation by the summaryPopulation function.
NULL

Para prosseguir, extrairemos as informações desejadas dos objetos simsem para um novo data frame, que chamaremos de indices.dist. Na primeira coluna (fitted.model), salvaremos a estrutura testada. Nas demais colunas, salvaremos o tamanho amostral (nSample), se a análise convergiu (conv), a estimativa da raiz do erro quadrático médio de aproximação (RMSEA), o limite inferior do intervalo de confiança (IC) de 90% (RMSEA.L) e o limite superior (RMSEA.U), o valor p da hipótese nula de que o RMSEA populacional é menor ou igual a 0,05 (PCLOSE) e o critério de informação bayesiano ajustado pelo tamanho amostral (SABIC). Também adicionamos uma coluna population para indicar que todos esses índices vieram de dados gerados a partir de uma população com estrutura unidimensional.

Note que simsem::summary ainda fornece os índices de ajuste com a correção de Satorra-Bentler (indicados pelo sufixo .scaled). Entretanto, a adequação desses índices tem sido questionada. Em nossa análise, focaremos nos índices com o sufixo .robust, que são considerados mais apropriados em muitos cenários com dados não normais ou categóricos. É importante notar que esses índices ainda estão sendo estudados e desenvolvidos e podem não ser calculados em todas as situações. Por exemplo, em nosso estudo completo, ajustamos um modelo unidimensional com 20 indicadores politômicos, assumidos como seguindo uma estrutura unidimensional e tratados como ordinais, usando tamanhos de amostra de 50 observações. Nesse cenário, apenas 48 de 10.000 replicações produziram valores não ausentes para rmsea.robust, enquanto 9.992 replicações produziram um valor para rmsea.scaled.

2.2 Reunindo os índices num único banco de dados

# Get indices for further analyses
indices.dist <- data.frame(fitted.model = factor(rep(c(1:4),
                                                     each = nrow(
                                                       sim.u@nobs)),
                                                 labels = teste <- 
                                                   c("unidimensional",
                                                     "first_order",
                                                     "bifactor",
                                                     "second_order")),
                           nSample = as.numeric(c(sim.u@n,
                                                  sim.f@n,
                                                  sim.b@n,
                                                  sim.s@n)),
                           conv = factor(c(sim.u@converged,
                                           sim.f@converged,
                                           sim.b@converged,
                                           sim.s@converged)),
                           RMSEA = as.numeric(c(sim.u@fit$rmsea.robust,
                                                sim.f@fit$rmsea.robust,
                                                sim.b@fit$rmsea.robust,
                                                sim.s@fit$rmsea.robust)),
                           RMSEA.L = as.numeric(c(
                             sim.u@fit$rmsea.ci.lower.robust,
                             sim.f@fit$rmsea.ci.lower.robust,
                             sim.b@fit$rmsea.ci.lower.robust,
                             sim.s@fit$rmsea.ci.lower.robust)),
                           RMSEA.U = as.numeric(c(
                             sim.u@fit$rmsea.ci.upper.robust,
                             sim.f@fit$rmsea.ci.upper.robust,
                             sim.b@fit$rmsea.ci.upper.robust,
                             sim.s@fit$rmsea.ci.upper.robust)),
                           PCLOSE = as.numeric(c(
                             sim.u@fit$rmsea.pvalue.robust,
                             sim.f@fit$rmsea.pvalue.robust,
                             sim.b@fit$rmsea.pvalue.robust,
                             sim.s@fit$rmsea.pvalue.robust)),
                           SABIC = as.numeric(c(
                             sim.u@fit$bic2,
                             sim.f@fit$bic2,
                             sim.b@fit$bic2,
                             sim.s@fit$bic2)))
indices.dist$population <- as.factor(rep("unidimensional",
                                         nrow(indices.dist)))

print(head(indices.dist))
    fitted.model nSample conv      RMSEA    RMSEA.L    RMSEA.U    PCLOSE
1 unidimensional     100    0 0.05062103 0.02442177 0.07078993 0.4676461
2 unidimensional     100    0 0.03203706 0.00000000 0.05726359 0.8638299
3 unidimensional     100    0 0.03781157 0.00000000 0.06134143 0.7801977
4 unidimensional     100    0 0.00000000 0.00000000 0.04204485 0.9854331
5 unidimensional     100    0 0.01363495 0.00000000 0.04767687 0.9648187
6 unidimensional     100    0 0.04962740 0.02290477 0.06985902 0.4974319
     SABIC     population
1 6098.328 unidimensional
2 6062.039 unidimensional
3 6092.758 unidimensional
4 6137.987 unidimensional
5 6091.305 unidimensional
6 6080.411 unidimensional
print(summary(indices.dist))
         fitted.model    nSample     conv         RMSEA        
 unidimensional:700   Min.   : 100   0:1050   Min.   :0.00000  
 first_order   :700   1st Qu.: 250   1: 523   1st Qu.:0.00000  
 bifactor      :700   Median : 550   3:  87   Median :0.01137  
 second_order  :700   Mean   : 550   4:1140   Mean   :0.01336  
                      3rd Qu.: 850            3rd Qu.:0.01861  
                      Max.   :1000            Max.   :0.06648  
                                              NA's   :611      
    RMSEA.L           RMSEA.U            PCLOSE            SABIC      
 Min.   :0.00000   Min.   :0.00000   Min.   :0.03091   Min.   : 5935  
 1st Qu.:0.00000   1st Qu.:0.01815   1st Qu.:0.99992   1st Qu.:15358  
 Median :0.00000   Median :0.02286   Median :1.00000   Median :33642  
 Mean   :0.00274   Mean   :0.02769   Mean   :0.92448   Mean   :33965  
 3rd Qu.:0.00000   3rd Qu.:0.03265   3rd Qu.:1.00000   3rd Qu.:51837  
 Max.   :0.04677   Max.   :0.08447   Max.   :1.00000   Max.   :61537  
 NA's   :611       NA's   :611       NA's   :523       NA's   :523    
          population  
 unidimensional:2800  
                      
                      
                      
                      
                      
                      

Agora, repetimos o processo com os demais modelos populacionais. Vamos salvar as análises sobre as anteriores por conveniência, mas em análises reais é recomendável salvá-las com nomes diferentes. Dessa forma, o pesquisador poderá fazer novas explorações sem precisar refazer todos os processos. Extraímos a saída dessas novas análises e adicionamos os resultados como novas linhas em indices.dist usando a função rbind.

# Population model: first-order
sim.u <- simsem::sim(model = unidimensional, 
                     rawData = data.sim.fst050, 
                     lavaanfun = "cfa", 
                     seed = 123,  
                     multicore = TRUE, 
                     estimator = "MLR", 
                     ordered = FALSE, 
                     orthogonal = FALSE, 
                     std.lv = TRUE)
Progress tracker is not available when 'multicore' is TRUE.
print(simsem::summary(sim.u))
RESULT OBJECT
Model Type
[1] "lavaan"
========= Fit Indices Cutoffs ============
Warning in rq.fit.br(x, y, tau = tau, ...): Solution may be nonunique
Warning in rq.fit.br(x, y, tau = tau, ...): Solution may be nonunique
Warning in rq.fit.br(x, y, tau = tau, ...): Solution may be nonunique
Warning in rq.fit.br(x, y, tau = tau, ...): Solution may be nonunique
Warning in rq.fit.br(x, y, tau = tau, ...): Solution may be nonunique
     N chisq.scaled      aic       bic rmsea.scaled cfi.scaled tli.scaled  srmr
1  100      387.663  6519.74  6630.021        0.108      0.775      0.749 0.111
2  325      723.713 20968.82 21108.642        0.105      0.765      0.737 0.104
3  550     1059.762 35417.89 35587.263        0.102      0.754      0.725 0.098
4  775     1395.811 49866.97 50065.884        0.098      0.743      0.713 0.091
5 1000     1731.860 64316.05 64544.505        0.095      0.732      0.701 0.085
========= Parameter Estimates and Standard Errors ============
         Estimate Average Estimate SD Average SE Power (Not equal 0) Std Est
G=~I1               0.686       0.067      0.060               0.999   0.615
G=~I2               0.608       0.100      0.087               0.990   0.373
G=~I3               0.854       0.083      0.073               1.000   0.585
G=~I4               0.361       0.060      0.057               0.986   0.372
G=~I5               0.587       0.066      0.057               1.000   0.580
G=~I6               0.659       0.095      0.085               0.987   0.407
G=~I7               0.732       0.074      0.069               1.000   0.562
G=~I8               0.729       0.086      0.076               0.996   0.508
G=~I9               0.720       0.089      0.080               0.997   0.472
G=~I10              0.466       0.067      0.057               0.996   0.475
G=~I11              0.677       0.088      0.077               0.994   0.467
G=~I12              0.757       0.095      0.087               0.994   0.449
G=~I13              0.657       0.088      0.081               0.993   0.438
G=~I14              0.586       0.080      0.074               0.994   0.427
G=~I15              0.632       0.084      0.084               0.996   0.407
G=~I16              0.527       0.087      0.084               0.983   0.356
G=~I17              0.365       0.065      0.057               0.983   0.374
G=~I18              0.463       0.052      0.050               0.997   0.513
G=~I19              0.766       0.077      0.076               1.000   0.532
G=~I20              0.641       0.065      0.063               1.000   0.564
I1~~I1              0.768       0.078      0.068               1.000   0.619
I2~~I2              2.275       0.145      0.124               1.000   0.857
I3~~I3              1.395       0.119      0.111               1.000   0.655
I4~~I4              0.803       0.079      0.071               1.000   0.859
I5~~I5              0.674       0.065      0.057               1.000   0.661
I6~~I6              2.178       0.134      0.119               1.000   0.831
I7~~I7              1.157       0.099      0.091               1.000   0.682
I8~~I8              1.520       0.118      0.108               1.000   0.739
I9~~I9              1.802       0.144      0.123               1.000   0.775
I10~~I10            0.737       0.074      0.065               1.000   0.771
I11~~I11            1.634       0.121      0.102               1.000   0.778
I12~~I12            2.257       0.149      0.133               1.000   0.795
I13~~I13            1.816       0.137      0.120               1.000   0.805
I14~~I14            1.531       0.110      0.099               1.000   0.814
I15~~I15            2.001       0.112      0.112               1.000   0.832
I16~~I16            1.899       0.144      0.135               1.000   0.870
I17~~I17            0.812       0.075      0.068               1.000   0.857
I18~~I18            0.595       0.051      0.044               1.000   0.734
I19~~I19            1.483       0.117      0.109               1.000   0.715
I20~~I20            0.876       0.073      0.070               1.000   0.679
         Std Est SD Std Ave SE r_coef.n r_se.n
G=~I1         0.049      0.044    0.023 -0.842
G=~I2         0.060      0.052    0.003 -0.849
G=~I3         0.052      0.046    0.064 -0.825
G=~I4         0.053      0.052    0.024 -0.856
G=~I5         0.053      0.046    0.045 -0.844
G=~I6         0.057      0.051    0.048 -0.849
G=~I7         0.050      0.047    0.009 -0.831
G=~I8         0.056      0.049    0.035 -0.850
G=~I9         0.055      0.049   -0.013 -0.857
G=~I10        0.058      0.049   -0.011 -0.854
G=~I11        0.058      0.050    0.059 -0.844
G=~I12        0.055      0.050   -0.038 -0.849
G=~I13        0.056      0.051    0.052 -0.841
G=~I14        0.055      0.051   -0.017 -0.853
G=~I15        0.052      0.052   -0.023 -0.855
G=~I16        0.054      0.053   -0.032 -0.857
G=~I17        0.059      0.052   -0.018 -0.851
G=~I18        0.052      0.050    0.019 -0.836
G=~I19        0.050      0.049   -0.063 -0.836
G=~I20        0.050      0.048    0.030 -0.837
I1~~I1        0.059      0.053    0.115 -0.827
I2~~I2        0.046      0.038    0.038 -0.870
I3~~I3        0.059      0.053    0.001 -0.838
I4~~I4        0.040      0.038    0.086 -0.858
I5~~I5        0.060      0.053    0.112 -0.833
I6~~I6        0.045      0.041    0.047 -0.847
I7~~I7        0.056      0.052    0.022 -0.839
I8~~I8        0.055      0.049    0.100 -0.858
I9~~I9        0.053      0.046    0.120 -0.867
I10~~I10      0.054      0.046    0.024 -0.834
I11~~I11      0.053      0.046    0.114 -0.865
I12~~I12      0.050      0.045    0.187 -0.862
I13~~I13      0.049      0.044    0.048 -0.867
I14~~I14      0.047      0.043    0.126 -0.861
I15~~I15      0.041      0.042    0.112 -0.853
I16~~I16      0.039      0.037    0.079 -0.867
I17~~I17      0.044      0.038    0.047 -0.858
I18~~I18      0.052      0.050    0.069 -0.832
I19~~I19      0.053      0.052    0.158 -0.838
I20~~I20      0.056      0.054    0.071 -0.841
========= Correlation between Fit Indices ============
             chisq.scaled    aic    bic rmsea.scaled cfi.scaled tli.scaled
chisq.scaled        1.000  0.984  0.984       -0.125      0.065      0.065
aic                 0.984  1.000  1.000       -0.258      0.178      0.178
bic                 0.984  1.000  1.000       -0.258      0.178      0.178
rmsea.scaled       -0.125 -0.258 -0.258        1.000     -0.829     -0.829
cfi.scaled          0.065  0.178  0.178       -0.829      1.000      1.000
tli.scaled          0.065  0.178  0.178       -0.829      1.000      1.000
srmr               -0.558 -0.653 -0.654        0.783     -0.738     -0.738
n                   0.984  1.000  1.000       -0.260      0.180      0.180
               srmr      n
chisq.scaled -0.558  0.984
aic          -0.653  1.000
bic          -0.654  1.000
rmsea.scaled  0.783 -0.260
cfi.scaled   -0.738  0.180
tli.scaled   -0.738  0.180
srmr          1.000 -0.655
n            -0.655  1.000
================== Replications =====================
Number of replications = 700 
Number of converged replications = 700 
Number of nonconverged replications: 
   1. Nonconvergent Results = 0 
   2. Nonconvergent results from multiple imputation = 0 
   3. At least one SE were negative or NA = 0 
   4. Nonpositive-definite latent or observed (residual) covariance matrix 
      (e.g., Heywood case or linear dependency) = 0 
NOTE: The sample size is varying.
NOTE: The data generation model is not the same as the analysis  model. See the summary of the population underlying data  generation by the summaryPopulation function.
NULL
sim.f <- simsem::sim(model = primeira.ordem, 
                     rawData = data.sim.fst050,
                     lavaanfun = "cfa", 
                     seed = 123,  
                     multicore = TRUE, 
                     estimator = "MLR", 
                     ordered = FALSE, 
                     orthogonal = FALSE, 
                     std.lv = TRUE)
Progress tracker is not available when 'multicore' is TRUE.
print(simsem::summary(sim.f))
RESULT OBJECT
Model Type
[1] "lavaan"
========= Fit Indices Cutoffs ============
Warning in rq.fit.br(x, y, tau = tau, ...): Solution may be nonunique
Warning in rq.fit.br(x, y, tau = tau, ...): Solution may be nonunique
Warning in rq.fit.br(x, y, tau = tau, ...): Solution may be nonunique
Warning in rq.fit.br(x, y, tau = tau, ...): Solution may be nonunique
Warning in rq.fit.br(x, y, tau = tau, ...): Solution may be nonunique
     N chisq.scaled       aic       bic rmsea.scaled cfi.scaled tli.scaled
1  100      217.204  6383.904  6505.287        0.051          1      1.021
2  325      212.418 20513.360 20663.742        0.041          1      1.017
3  550      207.632 34642.816 34822.197        0.031          1      1.013
4  775      202.846 48772.272 48980.652        0.021          1      1.010
5 1000      198.060 62901.728 63139.107        0.011          1      1.006
   srmr
1 0.077
2 0.063
3 0.050
4 0.037
5 0.024
========= Parameter Estimates and Standard Errors ============
         Estimate Average Estimate SD Average SE Power (Not equal 0) Std Est
F1=~I1              0.821       0.054      0.049               1.000   0.737
F1=~I2              0.709       0.093      0.080               0.999   0.435
F1=~I3              1.023       0.063      0.056               1.000   0.700
F1=~I4              0.418       0.061      0.054               0.997   0.432
F1=~I5              0.698       0.055      0.049               1.000   0.690
F1=~I6              0.773       0.083      0.076               1.000   0.478
F1=~I7              0.870       0.058      0.056               1.000   0.668
F2=~I8              0.927       0.071      0.063               1.000   0.646
F2=~I9              0.910       0.077      0.069               1.000   0.597
F2=~I10             0.586       0.062      0.052               1.000   0.598
F2=~I11             0.859       0.075      0.066               1.000   0.592
F2=~I12             0.954       0.080      0.075               1.000   0.566
F2=~I13             0.830       0.077      0.071               1.000   0.552
F2=~I14             0.737       0.070      0.066               1.000   0.537
F3=~I15             0.810       0.082      0.074               0.999   0.522
F3=~I16             0.670       0.086      0.079               1.000   0.453
F3=~I17             0.459       0.060      0.055               0.999   0.470
F3=~I18             0.602       0.044      0.040               1.000   0.668
F3=~I19             1.007       0.061      0.058               1.000   0.699
F3=~I20             0.852       0.053      0.049               1.000   0.750
I1~~I1              0.566       0.060      0.053               1.000   0.456
I2~~I2              2.144       0.141      0.124               1.000   0.808
I3~~I3              1.081       0.100      0.091               1.000   0.508
I4~~I4              0.758       0.074      0.067               1.000   0.811
I5~~I5              0.533       0.051      0.047               1.000   0.523
I6~~I6              2.017       0.135      0.119               1.000   0.770
I7~~I7              0.938       0.083      0.078               1.000   0.553
I8~~I8              1.195       0.110      0.101               1.000   0.581
I9~~I9              1.494       0.142      0.117               1.000   0.642
I10~~I10            0.612       0.062      0.056               1.000   0.640
I11~~I11            1.357       0.115      0.100               1.000   0.647
I12~~I12            1.923       0.143      0.136               1.000   0.678
I13~~I13            1.561       0.128      0.116               1.000   0.693
I14~~I14            1.333       0.106      0.097               1.000   0.709
I15~~I15            1.745       0.121      0.115               1.000   0.725
I16~~I16            1.728       0.139      0.129               1.000   0.792
I17~~I17            0.736       0.070      0.062               1.000   0.776
I18~~I18            0.447       0.044      0.039               1.000   0.552
I19~~I19            1.058       0.110      0.097               1.000   0.510
I20~~I20            0.563       0.062      0.059               1.000   0.437
F1~~F2              0.501       0.056      0.052               0.999   0.501
F1~~F3              0.498       0.055      0.052               1.000   0.498
F2~~F3              0.497       0.058      0.054               0.997   0.497
         Std Est SD Std Ave SE r_coef.n r_se.n
F1=~I1        0.032      0.029    0.023 -0.869
F1=~I2        0.054      0.047   -0.018 -0.868
F1=~I3        0.036      0.032    0.043 -0.862
F1=~I4        0.052      0.046    0.021 -0.870
F1=~I5        0.036      0.034    0.089 -0.876
F1=~I6        0.049      0.045    0.004 -0.867
F1=~I7        0.036      0.035   -0.021 -0.867
F2=~I8        0.043      0.038    0.021 -0.861
F2=~I9        0.046      0.040    0.026 -0.857
F2=~I10       0.046      0.039   -0.026 -0.868
F2=~I11       0.047      0.041    0.074 -0.858
F2=~I12       0.045      0.042   -0.014 -0.857
F2=~I13       0.047      0.043    0.046 -0.860
F2=~I14       0.046      0.044   -0.026 -0.866
F3=~I15       0.049      0.045   -0.005 -0.867
F3=~I16       0.051      0.048    0.023 -0.873
F3=~I17       0.052      0.046    0.000 -0.874
F3=~I18       0.038      0.036   -0.019 -0.865
F3=~I19       0.037      0.034   -0.064 -0.867
F3=~I20       0.035      0.032    0.063 -0.869
I1~~I1        0.047      0.042    0.127 -0.852
I2~~I2        0.048      0.040    0.046 -0.873
I3~~I3        0.050      0.045    0.013 -0.854
I4~~I4        0.044      0.040    0.098 -0.853
I5~~I5        0.050      0.046    0.056 -0.847
I6~~I6        0.048      0.043    0.075 -0.866
I7~~I7        0.047      0.046    0.041 -0.857
I8~~I8        0.055      0.049    0.100 -0.858
I9~~I9        0.055      0.047    0.073 -0.856
I10~~I10      0.054      0.047    0.043 -0.824
I11~~I11      0.055      0.048    0.084 -0.865
I12~~I12      0.050      0.047    0.159 -0.867
I13~~I13      0.051      0.047    0.040 -0.866
I14~~I14      0.050      0.047    0.131 -0.862
I15~~I15      0.049      0.046    0.091 -0.871
I16~~I16      0.047      0.043    0.044 -0.865
I17~~I17      0.047      0.042    0.027 -0.849
I18~~I18      0.051      0.048    0.110 -0.850
I19~~I19      0.052      0.048    0.162 -0.853
I20~~I20      0.051      0.048    0.011 -0.851
F1~~F2        0.056      0.052   -0.010 -0.849
F1~~F3        0.055      0.052   -0.027 -0.851
F2~~F3        0.058      0.054   -0.009 -0.845
========= Correlation between Fit Indices ============
             chisq.scaled    aic    bic rmsea.scaled cfi.scaled tli.scaled
chisq.scaled        1.000 -0.260 -0.260        0.822     -0.642     -0.724
aic                -0.260  1.000  1.000       -0.544      0.512      0.441
bic                -0.260  1.000  1.000       -0.545      0.512      0.441
rmsea.scaled        0.822 -0.544 -0.545        1.000     -0.914     -0.930
cfi.scaled         -0.642  0.512  0.512       -0.914      1.000      0.974
tli.scaled         -0.724  0.441  0.441       -0.930      0.974      1.000
srmr                0.407 -0.872 -0.872        0.738     -0.743     -0.679
n                  -0.260  1.000  1.000       -0.544      0.512      0.441
               srmr      n
chisq.scaled  0.407 -0.260
aic          -0.872  1.000
bic          -0.872  1.000
rmsea.scaled  0.738 -0.544
cfi.scaled   -0.743  0.512
tli.scaled   -0.679  0.441
srmr          1.000 -0.872
n            -0.872  1.000
================== Replications =====================
Number of replications = 700 
Number of converged replications = 700 
Number of nonconverged replications: 
   1. Nonconvergent Results = 0 
   2. Nonconvergent results from multiple imputation = 0 
   3. At least one SE were negative or NA = 0 
   4. Nonpositive-definite latent or observed (residual) covariance matrix 
      (e.g., Heywood case or linear dependency) = 0 
NOTE: The sample size is varying.
NOTE: The data generation model is not the same as the analysis  model. See the summary of the population underlying data  generation by the summaryPopulation function.
NULL
sim.b <- simsem::sim(model = bifatorial, 
                     rawData = data.sim.fst050, 
                     lavaanfun = "cfa", 
                     seed = 123,  
                     multicore = TRUE, 
                     estimator = "MLR", 
                     ordered = FALSE, 
                     orthogonal = TRUE, 
                     std.lv = TRUE)
Progress tracker is not available when 'multicore' is TRUE.
print(simsem::summary(sim.b))
RESULT OBJECT
Model Type
[1] "lavaan"
========= Fit Indices Cutoffs ============
Warning in rq.fit.br(x, y, tau = tau, ...): Solution may be nonunique
Warning in rq.fit.br(x, y, tau = tau, ...): Solution may be nonunique
Warning in rq.fit.br(x, y, tau = tau, ...): Solution may be nonunique
Warning in rq.fit.br(x, y, tau = tau, ...): Solution may be nonunique
Warning in rq.fit.br(x, y, tau = tau, ...): Solution may be nonunique
     N chisq.scaled       aic       bic rmsea.scaled cfi.scaled tli.scaled
1  100      202.198  6384.652  6571.901        0.054          1      1.021
2  325      197.132 20519.682 20737.678        0.043          1      1.017
3  550      192.066 34654.713 34903.454        0.032          1      1.014
4  775      187.000 48789.743 49069.230        0.021          1      1.010
5 1000      181.934 62924.774 63235.007        0.011          1      1.007
   srmr
1 0.072
2 0.059
3 0.046
4 0.033
5 0.021
========= Parameter Estimates and Standard Errors ============
         Estimate Average Estimate SD Average SE Power (Not equal 0) Std Est
F1=~I1              0.623       1.480      0.088               0.942   0.556
F1=~I2              0.519       3.385      0.150               0.886   0.316
F1=~I3              0.744       1.751      0.129               0.947   0.510
F1=~I4              0.348       1.534      0.080               0.891   0.362
F1=~I5              0.479       0.115      0.094               0.941   0.473
F1=~I6              0.546       0.162      0.137               0.917   0.337
F1=~I7              0.652       1.240      0.102               0.947   0.500
F2=~I8              0.722       2.069      0.140               0.944   0.499
F2=~I9              0.768       2.513      0.143               0.924   0.499
F2=~I10             0.442       1.068      0.085               0.931   0.451
F2=~I11             0.694       1.824      0.132               0.932   0.477
F2=~I12             0.728       1.858      0.146               0.928   0.434
F2=~I13             0.742       3.109      0.129               0.922   0.487
F2=~I14             0.650       2.631      0.125               0.924   0.471
F3=~I15             0.576       0.184      0.142               0.925   0.371
F3=~I16             0.471       0.136      0.127               0.898   0.319
F3=~I17             0.336       0.608      0.099               0.902   0.346
F3=~I18             0.449       0.825      0.091               0.940   0.498
F3=~I19             0.699       2.222      0.118               0.950   0.487
F3=~I20             0.920       3.128      0.113               0.958   0.807
G=~I1               0.585       0.084      0.080               0.988   0.524
G=~I2               0.498       0.136      0.120               0.915   0.306
G=~I3               0.718       0.116      0.103               0.977   0.491
G=~I4               0.297       0.073      0.074               0.925   0.306
G=~I5               0.496       0.084      0.075               0.980   0.490
G=~I6               0.540       0.122      0.118               0.935   0.333
G=~I7               0.613       0.108      0.092               0.978   0.470
G=~I8               0.656       0.115      0.099               0.987   0.457
G=~I9               0.643       0.118      0.108               0.965   0.421
G=~I10              0.417       0.083      0.073               0.960   0.426
G=~I11              0.604       0.120      0.102               0.961   0.416
G=~I12              0.673       0.129      0.120               0.964   0.399
G=~I13              0.583       0.118      0.108               0.955   0.388
G=~I14              0.521       0.105      0.101               0.948   0.380
G=~I15              0.564       0.113      0.111               0.953   0.363
G=~I16              0.469       0.111      0.107               0.929   0.317
G=~I17              0.329       0.081      0.073               0.934   0.338
G=~I18              0.424       0.070      0.064               0.973   0.470
G=~I19              0.701       0.109      0.101               0.980   0.487
G=~I20              0.594       0.087      0.082               0.984   0.523
I1~~I1             -1.679      59.025      0.069               0.988  -1.148
I2~~I2             -9.326     194.543      0.212               0.994  -3.502
I3~~I3             -2.012      60.741      0.252               0.990  -0.927
I4~~I4             -1.627      62.668      0.074               0.999  -1.949
I5~~I5              0.529       0.056      0.063               0.994   0.518
I6~~I6              1.991       0.214      0.148               0.996   0.760
I7~~I7             -0.647      41.486      0.092               0.996  -0.353
I8~~I8             -3.180     114.712      0.253               0.991  -1.255
I9~~I9             -4.994     120.964      0.189               0.993  -1.901
I10~~I10           -0.557      30.629      0.067               0.996  -0.560
I11~~I11           -2.083      71.428      0.190               0.993  -0.912
I12~~I12           -1.606      92.326      0.172               0.990  -0.698
I13~~I13           -8.301     186.377      0.141               0.997  -3.116
I14~~I14           -5.735     134.012      0.128               0.993  -2.858
I15~~I15            1.710       0.390      0.244               0.991   0.712
I16~~I16            1.712       0.148      0.144               0.996   0.784
I17~~I17            0.351       9.752      0.150               0.996   0.349
I18~~I18           -0.254      18.302      0.102               0.997  -0.255
I19~~I19           -3.848      91.896      0.116               0.994  -1.722
I20~~I20           -9.686     112.099      0.242               0.991  -7.337
         Std Est SD Std Ave SE r_coef.n r_se.n
F1=~I1        1.250      0.079   -0.050 -0.417
F1=~I2        2.076      0.096   -0.008 -0.331
F1=~I3        1.193      0.089   -0.014 -0.226
F1=~I4        1.650      0.085   -0.054 -0.516
F1=~I5        0.111      0.090    0.185 -0.170
F1=~I6        0.101      0.084    0.026 -0.401
F1=~I7        0.937      0.078   -0.047 -0.407
F2=~I8        1.339      0.098   -0.054 -0.121
F2=~I9        1.572      0.096   -0.072 -0.190
F2=~I10       1.082      0.086   -0.034 -0.378
F2=~I11       1.227      0.092   -0.070 -0.183
F2=~I12       1.160      0.088   -0.043 -0.402
F2=~I13       1.931      0.089   -0.076 -0.438
F2=~I14       1.869      0.093   -0.050 -0.362
F3=~I15       0.116      0.090    0.025 -0.170
F3=~I16       0.090      0.084    0.100 -0.419
F3=~I17       0.642      0.103   -0.051 -0.132
F3=~I18       0.884      0.102   -0.054 -0.162
F3=~I19       1.499      0.083    0.012 -0.428
F3=~I20       2.724      0.109   -0.125 -0.150
G=~I1         0.069      0.066    0.003 -0.697
G=~I2         0.083      0.073   -0.004 -0.741
G=~I3         0.077      0.068    0.038 -0.719
G=~I4         0.072      0.072    0.032 -0.670
G=~I5         0.077      0.068   -0.004 -0.691
G=~I6         0.075      0.072    0.052 -0.692
G=~I7         0.079      0.068    0.007 -0.646
G=~I8         0.077      0.066    0.044 -0.709
G=~I9         0.076      0.069   -0.037 -0.665
G=~I10        0.078      0.069    0.013 -0.689
G=~I11        0.081      0.068    0.040 -0.708
G=~I12        0.076      0.071   -0.040 -0.647
G=~I13        0.078      0.070    0.048 -0.622
G=~I14        0.075      0.071   -0.037 -0.606
G=~I15        0.072      0.070    0.022 -0.695
G=~I16        0.072      0.070   -0.025 -0.771
G=~I17        0.079      0.070    0.012 -0.710
G=~I18        0.074      0.068    0.062 -0.717
G=~I19        0.074      0.068    0.001 -0.593
G=~I20        0.073      0.068    0.072 -0.622
I1~~I1       42.167      0.226    0.058 -0.216
I2~~I2       74.248      0.409    0.089 -0.183
I3~~I3       28.294      0.211    0.077 -0.080
I4~~I4       72.548      0.586    0.058 -0.239
I5~~I5        0.054      0.062    0.110 -0.100
I6~~I6        0.080      0.054    0.161 -0.185
I7~~I7       23.702      0.138    0.058 -0.319
I8~~I8       48.117      0.260    0.058 -0.057
I9~~I9       47.284      0.295    0.081 -0.099
I10~~I10     31.454      0.183    0.039 -0.177
I11~~I11     31.872      0.205    0.073 -0.097
I12~~I12     35.997      0.154    0.058 -0.272
I13~~I13     71.704      0.365    0.080 -0.238
I14~~I14     67.816      0.305    0.059 -0.211
I15~~I15      0.148      0.095    0.126 -0.077
I16~~I16      0.054      0.052    0.121 -0.288
I17~~I17     10.850      0.217    0.060 -0.072
I18~~I18     21.046      0.208    0.058 -0.102
I19~~I19     41.662      0.211    0.081 -0.377
I20~~I20     84.947      0.859    0.120 -0.074
========= Correlation between Fit Indices ============
             chisq.scaled    aic    bic rmsea.scaled cfi.scaled tli.scaled
chisq.scaled        1.000 -0.267 -0.267        0.831     -0.658     -0.731
aic                -0.267  1.000  1.000       -0.531      0.507      0.451
bic                -0.267  1.000  1.000       -0.531      0.508      0.451
rmsea.scaled        0.831 -0.531 -0.531        1.000     -0.921     -0.939
cfi.scaled         -0.658  0.507  0.508       -0.921      1.000      0.981
tli.scaled         -0.731  0.451  0.451       -0.939      0.981      1.000
srmr                0.384 -0.859 -0.859        0.697     -0.714     -0.665
n                  -0.267  1.000  1.000       -0.531      0.507      0.451
               srmr      n
chisq.scaled  0.384 -0.267
aic          -0.859  1.000
bic          -0.859  1.000
rmsea.scaled  0.697 -0.531
cfi.scaled   -0.714  0.507
tli.scaled   -0.665  0.451
srmr          1.000 -0.859
n            -0.859  1.000
================== Replications =====================
Number of replications = 700 
Number of converged replications = 647 
Number of nonconverged replications: 
   1. Nonconvergent Results = 5 
   2. Nonconvergent results from multiple imputation = 0 
   3. At least one SE were negative or NA = 0 
   4. Nonpositive-definite latent or observed (residual) covariance matrix 
      (e.g., Heywood case or linear dependency) = 48 
NOTE: The sample size is varying.
NOTE: The data generation model is not the same as the analysis  model. See the summary of the population underlying data  generation by the summaryPopulation function.
NULL
sim.s <- simsem::sim(model = segunda.ordem, 
                     rawData = data.sim.fst050,
                     lavaanfun = "cfa", 
                     seed = 123,  
                     multicore = TRUE, 
                     estimator = "MLR", 
                     ordered = FALSE, 
                     orthogonal = FALSE, 
                     std.lv = TRUE)
Progress tracker is not available when 'multicore' is TRUE.
print(simsem::summary(sim.s))
RESULT OBJECT
Model Type
[1] "lavaan"
========= Fit Indices Cutoffs ============
Warning in rq.fit.br(x, y, tau = tau, ...): Solution may be nonunique
Warning in rq.fit.br(x, y, tau = tau, ...): Solution may be nonunique
Warning in rq.fit.br(x, y, tau = tau, ...): Solution may be nonunique
Warning in rq.fit.br(x, y, tau = tau, ...): Solution may be nonunique
Warning in rq.fit.br(x, y, tau = tau, ...): Solution may be nonunique
     N chisq.scaled       aic       bic rmsea.scaled cfi.scaled tli.scaled
1  100      217.084  6383.904  6505.287        0.051          1      1.021
2  325      212.334 20513.360 20663.742        0.041          1      1.017
3  550      207.584 34642.816 34822.197        0.031          1      1.013
4  775      202.834 48772.272 48980.652        0.021          1      1.010
5 1000      198.084 62901.728 63139.107        0.011          1      1.006
   srmr
1 0.077
2 0.063
3 0.050
4 0.037
5 0.024
========= Parameter Estimates and Standard Errors ============
         Estimate Average Estimate SD Average SE Power (Not equal 0) Std Est
F1=~I1              0.573       0.066      0.060               0.993   0.737
F1=~I2              0.494       0.076      0.072               0.987   0.435
F1=~I3              0.714       0.081      0.074               0.993   0.700
F1=~I4              0.292       0.051      0.045               0.990   0.432
F1=~I5              0.488       0.059      0.054               0.993   0.690
F1=~I6              0.540       0.078      0.072               0.991   0.478
F1=~I7              0.607       0.068      0.066               0.993   0.667
F2=~I8              0.648       0.081      0.071               0.996   0.646
F2=~I9              0.636       0.084      0.072               0.996   0.596
F2=~I10             0.410       0.058      0.050               0.996   0.598
F2=~I11             0.601       0.081      0.069               0.996   0.592
F2=~I12             0.667       0.089      0.077               0.996   0.566
F2=~I13             0.580       0.079      0.070               0.996   0.553
F2=~I14             0.516       0.073      0.064               0.996   0.537
F3=~I15             0.570       0.078      0.072               0.990   0.521
F3=~I16             0.471       0.073      0.069               0.987   0.453
F3=~I17             0.323       0.051      0.047               0.990   0.471
F3=~I18             0.424       0.052      0.046               0.991   0.668
F3=~I19             0.709       0.079      0.074               0.991   0.699
F3=~I20             0.600       0.068      0.062               0.991   0.750
G=~F1               1.089       1.422      0.388               0.984   0.709
G=~F2               1.472       9.839      0.260               0.984   0.707
G=~F3               1.024       0.319      0.253               0.984   0.704
I1~~I1              0.566       0.060      0.053               1.000   0.456
I2~~I2              2.144       0.140      0.124               1.000   0.808
I3~~I3              1.082       0.100      0.091               1.000   0.508
I4~~I4              0.758       0.073      0.066               1.000   0.811
I5~~I5              0.533       0.051      0.047               1.000   0.523
I6~~I6              2.016       0.134      0.119               1.000   0.770
I7~~I7              0.938       0.083      0.078               1.000   0.553
I8~~I8              1.195       0.110      0.101               1.000   0.581
I9~~I9              1.494       0.141      0.116               1.000   0.642
I10~~I10            0.612       0.062      0.056               1.000   0.640
I11~~I11            1.358       0.114      0.100               1.000   0.647
I12~~I12            1.923       0.143      0.136               1.000   0.678
I13~~I13            1.561       0.128      0.115               1.000   0.693
I14~~I14            1.333       0.106      0.097               1.000   0.709
I15~~I15            1.746       0.118      0.114               1.000   0.726
I16~~I16            1.729       0.138      0.128               1.000   0.792
I17~~I17            0.735       0.069      0.062               1.000   0.776
I18~~I18            0.447       0.044      0.039               1.000   0.552
I19~~I19            1.057       0.110      0.097               1.000   0.510
I20~~I20            0.563       0.062      0.059               1.000   0.437
         Std Est SD Std Ave SE r_coef.n r_se.n
F1=~I1        0.032      0.029    0.100 -0.554
F1=~I2        0.054      0.047    0.061 -0.634
F1=~I3        0.036      0.032    0.118 -0.565
F1=~I4        0.051      0.046    0.075 -0.710
F1=~I5        0.036      0.034    0.140 -0.586
F1=~I6        0.049      0.045    0.077 -0.621
F1=~I7        0.035      0.035    0.089 -0.566
F2=~I8        0.043      0.038    0.081 -0.778
F2=~I9        0.046      0.040    0.095 -0.798
F2=~I10       0.046      0.039    0.039 -0.793
F2=~I11       0.047      0.041    0.116 -0.794
F2=~I12       0.045      0.042    0.061 -0.801
F2=~I13       0.047      0.043    0.095 -0.800
F2=~I14       0.046      0.044    0.046 -0.801
F3=~I15       0.049      0.045    0.072 -0.698
F3=~I16       0.051      0.048    0.085 -0.687
F3=~I17       0.051      0.045    0.062 -0.664
F3=~I18       0.038      0.036    0.048 -0.662
F3=~I19       0.037      0.034    0.039 -0.643
F3=~I20       0.035      0.032    0.111 -0.625
G=~F1         0.061      0.059   -0.078 -0.095
G=~F2         0.066      0.059   -0.070 -0.127
G=~F3         0.062      0.060   -0.115 -0.117
I1~~I1        0.047      0.042    0.136 -0.852
I2~~I2        0.048      0.040    0.040 -0.874
I3~~I3        0.050      0.044    0.008 -0.854
I4~~I4        0.044      0.039    0.102 -0.856
I5~~I5        0.049      0.046    0.059 -0.847
I6~~I6        0.047      0.043    0.083 -0.866
I7~~I7        0.047      0.046    0.038 -0.857
I8~~I8        0.054      0.048    0.096 -0.857
I9~~I9        0.055      0.047    0.067 -0.855
I10~~I10      0.054      0.046    0.041 -0.824
I11~~I11      0.055      0.048    0.078 -0.864
I12~~I12      0.050      0.047    0.155 -0.866
I13~~I13      0.051      0.047    0.045 -0.866
I14~~I14      0.050      0.047    0.129 -0.861
I15~~I15      0.048      0.046    0.081 -0.872
I16~~I16      0.047      0.043    0.036 -0.865
I17~~I17      0.047      0.042    0.038 -0.850
I18~~I18      0.051      0.047    0.112 -0.850
I19~~I19      0.052      0.048    0.171 -0.854
I20~~I20      0.051      0.048    0.010 -0.851
========= Correlation between Fit Indices ============
             chisq.scaled    aic    bic rmsea.scaled cfi.scaled tli.scaled
chisq.scaled        1.000 -0.256 -0.256        0.821     -0.638     -0.722
aic                -0.256  1.000  1.000       -0.541      0.509      0.437
bic                -0.256  1.000  1.000       -0.541      0.510      0.437
rmsea.scaled        0.821 -0.541 -0.541        1.000     -0.913     -0.929
cfi.scaled         -0.638  0.509  0.510       -0.913      1.000      0.973
tli.scaled         -0.722  0.437  0.437       -0.929      0.973      1.000
srmr                0.401 -0.872 -0.872        0.734     -0.741     -0.675
n                  -0.255  1.000  1.000       -0.541      0.510      0.437
               srmr      n
chisq.scaled  0.401 -0.255
aic          -0.872  1.000
bic          -0.872  1.000
rmsea.scaled  0.734 -0.541
cfi.scaled   -0.741  0.510
tli.scaled   -0.675  0.437
srmr          1.000 -0.872
n            -0.872  1.000
================== Replications =====================
Number of replications = 700 
Number of converged replications = 698 
Number of nonconverged replications: 
   1. Nonconvergent Results = 2 
   2. Nonconvergent results from multiple imputation = 0 
   3. At least one SE were negative or NA = 0 
   4. Nonpositive-definite latent or observed (residual) covariance matrix 
      (e.g., Heywood case or linear dependency) = 0 
NOTE: The sample size is varying.
NOTE: The data generation model is not the same as the analysis  model. See the summary of the population underlying data  generation by the summaryPopulation function.
NULL
indices.dist <- rbind(indices.dist,
                      data.frame(fitted.model = as.factor(
                        rep(teste,
                            each = nrow(sim.u@nobs))),
                        nSample = as.numeric(c(sim.u@n,
                                               sim.f@n,
                                               sim.b@n,
                                               sim.s@n)),
                        conv = factor(c(sim.u@converged,
                                        sim.f@converged,
                                        sim.b@converged,
                                        sim.s@converged)), 
                        RMSEA = as.numeric(c(sim.u@fit$rmsea.robust,
                                             sim.f@fit$rmsea.robust,
                                             sim.b@fit$rmsea.robust,
                                             sim.s@fit$rmsea.robust)),
                        RMSEA.L = as.numeric(c(
                          sim.u@fit$rmsea.ci.lower.robust,
                          sim.f@fit$rmsea.ci.lower.robust,
                          sim.b@fit$rmsea.ci.lower.robust,
                          sim.s@fit$rmsea.ci.lower.robust)),
                        RMSEA.U = as.numeric(c(
                          sim.u@fit$rmsea.ci.upper.robust,
                          sim.f@fit$rmsea.ci.upper.robust,
                          sim.b@fit$rmsea.ci.upper.robust,
                          sim.s@fit$rmsea.ci.upper.robust)),
                        PCLOSE = as.numeric(c(
                          sim.u@fit$rmsea.pvalue.robust,
                          sim.f@fit$rmsea.pvalue.robust,
                          sim.b@fit$rmsea.pvalue.robust,
                          sim.s@fit$rmsea.pvalue.robust)),
                        SABIC = as.numeric(c(
                          sim.u@fit$bic2,
                          sim.f@fit$bic2,
                          sim.b@fit$bic2,
                          sim.s@fit$bic2)),
                        population = "first_order"))


# Population model: bifactor
sim.u <- simsem::sim(model = unidimensional, 
                     rawData = data.sim.bif, 
                     lavaanfun = "cfa", 
                     seed = 123,  
                     multicore = TRUE, 
                     estimator = "MLR", 
                     ordered = FALSE, 
                     orthogonal = FALSE, 
                     std.lv = TRUE)
Progress tracker is not available when 'multicore' is TRUE.
print(simsem::summary(sim.u))
RESULT OBJECT
Model Type
[1] "lavaan"
========= Fit Indices Cutoffs ============
Warning in rq.fit.br(x, y, tau = tau, ...): Solution may be nonunique
Warning in rq.fit.br(x, y, tau = tau, ...): Solution may be nonunique
Warning in rq.fit.br(x, y, tau = tau, ...): Solution may be nonunique
Warning in rq.fit.br(x, y, tau = tau, ...): Solution may be nonunique
Warning in rq.fit.br(x, y, tau = tau, ...): Solution may be nonunique
     N chisq.scaled       aic       bic rmsea.scaled cfi.scaled tli.scaled
1  100      374.525  6563.419  6678.919        0.106      0.756      0.728
2  325      683.880 21127.821 21269.432        0.102      0.748      0.718
3  550      993.235 35692.223 35859.944        0.098      0.739      0.708
4  775     1302.590 50256.625 50450.456        0.095      0.730      0.698
5 1000     1611.945 64821.027 65040.969        0.091      0.721      0.688
   srmr
1 0.114
2 0.107
3 0.100
4 0.093
5 0.086
========= Parameter Estimates and Standard Errors ============
         Estimate Average Estimate SD Average SE Power (Not equal 0) Std Est
G=~I1               0.504       0.058      0.057               1.000   0.452
G=~I2               1.059       0.075      0.069               1.000   0.650
G=~I3               0.680       0.095      0.086               0.989   0.466
G=~I4               0.584       0.062      0.057               1.000   0.603
G=~I5               0.488       0.069      0.063               0.993   0.482
G=~I6               0.971       0.073      0.070               1.000   0.599
G=~I7               0.634       0.085      0.076               0.993   0.486
G=~I8               0.555       0.090      0.082               0.977   0.386
G=~I9               0.637       0.097      0.086               0.990   0.418
G=~I10              0.509       0.062      0.058               0.997   0.519
G=~I11              0.641       0.095      0.082               0.991   0.442
G=~I12              0.792       0.094      0.087               0.997   0.470
G=~I13              0.659       0.094      0.083               0.989   0.439
G=~I14              0.587       0.082      0.075               0.991   0.427
G=~I15              0.612       0.091      0.084               0.989   0.394
G=~I16              0.667       0.095      0.083               0.996   0.452
G=~I17              0.372       0.067      0.056               0.983   0.382
G=~I18              0.239       0.056      0.053               0.941   0.265
G=~I19              0.467       0.091      0.086               0.966   0.324
G=~I20              0.170       0.071      0.068               0.737   0.150
I1~~I1              0.987       0.077      0.072               1.000   0.794
I2~~I2              1.530       0.144      0.126               1.000   0.576
I3~~I3              1.655       0.117      0.114               1.000   0.779
I4~~I4              0.594       0.059      0.054               1.000   0.635
I5~~I5              0.782       0.069      0.064               1.000   0.764
I6~~I6              1.674       0.127      0.123               1.000   0.639
I7~~I7              1.290       0.103      0.095               1.000   0.760
I8~~I8              1.746       0.114      0.107               1.000   0.847
I9~~I9              1.908       0.136      0.126               1.000   0.822
I10~~I10            0.700       0.072      0.063               1.000   0.728
I11~~I11            1.680       0.115      0.105               1.000   0.801
I12~~I12            2.207       0.152      0.137               1.000   0.777
I13~~I13            1.806       0.136      0.123               1.000   0.803
I14~~I14            1.534       0.107      0.100               1.000   0.814
I15~~I15            2.030       0.120      0.110               1.000   0.842
I16~~I16            1.728       0.144      0.129               1.000   0.793
I17~~I17            0.804       0.078      0.068               1.000   0.851
I18~~I18            0.752       0.047      0.044               1.000   0.926
I19~~I19            1.848       0.106      0.099               1.000   0.891
I20~~I20            1.254       0.081      0.069               1.000   0.974
         Std Est SD Std Ave SE r_coef.n r_se.n
G=~I1         0.047      0.045    0.052 -0.858
G=~I2         0.042      0.037    0.009 -0.836
G=~I3         0.062      0.056    0.074 -0.828
G=~I4         0.045      0.041    0.017 -0.860
G=~I5         0.061      0.055    0.005 -0.837
G=~I6         0.041      0.040   -0.019 -0.826
G=~I7         0.060      0.054    0.095 -0.833
G=~I8         0.060      0.055   -0.019 -0.841
G=~I9         0.060      0.054   -0.024 -0.842
G=~I10        0.053      0.048   -0.056 -0.848
G=~I11        0.062      0.054    0.040 -0.839
G=~I12        0.054      0.050    0.017 -0.819
G=~I13        0.060      0.053   -0.002 -0.839
G=~I14        0.057      0.052   -0.051 -0.847
G=~I15        0.057      0.052   -0.006 -0.850
G=~I16        0.057      0.050   -0.038 -0.852
G=~I17        0.061      0.051    0.015 -0.851
G=~I18        0.060      0.057   -0.003 -0.857
G=~I19        0.062      0.058    0.000 -0.855
G=~I20        0.063      0.060   -0.004 -0.866
I1~~I1        0.042      0.040    0.010 -0.855
I2~~I2        0.053      0.048    0.008 -0.842
I3~~I3        0.055      0.051    0.063 -0.841
I4~~I4        0.054      0.049    0.016 -0.823
I5~~I5        0.056      0.052    0.081 -0.842
I6~~I6        0.048      0.047    0.059 -0.844
I7~~I7        0.056      0.051    0.040 -0.840
I8~~I8        0.045      0.042    0.067 -0.860
I9~~I9        0.050      0.045    0.098 -0.852
I10~~I10      0.055      0.049    0.032 -0.835
I11~~I11      0.054      0.047    0.112 -0.857
I12~~I12      0.050      0.046    0.109 -0.849
I13~~I13      0.052      0.046    0.126 -0.858
I14~~I14      0.048      0.044    0.105 -0.856
I15~~I15      0.045      0.041    0.076 -0.854
I16~~I16      0.052      0.045    0.114 -0.865
I17~~I17      0.043      0.038    0.029 -0.860
I18~~I18      0.032      0.030    0.083 -0.860
I19~~I19      0.041      0.037    0.145 -0.849
I20~~I20      0.021      0.018    0.130 -0.867
========= Correlation between Fit Indices ============
             chisq.scaled    aic    bic rmsea.scaled cfi.scaled tli.scaled
chisq.scaled        1.000  0.983  0.983       -0.106      0.062      0.062
aic                 0.983  1.000  1.000       -0.242      0.178      0.178
bic                 0.983  1.000  1.000       -0.242      0.179      0.179
rmsea.scaled       -0.106 -0.242 -0.242        1.000     -0.826     -0.826
cfi.scaled          0.062  0.178  0.179       -0.826      1.000      1.000
tli.scaled          0.062  0.178  0.179       -0.826      1.000      1.000
srmr               -0.565 -0.665 -0.665        0.759     -0.724     -0.724
n                   0.983  1.000  1.000       -0.244      0.181      0.181
               srmr      n
chisq.scaled -0.565  0.983
aic          -0.665  1.000
bic          -0.665  1.000
rmsea.scaled  0.759 -0.244
cfi.scaled   -0.724  0.181
tli.scaled   -0.724  0.181
srmr          1.000 -0.666
n            -0.666  1.000
================== Replications =====================
Number of replications = 700 
Number of converged replications = 700 
Number of nonconverged replications: 
   1. Nonconvergent Results = 0 
   2. Nonconvergent results from multiple imputation = 0 
   3. At least one SE were negative or NA = 0 
   4. Nonpositive-definite latent or observed (residual) covariance matrix 
      (e.g., Heywood case or linear dependency) = 0 
NOTE: The sample size is varying.
NOTE: The data generation model is not the same as the analysis  model. See the summary of the population underlying data  generation by the summaryPopulation function.
NULL
sim.f <- simsem::sim(model = primeira.ordem, 
                     rawData = data.sim.bif,
                     lavaanfun = "cfa", 
                     seed = 123,  
                     multicore = TRUE, 
                     estimator = "MLR", 
                     ordered = FALSE, 
                     orthogonal = FALSE, 
                     std.lv = TRUE)
Progress tracker is not available when 'multicore' is TRUE.
print(simsem::summary(sim.f))
RESULT OBJECT
Model Type
[1] "lavaan"
========= Fit Indices Cutoffs ============
Warning in rq.fit.br(x, y, tau = tau, ...): Solution may be nonunique
Warning in rq.fit.br(x, y, tau = tau, ...): Solution may be nonunique
Warning in rq.fit.br(x, y, tau = tau, ...): Solution may be nonunique
Warning in rq.fit.br(x, y, tau = tau, ...): Solution may be nonunique
Warning in rq.fit.br(x, y, tau = tau, ...): Solution may be nonunique
Warning in rq.fit.br(x, y, tau = tau, ...): Solution may be nonunique
Warning in rq.fit.br(x, y, tau = tau, ...): Solution may be nonunique
Warning in rq.fit.br(x, y, tau = tau, ...): Solution may be nonunique
Warning in rq.fit.br(x, y, tau = tau, ...): Solution may be nonunique
Warning in rq.fit.br(x, y, tau = tau, ...): Solution may be nonunique
     N chisq.scaled       aic       bic rmsea.scaled cfi.scaled tli.scaled
1  100      258.545  6481.245  6609.036        0.069      0.957      0.951
2  325      334.291 20818.860 20971.794        0.063      0.952      0.946
3  550      410.038 35156.475 35334.552        0.058      0.947      0.940
4  775      485.785 49494.090 49697.310        0.052      0.942      0.935
5 1000      561.531 63831.705 64060.068        0.047      0.938      0.929
   srmr
1 0.092
2 0.083
3 0.074
4 0.065
5 0.055
========= Parameter Estimates and Standard Errors ============
         Estimate Average Estimate SD Average SE Power (Not equal 0) Std Est
F1=~I1              0.509       0.060      0.058               0.999   0.457
F1=~I2              1.085       0.076      0.070               1.000   0.666
F1=~I3              0.879       0.078      0.071               0.999   0.603
F1=~I4              0.607       0.062      0.056               1.000   0.626
F1=~I5              0.619       0.061      0.055               1.000   0.611
F1=~I6              1.027       0.066      0.065               1.000   0.634
F1=~I7              0.794       0.070      0.064               1.000   0.609
F2=~I8              0.741       0.073      0.072               0.999   0.516
F2=~I9              0.873       0.081      0.072               1.000   0.573
F2=~I10             0.588       0.057      0.054               1.000   0.599
F2=~I11             0.845       0.079      0.068               1.000   0.583
F2=~I12             0.957       0.077      0.076               1.000   0.568
F2=~I13             0.833       0.077      0.072               1.000   0.556
F2=~I14             0.739       0.070      0.068               1.000   0.538
F3=~I15             0.831       0.091      0.084               0.999   0.535
F3=~I16             0.818       0.100      0.090               0.999   0.554
F3=~I17             0.454       0.070      0.061               0.993   0.466
F3=~I18             0.431       0.056      0.052               0.990   0.478
F3=~I19             0.925       0.089      0.081               0.999   0.642
F3=~I20             0.443       0.077      0.071               0.964   0.391
I1~~I1              0.982       0.075      0.073               1.000   0.789
I2~~I2              1.473       0.149      0.129               1.000   0.555
I3~~I3              1.347       0.112      0.109               1.000   0.634
I4~~I4              0.568       0.058      0.052               1.000   0.607
I5~~I5              0.638       0.059      0.056               1.000   0.624
I6~~I6              1.562       0.124      0.120               1.000   0.596
I7~~I7              1.064       0.093      0.088               1.000   0.627
I8~~I8              1.508       0.109      0.107               1.000   0.732
I9~~I9              1.555       0.131      0.121               1.000   0.670
I10~~I10            0.614       0.067      0.058               1.000   0.639
I11~~I11            1.380       0.114      0.104               1.000   0.658
I12~~I12            1.921       0.145      0.140               1.000   0.676
I13~~I13            1.549       0.130      0.118               1.000   0.689
I14~~I14            1.335       0.099      0.099               1.000   0.709
I15~~I15            1.714       0.143      0.133               1.000   0.711
I16~~I16            1.503       0.150      0.137               1.000   0.690
I17~~I17            0.736       0.075      0.066               1.000   0.780
I18~~I18            0.624       0.053      0.047               1.000   0.768
I19~~I19            1.211       0.147      0.135               0.996   0.585
I20~~I20            1.086       0.086      0.075               1.000   0.843
F1~~F2              0.514       0.062      0.058               0.997   0.514
F1~~F3              0.456       0.080      0.072               0.971   0.456
F2~~F3              0.415       0.074      0.071               0.966   0.415
         Std Est SD Std Ave SE r_coef.n r_se.n
F1=~I1        0.047      0.046    0.030 -0.850
F1=~I2        0.042      0.037   -0.014 -0.836
F1=~I3        0.049      0.044    0.085 -0.837
F1=~I4        0.044      0.040   -0.016 -0.873
F1=~I5        0.048      0.043    0.016 -0.848
F1=~I6        0.037      0.036   -0.066 -0.855
F1=~I7        0.046      0.042    0.100 -0.852
F2=~I8        0.046      0.046   -0.030 -0.862
F2=~I9        0.048      0.042    0.001 -0.862
F2=~I10       0.045      0.041   -0.034 -0.857
F2=~I11       0.050      0.043    0.101 -0.855
F2=~I12       0.043      0.043    0.032 -0.859
F2=~I13       0.047      0.044   -0.016 -0.858
F2=~I14       0.046      0.045   -0.046 -0.861
F3=~I15       0.056      0.051   -0.016 -0.827
F3=~I16       0.058      0.053   -0.008 -0.801
F3=~I17       0.060      0.053   -0.021 -0.843
F3=~I18       0.059      0.053    0.049 -0.811
F3=~I19       0.057      0.052    0.048 -0.724
F3=~I20       0.066      0.060    0.079 -0.795
I1~~I1        0.042      0.041    0.029 -0.851
I2~~I2        0.055      0.049    0.033 -0.843
I3~~I3        0.056      0.052    0.025 -0.852
I4~~I4        0.055      0.049    0.061 -0.825
I5~~I5        0.057      0.052    0.068 -0.838
I6~~I6        0.047      0.046    0.105 -0.854
I7~~I7        0.054      0.051    0.014 -0.843
I8~~I8        0.047      0.047    0.058 -0.867
I9~~I9        0.053      0.048    0.065 -0.864
I10~~I10      0.054      0.049    0.007 -0.819
I11~~I11      0.056      0.050    0.015 -0.864
I12~~I12      0.049      0.049    0.079 -0.863
I13~~I13      0.052      0.048    0.124 -0.857
I14~~I14      0.049      0.048    0.095 -0.859
I15~~I15      0.058      0.054    0.078 -0.838
I16~~I16      0.065      0.058    0.087 -0.824
I17~~I17      0.055      0.049    0.062 -0.851
I18~~I18      0.054      0.050    0.029 -0.839
I19~~I19      0.073      0.066    0.052 -0.741
I20~~I20      0.050      0.046    0.070 -0.820
F1~~F2        0.062      0.058   -0.028 -0.835
F1~~F3        0.080      0.072   -0.031 -0.762
F2~~F3        0.074      0.071   -0.062 -0.733
========= Correlation between Fit Indices ============
             chisq.scaled    aic    bic rmsea.scaled cfi.scaled tli.scaled
chisq.scaled        1.000  0.928  0.928       -0.091      0.123      0.123
aic                 0.928  1.000  1.000       -0.374      0.386      0.386
bic                 0.928  1.000  1.000       -0.374      0.386      0.386
rmsea.scaled       -0.091 -0.374 -0.374        1.000     -0.957     -0.957
cfi.scaled          0.123  0.386  0.386       -0.957      1.000      1.000
tli.scaled          0.123  0.386  0.386       -0.957      1.000      1.000
srmr               -0.606 -0.783 -0.784        0.714     -0.730     -0.730
n                   0.928  1.000  1.000       -0.374      0.386      0.386
               srmr      n
chisq.scaled -0.606  0.928
aic          -0.783  1.000
bic          -0.784  1.000
rmsea.scaled  0.714 -0.374
cfi.scaled   -0.730  0.386
tli.scaled   -0.730  0.386
srmr          1.000 -0.783
n            -0.783  1.000
================== Replications =====================
Number of replications = 700 
Number of converged replications = 700 
Number of nonconverged replications: 
   1. Nonconvergent Results = 0 
   2. Nonconvergent results from multiple imputation = 0 
   3. At least one SE were negative or NA = 0 
   4. Nonpositive-definite latent or observed (residual) covariance matrix 
      (e.g., Heywood case or linear dependency) = 0 
NOTE: The sample size is varying.
NOTE: The data generation model is not the same as the analysis  model. See the summary of the population underlying data  generation by the summaryPopulation function.
NULL
sim.b <- simsem::sim(model = bifatorial, 
                     rawData = data.sim.bif, 
                     lavaanfun = "cfa", 
                     seed = 123,  
                     multicore = TRUE, 
                     estimator = "MLR", 
                     ordered = FALSE, 
                     orthogonal = TRUE, 
                     std.lv = TRUE)
Progress tracker is not available when 'multicore' is TRUE.
print(simsem::summary(sim.b))
RESULT OBJECT
Model Type
[1] "lavaan"
========= Fit Indices Cutoffs ============
Warning in rq.fit.br(x, y, tau = tau, ...): Solution may be nonunique
Warning in rq.fit.br(x, y, tau = tau, ...): Solution may be nonunique
Warning in rq.fit.br(x, y, tau = tau, ...): Solution may be nonunique
Warning in rq.fit.br(x, y, tau = tau, ...): Solution may be nonunique
Warning in rq.fit.br(x, y, tau = tau, ...): Solution may be nonunique
     N chisq.scaled       aic       bic rmsea.scaled cfi.scaled tli.scaled
1  100      206.222  6454.366  6642.207        0.055          1      1.019
2  325      199.512 20727.018 20946.570        0.044          1      1.016
3  550      192.802 34999.669 35250.934        0.033          1      1.013
4  775      186.092 49272.321 49555.297        0.022          1      1.011
5 1000      179.382 63544.973 63859.661        0.011          1      1.008
   srmr
1 0.072
2 0.059
3 0.047
4 0.035
5 0.022
========= Parameter Estimates and Standard Errors ============
         Estimate Average Estimate SD Average SE Power (Not equal 0) Std Est
F1=~I1              0.203       0.084      0.078               0.781   0.182
F1=~I2              0.439       0.128      0.124               0.894   0.269
F1=~I3              0.941       0.222      0.142               0.979   0.646
F1=~I4              0.270       0.077      0.070               0.913   0.279
F1=~I5              0.615       0.085      0.072               0.984   0.607
F1=~I6              0.508       0.123      0.114               0.920   0.314
F1=~I7              0.750       0.099      0.088               0.986   0.575
F2=~I8              0.611       0.144      0.118               0.960   0.426
F2=~I9              0.816       1.773      0.116               0.961   0.534
F2=~I10             0.355       0.608      0.072               0.927   0.365
F2=~I11             0.661       0.124      0.105               0.961   0.456
F2=~I12             0.621       0.138      0.125               0.946   0.368
F2=~I13             0.598       0.119      0.113               0.953   0.399
F2=~I14             0.527       0.115      0.100               0.943   0.383
F3=~I15             0.516       0.120      0.107               0.933   0.332
F3=~I16             0.436       0.110      0.101               0.921   0.295
F3=~I17             0.246       0.073      0.066               0.891   0.253
F3=~I18             0.386       0.070      0.063               0.964   0.428
F3=~I19             1.067       2.061      0.112               0.981   0.742
F3=~I20             0.524       0.100      0.096               0.971   0.462
G=~I1               0.481       0.067      0.069               0.980   0.431
G=~I2               1.033       0.095      0.093               0.994   0.634
G=~I3               0.418       0.114      0.108               0.891   0.287
G=~I4               0.553       0.072      0.067               0.987   0.571
G=~I5               0.320       0.081      0.074               0.927   0.316
G=~I6               0.887       0.092      0.092               0.993   0.548
G=~I7               0.431       0.099      0.093               0.929   0.331
G=~I8               0.449       0.106      0.093               0.941   0.313
G=~I9               0.508       0.108      0.096               0.960   0.333
G=~I10              0.481       0.072      0.065               0.993   0.490
G=~I11              0.537       0.103      0.093               0.959   0.370
G=~I12              0.717       0.104      0.103               0.977   0.425
G=~I13              0.574       0.099      0.096               0.971   0.383
G=~I14              0.508       0.096      0.086               0.974   0.370
G=~I15              0.622       0.098      0.096               0.973   0.400
G=~I16              0.700       0.103      0.095               0.983   0.474
G=~I17              0.382       0.071      0.063               0.964   0.392
G=~I18              0.210       0.060      0.059               0.883   0.233
G=~I19              0.401       0.100      0.094               0.924   0.278
G=~I20              0.108       0.074      0.076               0.404   0.095
I1~~I1              0.961       0.076      0.073               1.000   0.772
I2~~I2              1.371       0.147      0.132               0.994   0.516
I3~~I3              1.002       1.393      0.664               0.989   0.471
I4~~I4              0.549       0.060      0.052               1.000   0.587
I5~~I5              0.531       0.078      0.068               0.977   0.520
I6~~I6              1.553       0.125      0.120               0.999   0.593
I7~~I7              0.932       0.117      0.101               0.990   0.549
I8~~I8              1.455       0.230      0.169               0.993   0.706
I9~~I9             -1.751      85.372      0.167               0.991  -0.713
I10~~I10            0.230      10.022      0.060               0.997   0.167
I11~~I11            1.348       0.125      0.117               0.996   0.643
I12~~I12            1.914       0.170      0.154               0.994   0.673
I13~~I13            1.538       0.177      0.139               0.997   0.684
I14~~I14            1.327       0.103      0.104               1.000   0.705
I15~~I15            1.737       0.134      0.125               0.999   0.720
I16~~I16            1.479       0.141      0.127               0.999   0.679
I17~~I17            0.730       0.073      0.063               1.000   0.773
I18~~I18            0.611       0.056      0.049               0.996   0.752
I19~~I19           -3.475     116.000      0.205               0.940  -1.806
I20~~I20            0.986       0.135      0.128               0.990   0.766
         Std Est SD Std Ave SE r_coef.n r_se.n
F1=~I1        0.075      0.069   -0.034 -0.708
F1=~I2        0.078      0.076    0.015 -0.654
F1=~I3        0.153      0.095   -0.022 -0.103
F1=~I4        0.078      0.070   -0.065 -0.684
F1=~I5        0.078      0.064    0.039 -0.578
F1=~I6        0.076      0.070   -0.017 -0.631
F1=~I7        0.071      0.064    0.025 -0.652
F2=~I8        0.100      0.081   -0.017 -0.272
F2=~I9        1.146      0.076   -0.052 -0.377
F2=~I10       0.676      0.073   -0.040 -0.670
F2=~I11       0.085      0.071    0.145 -0.634
F2=~I12       0.081      0.074    0.029 -0.553
F2=~I13       0.080      0.074    0.007 -0.410
F2=~I14       0.083      0.072    0.100 -0.667
F3=~I15       0.077      0.068    0.049 -0.560
F3=~I16       0.073      0.067    0.060 -0.683
F3=~I17       0.073      0.066   -0.020 -0.629
F3=~I18       0.076      0.067    0.096 -0.645
F3=~I19       1.475      0.078   -0.055 -0.477
F3=~I20       0.083      0.081    0.044 -0.219
G=~I1         0.056      0.057    0.109 -0.744
G=~I2         0.056      0.054    0.017 -0.681
G=~I3         0.078      0.073    0.074 -0.705
G=~I4         0.062      0.056    0.087 -0.747
G=~I5         0.077      0.071    0.012 -0.713
G=~I6         0.055      0.055    0.033 -0.663
G=~I7         0.075      0.070    0.098 -0.748
G=~I8         0.072      0.063   -0.014 -0.799
G=~I9         0.069      0.062   -0.051 -0.766
G=~I10        0.064      0.058   -0.077 -0.805
G=~I11        0.069      0.063   -0.003 -0.749
G=~I12        0.061      0.060    0.000 -0.712
G=~I13        0.064      0.063   -0.015 -0.723
G=~I14        0.068      0.060   -0.071 -0.743
G=~I15        0.062      0.060   -0.030 -0.752
G=~I16        0.062      0.059   -0.017 -0.746
G=~I17        0.064      0.058    0.022 -0.786
G=~I18        0.065      0.064   -0.012 -0.762
G=~I19        0.069      0.064   -0.008 -0.757
G=~I20        0.066      0.067   -0.039 -0.766
I1~~I1        0.043      0.044    0.061 -0.850
I2~~I2        0.054      0.050    0.098 -0.737
I3~~I3        0.673      0.320    0.065 -0.063
I4~~I4        0.055      0.050    0.065 -0.814
I5~~I5        0.078      0.066    0.134 -0.365
I6~~I6        0.046      0.046    0.146 -0.723
I7~~I7        0.071      0.060    0.118 -0.477
I8~~I8        0.109      0.079    0.157 -0.124
I9~~I9       35.675      0.205    0.057 -0.174
I10~~I10     12.378      0.134    0.057 -0.364
I11~~I11      0.061      0.056    0.090 -0.650
I12~~I12      0.058      0.054    0.194 -0.320
I13~~I13      0.077      0.059    0.179 -0.175
I14~~I14      0.051      0.051    0.159 -0.809
I15~~I15      0.054      0.051    0.152 -0.775
I16~~I16      0.060      0.053    0.136 -0.707
I17~~I17      0.050      0.047    0.103 -0.818
I18~~I18      0.059      0.053    0.070 -0.735
I19~~I19     59.407      0.289    0.057 -0.320
I20~~I20      0.098      0.090    0.126 -0.136
========= Correlation between Fit Indices ============
             chisq.scaled    aic    bic rmsea.scaled cfi.scaled tli.scaled
chisq.scaled        1.000 -0.294 -0.294        0.830     -0.670     -0.734
aic                -0.294  1.000  1.000       -0.561      0.528      0.488
bic                -0.294  1.000  1.000       -0.561      0.529      0.488
rmsea.scaled        0.830 -0.561 -0.561        1.000     -0.918     -0.935
cfi.scaled         -0.670  0.528  0.529       -0.918      1.000      0.985
tli.scaled         -0.734  0.488  0.488       -0.935      0.985      1.000
srmr                0.446 -0.868 -0.869        0.761     -0.757     -0.726
n                  -0.294  1.000  1.000       -0.560      0.528      0.487
               srmr      n
chisq.scaled  0.446 -0.294
aic          -0.868  1.000
bic          -0.869  1.000
rmsea.scaled  0.761 -0.560
cfi.scaled   -0.757  0.528
tli.scaled   -0.726  0.487
srmr          1.000 -0.868
n            -0.868  1.000
================== Replications =====================
Number of replications = 700 
Number of converged replications = 682 
Number of nonconverged replications: 
   1. Nonconvergent Results = 0 
   2. Nonconvergent results from multiple imputation = 0 
   3. At least one SE were negative or NA = 0 
   4. Nonpositive-definite latent or observed (residual) covariance matrix 
      (e.g., Heywood case or linear dependency) = 18 
NOTE: The sample size is varying.
NOTE: The data generation model is not the same as the analysis  model. See the summary of the population underlying data  generation by the summaryPopulation function.
NULL
sim.s <- simsem::sim(model = segunda.ordem, 
                     rawData = data.sim.bif,
                     lavaanfun = "cfa", 
                     seed = 123,  
                     multicore = TRUE, 
                     estimator = "MLR", 
                     ordered = FALSE, 
                     orthogonal = FALSE, 
                     std.lv = TRUE)
Progress tracker is not available when 'multicore' is TRUE.
Warning in (function (..., deparse.level = 1) : number of columns of result is
not a multiple of vector length (arg 155)
print(simsem::summary(sim.s))
RESULT OBJECT
Model Type
[1] "lavaan"
========= Fit Indices Cutoffs ============
     N chisq.scaled       aic       bic rmsea.scaled cfi.scaled tli.scaled
1  100      259.669  6482.006  6609.036        0.070      0.957      0.951
2  325      335.079 20819.240 20971.794        0.064      0.952      0.946
3  550      410.488 35156.475 35334.552        0.058      0.947      0.940
4  775      485.897 49493.710 49697.310        0.052      0.942      0.935
5 1000      561.306 63830.944 64060.068        0.047      0.938      0.929
   srmr
1 0.092
2 0.083
3 0.074
4 0.065
5 0.055
========= Parameter Estimates and Standard Errors ============
         Estimate Average Estimate SD Average SE Power (Not equal 0) Std Est
F1=~I1              0.328       0.062      0.060               0.965   0.456
F1=~I2              0.699       0.115      0.106               0.965   0.666
F1=~I3              0.570       0.114      0.106               0.958   0.603
F1=~I4              0.390       0.068      0.064               0.965   0.625
F1=~I5              0.401       0.080      0.076               0.959   0.612
F1=~I6              0.663       0.114      0.104               0.967   0.634
F1=~I7              0.515       0.100      0.094               0.961   0.609
F2=~I8              0.531       0.082      0.083               0.968   0.516
F2=~I9              0.626       0.095      0.094               0.973   0.573
F2=~I10             0.420       0.062      0.059               0.973   0.599
F2=~I11             0.607       0.093      0.087               0.971   0.584
F2=~I12             0.687       0.099      0.095               0.971   0.568
F2=~I13             0.597       0.090      0.087               0.971   0.556
F2=~I14             0.529       0.079      0.080               0.971   0.538
F3=~I15             0.653       0.090      0.077               0.991   0.535
F3=~I16             0.642       0.083      0.074               0.993   0.553
F3=~I17             0.356       0.059      0.050               0.986   0.466
F3=~I18             0.340       0.057      0.052               0.978   0.478
F3=~I19             0.731       0.113      0.101               0.986   0.642
F3=~I20             0.351       0.075      0.070               0.948   0.391
G=~F1               2.223      16.524      0.539               0.925   0.751
G=~F2               1.461      11.830      0.873               0.954   0.687
G=~F3               0.956       4.483      0.217               0.948   0.606
I1~~I1              0.981       0.074      0.072               1.000   0.790
I2~~I2              1.474       0.147      0.128               1.000   0.555
I3~~I3              1.346       0.112      0.108               1.000   0.634
I4~~I4              0.568       0.058      0.052               1.000   0.607
I5~~I5              0.637       0.059      0.055               1.000   0.624
I6~~I6              1.563       0.123      0.119               1.000   0.597
I7~~I7              1.063       0.091      0.087               1.000   0.627
I8~~I8              1.508       0.109      0.106               1.000   0.732
I9~~I9              1.554       0.128      0.119               1.000   0.669
I10~~I10            0.613       0.065      0.057               1.000   0.639
I11~~I11            1.379       0.111      0.103               1.000   0.657
I12~~I12            1.919       0.144      0.139               1.000   0.675
I13~~I13            1.548       0.129      0.117               1.000   0.689
I14~~I14            1.335       0.099      0.098               1.000   0.709
I15~~I15            1.714       0.142      0.132               1.000   0.711
I16~~I16            1.504       0.148      0.136               1.000   0.691
I17~~I17            0.736       0.074      0.065               1.000   0.780
I18~~I18            0.624       0.052      0.047               1.000   0.769
I19~~I19            1.211       0.146      0.134               0.996   0.584
I20~~I20            1.086       0.086      0.074               1.000   0.843
         Std Est SD Std Ave SE r_coef.n r_se.n
F1=~I1        0.047      0.045    0.100 -0.552
F1=~I2        0.042      0.037    0.075 -0.515
F1=~I3        0.048      0.044    0.082 -0.570
F1=~I4        0.044      0.039    0.074 -0.548
F1=~I5        0.047      0.043    0.057 -0.617
F1=~I6        0.037      0.036    0.045 -0.528
F1=~I7        0.046      0.042    0.094 -0.589
F2=~I8        0.046      0.046    0.124 -0.451
F2=~I9        0.047      0.042    0.140 -0.418
F2=~I10       0.044      0.041    0.148 -0.410
F2=~I11       0.048      0.043    0.195 -0.444
F2=~I12       0.043      0.043    0.160 -0.434
F2=~I13       0.047      0.043    0.132 -0.440
F2=~I14       0.045      0.044    0.129 -0.429
F3=~I15       0.056      0.051    0.087 -0.721
F3=~I16       0.057      0.052    0.126 -0.754
F3=~I17       0.060      0.052    0.064 -0.757
F3=~I18       0.058      0.053    0.112 -0.737
F3=~I19       0.057      0.052    0.085 -0.680
F3=~I20       0.065      0.059    0.094 -0.719
G=~F1         0.081      0.079   -0.079 -0.193
G=~F2         0.077      0.074   -0.066 -0.112
G=~F3         0.086      0.081   -0.064 -0.166
I1~~I1        0.042      0.041    0.034 -0.848
I2~~I2        0.055      0.049    0.032 -0.842
I3~~I3        0.056      0.052    0.036 -0.851
I4~~I4        0.054      0.049    0.058 -0.823
I5~~I5        0.056      0.052    0.080 -0.837
I6~~I6        0.046      0.046    0.097 -0.853
I7~~I7        0.054      0.051    0.023 -0.841
I8~~I8        0.047      0.047    0.054 -0.866
I9~~I9        0.053      0.048    0.079 -0.865
I10~~I10      0.053      0.049    0.013 -0.820
I11~~I11      0.054      0.049    0.020 -0.863
I12~~I12      0.049      0.048    0.096 -0.862
I13~~I13      0.052      0.047    0.137 -0.856
I14~~I14      0.048      0.047    0.101 -0.858
I15~~I15      0.057      0.054    0.076 -0.837
I16~~I16      0.064      0.057    0.072 -0.822
I17~~I17      0.055      0.048    0.059 -0.849
I18~~I18      0.054      0.050    0.023 -0.838
I19~~I19      0.072      0.065    0.057 -0.737
I20~~I20      0.050      0.046    0.064 -0.817
========= Correlation between Fit Indices ============
             chisq.scaled    aic    bic rmsea.scaled cfi.scaled tli.scaled
chisq.scaled            1     NA     NA           NA         NA         NA
aic                    NA  1.000  1.000           NA         NA         NA
bic                    NA  1.000  1.000           NA         NA         NA
rmsea.scaled           NA     NA     NA            1         NA         NA
cfi.scaled             NA     NA     NA           NA          1         NA
tli.scaled             NA     NA     NA           NA         NA          1
srmr                   NA -0.778 -0.778           NA         NA         NA
n                      NA  1.000  1.000           NA         NA         NA
               srmr      n
chisq.scaled     NA     NA
aic          -0.778  1.000
bic          -0.778  1.000
rmsea.scaled     NA     NA
cfi.scaled       NA     NA
tli.scaled       NA     NA
srmr          1.000 -0.778
n            -0.778  1.000
================== Replications =====================
Number of replications = 700 
Number of converged replications = 691 
Number of nonconverged replications: 
   1. Nonconvergent Results = 8 
   2. Nonconvergent results from multiple imputation = 0 
   3. At least one SE were negative or NA = 1 
   4. Nonpositive-definite latent or observed (residual) covariance matrix 
      (e.g., Heywood case or linear dependency) = 0 
NOTE: The sample size is varying.
NOTE: The data generation model is not the same as the analysis  model. See the summary of the population underlying data  generation by the summaryPopulation function.
NULL
indices.dist <- rbind(indices.dist,
                      data.frame(fitted.model = as.factor(
                        rep(teste,
                            each = nrow(sim.u@nobs))),
                        nSample = as.numeric(c(sim.u@n,
                                               sim.f@n,
                                               sim.b@n,
                                               sim.s@n)),
                        conv = factor(c(sim.u@converged,
                                        sim.f@converged,
                                        sim.b@converged,
                                        sim.s@converged)), 
                        RMSEA = as.numeric(c(sim.u@fit$rmsea.robust,
                                             sim.f@fit$rmsea.robust,
                                             sim.b@fit$rmsea.robust,
                                             sim.s@fit$rmsea.robust)),
                        RMSEA.L = as.numeric(c(
                          sim.u@fit$rmsea.ci.lower.robust,
                          sim.f@fit$rmsea.ci.lower.robust,
                          sim.b@fit$rmsea.ci.lower.robust,
                          sim.s@fit$rmsea.ci.lower.robust)),
                        RMSEA.U = as.numeric(c(
                          sim.u@fit$rmsea.ci.upper.robust,
                          sim.f@fit$rmsea.ci.upper.robust,
                          sim.b@fit$rmsea.ci.upper.robust,
                          sim.s@fit$rmsea.ci.upper.robust)),
                        PCLOSE = as.numeric(c(
                          sim.u@fit$rmsea.pvalue.robust,
                          sim.f@fit$rmsea.pvalue.robust,
                          sim.b@fit$rmsea.pvalue.robust,
                          sim.s@fit$rmsea.pvalue.robust)),
                        SABIC = as.numeric(c(
                          sim.u@fit$bic2,
                          sim.f@fit$bic2,
                          sim.b@fit$bic2,
                          sim.s@fit$bic2)),
                        population = "bifactor"))


# Population model: second-order
sim.u <- simsem::sim(model = unidimensional, 
                     rawData = data.sim.scn, 
                     lavaanfun = "cfa", 
                     seed = 123,  
                     multicore = TRUE, 
                     estimator = "MLR", 
                     ordered = FALSE, 
                     orthogonal = FALSE, 
                     std.lv = TRUE)
Progress tracker is not available when 'multicore' is TRUE.
print(simsem::summary(sim.u))
RESULT OBJECT
Model Type
[1] "lavaan"
========= Fit Indices Cutoffs ============
Warning in rq.fit.br(x, y, tau = tau, ...): Solution may be nonunique
Warning in rq.fit.br(x, y, tau = tau, ...): Solution may be nonunique
Warning in rq.fit.br(x, y, tau = tau, ...): Solution may be nonunique
Warning in rq.fit.br(x, y, tau = tau, ...): Solution may be nonunique
Warning in rq.fit.br(x, y, tau = tau, ...): Solution may be nonunique
Warning in rq.fit.br(x, y, tau = tau, ...): Solution may be nonunique
Warning in rq.fit.br(x, y, tau = tau, ...): Solution may be nonunique
Warning in rq.fit.br(x, y, tau = tau, ...): Solution may be nonunique
Warning in rq.fit.br(x, y, tau = tau, ...): Solution may be nonunique
Warning in rq.fit.br(x, y, tau = tau, ...): Solution may be nonunique
     N chisq.scaled       aic       bic rmsea.scaled cfi.scaled tli.scaled
1  100      395.087  6504.635  6627.671        0.110      0.780      0.754
2  325      726.596 20964.979 21110.187        0.106      0.768      0.741
3  550     1058.104 35425.323 35592.703        0.102      0.756      0.727
4  775     1389.613 49885.667 50075.220        0.099      0.744      0.714
5 1000     1721.121 64346.011 64557.736        0.095      0.732      0.701
   srmr
1 0.112
2 0.105
3 0.099
4 0.092
5 0.085
========= Parameter Estimates and Standard Errors ============
         Estimate Average Estimate SD Average SE Power (Not equal 0) Std Est
G=~I1               0.685       0.068      0.060               1.000   0.615
G=~I2               0.610       0.100      0.087               0.991   0.375
G=~I3               0.853       0.080      0.073               1.000   0.585
G=~I4               0.361       0.059      0.057               0.991   0.372
G=~I5               0.589       0.062      0.058               0.999   0.581
G=~I6               0.661       0.093      0.085               0.993   0.408
G=~I7               0.732       0.071      0.069               1.000   0.562
G=~I8               0.730       0.084      0.076               0.996   0.508
G=~I9               0.721       0.092      0.080               0.996   0.472
G=~I10              0.464       0.061      0.057               0.999   0.474
G=~I11              0.678       0.088      0.077               0.996   0.468
G=~I12              0.757       0.096      0.087               0.993   0.449
G=~I13              0.658       0.087      0.081               0.996   0.438
G=~I14              0.587       0.080      0.074               0.996   0.428
G=~I15              0.631       0.087      0.084               0.993   0.406
G=~I16              0.526       0.088      0.084               0.986   0.356
G=~I17              0.365       0.064      0.057               0.984   0.374
G=~I18              0.464       0.051      0.050               0.999   0.515
G=~I19              0.761       0.084      0.077               0.999   0.527
G=~I20              0.641       0.068      0.063               1.000   0.564
I1~~I1              0.765       0.077      0.069               1.000   0.619
I2~~I2              2.272       0.141      0.125               1.000   0.856
I3~~I3              1.391       0.121      0.110               1.000   0.655
I4~~I4              0.804       0.079      0.071               1.000   0.859
I5~~I5              0.676       0.062      0.058               1.000   0.660
I6~~I6              2.175       0.127      0.120               1.000   0.831
I7~~I7              1.157       0.098      0.092               1.000   0.682
I8~~I8              1.523       0.117      0.109               1.000   0.739
I9~~I9              1.807       0.133      0.123               1.000   0.775
I10~~I10            0.739       0.076      0.065               1.000   0.773
I11~~I11            1.635       0.117      0.102               1.000   0.778
I12~~I12            2.256       0.151      0.133               1.000   0.795
I13~~I13            1.818       0.130      0.120               1.000   0.805
I14~~I14            1.530       0.108      0.099               1.000   0.814
I15~~I15            2.006       0.116      0.112               1.000   0.832
I16~~I16            1.898       0.143      0.135               1.000   0.871
I17~~I17            0.812       0.073      0.068               1.000   0.857
I18~~I18            0.593       0.045      0.045               1.000   0.732
I19~~I19            1.494       0.122      0.109               1.000   0.719
I20~~I20            0.875       0.078      0.070               1.000   0.679
         Std Est SD Std Ave SE r_coef.n r_se.n
G=~I1         0.050      0.044    0.028 -0.829
G=~I2         0.059      0.052   -0.009 -0.855
G=~I3         0.050      0.046    0.059 -0.816
G=~I4         0.052      0.052    0.033 -0.856
G=~I5         0.051      0.047    0.058 -0.842
G=~I6         0.055      0.051    0.039 -0.851
G=~I7         0.049      0.047    0.004 -0.832
G=~I8         0.054      0.049    0.026 -0.845
G=~I9         0.056      0.049    0.002 -0.854
G=~I10        0.054      0.049    0.001 -0.862
G=~I11        0.057      0.050    0.021 -0.848
G=~I12        0.056      0.050   -0.039 -0.848
G=~I13        0.055      0.051    0.048 -0.843
G=~I14        0.055      0.051   -0.026 -0.857
G=~I15        0.054      0.052   -0.020 -0.847
G=~I16        0.054      0.053   -0.029 -0.851
G=~I17        0.059      0.052   -0.012 -0.843
G=~I18        0.051      0.050   -0.030 -0.838
G=~I19        0.055      0.050    0.026 -0.824
G=~I20        0.053      0.048   -0.029 -0.830
I1~~I1        0.060      0.053    0.114 -0.811
I2~~I2        0.046      0.038    0.047 -0.867
I3~~I3        0.058      0.053    0.004 -0.823
I4~~I4        0.040      0.038    0.081 -0.857
I5~~I5        0.058      0.053    0.060 -0.829
I6~~I6        0.043      0.041    0.053 -0.846
I7~~I7        0.054      0.052   -0.009 -0.835
I8~~I8        0.054      0.049    0.066 -0.861
I9~~I9        0.051      0.046    0.090 -0.868
I10~~I10      0.051      0.046    0.036 -0.847
I11~~I11      0.053      0.046    0.106 -0.862
I12~~I12      0.050      0.045    0.168 -0.864
I13~~I13      0.048      0.044    0.050 -0.865
I14~~I14      0.047      0.043    0.152 -0.861
I15~~I15      0.042      0.042    0.077 -0.855
I16~~I16      0.039      0.037    0.102 -0.870
I17~~I17      0.044      0.038    0.051 -0.862
I18~~I18      0.052      0.051    0.126 -0.843
I19~~I19      0.057      0.052    0.069 -0.834
I20~~I20      0.059      0.054    0.086 -0.827
========= Correlation between Fit Indices ============
             chisq.scaled    aic    bic rmsea.scaled cfi.scaled tli.scaled
chisq.scaled        1.000  0.984  0.984       -0.121      0.069      0.069
aic                 0.984  1.000  1.000       -0.255      0.184      0.184
bic                 0.984  1.000  1.000       -0.255      0.184      0.184
rmsea.scaled       -0.121 -0.255 -0.255        1.000     -0.836     -0.836
cfi.scaled          0.069  0.184  0.184       -0.836      1.000      1.000
tli.scaled          0.069  0.184  0.184       -0.836      1.000      1.000
srmr               -0.549 -0.649 -0.649        0.784     -0.752     -0.752
n                   0.983  1.000  1.000       -0.257      0.187      0.187
               srmr      n
chisq.scaled -0.549  0.983
aic          -0.649  1.000
bic          -0.649  1.000
rmsea.scaled  0.784 -0.257
cfi.scaled   -0.752  0.187
tli.scaled   -0.752  0.187
srmr          1.000 -0.650
n            -0.650  1.000
================== Replications =====================
Number of replications = 700 
Number of converged replications = 700 
Number of nonconverged replications: 
   1. Nonconvergent Results = 0 
   2. Nonconvergent results from multiple imputation = 0 
   3. At least one SE were negative or NA = 0 
   4. Nonpositive-definite latent or observed (residual) covariance matrix 
      (e.g., Heywood case or linear dependency) = 0 
NOTE: The sample size is varying.
NOTE: The data generation model is not the same as the analysis  model. See the summary of the population underlying data  generation by the summaryPopulation function.
NULL
sim.f <- simsem::sim(model = primeira.ordem, 
                     rawData = data.sim.scn,
                     lavaanfun = "cfa", 
                     seed = 123,  
                     multicore = TRUE, 
                     estimator = "MLR", 
                     ordered = FALSE, 
                     orthogonal = FALSE, 
                     std.lv = TRUE)
Progress tracker is not available when 'multicore' is TRUE.
print(simsem::summary(sim.f))
RESULT OBJECT
Model Type
[1] "lavaan"
========= Fit Indices Cutoffs ============
Warning in rq.fit.br(x, y, tau = tau, ...): Solution may be nonunique
Warning in rq.fit.br(x, y, tau = tau, ...): Solution may be nonunique
Warning in rq.fit.br(x, y, tau = tau, ...): Solution may be nonunique
Warning in rq.fit.br(x, y, tau = tau, ...): Solution may be nonunique
Warning in rq.fit.br(x, y, tau = tau, ...): Solution may be nonunique
     N chisq.scaled       aic       bic rmsea.scaled cfi.scaled tli.scaled
1  100      218.753  6387.212  6521.598        0.051          1      1.020
2  325      213.151 20523.394 20679.770        0.041          1      1.017
3  550      207.550 34659.576 34837.942        0.031          1      1.013
4  775      201.948 48795.757 48996.115        0.022          1      1.009
5 1000      196.346 62931.939 63154.287        0.012          1      1.006
   srmr
1 0.075
2 0.062
3 0.050
4 0.037
5 0.024
========= Parameter Estimates and Standard Errors ============
         Estimate Average Estimate SD Average SE Power (Not equal 0) Std Est
F1=~I1              0.819       0.055      0.049               1.000   0.736
F1=~I2              0.710       0.094      0.080               1.000   0.436
F1=~I3              1.017       0.063      0.056               1.000   0.697
F1=~I4              0.418       0.061      0.054               0.999   0.432
F1=~I5              0.701       0.053      0.049               1.000   0.692
F1=~I6              0.774       0.082      0.076               1.000   0.478
F1=~I7              0.871       0.055      0.056               1.000   0.669
F2=~I8              0.927       0.070      0.063               1.000   0.645
F2=~I9              0.913       0.080      0.069               1.000   0.598
F2=~I10             0.582       0.056      0.052               1.000   0.595
F2=~I11             0.858       0.079      0.066               1.000   0.592
F2=~I12             0.954       0.078      0.075               1.000   0.566
F2=~I13             0.829       0.077      0.071               1.000   0.552
F2=~I14             0.737       0.072      0.066               1.000   0.537
F3=~I15             0.810       0.081      0.074               0.999   0.522
F3=~I16             0.669       0.086      0.079               1.000   0.453
F3=~I17             0.459       0.059      0.054               0.999   0.471
F3=~I18             0.604       0.039      0.040               1.000   0.671
F3=~I19             1.003       0.066      0.059               1.000   0.696
F3=~I20             0.851       0.052      0.050               1.000   0.749
I1~~I1              0.565       0.058      0.052               1.000   0.458
I2~~I2              2.141       0.140      0.124               1.000   0.807
I3~~I3              1.087       0.107      0.091               1.000   0.512
I4~~I4              0.759       0.074      0.067               1.000   0.811
I5~~I5              0.532       0.051      0.047               1.000   0.520
I6~~I6              2.014       0.130      0.119               1.000   0.769
I7~~I7              0.936       0.082      0.078               1.000   0.552
I8~~I8              1.199       0.111      0.102               1.000   0.582
I9~~I9              1.494       0.129      0.116               1.000   0.641
I10~~I10            0.616       0.066      0.056               1.000   0.644
I11~~I11            1.359       0.117      0.101               1.000   0.647
I12~~I12            1.923       0.144      0.137               1.000   0.677
I13~~I13            1.565       0.125      0.116               1.000   0.694
I14~~I14            1.332       0.103      0.097               1.000   0.709
I15~~I15            1.748       0.124      0.115               1.000   0.725
I16~~I16            1.727       0.138      0.128               1.000   0.793
I17~~I17            0.734       0.067      0.062               1.000   0.775
I18~~I18            0.444       0.040      0.039               1.000   0.548
I19~~I19            1.068       0.111      0.097               1.000   0.514
I20~~I20            0.563       0.067      0.060               1.000   0.437
F1~~F2              0.502       0.055      0.052               0.997   0.502
F1~~F3              0.497       0.057      0.052               0.997   0.497
F2~~F3              0.498       0.058      0.054               1.000   0.498
         Std Est SD Std Ave SE r_coef.n r_se.n
F1=~I1        0.032      0.029    0.037 -0.871
F1=~I2        0.055      0.047   -0.028 -0.871
F1=~I3        0.037      0.032    0.083 -0.859
F1=~I4        0.052      0.046    0.031 -0.869
F1=~I5        0.037      0.033    0.054 -0.874
F1=~I6        0.048      0.045   -0.007 -0.867
F1=~I7        0.034      0.035   -0.038 -0.869
F2=~I8        0.042      0.038    0.036 -0.859
F2=~I9        0.046      0.039   -0.002 -0.859
F2=~I10       0.043      0.040    0.007 -0.870
F2=~I11       0.050      0.041    0.046 -0.858
F2=~I12       0.044      0.042   -0.009 -0.854
F2=~I13       0.047      0.043    0.051 -0.861
F2=~I14       0.047      0.044   -0.024 -0.868
F3=~I15       0.049      0.045   -0.008 -0.863
F3=~I16       0.051      0.048    0.025 -0.873
F3=~I17       0.050      0.045    0.000 -0.873
F3=~I18       0.035      0.036   -0.040 -0.864
F3=~I19       0.040      0.035    0.018 -0.851
F3=~I20       0.035      0.033   -0.042 -0.867
I1~~I1        0.047      0.042    0.115 -0.849
I2~~I2        0.049      0.040    0.057 -0.874
I3~~I3        0.052      0.045   -0.036 -0.862
I4~~I4        0.045      0.040    0.091 -0.851
I5~~I5        0.050      0.046    0.062 -0.842
I6~~I6        0.047      0.043    0.084 -0.865
I7~~I7        0.045      0.046    0.015 -0.849
I8~~I8        0.053      0.049    0.036 -0.851
I9~~I9        0.054      0.047    0.086 -0.863
I10~~I10      0.051      0.047    0.028 -0.840
I11~~I11      0.057      0.048    0.066 -0.865
I12~~I12      0.049      0.047    0.131 -0.867
I13~~I13      0.051      0.047    0.031 -0.868
I14~~I14      0.051      0.047    0.151 -0.861
I15~~I15      0.050      0.046    0.058 -0.865
I16~~I16      0.046      0.043    0.068 -0.868
I17~~I17      0.046      0.042    0.035 -0.855
I18~~I18      0.047      0.048    0.133 -0.852
I19~~I19      0.055      0.048    0.064 -0.848
I20~~I20      0.052      0.049    0.094 -0.836
F1~~F2        0.055      0.052   -0.017 -0.848
F1~~F3        0.057      0.052    0.003 -0.853
F2~~F3        0.058      0.054   -0.035 -0.847
========= Correlation between Fit Indices ============
             chisq.scaled    aic    bic rmsea.scaled cfi.scaled tli.scaled
chisq.scaled        1.000 -0.267 -0.267        0.832     -0.670     -0.741
aic                -0.267  1.000  1.000       -0.529      0.506      0.451
bic                -0.267  1.000  1.000       -0.530      0.506      0.451
rmsea.scaled        0.832 -0.529 -0.530        1.000     -0.919     -0.936
cfi.scaled         -0.670  0.506  0.506       -0.919      1.000      0.981
tli.scaled         -0.741  0.451  0.451       -0.936      0.981      1.000
srmr                0.432 -0.873 -0.873        0.732     -0.734     -0.685
n                  -0.266  1.000  1.000       -0.529      0.506      0.451
               srmr      n
chisq.scaled  0.432 -0.266
aic          -0.873  1.000
bic          -0.873  1.000
rmsea.scaled  0.732 -0.529
cfi.scaled   -0.734  0.506
tli.scaled   -0.685  0.451
srmr          1.000 -0.873
n            -0.873  1.000
================== Replications =====================
Number of replications = 700 
Number of converged replications = 700 
Number of nonconverged replications: 
   1. Nonconvergent Results = 0 
   2. Nonconvergent results from multiple imputation = 0 
   3. At least one SE were negative or NA = 0 
   4. Nonpositive-definite latent or observed (residual) covariance matrix 
      (e.g., Heywood case or linear dependency) = 0 
NOTE: The sample size is varying.
NOTE: The data generation model is not the same as the analysis  model. See the summary of the population underlying data  generation by the summaryPopulation function.
NULL
sim.b <- simsem::sim(model = bifatorial, 
                     rawData = data.sim.scn, 
                     lavaanfun = "cfa", 
                     seed = 123,  
                     multicore = TRUE, 
                     estimator = "MLR", 
                     ordered = FALSE, 
                     orthogonal = TRUE, 
                     std.lv = TRUE)
Progress tracker is not available when 'multicore' is TRUE.
print(simsem::summary(sim.b))
RESULT OBJECT
Model Type
[1] "lavaan"
========= Fit Indices Cutoffs ============
     N chisq.scaled       aic       bic rmsea.scaled cfi.scaled tli.scaled
1  100      201.357  6384.882  6579.895        0.056          1      1.019
2  325      195.965 20528.307 20751.500        0.045          1      1.016
3  550      190.573 34671.732 34923.105        0.034          1      1.013
4  775      185.182 48815.156 49094.711        0.023          1      1.009
5 1000      179.790 62958.581 63266.316        0.012          1      1.006
   srmr
1 0.071
2 0.059
3 0.046
4 0.033
5 0.021
========= Parameter Estimates and Standard Errors ============
         Estimate Average Estimate SD Average SE Power (Not equal 0) Std Est
F1=~I1              0.562       0.132      0.094               0.942   0.505
F1=~I2              0.458       2.939      0.142               0.889   0.281
F1=~I3              0.706       0.151      0.133               0.947   0.485
F1=~I4              0.292       0.107      0.092               0.885   0.301
F1=~I5              0.488       0.105      0.089               0.947   0.482
F1=~I6              0.548       0.151      0.141               0.915   0.339
F1=~I7              0.731       2.273      0.119               0.942   0.562
F2=~I8              0.641       0.163      0.122               0.931   0.446
F2=~I9              0.740       1.959      0.126               0.929   0.486
F2=~I10             0.358       1.366      0.086               0.934   0.363
F2=~I11             0.596       0.163      0.121               0.914   0.411
F2=~I12             0.620       2.878      0.144               0.925   0.365
F2=~I13             0.576       0.172      0.133               0.899   0.383
F2=~I14             0.514       2.486      0.114               0.915   0.374
F3=~I15             0.662       1.618      0.128               0.927   0.425
F3=~I16             0.389       2.087      0.125               0.888   0.267
F3=~I17             0.339       0.663      0.085               0.904   0.350
F3=~I18             0.466       1.091      0.075               0.951   0.517
F3=~I19             0.842       2.446      0.115               0.953   0.581
F3=~I20             0.656       1.149      0.091               0.948   0.579
G=~I1               0.581       0.093      0.084               0.977   0.522
G=~I2               0.500       0.131      0.122               0.914   0.307
G=~I3               0.718       0.119      0.107               0.976   0.492
G=~I4               0.296       0.074      0.077               0.914   0.305
G=~I5               0.494       0.088      0.077               0.973   0.487
G=~I6               0.540       0.126      0.121               0.931   0.333
G=~I7               0.613       0.111      0.100               0.976   0.470
G=~I8               0.658       0.114      0.102               0.974   0.458
G=~I9               0.644       0.118      0.107               0.971   0.421
G=~I10              0.416       0.080      0.073               0.967   0.425
G=~I11              0.604       0.123      0.104               0.964   0.417
G=~I12              0.675       0.132      0.123               0.968   0.401
G=~I13              0.585       0.118      0.109               0.951   0.389
G=~I14              0.523       0.106      0.098               0.968   0.381
G=~I15              0.563       0.120      0.112               0.947   0.362
G=~I16              0.468       0.115      0.109               0.921   0.317
G=~I17              0.328       0.079      0.073               0.934   0.336
G=~I18              0.423       0.068      0.065               0.980   0.470
G=~I19              0.693       0.117      0.104               0.967   0.480
G=~I20              0.592       0.096      0.081               0.978   0.521
I1~~I1              0.559       0.065      0.067               0.988   0.453
I2~~I2             -6.447     134.457      0.200               0.996  -2.377
I3~~I3              1.074       0.116      0.108               0.993   0.506
I4~~I4              0.749       0.081      0.077               0.994   0.800
I5~~I5              0.526       0.061      0.054               0.993   0.513
I6~~I6              1.990       0.180      0.152               0.996   0.760
I7~~I7             -4.387     100.363      0.105               0.993  -2.595
I8~~I8              1.181       0.144      0.128               0.986   0.573
I9~~I9             -2.475      75.374      0.136               0.993  -1.108
I10~~I10           -1.213      29.943      0.078               0.994  -1.722
I11~~I11            1.340       0.144      0.118               0.991   0.638
I12~~I12           -6.291     126.959      0.206               0.994  -2.209
I13~~I13            1.541       0.207      0.156               0.994   0.683
I14~~I14           -4.839     115.681      0.116               0.999  -2.886
I15~~I15           -0.971      52.087      0.149               0.993  -0.333
I16~~I16           -2.552     112.258      0.166               0.993  -0.923
I17~~I17            0.282      11.711      0.076               0.993   0.248
I18~~I18           -0.780      32.097      0.054               0.993  -0.936
I19~~I19           -5.098     117.187      0.121               0.991  -2.274
I20~~I20           -0.819      28.661      0.070               0.988  -0.686
         Std Est SD Std Ave SE r_coef.n r_se.n
F1=~I1        0.116      0.082    0.105 -0.408
F1=~I2        1.789      0.091    0.022 -0.377
F1=~I3        0.103      0.091    0.140 -0.235
F1=~I4        0.107      0.092    0.038 -0.307
F1=~I5        0.102      0.084    0.067 -0.240
F1=~I6        0.093      0.087    0.003 -0.353
F1=~I7        1.748      0.093   -0.076 -0.232
F2=~I8        0.113      0.084    0.064 -0.447
F2=~I9        1.301      0.083   -0.020 -0.511
F2=~I10       1.551      0.092    0.039 -0.298
F2=~I11       0.112      0.083    0.105 -0.500
F2=~I12       1.707      0.088    0.028 -0.460
F2=~I13       0.114      0.087    0.098 -0.297
F2=~I14       1.897      0.087    0.003 -0.555
F3=~I15       1.008      0.083   -0.065 -0.525
F3=~I16       1.322      0.086    0.066 -0.475
F3=~I17       0.715      0.086   -0.048 -0.440
F3=~I18       1.202      0.084   -0.057 -0.328
F3=~I19       1.644      0.081   -0.064 -0.415
F3=~I20       1.037      0.081   -0.068 -0.452
G=~I1         0.078      0.070    0.058 -0.377
G=~I2         0.079      0.074   -0.005 -0.589
G=~I3         0.080      0.071    0.031 -0.445
G=~I4         0.073      0.076    0.044 -0.424
G=~I5         0.083      0.070    0.080 -0.401
G=~I6         0.077      0.074    0.058 -0.461
G=~I7         0.081      0.073   -0.013 -0.289
G=~I8         0.076      0.069    0.044 -0.471
G=~I9         0.076      0.068    0.000 -0.679
G=~I10        0.079      0.069    0.039 -0.701
G=~I11        0.084      0.070    0.022 -0.636
G=~I12        0.078      0.072   -0.046 -0.446
G=~I13        0.078      0.071    0.035 -0.662
G=~I14        0.075      0.069   -0.055 -0.703
G=~I15        0.076      0.071    0.016 -0.696
G=~I16        0.075      0.071   -0.019 -0.671
G=~I17        0.077      0.071    0.024 -0.703
G=~I18        0.073      0.069    0.035 -0.461
G=~I19        0.080      0.070    0.078 -0.479
G=~I20        0.082      0.067    0.035 -0.555
I1~~I1        0.053      0.053    0.211 -0.179
I2~~I2       49.660      0.323    0.097 -0.141
I3~~I3        0.055      0.053    0.050 -0.341
I4~~I4        0.061      0.053    0.197 -0.286
I5~~I5        0.060      0.053    0.149 -0.346
I6~~I6        0.066      0.056    0.188 -0.163
I7~~I7       59.353      0.357    0.080 -0.228
I8~~I8        0.068      0.062    0.166 -0.329
I9~~I9       32.856      0.135    0.027 -0.427
I10~~I10     38.382      0.443    0.084 -0.173
I11~~I11      0.070      0.057    0.178 -0.431
I12~~I12     45.436      0.233    0.098 -0.160
I13~~I13      0.090      0.066    0.097 -0.095
I14~~I14     67.241      0.455    0.081 -0.265
I15~~I15     19.960      0.108    0.070 -0.294
I16~~I16     44.958      0.245    0.058 -0.184
I17~~I17     13.656      0.148    0.059 -0.222
I18~~I18     38.924      0.250    0.058 -0.137
I19~~I19     52.526      0.225    0.070 -0.330
I20~~I20     22.993      0.180    0.073 -0.470
========= Correlation between Fit Indices ============
             chisq.scaled    aic    bic rmsea.scaled cfi.scaled tli.scaled
chisq.scaled        1.000 -0.270 -0.270        0.839     -0.674     -0.737
aic                -0.270  1.000  1.000       -0.521      0.491      0.443
bic                -0.270  1.000  1.000       -0.521      0.492      0.443
rmsea.scaled        0.839 -0.521 -0.521        1.000     -0.908     -0.924
cfi.scaled         -0.674  0.491  0.492       -0.908      1.000      0.983
tli.scaled         -0.737  0.443  0.443       -0.924      0.983      1.000
srmr                0.436 -0.853 -0.853        0.731     -0.732     -0.688
n                  -0.270  1.000  1.000       -0.521      0.491      0.443
               srmr      n
chisq.scaled  0.436 -0.270
aic          -0.853  1.000
bic          -0.853  1.000
rmsea.scaled  0.731 -0.521
cfi.scaled   -0.732  0.491
tli.scaled   -0.688  0.443
srmr          1.000 -0.853
n            -0.853  1.000
================== Replications =====================
Number of replications = 700 
Number of converged replications = 661 
Number of nonconverged replications: 
   1. Nonconvergent Results = 5 
   2. Nonconvergent results from multiple imputation = 0 
   3. At least one SE were negative or NA = 0 
   4. Nonpositive-definite latent or observed (residual) covariance matrix 
      (e.g., Heywood case or linear dependency) = 34 
NOTE: The sample size is varying.
NOTE: The data generation model is not the same as the analysis  model. See the summary of the population underlying data  generation by the summaryPopulation function.
NULL
sim.s <- simsem::sim(model = segunda.ordem, 
                     rawData = data.sim.scn,
                     lavaanfun = "cfa", 
                     seed = 123,  
                     multicore = TRUE, 
                     estimator = "MLR", 
                     ordered = FALSE, 
                     orthogonal = FALSE, 
                     std.lv = TRUE)
Progress tracker is not available when 'multicore' is TRUE.
print(simsem::summary(sim.s))
RESULT OBJECT
Model Type
[1] "lavaan"
========= Fit Indices Cutoffs ============
Warning in rq.fit.br(x, y, tau = tau, ...): Solution may be nonunique
Warning in rq.fit.br(x, y, tau = tau, ...): Solution may be nonunique
Warning in rq.fit.br(x, y, tau = tau, ...): Solution may be nonunique
Warning in rq.fit.br(x, y, tau = tau, ...): Solution may be nonunique
Warning in rq.fit.br(x, y, tau = tau, ...): Solution may be nonunique
Warning in rq.fit.br(x, y, tau = tau, ...): Solution may be nonunique
Warning in rq.fit.br(x, y, tau = tau, ...): Solution may be nonunique
Warning in rq.fit.br(x, y, tau = tau, ...): Solution may be nonunique
Warning in rq.fit.br(x, y, tau = tau, ...): Solution may be nonunique
Warning in rq.fit.br(x, y, tau = tau, ...): Solution may be nonunique
     N chisq.scaled       aic       bic rmsea.scaled cfi.scaled tli.scaled
1  100      218.753  6387.212  6523.422        0.050          1      1.020
2  325      213.151 20523.394 20681.047        0.040          1      1.017
3  550      207.550 34659.576 34838.672        0.031          1      1.013
4  775      201.948 48795.757 48996.297        0.021          1      1.009
5 1000      196.346 62931.939 63153.922        0.012          1      1.006
   srmr
1 0.075
2 0.062
3 0.050
4 0.037
5 0.024
========= Parameter Estimates and Standard Errors ============
         Estimate Average Estimate SD Average SE Power (Not equal 0) Std Est
F1=~I1              0.573       0.063      0.059               0.991   0.736
F1=~I2              0.496       0.074      0.071               0.987   0.436
F1=~I3              0.711       0.077      0.072               0.993   0.697
F1=~I4              0.293       0.049      0.045               0.990   0.432
F1=~I5              0.491       0.057      0.053               0.991   0.692
F1=~I6              0.542       0.075      0.071               0.991   0.478
F1=~I7              0.609       0.065      0.065               0.991   0.669
F2=~I8              0.648       0.074      0.071               0.991   0.645
F2=~I9              0.638       0.078      0.073               0.991   0.598
F2=~I10             0.407       0.052      0.050               0.991   0.594
F2=~I11             0.600       0.077      0.070               0.993   0.592
F2=~I12             0.667       0.080      0.078               0.993   0.566
F2=~I13             0.579       0.074      0.071               0.993   0.552
F2=~I14             0.515       0.071      0.064               0.993   0.537
F3=~I15             0.572       0.074      0.070               0.994   0.522
F3=~I16             0.472       0.070      0.068               0.993   0.453
F3=~I17             0.324       0.050      0.047               0.993   0.472
F3=~I18             0.426       0.046      0.045               0.994   0.671
F3=~I19             0.709       0.078      0.072               0.994   0.696
F3=~I20             0.601       0.064      0.061               0.994   0.749
G=~F1               1.034       0.233      0.207               0.977   0.709
G=~F2               1.033       0.215      0.194               0.981   0.709
G=~F3               1.013       0.200      0.186               0.984   0.703
I1~~I1              0.565       0.058      0.052               1.000   0.457
I2~~I2              2.141       0.140      0.123               1.000   0.807
I3~~I3              1.089       0.104      0.090               1.000   0.513
I4~~I4              0.759       0.074      0.066               1.000   0.811
I5~~I5              0.532       0.051      0.046               1.000   0.520
I6~~I6              2.014       0.130      0.119               1.000   0.769
I7~~I7              0.935       0.081      0.078               1.000   0.551
I8~~I8              1.199       0.111      0.101               1.000   0.582
I9~~I9              1.494       0.129      0.115               1.000   0.641
I10~~I10            0.617       0.066      0.056               1.000   0.645
I11~~I11            1.360       0.116      0.100               1.000   0.647
I12~~I12            1.924       0.143      0.136               1.000   0.678
I13~~I13            1.565       0.125      0.115               1.000   0.694
I14~~I14            1.333       0.102      0.097               1.000   0.709
I15~~I15            1.749       0.122      0.114               1.000   0.726
I16~~I16            1.727       0.137      0.127               1.000   0.792
I17~~I17            0.734       0.066      0.061               1.000   0.775
I18~~I18            0.444       0.040      0.039               1.000   0.548
I19~~I19            1.068       0.111      0.097               1.000   0.514
I20~~I20            0.563       0.066      0.060               1.000   0.437
         Std Est SD Std Ave SE r_coef.n r_se.n
F1=~I1        0.032      0.029    0.080 -0.669
F1=~I2        0.055      0.046    0.034 -0.741
F1=~I3        0.037      0.032    0.121 -0.664
F1=~I4        0.052      0.046    0.069 -0.801
F1=~I5        0.036      0.033    0.090 -0.703
F1=~I6        0.048      0.045    0.046 -0.760
F1=~I7        0.034      0.035    0.047 -0.694
F2=~I8        0.042      0.038    0.090 -0.789
F2=~I9        0.046      0.039    0.071 -0.807
F2=~I10       0.042      0.039    0.079 -0.818
F2=~I11       0.050      0.041    0.103 -0.801
F2=~I12       0.044      0.042    0.071 -0.803
F2=~I13       0.047      0.043    0.104 -0.812
F2=~I14       0.046      0.044    0.040 -0.811
F3=~I15       0.046      0.045    0.062 -0.816
F3=~I16       0.050      0.047    0.087 -0.789
F3=~I17       0.050      0.045    0.051 -0.804
F3=~I18       0.035      0.036    0.050 -0.770
F3=~I19       0.040      0.034    0.076 -0.754
F3=~I20       0.035      0.032    0.046 -0.767
G=~F1         0.060      0.059   -0.110 -0.220
G=~F2         0.062      0.060   -0.116 -0.532
G=~F3         0.062      0.059   -0.124 -0.527
I1~~I1        0.047      0.042    0.117 -0.847
I2~~I2        0.049      0.040    0.054 -0.874
I3~~I3        0.051      0.044   -0.053 -0.861
I4~~I4        0.044      0.039    0.089 -0.853
I5~~I5        0.050      0.046    0.062 -0.841
I6~~I6        0.047      0.042    0.090 -0.865
I7~~I7        0.045      0.046    0.026 -0.848
I8~~I8        0.053      0.049    0.034 -0.850
I9~~I9        0.054      0.046    0.082 -0.861
I10~~I10      0.050      0.046    0.010 -0.840
I11~~I11      0.057      0.048    0.062 -0.863
I12~~I12      0.049      0.047    0.123 -0.866
I13~~I13      0.051      0.046    0.030 -0.867
I14~~I14      0.050      0.047    0.151 -0.859
I15~~I15      0.048      0.046    0.047 -0.867
I16~~I16      0.046      0.043    0.070 -0.871
I17~~I17      0.046      0.042    0.042 -0.857
I18~~I18      0.047      0.048    0.134 -0.851
I19~~I19      0.054      0.048    0.073 -0.847
I20~~I20      0.052      0.048    0.091 -0.837
========= Correlation between Fit Indices ============
             chisq.scaled    aic    bic rmsea.scaled cfi.scaled tli.scaled
chisq.scaled        1.000 -0.258 -0.258        0.831     -0.664     -0.737
aic                -0.258  1.000  1.000       -0.522      0.498      0.441
bic                -0.258  1.000  1.000       -0.522      0.498      0.442
rmsea.scaled        0.831 -0.522 -0.522        1.000     -0.916     -0.933
cfi.scaled         -0.664  0.498  0.498       -0.916      1.000      0.980
tli.scaled         -0.737  0.441  0.442       -0.933      0.980      1.000
srmr                0.424 -0.872 -0.872        0.725     -0.728     -0.677
n                  -0.258  1.000  1.000       -0.522      0.498      0.441
               srmr      n
chisq.scaled  0.424 -0.258
aic          -0.872  1.000
bic          -0.872  1.000
rmsea.scaled  0.725 -0.522
cfi.scaled   -0.728  0.498
tli.scaled   -0.677  0.441
srmr          1.000 -0.872
n            -0.872  1.000
================== Replications =====================
Number of replications = 700 
Number of converged replications = 696 
Number of nonconverged replications: 
   1. Nonconvergent Results = 4 
   2. Nonconvergent results from multiple imputation = 0 
   3. At least one SE were negative or NA = 0 
   4. Nonpositive-definite latent or observed (residual) covariance matrix 
      (e.g., Heywood case or linear dependency) = 0 
NOTE: The sample size is varying.
NOTE: The data generation model is not the same as the analysis  model. See the summary of the population underlying data  generation by the summaryPopulation function.
NULL
indices.dist <- rbind(indices.dist,
                      data.frame(fitted.model = as.factor(
                        rep(teste,
                            each = nrow(sim.u@nobs))),
                        nSample = as.numeric(c(sim.u@n,
                                               sim.f@n,
                                               sim.b@n,
                                               sim.s@n)),
                        conv = factor(c(sim.u@converged,
                                        sim.f@converged,
                                        sim.b@converged,
                                        sim.s@converged)), 
                        RMSEA = as.numeric(c(sim.u@fit$rmsea.robust,
                                             sim.f@fit$rmsea.robust,
                                             sim.b@fit$rmsea.robust,
                                             sim.s@fit$rmsea.robust)),
                        RMSEA.L = as.numeric(c(
                          sim.u@fit$rmsea.ci.lower.robust,
                          sim.f@fit$rmsea.ci.lower.robust,
                          sim.b@fit$rmsea.ci.lower.robust,
                          sim.s@fit$rmsea.ci.lower.robust)),
                        RMSEA.U = as.numeric(c(
                          sim.u@fit$rmsea.ci.upper.robust,
                          sim.f@fit$rmsea.ci.upper.robust,
                          sim.b@fit$rmsea.ci.upper.robust,
                          sim.s@fit$rmsea.ci.upper.robust)),
                        PCLOSE = as.numeric(c(
                          sim.u@fit$rmsea.pvalue.robust,
                          sim.f@fit$rmsea.pvalue.robust,
                          sim.b@fit$rmsea.pvalue.robust,
                          sim.s@fit$rmsea.pvalue.robust)),
                        SABIC = as.numeric(c(
                          sim.u@fit$bic2,
                          sim.f@fit$bic2,
                          sim.b@fit$bic2,
                          sim.s@fit$bic2)),
                        population = "second_order"))

print(simsem::summary(indices.dist))
         fitted.model     nSample     conv         RMSEA        
 unidimensional:2800   Min.   : 100   0:9325   Min.   :0.00000  
 first_order   :2800   1st Qu.: 250   1: 547   1st Qu.:0.00452  
 bifactor      :2800   Median : 550   3:  88   Median :0.01751  
 second_order  :2800   Mean   : 550   4:1240   Mean   :0.03213  
                       3rd Qu.: 850            3rd Qu.:0.04891  
                       Max.   :1000            Max.   :0.12007  
                                               NA's   :636      
    RMSEA.L           RMSEA.U            PCLOSE           SABIC      
 Min.   :0.00000   Min.   :0.00000   Min.   :0.0000   Min.   : 5935  
 1st Qu.:0.00000   1st Qu.:0.01935   1st Qu.:0.5059   1st Qu.:15946  
 Median :0.00000   Median :0.03139   Median :1.0000   Median :34621  
 Mean   :0.02282   Mean   :0.04439   Mean   :0.7379   Mean   :34707  
 3rd Qu.:0.03951   3rd Qu.:0.06514   3rd Qu.:1.0000   3rd Qu.:53163  
 Max.   :0.10544   Max.   :0.13480   Max.   :1.0000   Max.   :65006  
 NA's   :636       NA's   :636       NA's   :547      NA's   :547    
          population  
 unidimensional:2800  
 first_order   :2800  
 bifactor      :2800  
 second_order  :2800  
                      
                      
                      

2.3 Seleção de modelos

Agora que realizamos todas as CFAs possíveis e extraímos seus índices, podemos avançar para a etapa de seleção de modelos. A seleção de modelos consiste em ranquear dois ou mais modelos de acordo com um critério abrangente, levando em conta tanto a parcimônia quanto o ajuste dos modelos. Usaremos um procedimento em duas etapas, e a primeira consiste em rejeitar modelos caso a validade fraca (limite inferior do IC de 90% do RMSEA maior que 0,05) não possa ser sustentada. Para isso, primeiro criamos um novo data frame (RMSEA.data) com a função expand.grid para obter todas as combinações de tamanho amostral, modelo populacional e modelo ajustado.

RMSEA.data <- expand.grid(nSample = unique(indices.dist$nSample),
                          population = unique(indices.dist$population),
                          fitted.model = unique(indices.dist$fitted.model))

2.3.1 Rejeição dos modelos ruins

Em seguida, calculamos a taxa de validações pelos critérios de validação fraca (limite inferior do IC de 90% do RMSEA menor ou igual a 0,05), validação forte (limite superior do IC de 90% do RMSEA menor ou igual a 0,05), o critério de p(RMSEA populacional menor ou igual a 0,05) maior que 0,05 e o critério RMSEA menor ou igual a 0,05, para cada combinação de tamanho amostral, modelo populacional e modelo ajustado, dado que convergiram.

RMSEA.data$weak.val <- NA_real_
RMSEA.data$str.val <- NA_real_
RMSEA.data$pclose <- NA_real_
RMSEA.data$rmsea <- NA_real_

DT <- data.table::as.data.table(indices.dist)
DT <- DT[conv == "0"]

RMSEA.data <- DT[, .(
  weak.val = sum(RMSEA.L <= 0.05, na.rm = TRUE) / sum(!is.na(RMSEA.L)),
  str.val = sum(RMSEA.U <= 0.05, na.rm = TRUE) / sum(!is.na(RMSEA.U)),
  pclose = sum(PCLOSE > 0.05, na.rm = TRUE) / sum(!is.na(PCLOSE)),
  rmsea = sum(RMSEA <= 0.05, na.rm = TRUE) / sum(!is.na(RMSEA))), 
  by = .(nSample, population, fitted.model)]

# Apply the function to each row of the combinations data frame
print(RMSEA.data)
     nSample     population   fitted.model weak.val str.val pclose rmsea
       <num>         <fctr>         <fctr>    <num>   <num>  <num> <num>
  1:     100 unidimensional unidimensional        1    0.20      1  0.75
  2:     250 unidimensional unidimensional        1    0.99      1  1.00
  3:     400 unidimensional unidimensional        1    1.00      1  1.00
  4:     550 unidimensional unidimensional        1    1.00      1  1.00
  5:     700 unidimensional unidimensional        1    1.00      1  1.00
 ---                                                                    
108:     400   second_order   second_order        1    1.00      1  1.00
109:     550   second_order   second_order        1    1.00      1  1.00
110:     700   second_order   second_order        1    1.00      1  1.00
111:     850   second_order   second_order        1    1.00      1  1.00
112:    1000   second_order   second_order        1    1.00      1  1.00

A primeira linha indica que, para \(n = 100\), ao obter dados de uma estrutura unidimensional e ajustar um modelo unidimensional, 100% dos casos convergentes foram validados pelo critério de limite inferior do RMSEA \(\leq 0,05\), 20% foram validados pelo critério de limite superior do RMSEA \(\leq 0,05\), 100% foram validados pelo critério PCLOSE e 75% foram validados pelo critério RMSEA \(\leq 0,05\). A segunda linha indica que, quando n aumenta para 250, a taxa de validação sobe para 99% para o critério limite superior do RMSEA \(\leq 0,05\) e para 100% para o critério RMSEA \(\leq 0,05\).

No entanto, é difícil ter uma visão global de como o tamanho da amostra, a estrutura populacional e o modelo ajustado afetam esses valores. Uma representação gráfica pode facilitar a identificação de padrões. Portanto, usaremos o pacote ggplot2 para visualizar a relação entre a taxa de validações observada e o tamanho amostral. Primeiro, adicionaremos uma nova coluna em RMSEA.data, que representa os limiares para atingir 90% de poder (0,90 quando o modelo populacional = modelo ajustado, 0,10 quando o modelo populacional \(\neq\) modelo ajustado). Nossos estudos indicam que a curva quasibinomial tende a fornecer o melhor ajuste.

RMSEA.data$threshold <- NA_real_
RMSEA.data$threshold <- ifelse(RMSEA.data$population ==
                                 RMSEA.data$fitted.model, 
                               0.9, 
                               0.1)

##plot results
plot(ggplot2::ggplot(data = RMSEA.data, mapping = aes(x = nSample, 
                                                      y = weak.val))+
       ggplot2::geom_point(mapping = ggplot2::aes(y = weak.val, 
                                                  color = "Weak valid",
                                                  shape = "Weak valid"))+
       ggplot2::geom_smooth(method = "glm", formula = y~x, se = FALSE,
                            method.args=list(family="quasibinomial"), 
                            mapping = ggplot2::aes(y = weak.val,
                                                   color = "Weak valid",
                                                   lty = "Weak valid"))+
       ggplot2::labs(x = "Sample size", y = "Proportion of validated cases",
                     title = "Proportion of validated cases per sample size according to 
                     different criteria",
                     caption = "rows = fitted model      columns = population structure")+
       ggplot2::geom_point(mapping = ggplot2::aes(y = str.val,
                                                  color = "Strong valid",
                                                  shape = "Strong valid"))+
       ggplot2::geom_smooth(mapping = ggplot2::aes(y = str.val,
                                                   color = "Strong valid",
                                                   lty = "Strong valid"),
                            method = "glm", formula = y~x, se = FALSE,
                            method.args=list(family = "quasibinomial"))+
       ggplot2::geom_point(mapping = ggplot2::aes(y = pclose, 
                                                  color = "PCLOSE",
                                                  shape = "PCLOSE"))+
       ggplot2::geom_smooth(mapping = ggplot2::aes(y = pclose,
                                                   color = "PCLOSE",
                                                   lty = "PCLOSE"),
                            method = "glm", formula = y~x, se = FALSE,
                            method.args=list(family="quasibinomial"))+
       ggplot2::geom_point(mapping = ggplot2::aes(y = rmsea,
                                                  color = "RMSEA < 0.05",
                                                  shape = "RMSEA < 0.05"))+
       ggplot2::geom_smooth(mapping = ggplot2::aes(y = rmsea,
                                                   color = "RMSEA < 0.05",
                                                   lty = "RMSEA < 0.05"),
                            method = "glm", formula = y~x, se = FALSE,
                            method.args=list(family = "quasibinomial"))+
       ggplot2::theme_minimal()+
       ggplot2::scale_color_manual(name = "Legend", 
                                   values = c("RMSEA < 0.05" = "#808080",
                                              "Weak valid" = "#B0B0B0",
                                              "Strong valid" = "#404040",
                                              "PCLOSE" = "#000000"))+
       ggplot2::scale_shape_manual(name = "Legend", 
                                   values = c("RMSEA < 0.05" = 1,
                                              "Weak valid" = 2,
                                              "Strong valid" = 3,
                                              "PCLOSE" = 4)) +
       ggplot2::scale_linetype_manual(name = "Legend", 
                                      values = c("RMSEA < 0.05" = 2,
                                                 "Weak valid" = 1,
                                                 "Strong valid" = 3,
                                                 "PCLOSE" = 4))+
       ggplot2::facet_grid(rows = ggplot2::vars(fitted.model),
                           cols = ggplot2::vars(population))+
       ggplot2::geom_hline(mappin = ggplot2::aes(yintercept = 
                                                   RMSEA.data$threshold),
                           color = "red")
     )

Para analisar a relação entre taxa de convergência e tamanho amostral, seguimos os mesmos passos para criar uma matriz com a taxa de convergência para cada combinação de tamanho de amostra, modelo populacional e modelo ajustado.

DT <- data.table::as.data.table(indices.dist)

conv_data <- DT[, .(
  rate = sum(conv == "0", na.rm = TRUE) / 100), #ajustar o divisor pelo número de simulações para cada cenário
  by = .(nSample, population, fitted.model)]

# Apply the function to each row of the combinations data frame
print(conv_data)
     nSample     population   fitted.model  rate
       <num>         <fctr>         <fctr> <num>
  1:     100 unidimensional unidimensional     1
  2:     250 unidimensional unidimensional     1
  3:     400 unidimensional unidimensional     1
  4:     550 unidimensional unidimensional     1
  5:     700 unidimensional unidimensional     1
 ---                                            
108:     400   second_order   second_order     1
109:     550   second_order   second_order     1
110:     700   second_order   second_order     1
111:     850   second_order   second_order     1
112:    1000   second_order   second_order     1
# Representação gráfica da convergência
ggplot2::ggplot(data = conv_data, mapping = ggplot2::aes(x = nSample,
                                                         y = rate))+
  ggplot2::geom_smooth(method = "lm", 
                       formula = y~poly(1/x,2), 
                       col="black", se = FALSE)+
  ggplot2::geom_point()+
  ggplot2::labs(title ="Taxa de convergências por tamanho amostral",
                x = "Tamanho amostral (n)",
                y = "Taxa de convergência")+
  ggplot2::ylim(0,1.1)+
  ggplot2::facet_grid(rows = ggplot2::vars(fitted.model),
                      cols = ggplot2::vars(population))

Como o primeiro gráfico só leva em consideração as validações que convergiram (dado que não convergência não implica rejeição nem validação), podemos juntar os dois gráficos para ter uma ideia de quantas replicações foram validadas considerando o número total de tentativas (ou seja, tratando as não convergências como rejeições).

RMSEA.data$weak.val <- conv_data$rate * RMSEA.data$weak.val
RMSEA.data$str.val <- conv_data$rate * RMSEA.data$str.val
RMSEA.data$pclose <- conv_data$rate * RMSEA.data$pclose
RMSEA.data$rmsea <- conv_data$rate * RMSEA.data$rmsea

plot(ggplot2::ggplot(data = RMSEA.data, mapping = aes(x = nSample, 
                                                      y = weak.val))+
       ggplot2::geom_point(mapping = ggplot2::aes(y = weak.val, 
                                                  color = "Weak valid",
                                                  shape = "Weak valid"))+
       ggplot2::geom_smooth(method = "glm", formula = y~x, se = FALSE,
                            method.args=list(family="quasibinomial"), 
                            mapping = ggplot2::aes(y = weak.val,
                                                   color = "Weak valid",
                                                   lty = "Weak valid"))+
       ggplot2::labs(x = "Sample size", y = "Proportion of validated cases",
                     title = "Proportion of validated cases per sample size according to 
                     different criteria",
                     caption = "rows = fitted model      columns = population structure")+
       ggplot2::geom_point(mapping = ggplot2::aes(y = str.val,
                                                  color = "Strong valid",
                                                  shape = "Strong valid"))+
       ggplot2::geom_smooth(mapping = ggplot2::aes(y = str.val,
                                                   color = "Strong valid",
                                                   lty = "Strong valid"),
                            method = "glm", formula = y~x, se = FALSE,
                            method.args=list(family = "quasibinomial"))+
       ggplot2::geom_point(mapping = ggplot2::aes(y = pclose, 
                                                  color = "PCLOSE",
                                                  shape = "PCLOSE"))+
       ggplot2::geom_smooth(mapping = ggplot2::aes(y = pclose,
                                                   color = "PCLOSE",
                                                   lty = "PCLOSE"),
                            method = "glm", formula = y~x, se = FALSE,
                            method.args=list(family="quasibinomial"))+
       ggplot2::geom_point(mapping = ggplot2::aes(y = rmsea,
                                                  color = "RMSEA < 0.05",
                                                  shape = "RMSEA < 0.05"))+
       ggplot2::geom_smooth(mapping = ggplot2::aes(y = rmsea,
                                                   color = "RMSEA < 0.05",
                                                   lty = "RMSEA < 0.05"),
                            method = "glm", formula = y~x, se = FALSE,
                            method.args=list(family = "quasibinomial"))+
       ggplot2::theme_minimal()+
       ggplot2::scale_color_manual(name = "Legend", 
                                   values = c("RMSEA < 0.05" = "#808080",
                                              "Weak valid" = "#B0B0B0",
                                              "Strong valid" = "#404040",
                                              "PCLOSE" = "#000000"))+
       ggplot2::scale_shape_manual(name = "Legend", 
                                   values = c("RMSEA < 0.05" = 1,
                                              "Weak valid" = 2,
                                              "Strong valid" = 3,
                                              "PCLOSE" = 4)) +
       ggplot2::scale_linetype_manual(name = "Legend", 
                                      values = c("RMSEA < 0.05" = 2,
                                                 "Weak valid" = 1,
                                                 "Strong valid" = 3,
                                                 "PCLOSE" = 4))+
       ggplot2::facet_grid(rows = ggplot2::vars(fitted.model),
                           cols = ggplot2::vars(population))+
       ggplot2::geom_hline(mappin = ggplot2::aes(yintercept = 
                                                   RMSEA.data$threshold),
                           color = "red")
     )

2.3.2 Seleção de modelo

Agora que temos diversos conjuntos de dados que foram ajustados tanto a quatro modelos possíveis, precisamos descobrir qual modelo ajustado teríamos escolhido se os tivéssemos obtido em um estudo empírico com modelo gerador desconhecido. Em um estudo empírico, apenas modelos que convergiram e atenderam a algum critério (aqui, o critério de validação fraca) seriam elegíveis para serem escolhidos como modelo final. Assim, removeremos o valor de SABIC das análises que não convergiram (indices.dist$conv != "0") ou que rejeitaram a validação fraca (indices.dist$RMSEA.L > 0.05).

# SABIC evaluation
# take out invalid models
indices.dist$SABIC[indices.dist$conv!="0" |
                     indices.dist$RMSEA.L > 0.05] <- NA

Agora, também precisamos indicar qual resultado veio do mesmo conjunto de dados e transformar indices.dist para o formato wide. Dessa forma, o valor de SABIC de um mesmo conjunto de dados aparecerá em duas colunas: uma com o SABIC quando ajustamos o modelo unidimensional e outra com o SABIC para o mesmo conjunto ajustado ao modelo de primeira ordem.

Para fazer isso, primeiro criamos uma nova coluna que identifica qual data frame está representado em cada linha. Como já temos uma coluna que indica o modelo ao qual os dados foram ajustados, criamos uma nova coluna (original.dataframe). Para permitir a correta identificação, vamos nomear cada data frame juntando a população de origem, o tamanho amostral e a ordem em que o data frame aparece nas listas simsem. Em seguida, os dados são convertidos para o formato wide com a função tidyr::pivot_wider. Os parâmetros invariantes em relação ao modelo ajustado (original.dataframe, population, nSample) são definidos em id_cols. Aqueles que mudam (SABIC) são definidos em values_from. Em names_from, indicamos o que está variando (fitted.model).

# identify which results came from the same dataframe
indices.dist$original.dataframe <- as.factor(paste(indices.dist$population,
                                                   indices.dist$nSample,
                                                   seq_len(100),
                                                   sep = "."))

#change data frame to wide format to allow comparison
SABIC.data <- tidyr::pivot_wider(data = indices.dist,
                                 id_cols = c("original.dataframe",
                                             "population",
                                             "nSample"),
                                 values_from = "SABIC",
                                 names_from = "fitted.model")
print(summary(SABIC.data))
        original.dataframe          population     nSample     unidimensional 
 bifactor.100.1  :   1     unidimensional:700   Min.   : 100   Min.   : 5935  
 bifactor.100.10 :   1     first_order   :700   1st Qu.: 250   1st Qu.:15333  
 bifactor.100.100:   1     bifactor      :700   Median : 550   Median :33595  
 bifactor.100.11 :   1     second_order  :700   Mean   : 550   Mean   :33442  
 bifactor.100.12 :   1                          3rd Qu.: 850   3rd Qu.:51804  
 bifactor.100.13 :   1                          Max.   :1000   Max.   :61495  
 (Other)         :2794                                         NA's   :2096   
  first_order       bifactor      second_order  
 Min.   : 5961   Min.   : 5963   Min.   : 5961  
 1st Qu.:15884   1st Qu.:24461   1st Qu.:15897  
 Median :34589   Median :34743   Median :34610  
 Mean   :34756   Mean   :36225   Mean   :34922  
 3rd Qu.:53272   3rd Qu.:53363   3rd Qu.:53266  
 Max.   :64009   Max.   :63724   Max.   :64009  
 NA's   :636     NA's   :686     NA's   :593    
print(head(format.data.frame(SABIC.data)))
    original.dataframe     population nSample unidimensional first_order
1 unidimensional.100.1 unidimensional     100       6098.328          NA
2 unidimensional.100.2 unidimensional     100       6062.039          NA
3 unidimensional.100.3 unidimensional     100       6092.758          NA
4 unidimensional.100.4 unidimensional     100       6137.987          NA
5 unidimensional.100.5 unidimensional     100       6091.305          NA
6 unidimensional.100.6 unidimensional     100       6080.411          NA
   bifactor second_order
1        NA           NA
2  6057.407           NA
3  6078.689           NA
4        NA           NA
5        NA           NA
6        NA           NA
print(tail(format.data.frame(SABIC.data)))
        original.dataframe   population nSample unidimensional first_order
2795  second_order.1000.95 second_order    1000             NA   62855.565
2796  second_order.1000.96 second_order    1000             NA   62493.115
2797  second_order.1000.97 second_order    1000             NA   62783.708
2798  second_order.1000.98 second_order    1000             NA   62445.139
2799  second_order.1000.99 second_order    1000             NA   63109.801
2800 second_order.1000.100 second_order    1000             NA   62609.578
      bifactor second_order
2795 62906.508    62855.565
2796 62531.455    62493.115
2797 62831.243    62783.708
2798 62492.060    62445.139
2799 63149.957    63109.801
2800 62656.840    62609.578

Portanto, o primeiro data frame (unidimensional.100.1) que veio de uma estrutura unidimensional e \(n = 100\). Ele convergiu e foi validado quando ajustamos um modelo unidimensional (SABIC = 6098,328), mas ou não convergiu ou não atendeu ao critério de validação quando ajustamos um modelo de primeira-ordem, bifatorial ou de segunda-ordem (SABIC = NA). Assim, se fosse um estudo empírico, classificaríamos esse caso como vindo de uma população unidimensional. O segundo data frame também veio de uma estrutura unidimensional e \(n = 100\), mas dois modelos foram validados: unidimensional (SABIC = 6062,039) e bifatorial (SABIC = 6057,407). Como o SABIC do bifatorial é menor que do unidimensional, classificaríamos esse modelo incorretamente como vindo de uma estrutura bifatorial. O último data frame (second_order.1000.100) veio de uma população de segunda-ordem, \(n = 1000\) e deu empate entre o modelo de primeira-ordem e o de segunda-ordem.

Precisamos automatizar esse processo para todas as linhas. Com a função apply, usamos names(which.min(x)) para obter o nome da coluna com o menor valor em cada linha e salvá-lo em uma nova coluna.

# choose the lowest SABIC
SABIC.data$chosen_model <- apply(SABIC.data[,c("unidimensional",
                                               "first_order",
                                               "bifactor",
                                               "second_order")],
                                 1,
                                 function(x) names(which.min(x)))

Usamos o comando sapply(SABIC.data$chosen_model, is.null) para identificar quais casos tiveram todos os modelos rejeitados, isto é, aqueles em que nenhum modelo foi selecionado. Além disso, essa nova coluna (SABIC.data$chosen_model) é tratada como uma lista, e precisamos convertê-la em um fator para prosseguir. Portanto, usamos factor(unlist()), como no código a seguir.

# if no model was chosen, change `chosen model` to NA
SABIC.data$chosen_model[sapply(SABIC.data$chosen_model, is.null)] <- NA
# turn answer into factors to allow further analyses
SABIC.data$chosen_model <- factor(unlist(SABIC.data$chosen_model),
                                  levels = c("unidimensional",
                                             "first_order",
                                             "bifactor",
                                             "second_order"))

Agora descrevemos com que frequência cada modelo foi escolhido dado o tamanho da amostra e o modelo populacional. A função ftable é útil para obter uma tabela de contingência tridimensional com os valores brutos de cada caso. Dividindo esses valores brutos pelo número de data frames, obtemos a probabilidade de escolher o modelo populacional (poder) ou modelos alternativos.

# descriptive analysis
print(ftable(SABIC.data[,c("nSample",
                           "population",
                           "chosen_model")]))
                       chosen_model unidimensional first_order bifactor second_order
nSample population                                                                  
100     unidimensional                          87           2       10            1
        first_order                              0          33       26           41
        bifactor                                 0           6       82            6
        second_order                             0          41       27           31
250     unidimensional                          98           0        1            1
        first_order                              0          53        1           46
        bifactor                                 0           0      100            0
        second_order                             0          55        1           44
400     unidimensional                         100           0        0            0
        first_order                              0          47        0           53
        bifactor                                 0           0      100            0
        second_order                             0          42        0           58
550     unidimensional                         100           0        0            0
        first_order                              0          42        0           58
        bifactor                                 0           0      100            0
        second_order                             0          46        0           54
700     unidimensional                         100           0        0            0
        first_order                              0          49        0           51
        bifactor                                 0           0      100            0
        second_order                             0          38        0           62
850     unidimensional                         100           0        0            0
        first_order                              0          48        0           52
        bifactor                                 0           0      100            0
        second_order                             0          46        0           54
1000    unidimensional                         100           0        0            0
        first_order                              0          50        0           50
        bifactor                                 0           0      100            0
        second_order                             0          43        0           57
power.table <- data.frame(ftable(SABIC.data[,c("nSample",
                                               "population",
                                               "chosen_model")]))
power.table$Freq <- power.table$Freq/100 # change according to how many 
#replications per sample size were done
print(power.table)
    nSample     population   chosen_model Freq
1       100 unidimensional unidimensional 0.87
2       250 unidimensional unidimensional 0.98
3       400 unidimensional unidimensional 1.00
4       550 unidimensional unidimensional 1.00
5       700 unidimensional unidimensional 1.00
6       850 unidimensional unidimensional 1.00
7      1000 unidimensional unidimensional 1.00
8       100    first_order unidimensional 0.00
9       250    first_order unidimensional 0.00
10      400    first_order unidimensional 0.00
11      550    first_order unidimensional 0.00
12      700    first_order unidimensional 0.00
13      850    first_order unidimensional 0.00
14     1000    first_order unidimensional 0.00
15      100       bifactor unidimensional 0.00
16      250       bifactor unidimensional 0.00
17      400       bifactor unidimensional 0.00
18      550       bifactor unidimensional 0.00
19      700       bifactor unidimensional 0.00
20      850       bifactor unidimensional 0.00
21     1000       bifactor unidimensional 0.00
22      100   second_order unidimensional 0.00
23      250   second_order unidimensional 0.00
24      400   second_order unidimensional 0.00
25      550   second_order unidimensional 0.00
26      700   second_order unidimensional 0.00
27      850   second_order unidimensional 0.00
28     1000   second_order unidimensional 0.00
29      100 unidimensional    first_order 0.02
30      250 unidimensional    first_order 0.00
31      400 unidimensional    first_order 0.00
32      550 unidimensional    first_order 0.00
33      700 unidimensional    first_order 0.00
34      850 unidimensional    first_order 0.00
35     1000 unidimensional    first_order 0.00
36      100    first_order    first_order 0.33
37      250    first_order    first_order 0.53
38      400    first_order    first_order 0.47
39      550    first_order    first_order 0.42
40      700    first_order    first_order 0.49
41      850    first_order    first_order 0.48
42     1000    first_order    first_order 0.50
43      100       bifactor    first_order 0.06
44      250       bifactor    first_order 0.00
45      400       bifactor    first_order 0.00
46      550       bifactor    first_order 0.00
47      700       bifactor    first_order 0.00
48      850       bifactor    first_order 0.00
49     1000       bifactor    first_order 0.00
50      100   second_order    first_order 0.41
51      250   second_order    first_order 0.55
52      400   second_order    first_order 0.42
53      550   second_order    first_order 0.46
54      700   second_order    first_order 0.38
55      850   second_order    first_order 0.46
56     1000   second_order    first_order 0.43
57      100 unidimensional       bifactor 0.10
58      250 unidimensional       bifactor 0.01
59      400 unidimensional       bifactor 0.00
60      550 unidimensional       bifactor 0.00
61      700 unidimensional       bifactor 0.00
62      850 unidimensional       bifactor 0.00
63     1000 unidimensional       bifactor 0.00
64      100    first_order       bifactor 0.26
65      250    first_order       bifactor 0.01
66      400    first_order       bifactor 0.00
67      550    first_order       bifactor 0.00
68      700    first_order       bifactor 0.00
69      850    first_order       bifactor 0.00
70     1000    first_order       bifactor 0.00
71      100       bifactor       bifactor 0.82
72      250       bifactor       bifactor 1.00
73      400       bifactor       bifactor 1.00
74      550       bifactor       bifactor 1.00
75      700       bifactor       bifactor 1.00
76      850       bifactor       bifactor 1.00
77     1000       bifactor       bifactor 1.00
78      100   second_order       bifactor 0.27
79      250   second_order       bifactor 0.01
80      400   second_order       bifactor 0.00
81      550   second_order       bifactor 0.00
82      700   second_order       bifactor 0.00
83      850   second_order       bifactor 0.00
84     1000   second_order       bifactor 0.00
85      100 unidimensional   second_order 0.01
86      250 unidimensional   second_order 0.01
87      400 unidimensional   second_order 0.00
88      550 unidimensional   second_order 0.00
89      700 unidimensional   second_order 0.00
90      850 unidimensional   second_order 0.00
91     1000 unidimensional   second_order 0.00
92      100    first_order   second_order 0.41
93      250    first_order   second_order 0.46
94      400    first_order   second_order 0.53
95      550    first_order   second_order 0.58
96      700    first_order   second_order 0.51
97      850    first_order   second_order 0.52
98     1000    first_order   second_order 0.50
99      100       bifactor   second_order 0.06
100     250       bifactor   second_order 0.00
101     400       bifactor   second_order 0.00
102     550       bifactor   second_order 0.00
103     700       bifactor   second_order 0.00
104     850       bifactor   second_order 0.00
105    1000       bifactor   second_order 0.00
106     100   second_order   second_order 0.31
107     250   second_order   second_order 0.44
108     400   second_order   second_order 0.58
109     550   second_order   second_order 0.54
110     700   second_order   second_order 0.62
111     850   second_order   second_order 0.54
112    1000   second_order   second_order 0.57

Gráficos podem ser traçados para visualizar a relação entre a probabilidade de escolher cada modelo dado o tamanho da amostra e o modelo populacional. Aqui, também entendemos que uma regressão quasibinomial é a que tende a ajustar melhor os dados.

plot(ggplot2::ggplot(data = power.table,
                     mapping = ggplot2::aes(x = nSample,
                                            y = Freq,
                                            group = chosen_model,
                                            lty = chosen_model,
                                            shape = chosen_model))+
       ggplot2::geom_smooth(method = "glm",
                            formula = y~x,
                            method.args = list(family = "quasibinomial"),
                            color = "gray")+
       ggplot2::geom_point()+
       ggplot2::facet_wrap(~population)+
       ggplot2::labs(x = "Sample size",
                     y = "Proportion",
                     title = "Model chosen due to having the lowest SABIC",
                subtitle = "20 polytomous ordinal indicators treated as interval (MLR)")+
       ggplot2::theme_minimal()+
       ggplot2::geom_hline(yintercept = 0.9,
                           color = "red"))

Vemos que pouco mais de 100 participantes são suficientes para atingir 90% de poder para modelos unidimensionais e bifatoriais, mas o poder dos modelos de primeira- e segunda-ordem oscilam em torno de 50% mesmo com \(n = 1000\). Analisando os índices com mais cuidado, vemos que, quando os modelos de primeira- e de segunda-ordem convergem, ambos apresentam os mesmos índices.

identical(SABIC.data$first_order[is.na(SABIC.data$first_order) != NA &
                                   SABIC.data$second_order != NA],
          SABIC.data$second_order[SABIC.data$first_order != NA &
                                   SABIC.data$second_order != NA])
[1] TRUE

Vamos retirar o modelo de segunda-ordem da competição

SABIC.data <- SABIC.data[SABIC.data$population != "second_order",
                         -which(colnames(SABIC.data) == "second_order")]
SABIC.data$chosen_model[SABIC.data$chosen_model == "second_order"] <- 
  "first_order"
SABIC.data$population <- droplevels(SABIC.data$population)
SABIC.data$chosen_model <- droplevels(SABIC.data$chosen_model)


# descriptive analysis
print(ftable(SABIC.data[,c("nSample",
                           "population",
                           "chosen_model")]))
                       chosen_model unidimensional first_order bifactor
nSample population                                                     
100     unidimensional                          87           3       10
        first_order                              0          74       26
        bifactor                                 0          12       82
250     unidimensional                          98           1        1
        first_order                              0          99        1
        bifactor                                 0           0      100
400     unidimensional                         100           0        0
        first_order                              0         100        0
        bifactor                                 0           0      100
550     unidimensional                         100           0        0
        first_order                              0         100        0
        bifactor                                 0           0      100
700     unidimensional                         100           0        0
        first_order                              0         100        0
        bifactor                                 0           0      100
850     unidimensional                         100           0        0
        first_order                              0         100        0
        bifactor                                 0           0      100
1000    unidimensional                         100           0        0
        first_order                              0         100        0
        bifactor                                 0           0      100
power.table <- data.frame(ftable(SABIC.data[,c("nSample",
                                               "population",
                                               "chosen_model")]))
power.table$Freq <- power.table$Freq/100 # change according to how many 
#replications per sample size were done
print(power.table)
   nSample     population   chosen_model Freq
1      100 unidimensional unidimensional 0.87
2      250 unidimensional unidimensional 0.98
3      400 unidimensional unidimensional 1.00
4      550 unidimensional unidimensional 1.00
5      700 unidimensional unidimensional 1.00
6      850 unidimensional unidimensional 1.00
7     1000 unidimensional unidimensional 1.00
8      100    first_order unidimensional 0.00
9      250    first_order unidimensional 0.00
10     400    first_order unidimensional 0.00
11     550    first_order unidimensional 0.00
12     700    first_order unidimensional 0.00
13     850    first_order unidimensional 0.00
14    1000    first_order unidimensional 0.00
15     100       bifactor unidimensional 0.00
16     250       bifactor unidimensional 0.00
17     400       bifactor unidimensional 0.00
18     550       bifactor unidimensional 0.00
19     700       bifactor unidimensional 0.00
20     850       bifactor unidimensional 0.00
21    1000       bifactor unidimensional 0.00
22     100 unidimensional    first_order 0.03
23     250 unidimensional    first_order 0.01
24     400 unidimensional    first_order 0.00
25     550 unidimensional    first_order 0.00
26     700 unidimensional    first_order 0.00
27     850 unidimensional    first_order 0.00
28    1000 unidimensional    first_order 0.00
29     100    first_order    first_order 0.74
30     250    first_order    first_order 0.99
31     400    first_order    first_order 1.00
32     550    first_order    first_order 1.00
33     700    first_order    first_order 1.00
34     850    first_order    first_order 1.00
35    1000    first_order    first_order 1.00
36     100       bifactor    first_order 0.12
37     250       bifactor    first_order 0.00
38     400       bifactor    first_order 0.00
39     550       bifactor    first_order 0.00
40     700       bifactor    first_order 0.00
41     850       bifactor    first_order 0.00
42    1000       bifactor    first_order 0.00
43     100 unidimensional       bifactor 0.10
44     250 unidimensional       bifactor 0.01
45     400 unidimensional       bifactor 0.00
46     550 unidimensional       bifactor 0.00
47     700 unidimensional       bifactor 0.00
48     850 unidimensional       bifactor 0.00
49    1000 unidimensional       bifactor 0.00
50     100    first_order       bifactor 0.26
51     250    first_order       bifactor 0.01
52     400    first_order       bifactor 0.00
53     550    first_order       bifactor 0.00
54     700    first_order       bifactor 0.00
55     850    first_order       bifactor 0.00
56    1000    first_order       bifactor 0.00
57     100       bifactor       bifactor 0.82
58     250       bifactor       bifactor 1.00
59     400       bifactor       bifactor 1.00
60     550       bifactor       bifactor 1.00
61     700       bifactor       bifactor 1.00
62     850       bifactor       bifactor 1.00
63    1000       bifactor       bifactor 1.00
plot(ggplot2::ggplot(data = power.table,
                     mapping = ggplot2::aes(x = nSample,
                                            y = Freq,
                                            group = chosen_model,
                                            lty = chosen_model,
                                            shape = chosen_model))+
       ggplot2::geom_smooth(method = "glm",
                            formula = y~x,
                            method.args = list(family = "quasibinomial"),
                            color = "gray")+
       ggplot2::geom_point()+
       ggplot2::facet_wrap(~population,
                           ncol = 1)+
       ggplot2::labs(x = "Sample size",
                     y = "Proportion",
                     title = "Model chosen due to having the lowest SABIC",
                subtitle = "20 polytomous ordinal indicators treated as interval (MLR)")+
       ggplot2::theme_minimal()+
       ggplot2::geom_hline(yintercept = 0.9,
                           color = "red"))

Em nossos estudos com modelos com no máximo 2 fatores específicos ou de primeira-ordem, encontramos os seguintes tamanhos mínimos de amostra para obter 90% de poder: