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.
#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 modelEmbora 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:
[1] 0.053 0.284 0.503 0.851
[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)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
$`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.
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
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.
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
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
#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
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
#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
$`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
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
#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
$`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
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
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| 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 |
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.
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.
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.
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.
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)
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)
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.
# 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
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.
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.
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.
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.
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.
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.
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.
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)
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.
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.
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.
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.
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
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))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")
)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] <- NAAgora, 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
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
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.
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: