knitr::opts_chunk$set(message = FALSE, warning = FALSE, fig.width=8, fig.height=5)
install.packages(c("ggcorrplot"))

library(tidyverse)
library(lavaan)
library(semPlot)
library(semTools)
library(stringi)

library(psych)
library(ggplot2)
library(readr)

library(lavaan)
library(psych)
library(corrplot)
library(readxl)
library(openxlsx)
library(ltm)
library(Hmisc)
library(knitr)
library(kableExtra)
library(webshot)
library(ggcorrplot)
#auxiliary statistical routines 

renamePilot <- function(dataFrame){
  
  new_column_names <- c(
    "ID", "TIME_START", "TIME_END", "EMAIL", "TERMS",
    "BIRTH_DATE", "GENDER", "TIME_CODING", "JOB_TITLE",
    "YERAS_CODE", "SALARY_MONTHLY", "NEURODIVERGENCE",
    "D11", "D12", "D13", "D14", "D15", "D16",
    "D21", "D22", "D23", "D24", "D25", "D26",
    "D31", "D32", "D33", "D34", "D35",
    "A11", "A12", "A13", "A14", "A15",
    "A21", "A22", "A23",
    "A31", "A32", "A33", "A34", "A35",
    "A41", "A42", "A43",
    "J11", "J12", "J13", "J14", "J15", "J16",
    "J21", "J22", "J23", "J24", "J25",
    "P11", "P12", "P13", "P14", "P15",
    "P21", "P22", "P23", "P24", "P25", "P26", "P27", "P28",
    "P31", "P32", "P33", "P34", "P35",
    "FINAL_COMMENTS", "VOLUNTARY_EMAIL"
  )
  
  colnames(dataFrame) <- new_column_names
  dataFrame
}


renameData <- function(dataFrame){
  
  new_column_names <- c(
    "ID", "TIME_START", "TIME_END", "EMAIL", "TERMS",
    "BIRTH_DATE", "GENDER", "TIME_CODING", "JOB_TITLE",
    "YERAS_CODE", "SALARY_MONTHLY", "NEURODIVERGENCE",
    "D11", "D12", "D13", "D14", "D15", "D16",
    "D21", "D22", "D23", "D24", "D25", "D26",
    "D31", "D32", "D33", "D34", "D35",
    "A11", "A12", "A13", "A14", "A15",
    "A21", "A22", "A23",
    "A31", "A32", "A33", "A34", "A35",
    "A41", "A42", "A43",
    "J11", "J12", "J13", "J14", "J15", "J16",
    "J21", "J22", "J23", "J24", "J25",
    "P11", "P12", "P13", "P14", "P15",
    "P21", "P22", "P23", "P24", "P25", "P26", "P27", "P28",
    "P31", "P32", "P33", "P34", "P35",
    "FINAL_COMMENTS", "VOLUNTARY_EMAIL"
  )
  
  colnames(dataFrame) <- new_column_names
  dataFrame
}


invertLikertScaleCMT <- function(dataframe) {
  # Specify the columns to invert
  columns_to_invert <- c("A34", "A35", "P31", "P32", "P33", "P34", "P35")
  
  # Invert the values in specified columns
  dataframe[, columns_to_invert] <- 6 - dataframe[, columns_to_invert]
  
  return(dataframe)
}

aggBarplot <- function(dataframe,column_name,byCol){
  
  average <- aggregate(dataframe[,column_name],by = list(dataframe[,byCol]), FUN = mean)
  # Rename the columns for clarity
  colnames(average) <- c(byCol, column_name)
  
  
  # Create a bar plot
  
  barplot(
    height = average[[column_name]],
    names.arg = average[[byCol]],
    ylim = c(0, 20),
    main = paste("Mean Scores by",column_name),
    ylab = column_name,
    col = "blue"
  )
}

aggBoxplot <- function(dataframe,column_name,byCol){
  
  boxplot(dataframe[[column_name]] ~ dataframe[[byCol]], 
          main = paste("Boxplot of",column_name,"by",byCol),
          xlab = byCol,
          ylab = column_name,
          ylim = c(0, 20),
          col = "lightblue",
          notch = TRUE  # Optional, adds a notch to the boxplot
  )
  
}

rename_items_en <- function(df,
                            mapping = list(
                              "^D1\\d+$" = "IC",   # Inhibitory Control
                              "^D2\\d+$" = "WM",   # Working Memory
                              "^D3\\d+$" = "CF",   # Cognitive Flexibility
                              "^A1\\d+$" = "IES",  # Institutional & Emotional Support
                              "^A2\\d+$" = "OSN",  # Org. Sensitivity to Individual Needs
                              "^A3\\d+$" = "FHT",  # Fairness & Humane Treatment
                              "^A4\\d+$" = "PR",   # Professional Recognition
                              "^A5\\d+$" = "VL",   # Voice & Listening
                              "^J1\\d+$" = "SR",   # State Regulation
                              "^J2\\d+$" = "CL",   # Clarity & Awareness
                              "^J3\\d+$" = "AD",   # Adaptation
                              "^P1\\d+$" = "IP",   # Individual Performance
                              "^P2\\d+$" = "CP",   # Contextual Performance
                              "^P3\\d+$" = "TP"    # Team Performance
                            )) {
  
  old_names <- colnames(df)
  new_names <- old_names
  
  get_suffix_num <- function(x) {
    as.integer(gsub("^[A-Z]+", "", x))
  }
  
  for (rx in names(mapping)) {
    prefix <- mapping[[rx]]
    idx <- grepl(rx, old_names)
    if (!any(idx)) next
    
    matched <- old_names[idx]
    ord <- order(get_suffix_num(matched), na.last = TRUE)
    matched <- matched[ord]
    renamed <- paste0(prefix, seq_along(matched))
    new_names[match(matched, old_names)] <- renamed
  }
  
  colnames(df) <- new_names
  df
}

1 Introdução

Este relatório apresenta os principais achados obtidos nas etapas de análise fatorial exploratória (EFA), análise fatorial confirmatória (CFA) e teste de invariância multigrupo do modelo H1C, que integra dimensões de disfunções cognitivas (DYS), regulação e jornada individual (REG), apoio organizacional (SUPPORT) e performance (P_TASK e P_SOC).

O objetivo é verificar se a estrutura teórica proposta se mantém estável entre profissionais neurotípicos e neurodivergentes, permitindo comparações válidas entre grupos.

A EFA indicou uma estrutura coerente de quatro fatores principais, com variância explicada de aproximadamente 54% e sem correlações excessivamente altas entre fatores (|r| ≤ .80), o que sustentou a manutenção do modelo teórico original.

O modelo confirmatório (CFA) apresentou bom ajuste global e cargas fatoriais elevadas, confirmando validade convergente e hierarquia consistente entre fatores de primeira e segunda ordem.

Na análise de invariância, o modelo demonstrou invariância configural e métrica e invariância escalar parcial aceitável (ΔCFI e ΔRMSEA < 0.01). Isso indica que os construtos são interpretados de forma equivalente entre grupos, permitindo comparações de médias latentes.

Os resultados revelaram que profissionais neurodivergentes relataram maiores disfunções cognitivas (DYS) e maior regulação/adaptação (REG), além de maior performance social (P_SOC), enquanto apoio organizacional (SUPPORT) e performance técnica (P_TASK) não apresentaram diferenças significativas.

Esses achados reforçam a robustez do modelo e sugerem que, embora enfrentem mais desafios cognitivos, profissionais neurodivergentes tendem a desenvolver estratégias compensatórias que favorecem a adaptação e o desempenho social no trabalho.

2 Alphas de Cronbach

A análise de confiabilidade foi realizada para verificar a consistência interna dos blocos de itens que compõem cada construto do instrumento. O Alfa de Cronbach foi utilizado por ser uma métrica amplamente empregada em estudos psicométricos e adequada para escalas do tipo Likert com múltiplos itens avaliando um mesmo domínio teórico.

csv <- "data.csv"
pilotData <- read_csv(csv)
pilotData <- rename_items_en(pilotData)
head(pilotData,2)
constructs <- list(
  "IC"  = c("IC1", "IC2", "IC3", "IC4", "IC5", "IC6"),                  # Inhibitory Control
  "WM"  = c("WM1", "WM2", "WM3", "WM4", "WM5", "WM6"),                  # Working Memory
  "CF"  = c("CF1", "CF2", "CF3", "CF4", "CF5"),                         # Cognitive Flexibility
  "IES" = c("IES1", "IES2", "IES3", "IES4", "IES5"),                    # Institutional & Emotional Support
  "OSN" = c("OSN1", "OSN2", "OSN3"),                                    # Organizational Sensitivity to Needs
  "FHT" = c("FHT1", "FHT2", "FHT3", "FHT4", "FHT5"),                    # Fairness & Humane Treatment
  "PR"  = c("PR1", "PR2", "PR3"),                                       # Professional Recognition
  "SR"  = c("SR1", "SR2", "SR3", "SR4", "SR5", "SR6"),                  # State Regulation
  "CL"  = c("CL1", "CL2", "CL3", "CL4", "CL5"),                         # Clarity
  "IP"  = c("IP1", "IP2", "IP3", "IP4", "IP5"),                         # Individual Performance
  "CP"  = c("CP1", "CP2", "CP3", "CP4", "CP5", "CP6", "CP7", "CP8"),    # Contextual Performance
  "TP"  = c("TP1", "TP2", "TP3", "TP4", "TP5")                          # Team Performance
)

# a new dataframe to store Cronbach's alpha results for each construct
reliability_results <- data.frame(Construct = character(0), CronbachAlpha = numeric(0))

for (construct_name in names(constructs)) {
  # Extract the item names for the current construct
  construct_items <- constructs[[construct_name]]
  
  # Subset the data to include only the items for the current construct
  construct_data <- pilotData[, construct_items]
  
  # Calculate Cronbach's alpha for the construct
  cronbach_result <- psych::alpha(construct_data, check.keys = TRUE, 
                                  use = "pairwise.complete.obs")
  
  # Extract Cronbach's alpha value
  cronbach_alpha <- cronbach_result$total$std.alpha
  
  # Append the results to the reliability_results dataframe
  reliability_results <- rbind(
    reliability_results,
    data.frame(Construct = construct_name, CronbachAlpha = cronbach_alpha)
  )
}


print(reliability_results)
##    Construct CronbachAlpha
## 1         IC     0.8853687
## 2         WM     0.9188164
## 3         CF     0.9374536
## 4        IES     0.8922307
## 5        OSN     0.8783805
## 6        FHT     0.9148115
## 7         PR     0.8868447
## 8         SR     0.9147914
## 9         CL     0.8884746
## 10        IP     0.8582161
## 11        CP     0.8620290
## 12        TP     0.7572889

2.1 Resultados:

Os coeficientes de Alfa de Cronbach indicaram alta consistência interna entre os itens de cada subescala, com valores variando entre 0.85 e 0.94, todos acima do limite recomendado de 0.70.

Esses resultados confirmam a homogeneidade dos blocos de itens e reforçam a coerência teórica das dimensões avaliadas — incluindo Disfunções Cognitivas, Acomodações Organizacionais, Jornada Individual e Performance.

Além disso, os alfas elevados servem como base de sustentação para a etapa a seguir, evidenciando que a estrutura de quatro fatores identificada na EFA possui suporte psicométrico adequado para ser mantida no modelo confirmatório (CFA).

3 Análise Fatorial Exploratória (EFA)

A Análise Fatorial Exploratória foi utilizada para verificar a estrutura latente dos itens após o cálculo de confiabilidade, identificando a presença de agrupamentos coerentes entre os construtos teóricos. Nesta etapa, também foi realizada a inspeção da matriz Phi para avaliar correlações entre fatores e verificar se havia necessidade de reduzir o número de dimensões.

csv  <- "data.csv"
data <- read_csv(csv, show_col_types = FALSE)

# -----------------------------
# Selecionar apenas itens 
# -----------------------------
items_raw <- as.data.frame(data[, 13:(ncol(data) - 2)])
items_raw <- invertLikertScaleCMT(items_raw)

# -----------------------------
# Renomear itens para acrônimos (IC, WM, CF, IES, OSN, FHT, PR, VL, SR, CL, AD, IP, CP, TP)
# -----------------------------
items <- rename_items_en(items_raw)
stopifnot(ncol(items) > 0)
print(head(items, 2))
##   IC1 IC2 IC3 IC4 IC5 IC6 WM1 WM2 WM3 WM4 WM5 WM6 CF1 CF2 CF3 CF4 CF5 IES1 IES2
## 1   2   3   2   1   2   1   3   3   2   3   4   1   2   1   1   1   2    5    4
## 2   3   4   4   3   3   3   2   2   2   2   5   2   2   2   2   3   2    2    3
##   IES3 IES4 IES5 OSN1 OSN2 OSN3 FHT1 FHT2 FHT3 FHT4 FHT5 PR1 PR2 PR3 SR1 SR2
## 1    5    5    5    4    5    4    5    5    5    5    4   5   5   5   1   1
## 2    2    2    2    2    2    2    2    2    2    2    3   3   3   3   2   4
##   SR3 SR4 SR5 SR6 CL1 CL2 CL3 CL4 CL5 IP1 IP2 IP3 IP4 IP5 CP1 CP2 CP3 CP4 CP5
## 1   1   1   2   1   2   1   2   2   1   5   4   4   4   4   5   5   3   4   3
## 2   2   2   4   3   3   4   2   4   3   5   5   5   4   5   5   4   3   4   3
##   CP6 CP7 CP8 TP1 TP2 TP3 TP4 TP5
## 1   3   3   4   4   5   4   5   5
## 2   4   4   5   3   3   3   4   3
# -----------------------------
# KMO e Bartlett (fatorabilidade)
# -----------------------------
R_all <- cor(items, use = "pairwise.complete.obs")
cat("\n--- Bartlett ---\n")
## 
## --- Bartlett ---
print(cortest.bartlett(R_all, n = nrow(items)))
## $chisq
## [1] 7924.496
## 
## $p.value
## [1] 0
## 
## $df
## [1] 1891
cat("\n--- KMO ---\n")
## 
## --- KMO ---
print(KMO(R_all))
## Kaiser-Meyer-Olkin factor adequacy
## Call: KMO(r = R_all)
## Overall MSA =  0.88
## MSA for each item = 
##  IC1  IC2  IC3  IC4  IC5  IC6  WM1  WM2  WM3  WM4  WM5  WM6  CF1  CF2  CF3  CF4 
## 0.92 0.91 0.94 0.86 0.91 0.85 0.90 0.91 0.93 0.94 0.86 0.93 0.91 0.93 0.89 0.95 
##  CF5 IES1 IES2 IES3 IES4 IES5 OSN1 OSN2 OSN3 FHT1 FHT2 FHT3 FHT4 FHT5  PR1  PR2 
## 0.93 0.83 0.86 0.85 0.86 0.85 0.91 0.91 0.88 0.87 0.90 0.90 0.87 0.86 0.89 0.86 
##  PR3  SR1  SR2  SR3  SR4  SR5  SR6  CL1  CL2  CL3  CL4  CL5  IP1  IP2  IP3  IP4 
## 0.88 0.90 0.94 0.93 0.89 0.91 0.94 0.91 0.91 0.91 0.91 0.91 0.65 0.77 0.83 0.84 
##  IP5  CP1  CP2  CP3  CP4  CP5  CP6  CP7  CP8  TP1  TP2  TP3  TP4  TP5 
## 0.79 0.85 0.73 0.64 0.71 0.67 0.76 0.70 0.79 0.81 0.73 0.60 0.70 0.80
# -----------------------------
# Funções auxiliares
# -----------------------------
pretty_loadings <- function(fa_obj, cutoff = .30) {
  print(fa_obj$loadings, cutoff = cutoff, sort = TRUE)
}

phi_pairs_over <- function(phi_mat, thr = .80) {
  if (is.null(phi_mat)) return(character(0))
  nm  <- colnames(phi_mat)
  idx <- which(abs(phi_mat) > thr & lower.tri(phi_mat), arr.ind = TRUE)
  if (nrow(idx) == 0) return(character(0))
  apply(
    idx, 1,
    function(r) paste0(nm[r[1]], " ~ ", nm[r[2]],
                       " (r=", sprintf("%.2f", phi_mat[r[1], r[2]]), ")")
  )
}

# -----------------------------
# EFA inicial
# -----------------------------
k_init  <- 4L
efa_init <- fa(items, nfactors = k_init, n.obs = nrow(items),
               fm = "pa", rotate = "oblimin")

cat("\n=== EFA INICIAL (k =", k_init, ") ===\n")
## 
## === EFA INICIAL (k = 4 ) ===
pretty_loadings(efa_init, cutoff = .30)
## 
## Loadings:
##      PA1    PA2    PA3    PA4   
## IC1   0.656                     
## IC3   0.690                     
## IC4   0.688                     
## IC5   0.687                     
## IC6   0.713                     
## WM1   0.794                     
## WM2   0.760                     
## WM3   0.829                     
## WM4   0.780                     
## WM5   0.567                     
## WM6   0.812                     
## CF1   0.858                     
## CF2   0.739                     
## CF3   0.728                     
## CF4   0.874                     
## CF5   0.849                     
## SR1   0.689                     
## SR2   0.765                     
## SR3   0.672                     
## SR4   0.594                     
## SR5   0.636                     
## SR6   0.698                     
## CL1   0.630                     
## CL2   0.609               -0.361
## CL3   0.712                     
## CL4   0.667                     
## CL5   0.734                     
## IES1         0.769              
## IES2         0.666              
## IES3         0.726              
## IES4         0.813              
## IES5         0.807              
## OSN1         0.804              
## OSN2         0.691              
## OSN3         0.797              
## FHT1         0.880              
## FHT2         0.796              
## FHT3         0.869              
## FHT4         0.751              
## FHT5         0.773              
## PR1          0.770              
## PR2          0.784              
## PR3          0.800              
## IP2                 0.527       
## IP3                 0.620       
## IP4                 0.592       
## IP5                 0.610       
## CP1                 0.515       
## CP2                 0.571       
## CP3                 0.646       
## CP4                 0.713       
## CP5                 0.591       
## CP6                 0.579       
## CP7                 0.674       
## TP2                        0.690
## TP5                        0.629
## IC2   0.482                     
## IP1                 0.464       
## CP8  -0.336         0.364       
## TP1  -0.339                0.413
## TP3                        0.424
## TP4                        0.425
## 
##                   PA1    PA2   PA3   PA4
## SS loadings    14.862 10.047 5.060 2.440
## Proportion Var  0.240  0.162 0.082 0.039
## Cumulative Var  0.240  0.402 0.483 0.523
cat("\n--- Variância explicada (inicial) ---\n")
## 
## --- Variância explicada (inicial) ---
print(efa_init$Vaccounted)
##                              PA1        PA2        PA3        PA4
## SS loadings           15.1908793 10.1414187 5.20373605 2.66730602
## Proportion Var         0.2450142  0.1635713 0.08393123 0.04302106
## Cumulative Var         0.2450142  0.4085855 0.49251668 0.53553774
## Proportion Explained   0.4575106  0.3054337 0.15672327 0.08033246
## Cumulative Proportion  0.4575106  0.7629443 0.91966754 1.00000000
cat("\n--- Phi (inicial) ---\n")
## 
## --- Phi (inicial) ---
print(round(efa_init$Phi, 2))
##       PA1   PA2   PA3   PA4
## PA1  1.00 -0.14 -0.22 -0.19
## PA2 -0.14  1.00  0.02  0.20
## PA3 -0.22  0.02  1.00  0.01
## PA4 -0.19  0.20  0.01  1.00
high_phi_init <- phi_pairs_over(efa_init$Phi, thr = .80)
if (length(high_phi_init)) {
  cat("\n*** Fatores muito correlacionados (|r| > .80):\n")
  cat(paste0(" - ", high_phi_init, collapse = "\n"), "\n")
} else {
  cat("\nNenhum par de fatores com |r| > .80 no modelo inicial.\n")
}
## 
## Nenhum par de fatores com |r| > .80 no modelo inicial.
# -----------------------------
# Refinamento: reduz nfatores enquanto |Phi| > .80
# -----------------------------
k_ref  <- k_init
efa_ref <- efa_init

while (k_ref > 1) {
  phi_now   <- efa_ref$Phi
  over_pairs <- which(abs(phi_now) > .80 & lower.tri(phi_now), arr.ind = TRUE)
  if (nrow(over_pairs) == 0) break
  k_ref <- k_ref - 1L
  cat("\n>>> Reduzindo número de fatores para", k_ref, "devido a |Phi| > .80\n")
  efa_ref <- fa(items, nfactors = k_ref, n.obs = nrow(items),
                fm = "pa", rotate = "oblimin")
}

cat("\n=== EFA REFINADO (k =", k_ref, ") ===\n")
## 
## === EFA REFINADO (k = 4 ) ===
pretty_loadings(efa_ref, cutoff = .30)
## 
## Loadings:
##      PA1    PA2    PA3    PA4   
## IC1   0.656                     
## IC3   0.690                     
## IC4   0.688                     
## IC5   0.687                     
## IC6   0.713                     
## WM1   0.794                     
## WM2   0.760                     
## WM3   0.829                     
## WM4   0.780                     
## WM5   0.567                     
## WM6   0.812                     
## CF1   0.858                     
## CF2   0.739                     
## CF3   0.728                     
## CF4   0.874                     
## CF5   0.849                     
## SR1   0.689                     
## SR2   0.765                     
## SR3   0.672                     
## SR4   0.594                     
## SR5   0.636                     
## SR6   0.698                     
## CL1   0.630                     
## CL2   0.609               -0.361
## CL3   0.712                     
## CL4   0.667                     
## CL5   0.734                     
## IES1         0.769              
## IES2         0.666              
## IES3         0.726              
## IES4         0.813              
## IES5         0.807              
## OSN1         0.804              
## OSN2         0.691              
## OSN3         0.797              
## FHT1         0.880              
## FHT2         0.796              
## FHT3         0.869              
## FHT4         0.751              
## FHT5         0.773              
## PR1          0.770              
## PR2          0.784              
## PR3          0.800              
## IP2                 0.527       
## IP3                 0.620       
## IP4                 0.592       
## IP5                 0.610       
## CP1                 0.515       
## CP2                 0.571       
## CP3                 0.646       
## CP4                 0.713       
## CP5                 0.591       
## CP6                 0.579       
## CP7                 0.674       
## TP2                        0.690
## TP5                        0.629
## IC2   0.482                     
## IP1                 0.464       
## CP8  -0.336         0.364       
## TP1  -0.339                0.413
## TP3                        0.424
## TP4                        0.425
## 
##                   PA1    PA2   PA3   PA4
## SS loadings    14.862 10.047 5.060 2.440
## Proportion Var  0.240  0.162 0.082 0.039
## Cumulative Var  0.240  0.402 0.483 0.523
cat("\n--- Variância explicada (refinado) ---\n")
## 
## --- Variância explicada (refinado) ---
print(efa_ref$Vaccounted)
##                              PA1        PA2        PA3        PA4
## SS loadings           15.1908793 10.1414187 5.20373605 2.66730602
## Proportion Var         0.2450142  0.1635713 0.08393123 0.04302106
## Cumulative Var         0.2450142  0.4085855 0.49251668 0.53553774
## Proportion Explained   0.4575106  0.3054337 0.15672327 0.08033246
## Cumulative Proportion  0.4575106  0.7629443 0.91966754 1.00000000
cat("\n--- Phi (refinado) ---\n")
## 
## --- Phi (refinado) ---
print(round(efa_ref$Phi, 2))
##       PA1   PA2   PA3   PA4
## PA1  1.00 -0.14 -0.22 -0.19
## PA2 -0.14  1.00  0.02  0.20
## PA3 -0.22  0.02  1.00  0.01
## PA4 -0.19  0.20  0.01  1.00
high_phi_ref <- phi_pairs_over(efa_ref$Phi, thr = .80)
if (length(high_phi_ref)) {
  cat("\n*** Ainda há pares com |r| > .80:\n")
  cat(paste0(" - ", high_phi_ref, collapse = "\n"), "\n")
} else {
  cat("\nOK: nenhum par com |r| > .80 no modelo refinado.\n")
}
## 
## OK: nenhum par com |r| > .80 no modelo refinado.
comp_tab <- tibble(
  Modelo     = c(paste0("Inicial (k=", k_init, ")"),
                 paste0("Refinado (k=", k_ref, ")")),
  SSloadings = c(sum(efa_init$Vaccounted["SS loadings", ], na.rm = TRUE),
                 sum(efa_ref$Vaccounted["SS loadings",  ], na.rm = TRUE)),
  Proporcao  = c(sum(efa_init$Vaccounted["Proportion Var", ], na.rm = TRUE),
                 sum(efa_ref$Vaccounted["Proportion Var",  ], na.rm = TRUE)),
  VarAcum    = c(max(efa_init$Vaccounted["Cumulative Var", ], na.rm = TRUE),
                 max(efa_ref$Vaccounted["Cumulative Var",  ], na.rm = TRUE))
)

cat("\n=== Comparação Variância Explicada ===\n")
## 
## === Comparação Variância Explicada ===
print(comp_tab)
## # A tibble: 2 × 4
##   Modelo         SSloadings Proporcao VarAcum
##   <chr>               <dbl>     <dbl>   <dbl>
## 1 Inicial (k=4)        33.2     0.536   0.536
## 2 Refinado (k=4)       33.2     0.536   0.536
# -----------------------------
# Exports úteis
# -----------------------------
write.table(efa_init$loadings, file = "efa_loadings_inicial.csv", sep = ";",
            col.names = NA, quote = FALSE)
write.table(efa_ref$loadings,  file = "efa_loadings_refinado.csv", sep = ";",
            col.names = NA, quote = FALSE)
write.csv(round(efa_init$Phi, 3), "efa_phi_inicial.csv",  row.names = TRUE)
write.csv(round(efa_ref$Phi,  3), "efa_phi_refinado.csv", row.names = TRUE)


if (k_ref < k_init) {
  cat(
      "A matriz Phi do EFA inicial indicou correlações elevadas (|r| > .80) entre alguns fatores,",
      "sugerindo redundância conceitual. Reestimou-se a solução com", k_ref,
      "fatores, resultando em estrutura mais parcimoniosa, com variância explicada adequada",
      "e cargas fatoriais interpretáveis. Essa versão foi adotada como base para o CFA.\n")
} else {
  cat(
      "A matriz Phi do EFA inicial não indicou correlações excessivas (|r| > .80) entre fatores,",
      "de modo que a solução original (", k_init, "fatores) foi mantida por parcimônia e coerência teórica.\n", sep = "")
}
## A matriz Phi do EFA inicial não indicou correlações excessivas (|r| > .80) entre fatores,de modo que a solução original (4fatores) foi mantida por parcimônia e coerência teórica.

3.1 Adequação da amostra:

Os testes de fatorabilidade indicaram excelente adequação para a análise fatorial: - KMO geral = 0.88, demonstrando que os padrões de correlação são compactos e apropriados para extração fatorial; - KMO por item: a maioria dos valores ficou acima de 0.80, com pequenas exceções em itens de Performance (ex.: IP1=0.65; CP3=0.64; TP3=0.60), que, embora menores, permanecem dentro de um intervalo aceitável; - Teste de Esfericidade de Bartlett: χ²(1891) = 7924.50, p < .001 — confirmando que a matriz de correlação difere significativamente da identidade e é adequada à redução de dimensionalidade.

3.2 Estrutura fatorial e variância explicada

O modelo inicial foi estimado com 4 fatores utilizando o método de extração por eixos principais (Principal Axis Factoring) e rotação oblimin, permitindo correlações entre fatores.

Fator Variância explicada Proporção acumulada
PA1 24.5% 24.5%
PA2 16.3% 40.9%
PA3 8.4% 49.3%
PA4 4.3% 53.6%

A variância total explicada foi de aproximadamente 54%, o que representa um bom nível de explicação para instrumentos psicossociais multidimensionais.

3.3 Cargas fatoriais

As cargas apresentaram padrões limpos e interpretáveis, com a maioria dos itens acima de 0.60, confirmando coerência interna e convergência dos indicadores dentro de cada fator.
Os grupos de itens (IC, WM, CF, IES, OSN, FHT, PR, SR, CL, CP, TP) mantiveram a estrutura teórica esperada, reforçando a validade fatorial.

3.4 Correlações entre fatores (matriz phi)

A matriz Phi indicou correlações moderadas entre fatores, variando entre r = −0.22 e r = +0.20, sem nenhum par acima do limite de |r| = 0.80.

Portanto, não houve evidência de redundância conceitual entre fatores, e a estrutura original de quatro dimensões foi mantida integralmente, preservando a coerência teórica e a parcimônia do modelo.

3.5 Conclusão

A solução fatorial revelou um conjunto de fatores claros e consistentes, sustentando o modelo teórico e a estrutura esperada para o CFA.

4 Análise Fatorial Confirmatória (CFA) — Modelo H1P

A Análise Fatorial Confirmatória foi conduzida com base na estrutura de quatro dimensões identificada e mantida na EFA, agora especificada de forma hierárquica no modelo H1P. Esse modelo busca testar empiricamente a adequação teórica das relações entre disfunções cognitivas, regulação individual, suporte organizacional e performance.

csv  <- "data.csv"
data <- read_csv(csv)
print(head(data, 2))
## # A tibble: 2 × 76
##      id time_start  time_end email terms birth_date gender time_coding job_title
##   <dbl> <chr>       <chr>    <chr> <chr>      <dbl> <chr>  <chr>       <chr>    
## 1     1 9/2/2025 9… 9/2/202… anon… Sim,…       1974 Femin… Nenhum, nã… Outro... 
## 2     2 9/2/2025 1… 9/2/202… anon… Sim,…       1963 Femin… 75 - 100% … Desenvol…
## # ℹ 67 more variables: years_coding <dbl>, salary_monthly <dbl>,
## #   neurodivergence <chr>, D11 <dbl>, D12 <dbl>, D13 <dbl>, D14 <dbl>,
## #   D15 <dbl>, D16 <dbl>, D21 <dbl>, D22 <dbl>, D23 <dbl>, D24 <dbl>,
## #   D25 <dbl>, D26 <dbl>, D31 <dbl>, D32 <dbl>, D33 <dbl>, D34 <dbl>,
## #   D35 <dbl>, A11 <dbl>, A12 <dbl>, A13 <dbl>, A14 <dbl>, A15 <dbl>,
## #   A21 <dbl>, A22 <dbl>, A23 <dbl>, A31 <dbl>, A32 <dbl>, A33 <dbl>,
## #   A34 <dbl>, A35 <dbl>, A41 <dbl>, A42 <dbl>, A43 <dbl>, J11 <dbl>, …
# -----------------------------
# Selecionar SOMENTE itens originais (D11..P35)
# -----------------------------
all_item_names_old <- c(
  "D11","D12","D13","D14","D15","D16",
  "D21","D22","D23","D24","D25","D26",
  "D31","D32","D33","D34","D35",
  "A11","A12","A13","A14","A15",
  "A21","A22","A23",
  "A31","A32","A33","A34","A35",
  "A41","A42","A43",
  "J11","J12","J13","J14","J15","J16",
  "J21","J22","J23","J24","J25",
  "P11","P12","P13","P14","P15",
  "P21","P22","P23","P24","P25","P26","P27","P28",
  "P31","P32","P33","P34","P35"
)

missing_items <- setdiff(all_item_names_old, names(data))
if (length(missing_items) > 0) {
  stop(paste("Itens não encontrados no arquivo:", paste(missing_items, collapse = ", ")))
}

df_items_old <- as.data.frame(data[, all_item_names_old])
df_items_old <- invertLikertScaleCMT(df_items_old)

# -----------------------------
# Renomear itens via dicionário
# -----------------------------
df_items_new <- rename_items_en(df_items_old)

old_names <- names(df_items_old)
new_names <- names(df_items_new)
stopifnot(length(old_names) == length(new_names))
name_map <- setNames(new_names, old_names)
map_items <- function(vec_old) unname(name_map[vec_old])

# -----------------------------
# Modelo lavaan
# -----------------------------
lhs_D1 <- paste(map_items(c("D11","D14","D16")), collapse = " + ")
lhs_D2 <- paste(map_items(c("D21","D22","D24")), collapse = " + ")
lhs_D3 <- paste(map_items(c("D31","D34","D35")), collapse = " + ")

lhs_J1 <- paste(map_items(c("J12","J13","J16")), collapse = " + ")
lhs_J2 <- paste(map_items(c("J21","J24","J25")), collapse = " + ")

lhs_A1 <- paste(map_items(c("A14","A15","A21")), collapse = " + ")
lhs_A2 <- paste(map_items(c("A31","A33","A34")), collapse = " + ")
lhs_A3 <- paste(map_items(c("A41","A42","A43")), collapse = " + ")

# P_TASK: P23,P24,P26 | P_SOC: P34,P35
lhs_P_TASK <- paste(map_items(c("P23","P24","P26")), collapse = " + ")
lhs_P_SOC  <- paste(map_items(c("P34","P35")),       collapse = " + ")

4.1 Estrutura do modelo:

O modelo H1P foi especificado em duas ordens fatoriais:

4.1.1 Primeira ordem — Estrutura de medida

  • Disfunções cognitivas (DYS):
    • D1_INIB — Inibição cognitiva (IC1, IC4, IC6)
    • D2_MEMO — Memória de trabalho (WM1, WM2, WM4)
    • D3_FLEX — Flexibilidade cognitiva (CF1, CF4, CF5)
  • Regulação / Jornada (REG):
    • J1_REG — Autorregulação e foco (SR2, SR3, SR6)
    • J2_REGP — Clareza e propósito (CL1, CL4, CL5)
  • Suporte organizacional (SUPPORT):
    • A1_APOI — Apoio institucional e emocional (IES4, IES5, OSN1)
    • A2_JUST — Justiça e tratamento humano (FHT1, FHT3, FHT4)
    • A3_RECO — Reconhecimento profissional (PR1, PR2, PR3)
  • Performance (P):
    • P_TASK — Performance técnica (CP3, CP4, CP6)
    • P_SOC — Performance social (TP4, TP5)

4.1.2 Segunda ordem — Fatores superiores

  • DYS (Disfunções cognitivas) → D1_INIB + D2_MEMO + D3_FLEX
  • REG (Regulação/Jornada) → J1_REG + J2_REGP
  • SUPPORT (Suporte Organizacional) → A1_APOI + A2_JUST + A3_RECO

4.1.3 Estrutural

  • P_TASK é influenciada por DYS, REG e SUPPORT.
  • P_SOC é influenciada pelos mesmos fatores.

4.1.4 Correlações teóricas

  • DYS ~~ REG
  • DYS ~~ SUPPORT
  • REG ~~ SUPPORT
  • P_TASK ~~ P_SOC

O modelo completo, implementado no lavaan, é dado por:

model_H1P <- '
# 1ª ORDEM — MEDIDA
# Dysfunctions (maior = mais dificuldade)
D1_INIB =~ IC1 + IC4 + IC6
D2_MEMO =~ WM1 + WM2 + WM4
D3_FLEX =~ CF1 + CF4 + CF5

# Regulação / Jornada (SR*, CL* recodificados p/ maior = melhor)
J1_REG  =~ SR2 + SR3 + SR6
J2_REGP =~ CL1 + CL4 + CL5

# Suporte / Acomodações
A1_APOI =~ IES4 + IES5 + OSN1
A2_JUST =~ FHT1 + FHT3 + FHT4
A3_RECO =~ PR1 + PR2 + PR3

# Performance
P_TASK  =~ CP3 + CP4 + CP6
P_SOC   =~ TP4 + TP5

# 2ª ORDEM
DYS     =~ D1_INIB + D2_MEMO + D3_FLEX
REG     =~ J1_REG  + J2_REGP
SUPPORT =~ A1_APOI + A2_JUST + A3_RECO

# ESTRUTURAL
P_TASK ~ DYS + REG + SUPPORT
P_SOC  ~ DYS + REG + SUPPORT

# CORRELAÇÕES
DYS ~~ REG
DYS ~~ SUPPORT
REG ~~ SUPPORT
P_TASK ~~ P_SOC
'
fitH1C <- sem(model_H1P, data = df_items_new)
print(fitMeasures(fitH1C, c("chisq","df","cfi","tli","rmsea","srmr")))
##   chisq      df     cfi     tli   rmsea    srmr 
## 579.261 359.000   0.931   0.922   0.064   0.061
summary(fitH1C, fit.measures = TRUE, standardized = TRUE)
## lavaan 0.6-20 ended normally after 92 iterations
## 
##   Estimator                                         ML
##   Optimization method                           NLMINB
##   Number of model parameters                        76
## 
##   Number of observations                           148
## 
## Model Test User Model:
##                                                       
##   Test statistic                               579.261
##   Degrees of freedom                               359
##   P-value (Chi-square)                           0.000
## 
## Model Test Baseline Model:
## 
##   Test statistic                              3593.282
##   Degrees of freedom                               406
##   P-value                                        0.000
## 
## User Model versus Baseline Model:
## 
##   Comparative Fit Index (CFI)                    0.931
##   Tucker-Lewis Index (TLI)                       0.922
## 
## Loglikelihood and Information Criteria:
## 
##   Loglikelihood user model (H0)              -4408.654
##   Loglikelihood unrestricted model (H1)      -4119.023
##                                                       
##   Akaike (AIC)                                8969.308
##   Bayesian (BIC)                              9197.096
##   Sample-size adjusted Bayesian (SABIC)       8956.584
## 
## Root Mean Square Error of Approximation:
## 
##   RMSEA                                          0.064
##   90 Percent confidence interval - lower         0.055
##   90 Percent confidence interval - upper         0.074
##   P-value H_0: RMSEA <= 0.050                    0.009
##   P-value H_0: RMSEA >= 0.080                    0.003
## 
## Standardized Root Mean Square Residual:
## 
##   SRMR                                           0.061
## 
## Parameter Estimates:
## 
##   Standard errors                             Standard
##   Information                                 Expected
##   Information saturated (h1) model          Structured
## 
## Latent Variables:
##                    Estimate  Std.Err  z-value  P(>|z|)   Std.lv  Std.all
##   D1_INIB =~                                                            
##     IC1               1.000                               0.704    0.763
##     IC4               0.930    0.102    9.134    0.000    0.655    0.782
##     IC6               0.880    0.100    8.817    0.000    0.620    0.754
##   D2_MEMO =~                                                            
##     WM1               1.000                               0.960    0.910
##     WM2               1.038    0.063   16.400    0.000    0.996    0.902
##     WM4               0.839    0.063   13.217    0.000    0.805    0.809
##   D3_FLEX =~                                                            
##     CF1               1.000                               1.010    0.885
##     CF4               0.882    0.055   16.040    0.000    0.891    0.902
##     CF5               1.034    0.068   15.231    0.000    1.045    0.880
##   J1_REG =~                                                             
##     SR2               1.000                               0.879    0.805
##     SR3               0.875    0.087   10.002    0.000    0.769    0.772
##     SR6               1.054    0.100   10.581    0.000    0.927    0.809
##   J2_REGP =~                                                            
##     CL1               1.000                               0.862    0.796
##     CL4               1.002    0.091   10.981    0.000    0.863    0.831
##     CL5               0.967    0.087   11.098    0.000    0.833    0.838
##   A1_APOI =~                                                            
##     IES4              1.000                               0.824    0.806
##     IES5              0.944    0.076   12.379    0.000    0.778    0.865
##     OSN1              0.956    0.082   11.630    0.000    0.788    0.828
##   A2_JUST =~                                                            
##     FHT1              1.000                               0.889    0.895
##     FHT3              0.982    0.062   15.890    0.000    0.873    0.889
##     FHT4              0.793    0.076   10.461    0.000    0.704    0.709
##   A3_RECO =~                                                            
##     PR1               1.000                               0.769    0.846
##     PR2               0.998    0.078   12.792    0.000    0.767    0.858
##     PR3               1.044    0.083   12.592    0.000    0.803    0.849
##   P_TASK =~                                                             
##     CP3               1.000                               0.625    0.811
##     CP4               1.131    0.142    7.940    0.000    0.706    1.030
##     CP6               0.536    0.098    5.475    0.000    0.335    0.418
##   P_SOC =~                                                              
##     TP4               1.000                               0.777    0.740
##     TP5               0.766    0.152    5.039    0.000    0.595    0.774
##   DYS =~                                                                
##     D1_INIB           1.000                               0.845    0.845
##     D2_MEMO           1.379    0.165    8.338    0.000    0.855    0.855
##     D3_FLEX           1.625    0.184    8.827    0.000    0.958    0.958
##   REG =~                                                                
##     J1_REG            1.000                               0.903    0.903
##     J2_REGP           0.976    0.112    8.712    0.000    0.899    0.899
##   SUPPORT =~                                                            
##     A1_APOI           1.000                               0.994    0.994
##     A2_JUST           1.063    0.089   11.898    0.000    0.979    0.979
##     A3_RECO           0.826    0.082   10.040    0.000    0.879    0.879
## 
## Regressions:
##                    Estimate  Std.Err  z-value  P(>|z|)   Std.lv  Std.all
##   P_TASK ~                                                              
##     DYS              -0.007    1.104   -0.007    0.995   -0.007   -0.007
##     REG              -0.057    0.862   -0.067    0.947   -0.073   -0.073
##     SUPPORT           0.021    0.133    0.157    0.875    0.027    0.027
##   P_SOC ~                                                               
##     DYS               3.160    4.070    0.777    0.437    2.422    2.422
##     REG              -2.775    3.194   -0.869    0.385   -2.834   -2.834
##     SUPPORT          -0.094    0.454   -0.206    0.837   -0.099   -0.099
## 
## Covariances:
##                    Estimate  Std.Err  z-value  P(>|z|)   Std.lv  Std.all
##   DYS ~~                                                                
##     REG               0.457    0.080    5.746    0.000    0.968    0.968
##     SUPPORT          -0.080    0.045   -1.773    0.076   -0.164   -0.164
##   REG ~~                                                                
##     SUPPORT          -0.192    0.066   -2.932    0.003   -0.296   -0.296
##  .P_TASK ~~                                                             
##    .P_SOC             0.069    0.071    0.970    0.332    0.210    0.210
## 
## Variances:
##                    Estimate  Std.Err  z-value  P(>|z|)   Std.lv  Std.all
##    .IC1               0.356    0.054    6.570    0.000    0.356    0.418
##    .IC4               0.272    0.043    6.300    0.000    0.272    0.389
##    .IC6               0.292    0.044    6.691    0.000    0.292    0.432
##    .WM1               0.192    0.037    5.168    0.000    0.192    0.173
##    .WM2               0.227    0.042    5.452    0.000    0.227    0.186
##    .WM4               0.344    0.047    7.308    0.000    0.344    0.346
##    .CF1               0.283    0.044    6.488    0.000    0.283    0.217
##    .CF4               0.183    0.030    6.048    0.000    0.183    0.187
##    .CF5               0.320    0.048    6.607    0.000    0.320    0.226
##    .SR2               0.421    0.064    6.532    0.000    0.421    0.353
##    .SR3               0.401    0.058    6.954    0.000    0.401    0.404
##    .SR6               0.454    0.070    6.463    0.000    0.454    0.346
##    .CL1               0.430    0.062    6.896    0.000    0.430    0.367
##    .CL4               0.334    0.052    6.378    0.000    0.334    0.310
##    .CL5               0.293    0.047    6.239    0.000    0.293    0.297
##    .IES4              0.367    0.049    7.417    0.000    0.367    0.351
##    .IES5              0.204    0.031    6.585    0.000    0.204    0.252
##    .OSN1              0.285    0.040    7.186    0.000    0.285    0.315
##    .FHT1              0.197    0.032    6.070    0.000    0.197    0.200
##    .FHT3              0.202    0.032    6.227    0.000    0.202    0.209
##    .FHT4              0.492    0.061    8.009    0.000    0.492    0.498
##    .PR1               0.235    0.037    6.430    0.000    0.235    0.284
##    .PR2               0.211    0.034    6.190    0.000    0.211    0.264
##    .PR3               0.250    0.039    6.376    0.000    0.250    0.280
##    .CP3               0.203    0.050    4.080    0.000    0.203    0.342
##    .CP4              -0.029    0.056   -0.518    0.604   -0.029   -0.062
##    .CP6               0.530    0.063    8.442    0.000    0.530    0.825
##    .TP4               0.500    0.124    4.029    0.000    0.500    0.453
##    .TP5               0.237    0.070    3.385    0.001    0.237    0.401
##    .D1_INIB           0.141    0.040    3.562    0.000    0.285    0.285
##    .D2_MEMO           0.247    0.050    4.934    0.000    0.269    0.269
##    .D3_FLEX           0.085    0.040    2.123    0.034    0.083    0.083
##    .J1_REG            0.143    0.049    2.921    0.003    0.185    0.185
##    .J2_REGP           0.143    0.045    3.158    0.002    0.193    0.193
##    .A1_APOI           0.009    0.027    0.319    0.750    0.013    0.013
##    .A2_JUST           0.032    0.030    1.074    0.283    0.041    0.041
##    .A3_RECO           0.134    0.032    4.194    0.000    0.227    0.227
##    .P_TASK            0.387    0.077    5.011    0.000    0.992    0.992
##    .P_SOC             0.281    0.276    1.017    0.309    0.465    0.465
##     DYS               0.355    0.081    4.380    0.000    1.000    1.000
##     REG               0.630    0.126    5.007    0.000    1.000    1.000
##     SUPPORT           0.670    0.117    5.714    0.000    1.000    1.000

4.2 Resultados:

A modelagem de equações estruturais (SEM) foi estimada pelo método de máxima verossimilhança (ML) com 148 observações válidas. O modelo H1C apresentou ajuste global satisfatório, de acordo com os principais índices de qualidade de ajuste (fit indices):

4.2.1 Índices globais de ajuste

Índice Valor Referência Interpretação
χ² (gl = 359) 579.261 (p < .001) Qui-quadrado esperado como significativo em amostras ≥ médias
CFI 0.931 ≥ 0.90 Bom ajuste
TLI 0.922 ≥ 0.90 Bom ajuste
RMSEA (IC90%) 0.064 (0.055–0.074) ≤ 0.08 Ajuste adequado
SRMR 0.061 ≤ 0.08 Ajuste aceitável

Esses resultados indicam que o modelo possui ajuste satisfatório e parcimonioso, refletindo coerência entre a estrutura teórica proposta e os dados empíricos.

4.2.2 Estrutura Latente e Cargas Fatoriais

O modelo compreende nove fatores de primeira ordem agrupados em três fatores de segunda ordem — Disfunções (DYS), Regulação (REG) e Suporte (SUPPORT) — que, por sua vez, explicam dois construtos de desempenho (P_TASK e P_SOC):

4.2.2.1 Fatores de primeira ordem:

Fator Itens Cargas (Std.all) – faixa
D1_INIB IC1, IC4, IC6 0.75–0.78
D2_MEMO WM1, WM2, WM4 0.81–0.91
D3_FLEX CF1, CF4, CF5 0.88–0.90
J1_REG SR2, SR3, SR6 0.77–0.81
J2_REGP CL1, CL4, CL5 0.80–0.84
A1_APOI IES4, IES5, OSN1 0.81–0.87
A2_JUST FHT1, FHT3, FHT4 0.71–0.89
A3_RECO PR1, PR2, PR3 0.84–0.86
P_TASK CP3, CP4, CP6 0.42–1.03
P_SOC TP4, TP5 0.74–0.77

4.2.2.2 Fatores de segunda ordem:

2ª ordem 1ª ordem Carga (Std.all)
DYS D1_INIB, D2_MEMO, D3_FLEX 0.85, 0.86, 0.96
REG J1_REG, J2_REGP 0.90, 0.90
SUPPORT A1_APOI, A2_JUST, A3_RECO 0.99, 0.98, 0.88

4.2.2.3 Relações Entre Fatores (covariâncias padronizadas)

Relação Estimativa (Std.all) p
DYS ↔︎ REG 0.968 < .001
DYS ↔︎ SUPPORT −0.164 .076
REG ↔︎ SUPPORT −0.296 .003
  • Disfunções cognitivas:
    • D11 = 0.76, D22 = 0.90, D34 = 0.90
  • Jornada individual:
    • J12–J25 variando de 0.77 a 0.84
  • Acomodações:
    • A14–A43 variando de 0.71 a 0.86
  • Performance:
    • P23 = 0.81, P35 = 0.81; P26 (0.42) foi o único com carga mais fraca.

Essas correlações indicam que maiores níveis de disfunções cognitivas estão fortemente associados a dificuldades de regulação, enquanto maior suporte percebido tende a se associar a menores disfunções e melhor regulação emocional e comportamental.

4.2.2.4 Efeitos sobre Desempenho (regressões padronizadas)

As regressões dos fatores de performance (individual e social) não apresentaram significância estatística:

Regressão Estimativa (Std.all) p Interpretação
P_TASK ~ DYS −0.007 .995 n.s.
P_TASK ~ REG −0.073 .947 n.s.
P_TASK ~ SUPPORT 0.027 .875 n.s.
P_SOC ~ DYS 2.422 .437 n.s.
P_SOC ~ REG −2.834 .385 n.s.
P_SOC ~ SUPPORT −0.099 .837 n.s.

Esses resultados sugerem que, nesta amostra, as variações em disfunções, regulação e suporte não impactaram significativamente os indicadores de performance modelados.

4.2.3 Visualização do modelo:

semPaths(fitH1C, "std", layout = "tree", edge.label.cex = 0.8,
           sizeMan = 10, sizeLat = 12, nCharNodes = 7)

items <- list(
  D1_INIB = c("IC1","IC4","IC6"),
  D2_MEMO = c("WM1","WM2","WM4"),
  D3_FLEX = c("CF1","CF4","CF5"),
  J1_REG  = c("SR2","SR3","SR6"),
  J2_REGP = c("CL1","CL4","CL5"),
  A1_APOI = c("IES4","IES5","OSN1"),
  A2_JUST = c("FHT1","FHT3","FHT4"),
  A3_RECO = c("PR1","PR2","PR3"),
  P_TASK  = c("CP3","CP4","CP6"),
  P_SOC   = c("TP4","TP5")
)

g     <- semPlot::semPlotModel(fitH1C)     # ou fit_free
nodes <- g@Vars$name

place_fan <- function(names_vec, x_center, y, width = 0.6){
  n  <- length(names_vec)
  xs <- if (n == 1L) rep(x_center, 1) else seq(x_center - width/2, x_center + width/2, length.out = n)
  data.frame(name = names_vec, x = xs, y = rep(y, n), stringsAsFactors = FALSE)
}

# ---------- parâmetros ----------
w3   <- 1.55   # base (1ª ordem) com 3 itens
w2   <- 1.05   # base com 2 itens (não temos aqui, mas fica)
wtop <- 1.05   # topo (P_TASK/P_SOC)
xSpan <- 16    # largura total das colunas dos 8 fatores 1ª ordem

# ---------- níveis ----------
p_task_x <- -2; p_soc_x <- 2

lvl4 <- rbind(
  place_fan("P_TASK", p_task_x, 4, width = 0),
  place_fan("P_SOC" , p_soc_x , 4, width = 0)
)
lvl5 <- rbind(
  place_fan(items$P_TASK, p_task_x, 5, width = wtop),
  place_fan(items$P_SOC , p_soc_x , 5, width = wtop)
)

# 2ª ordem
lvl3 <- rbind(
  place_fan("DYS"    , -4, 3, width = 0),
  place_fan("REG"    ,  0, 3, width = 0),
  place_fan("SUPPORT",  4, 3, width = 0)
)

# 1ª ordem (colunas)
first_order <- c("D1_INIB","D2_MEMO","D3_FLEX","J1_REG","J2_REGP","A1_APOI","A2_JUST","A3_RECO")
x_seq <- seq(-xSpan/2, xSpan/2, length.out = length(first_order))
lvl2 <- do.call(rbind, Map(function(nm, x) place_fan(nm, x, 2, width = 0), first_order, x_seq))

width_map <- sapply(first_order, function(nm) if (length(items[[nm]]) == 3) w3 else w2)
lvl1_list <- Map(function(nm, x, w) place_fan(items[[nm]], x, 1, width = w),
                 first_order, x_seq, width_map)
lvl1 <- do.call(rbind, lvl1_list)

coords <- rbind(lvl1, lvl2, lvl3, lvl4, lvl5)
coords$x <- coords$x - mean(coords$x)

# reordena na ordem esperada pelo semPaths
coords <- coords[match(nodes, coords$name), c("x","y")]


is_item   <- nodes %in% unlist(items)                
is_latent <- !is_item
label_cex <- ifelse(is_item, 0.70, 1.05)

p_pa <- semPaths(
  fitH1C,                               
  whatLabels     = "std",
  style          = "ram",
  layout         = as.matrix(coords),    
  residuals      = FALSE,
  intercepts     = FALSE,
  curvePivot     = TRUE,
  nCharNodes     = 0,                    
  nCharEdges     = 0,

  # >>> ajustes de legibilidade <<<
  sizeLat        = 15.8,                  # construtos maiores (círculos)
  sizeMan        = 8.0,                  # itens menores
  node.width     = 0.32,                 # caixas estreitas (evita colisão)
  label.cex      = label_cex,            # **latentes grandes, itens pequenos**
  edge.label.cex = 0.35                  # números nas setas discretos
)

5 Comparação entre grupos

Essa análise permite avaliar se os construtos são interpretados da mesma forma pelos dois grupos e se eventuais diferenças observadas refletem variações reais nos construtos, e não diferenças de mensuração.

# dicionário de rótulos do questionário
rotulo_nt   <- "Não tenho nenhum tipo de neurodivergência"
rotulo_ans  <- "Tenho um transtorno de ansiedade (por exemplo, TAG, etc.)"
rotulo_conc <- "Tenho um distúrbio de concentração e/ou memória (por exemplo, TDAH, etc.)"
rotulo_tea  <- "Tenho autismo/um transtorno do espectro autista (por exemplo, Asperger, etc.)"
rotulo_hum  <- "Tenho um distúrbio de humor ou emocional (por exemplo, depressão, transtorno bipolar, etc.)"
rotulo_dis  <- "Tenho diferenças de aprendizagem (por exemplo, disléxico, dislexia, etc.)"
rotulo_out  <- "Outros..."

norm <- function(x) {
  x %>%
    str_replace_all("\n", " ") %>%
    str_squish() %>%
    str_trim() %>%
    stringi::stri_trans_general("Latin-ASCII")
}

dados <- data %>%
  mutate(
    neurodivergence_raw  = as.character(neurodivergence),
    neurodivergence_norm = norm(neurodivergence_raw)
  )

rotulos_norm <- norm(c(rotulo_nt, rotulo_ans, rotulo_conc, rotulo_tea, rotulo_hum, rotulo_dis, rotulo_out))
names(rotulos_norm) <- c("NT","ANS","CONC","TEA","HUM","DIS","OUT")

sep_regex <- "\\s*[;|/,]\\s*"
detect_has <- function(x, target) {
  any_of <- paste0("(^|", sep_regex, ")", str_replace_all(target, "([\\W])", "\\\\\\1"), "($|", sep_regex, ")")
  str_detect(x, any_of)
}

dados <- dados %>%
  mutate(
    has_NT   = detect_has(neurodivergence_norm, rotulos_norm["NT"]),
    has_ANS  = detect_has(neurodivergence_norm, rotulos_norm["ANS"]),
    has_CONC = detect_has(neurodivergence_norm, rotulos_norm["CONC"]),
    has_TEA  = detect_has(neurodivergence_norm, rotulos_norm["TEA"]),
    has_HUM  = detect_has(neurodivergence_norm, rotulos_norm["HUM"]),
    has_DIS  = detect_has(neurodivergence_norm, rotulos_norm["DIS"]),
    has_OUT  = detect_has(neurodivergence_norm, rotulos_norm["OUT"])
  ) %>%
  mutate(
    GROUP = case_when(
      is.na(neurodivergence_raw) ~ NA_character_,
      has_NT & !(has_ANS|has_CONC|has_TEA|has_HUM|has_DIS|has_OUT) ~ "Neurotípico",
      TRUE ~ "Neurodivergente"
    ) %>% factor(levels = c("Neurotípico","Neurodivergente")),
    ND_TYPE = case_when(
      is.na(neurodivergence_raw) ~ NA_character_,
      has_NT & !(has_ANS|has_CONC|has_TEA|has_HUM|has_DIS|has_OUT) ~ "Neurotípico",
      has_TEA  ~ "TEA",
      has_CONC ~ "Concentração/TDAH",
      has_DIS  ~ "Diferenças de aprendizagem",
      has_ANS  ~ "Ansiedade",
      has_HUM  ~ "Humor/Emocional",
      has_OUT  ~ "Outros",
      TRUE     ~ "Outros"
    ) %>% factor(levels = c("Neurotípico","TEA","Concentração/TD AH",
                            "Diferenças de aprendizagem","Ansiedade","Humor/Emocional","Outros"))
  )

dados <- bind_cols(dados, df_items_new)

print(table(dados$GROUP, useNA = "ifany"))
## 
##     Neurotípico Neurodivergente 
##              87              61
print(table(dados$ND_TYPE, useNA = "ifany"))
## 
##                Neurotípico                        TEA 
##                         87                         16 
##         Concentração/TD AH Diferenças de aprendizagem 
##                          0                          1 
##                  Ansiedade            Humor/Emocional 
##                         10                          0 
##                     Outros                       <NA> 
##                          3                         31

5.1 Descrição da amostra

A amostra é composta por 148 participantes, sendo 87 (58,8%) identificados como neurotípicos e 61 (41,2%) como neurodivergentes. Entre os neurodivergentes, predominam pessoas com dificuldades de concentração e/ou TDAH (31), seguidas por indivíduos com Transtorno do Espectro Autista – TEA (16), transtornos de ansiedade (10), outros tipos de neurodivergência (3) e diferenças de aprendizagem (1). Nenhum participante relatou distúrbios de humor ou emocionais. Esses dados evidenciam uma presença expressiva de profissionais neurodivergentes na amostra, com destaque para condições relacionadas à atenção e ao espectro autista.

5.2 Resultados

fit_free <- sem(model_H1P, data = dados, group = "GROUP")
fit_equal_paths <- sem(
  model_H1P, data = dados, group = "GROUP",
  group.equal = c("loadings", "regressions")
)
anova(fit_free, fit_equal_paths)
fitMeasures(fit_free,        c("cfi","rmsea","srmr"))
##   cfi rmsea  srmr 
## 0.835 0.094 0.084
fitMeasures(fit_equal_paths, c("cfi","rmsea","srmr"))
##   cfi rmsea  srmr 
## 0.836 0.092 0.088
summary(fit_free, standardized = TRUE, fit.measures = TRUE)
## lavaan 0.6-20 ended normally after 374 iterations
## 
##   Estimator                                         ML
##   Optimization method                           NLMINB
##   Number of model parameters                       210
## 
##   Number of observations per group:                   
##     Neurotípico                                     87
##     Neurodivergente                                 61
## 
## Model Test User Model:
##                                                       
##   Test statistic                              1191.845
##   Degrees of freedom                               718
##   P-value (Chi-square)                           0.000
##   Test statistic for each group:
##     Neurotípico                                553.092
##     Neurodivergente                            638.753
## 
## Model Test Baseline Model:
## 
##   Test statistic                              3685.325
##   Degrees of freedom                               812
##   P-value                                        0.000
## 
## User Model versus Baseline Model:
## 
##   Comparative Fit Index (CFI)                    0.835
##   Tucker-Lewis Index (TLI)                       0.813
## 
## Loglikelihood and Information Criteria:
## 
##   Loglikelihood user model (H0)              -4283.246
##   Loglikelihood unrestricted model (H1)      -3687.324
##                                                       
##   Akaike (AIC)                                8986.493
##   Bayesian (BIC)                              9615.907
##   Sample-size adjusted Bayesian (SABIC)       8951.335
## 
## Root Mean Square Error of Approximation:
## 
##   RMSEA                                          0.094
##   90 Percent confidence interval - lower         0.085
##   90 Percent confidence interval - upper         0.104
##   P-value H_0: RMSEA <= 0.050                    0.000
##   P-value H_0: RMSEA >= 0.080                    0.993
## 
## Standardized Root Mean Square Residual:
## 
##   SRMR                                           0.084
## 
## Parameter Estimates:
## 
##   Standard errors                             Standard
##   Information                                 Expected
##   Information saturated (h1) model          Structured
## 
## 
## Group 1 [Neurotípico]:
## 
## Latent Variables:
##                    Estimate  Std.Err  z-value  P(>|z|)   Std.lv  Std.all
##   D1_INIB =~                                                            
##     IC1               1.000                               0.559    0.804
##     IC4               0.839    0.163    5.137    0.000    0.469    0.676
##     IC6               0.667    0.150    4.449    0.000    0.373    0.558
##   D2_MEMO =~                                                            
##     WM1               1.000                               0.695    0.871
##     WM2               1.075    0.131    8.221    0.000    0.747    0.851
##     WM4               0.696    0.118    5.914    0.000    0.484    0.615
##   D3_FLEX =~                                                            
##     CF1               1.000                               0.628    0.729
##     CF4               0.962    0.138    6.965    0.000    0.605    0.841
##     CF5               0.737    0.137    5.397    0.000    0.463    0.627
##   J1_REG =~                                                             
##     SR2               1.000                               0.582    0.643
##     SR3               1.067    0.206    5.189    0.000    0.621    0.740
##     SR6               1.090    0.223    4.898    0.000    0.635    0.674
##   J2_REGP =~                                                            
##     CL1               1.000                               0.820    0.799
##     CL4               0.896    0.121    7.374    0.000    0.734    0.802
##     CL5               0.726    0.109    6.627    0.000    0.595    0.719
##   A1_APOI =~                                                            
##     IES4              1.000                               0.910    0.814
##     IES5              0.892    0.092    9.727    0.000    0.811    0.870
##     OSN1              0.948    0.101    9.388    0.000    0.862    0.850
##   A2_JUST =~                                                            
##     FHT1              1.000                               0.979    0.897
##     FHT3              0.948    0.079   11.998    0.000    0.929    0.885
##     FHT4              0.697    0.094    7.385    0.000    0.683    0.672
##   A3_RECO =~                                                            
##     PR1               1.000                               0.850    0.901
##     PR2               0.949    0.084   11.298    0.000    0.807    0.867
##     PR3               0.984    0.095   10.395    0.000    0.837    0.830
##   P_TASK =~                                                             
##     CP3               1.000                               0.655    0.820
##     CP4               1.043    0.135    7.706    0.000    0.684    0.984
##     CP6               0.610    0.131    4.640    0.000    0.400    0.475
##   P_SOC =~                                                              
##     TP4               1.000                               0.746    0.693
##     TP5               0.758    0.203    3.727    0.000    0.566    0.784
##   DYS =~                                                                
##     D1_INIB           1.000                               0.676    0.676
##     D2_MEMO           1.216    0.293    4.143    0.000    0.661    0.661
##     D3_FLEX           1.525    0.342    4.452    0.000    0.916    0.916
##   REG =~                                                                
##     J1_REG            1.000                               0.851    0.851
##     J2_REGP           1.388    0.303    4.575    0.000    0.839    0.839
##   SUPPORT =~                                                            
##     A1_APOI           1.000                               0.992    0.992
##     A2_JUST           1.048    0.115    9.083    0.000    0.966    0.966
##     A3_RECO           0.821    0.100    8.218    0.000    0.871    0.871
## 
## Regressions:
##                    Estimate  Std.Err  z-value  P(>|z|)   Std.lv  Std.all
##   P_TASK ~                                                              
##     DYS              -2.549    3.380   -0.754    0.451   -1.469   -1.469
##     REG               1.434    2.716    0.528    0.598    1.084    1.084
##     SUPPORT           0.093    0.272    0.343    0.732    0.128    0.128
##   P_SOC ~                                                               
##     DYS               0.407    2.428    0.167    0.867    0.206    0.206
##     REG              -0.989    1.987   -0.498    0.619   -0.657   -0.657
##     SUPPORT           0.127    0.214    0.591    0.555    0.153    0.153
## 
## Covariances:
##                    Estimate  Std.Err  z-value  P(>|z|)   Std.lv  Std.all
##   DYS ~~                                                                
##     REG               0.176    0.052    3.369    0.001    0.939    0.939
##     SUPPORT          -0.074    0.046   -1.603    0.109   -0.217   -0.217
##   REG ~~                                                                
##     SUPPORT          -0.166    0.068   -2.443    0.015   -0.370   -0.370
##  .P_TASK ~~                                                             
##    .P_SOC             0.069    0.086    0.806    0.420    0.208    0.208
## 
## Intercepts:
##                    Estimate  Std.Err  z-value  P(>|z|)   Std.lv  Std.all
##    .IC1               1.977    0.074   26.555    0.000    1.977    2.847
##    .IC4               1.713    0.074   23.042    0.000    1.713    2.470
##    .IC6               1.782    0.072   24.868    0.000    1.782    2.666
##    .WM1               2.230    0.086   26.064    0.000    2.230    2.794
##    .WM2               2.149    0.094   22.836    0.000    2.149    2.448
##    .WM4               2.046    0.084   24.264    0.000    2.046    2.601
##    .CF1               1.943    0.092   21.008    0.000    1.943    2.252
##    .CF4               1.989    0.077   25.793    0.000    1.989    2.765
##    .CF5               1.874    0.079   23.623    0.000    1.874    2.533
##    .SR2               2.333    0.097   24.035    0.000    2.333    2.577
##    .SR3               2.276    0.090   25.273    0.000    2.276    2.710
##    .SR6               2.425    0.101   24.005    0.000    2.425    2.574
##    .CL1               2.529    0.110   22.977    0.000    2.529    2.463
##    .CL4               2.264    0.098   23.070    0.000    2.264    2.473
##    .CL5               2.126    0.089   23.962    0.000    2.126    2.569
##    .IES4              3.391    0.120   28.293    0.000    3.391    3.033
##    .IES5              3.540    0.100   35.421    0.000    3.540    3.798
##    .OSN1              3.126    0.109   28.734    0.000    3.126    3.081
##    .FHT1              3.494    0.117   29.846    0.000    3.494    3.200
##    .FHT3              3.506    0.112   31.170    0.000    3.506    3.342
##    .FHT4              3.529    0.109   32.419    0.000    3.529    3.476
##    .PR1               3.563    0.101   35.236    0.000    3.563    3.778
##    .PR2               3.667    0.100   36.753    0.000    3.667    3.940
##    .PR3               3.379    0.108   31.255    0.000    3.379    3.351
##    .CP3               3.874    0.086   45.192    0.000    3.874    4.845
##    .CP4               4.000    0.074   53.698    0.000    4.000    5.757
##    .CP6               3.540    0.090   39.240    0.000    3.540    4.207
##    .TP4               4.034    0.115   34.944    0.000    4.034    3.746
##    .TP5               4.092    0.077   52.914    0.000    4.092    5.673
## 
## Variances:
##                    Estimate  Std.Err  z-value  P(>|z|)   Std.lv  Std.all
##    .IC1               0.170    0.054    3.153    0.002    0.170    0.353
##    .IC4               0.261    0.053    4.912    0.000    0.261    0.543
##    .IC6               0.308    0.054    5.749    0.000    0.308    0.689
##    .WM1               0.153    0.049    3.108    0.002    0.153    0.241
##    .WM2               0.212    0.060    3.546    0.000    0.212    0.275
##    .WM4               0.385    0.064    5.999    0.000    0.385    0.622
##    .CF1               0.349    0.066    5.291    0.000    0.349    0.469
##    .CF4               0.151    0.040    3.751    0.000    0.151    0.293
##    .CF5               0.332    0.057    5.871    0.000    0.332    0.607
##    .SR2               0.481    0.089    5.431    0.000    0.481    0.587
##    .SR3               0.320    0.070    4.549    0.000    0.320    0.453
##    .SR6               0.485    0.093    5.213    0.000    0.485    0.546
##    .CL1               0.381    0.084    4.513    0.000    0.381    0.362
##    .CL4               0.299    0.067    4.465    0.000    0.299    0.357
##    .CL5               0.331    0.062    5.357    0.000    0.331    0.483
##    .IES4              0.422    0.075    5.636    0.000    0.422    0.338
##    .IES5              0.211    0.042    5.000    0.000    0.211    0.243
##    .OSN1              0.286    0.054    5.295    0.000    0.286    0.278
##    .FHT1              0.233    0.052    4.455    0.000    0.233    0.196
##    .FHT3              0.238    0.050    4.733    0.000    0.238    0.217
##    .FHT4              0.565    0.091    6.197    0.000    0.565    0.548
##    .PR1               0.167    0.041    4.061    0.000    0.167    0.188
##    .PR2               0.214    0.045    4.807    0.000    0.214    0.248
##    .PR3               0.317    0.060    5.316    0.000    0.317    0.311
##    .CP3               0.210    0.055    3.795    0.000    0.210    0.328
##    .CP4               0.015    0.049    0.311    0.756    0.015    0.032
##    .CP6               0.548    0.085    6.442    0.000    0.548    0.774
##    .TP4               0.603    0.164    3.667    0.000    0.603    0.520
##    .TP5               0.200    0.084    2.383    0.017    0.200    0.385
##    .D1_INIB           0.169    0.058    2.930    0.003    0.543    0.543
##    .D2_MEMO           0.273    0.069    3.939    0.000    0.564    0.564
##    .D3_FLEX           0.063    0.046    1.371    0.170    0.160    0.160
##    .J1_REG            0.093    0.052    1.809    0.070    0.275    0.275
##    .J2_REGP           0.200    0.084    2.372    0.018    0.297    0.297
##    .A1_APOI           0.013    0.042    0.299    0.765    0.015    0.015
##    .A2_JUST           0.064    0.051    1.256    0.209    0.067    0.067
##    .A3_RECO           0.174    0.049    3.554    0.000    0.241    0.241
##    .P_TASK            0.284    0.141    2.022    0.043    0.662    0.662
##    .P_SOC             0.387    0.155    2.498    0.012    0.696    0.696
##     DYS               0.143    0.055    2.591    0.010    1.000    1.000
##     REG               0.246    0.094    2.622    0.009    1.000    1.000
##     SUPPORT           0.815    0.184    4.427    0.000    1.000    1.000
## 
## 
## Group 2 [Neurodivergente]:
## 
## Latent Variables:
##                    Estimate  Std.Err  z-value  P(>|z|)   Std.lv  Std.all
##   D1_INIB =~                                                            
##     IC1               1.000                               0.536    0.573
##     IC4               1.115    0.276    4.035    0.000    0.598    0.745
##     IC6               1.249    0.302    4.140    0.000    0.670    0.795
##   D2_MEMO =~                                                            
##     WM1               1.000                               0.970    0.914
##     WM2               0.934    0.096    9.768    0.000    0.906    0.877
##     WM4               0.682    0.085    8.032    0.000    0.661    0.789
##   D3_FLEX =~                                                            
##     CF1               1.000                               0.943    0.898
##     CF4               0.867    0.089    9.730    0.000    0.818    0.868
##     CF5               1.131    0.105   10.778    0.000    1.067    0.910
##   J1_REG =~                                                             
##     SR2               1.000                               0.773    0.798
##     SR3               0.935    0.163    5.741    0.000    0.723    0.728
##     SR6               1.113    0.176    6.333    0.000    0.861    0.798
##   J2_REGP =~                                                            
##     CL1               1.000                               0.698    0.749
##     CL4               1.094    0.184    5.940    0.000    0.763    0.799
##     CL5               0.959    0.164    5.846    0.000    0.669    0.786
##   A1_APOI =~                                                            
##     IES4              1.000                               0.711    0.825
##     IES5              0.950    0.120    7.932    0.000    0.675    0.826
##     OSN1              0.933    0.129    7.249    0.000    0.664    0.778
##   A2_JUST =~                                                            
##     FHT1              1.000                               0.742    0.904
##     FHT3              1.001    0.095   10.581    0.000    0.743    0.884
##     FHT4              0.969    0.125    7.775    0.000    0.719    0.762
##   A3_RECO =~                                                            
##     PR1               1.000                               0.600    0.729
##     PR2               1.138    0.180    6.336    0.000    0.683    0.835
##     PR3               1.243    0.186    6.670    0.000    0.746    0.885
##   P_TASK =~                                                             
##     CP3               1.000                               0.783    1.106
##     CP4               0.676    0.139    4.874    0.000    0.530    0.797
##     CP6               0.266    0.123    2.159    0.031    0.208    0.282
##   P_SOC =~                                                              
##     TP4               1.000                               0.768    0.773
##     TP5               0.795    0.270    2.940    0.003    0.610    0.775
##   DYS =~                                                                
##     D1_INIB           1.000                               0.784    0.784
##     D2_MEMO           1.969    0.519    3.797    0.000    0.854    0.854
##     D3_FLEX           2.058    0.531    3.873    0.000    0.918    0.918
##   REG =~                                                                
##     J1_REG            1.000                               0.826    0.826
##     J2_REGP           0.903    0.194    4.650    0.000    0.827    0.827
##   SUPPORT =~                                                            
##     A1_APOI           1.000                               1.023    1.023
##     A2_JUST           1.020    0.115    8.903    0.000    1.000    1.000
##     A3_RECO           0.721    0.125    5.756    0.000    0.874    0.874
## 
## Regressions:
##                    Estimate  Std.Err  z-value  P(>|z|)   Std.lv  Std.all
##   P_TASK ~                                                              
##     DYS              -7.666   28.739   -0.267    0.790   -4.118   -4.118
##     REG               5.288   18.929    0.279    0.780    4.315    4.315
##     SUPPORT           0.822    3.072    0.268    0.789    0.764    0.764
##   P_SOC ~                                                               
##     DYS             -11.981   42.997   -0.279    0.781   -6.561   -6.561
##     REG               7.825   28.319    0.276    0.782    6.509    6.509
##     SUPPORT           1.544    4.597    0.336    0.737    1.462    1.462
## 
## Covariances:
##                    Estimate  Std.Err  z-value  P(>|z|)   Std.lv  Std.all
##   DYS ~~                                                                
##     REG               0.269    0.090    2.986    0.003    1.001    1.001
##     SUPPORT           0.007    0.043    0.163    0.871    0.023    0.023
##   REG ~~                                                                
##     SUPPORT          -0.074    0.073   -1.014    0.311   -0.160   -0.160
##  .P_TASK ~~                                                             
##    .P_SOC             0.674    2.226    0.303    0.762    0.572    0.572
## 
## Intercepts:
##                    Estimate  Std.Err  z-value  P(>|z|)   Std.lv  Std.all
##    .IC1               2.902    0.120   24.219    0.000    2.902    3.101
##    .IC4               2.508    0.103   24.423    0.000    2.508    3.127
##    .IC6               2.492    0.108   23.114    0.000    2.492    2.959
##    .WM1               3.295    0.136   24.252    0.000    3.295    3.105
##    .WM2               3.311    0.132   25.039    0.000    3.311    3.206
##    .WM4               3.230    0.107   30.117    0.000    3.230    3.856
##    .CF1               3.246    0.134   24.133    0.000    3.246    3.090
##    .CF4               3.115    0.121   25.809    0.000    3.115    3.304
##    .CF5               3.344    0.150   22.289    0.000    3.344    2.854
##    .SR2               3.492    0.124   28.152    0.000    3.492    3.604
##    .SR3               3.115    0.127   24.489    0.000    3.115    3.135
##    .SR6               3.557    0.138   25.744    0.000    3.557    3.296
##    .CL1               3.426    0.119   28.731    0.000    3.426    3.679
##    .CL4               3.197    0.122   26.142    0.000    3.197    3.347
##    .CL5               3.213    0.109   29.471    0.000    3.213    3.773
##    .IES4              3.246    0.110   29.414    0.000    3.246    3.766
##    .IES5              3.230    0.105   30.846    0.000    3.230    3.949
##    .OSN1              3.164    0.109   28.977    0.000    3.164    3.710
##    .FHT1              3.311    0.105   31.516    0.000    3.311    4.035
##    .FHT3              3.180    0.108   29.579    0.000    3.180    3.787
##    .FHT4              3.279    0.121   27.151    0.000    3.279    3.476
##    .PR1               3.246    0.105   30.806    0.000    3.246    3.944
##    .PR2               3.410    0.105   32.582    0.000    3.410    4.172
##    .PR3               3.246    0.108   30.086    0.000    3.246    3.852
##    .CP3               4.082    0.091   45.020    0.000    4.082    5.764
##    .CP4               4.131    0.085   48.542    0.000    4.131    6.215
##    .CP6               3.475    0.094   36.786    0.000    3.475    4.710
##    .TP4               3.787    0.127   29.765    0.000    3.787    3.811
##    .TP5               3.738    0.101   37.083    0.000    3.738    4.748
## 
## Variances:
##                    Estimate  Std.Err  z-value  P(>|z|)   Std.lv  Std.all
##    .IC1               0.588    0.119    4.934    0.000    0.588    0.672
##    .IC4               0.286    0.072    3.950    0.000    0.286    0.445
##    .IC6               0.261    0.077    3.363    0.001    0.261    0.368
##    .WM1               0.186    0.062    3.003    0.003    0.186    0.165
##    .WM2               0.247    0.065    3.807    0.000    0.247    0.231
##    .WM4               0.265    0.056    4.720    0.000    0.265    0.378
##    .CF1               0.214    0.055    3.879    0.000    0.214    0.194
##    .CF4               0.220    0.051    4.333    0.000    0.220    0.247
##    .CF5               0.235    0.065    3.611    0.000    0.235    0.171
##    .SR2               0.340    0.086    3.951    0.000    0.340    0.363
##    .SR3               0.464    0.102    4.531    0.000    0.464    0.470
##    .SR6               0.424    0.107    3.960    0.000    0.424    0.364
##    .CL1               0.381    0.087    4.400    0.000    0.381    0.439
##    .CL4               0.329    0.083    3.952    0.000    0.329    0.361
##    .CL5               0.278    0.068    4.096    0.000    0.278    0.383
##    .IES4              0.237    0.049    4.831    0.000    0.237    0.319
##    .IES5              0.212    0.044    4.823    0.000    0.212    0.318
##    .OSN1              0.287    0.056    5.084    0.000    0.287    0.394
##    .FHT1              0.123    0.030    4.052    0.000    0.123    0.183
##    .FHT3              0.154    0.035    4.385    0.000    0.154    0.218
##    .FHT4              0.373    0.073    5.119    0.000    0.373    0.419
##    .PR1               0.317    0.065    4.855    0.000    0.317    0.469
##    .PR2               0.202    0.049    4.118    0.000    0.202    0.303
##    .PR3               0.154    0.046    3.324    0.001    0.154    0.217
##    .CP3              -0.112    0.115   -0.972    0.331   -0.112   -0.223
##    .CP4               0.161    0.059    2.723    0.006    0.161    0.365
##    .CP6               0.501    0.090    5.563    0.000    0.501    0.921
##    .TP4               0.397    0.201    1.979    0.048    0.397    0.403
##    .TP5               0.247    0.127    1.954    0.051    0.247    0.399
##    .D1_INIB           0.111    0.058    1.915    0.055    0.385    0.385
##    .D2_MEMO           0.254    0.085    2.994    0.003    0.270    0.270
##    .D3_FLEX           0.140    0.065    2.151    0.031    0.157    0.157
##    .J1_REG            0.190    0.082    2.330    0.020    0.318    0.318
##    .J2_REGP           0.154    0.068    2.251    0.024    0.317    0.317
##    .A1_APOI          -0.023    0.029   -0.814    0.416   -0.046   -0.046
##    .A2_JUST           0.000    0.028    0.014    0.989    0.001    0.001
##    .A3_RECO           0.085    0.035    2.455    0.014    0.235    0.235
##    .P_TASK            0.982    1.515    0.648    0.517    1.601    1.601
##    .P_SOC             1.418    3.402    0.417    0.677    2.404    2.404
##     DYS               0.177    0.091    1.949    0.051    1.000    1.000
##     REG               0.408    0.145    2.819    0.005    1.000    1.000
##     SUPPORT           0.529    0.133    3.989    0.000    1.000    1.000
fit_scalar <- sem(
  model_H1P, data = dados, group = "GROUP",
  group.equal = c("loadings","intercepts")
)

parameterEstimates(fit_scalar, standardized = TRUE) %>%
  dplyr::filter(op == "~1" & grepl("CORE|SUPPORT|P_TASK|P_SOC", lhs))
# -----------------------------
# Escalas compostas + correlação (após CFA)
# -----------------------------
pick_cols <- function(df, pattern) df[, grep(pattern, names(df), perl = TRUE), drop = FALSE]

dados$Dysfunctions   <- rowMeans(cbind(pick_cols(dados, "^(IC|WM|CF)")),              na.rm = TRUE)
dados$Accommodations <- rowMeans(cbind(pick_cols(dados, "^(IES|OSN|FHT|PR|VL)")),     na.rm = TRUE)
dados$Journey        <- rowMeans(cbind(pick_cols(dados, "^(SR|CL|AD)")),              na.rm = TRUE)
dados$Performance    <- rowMeans(cbind(pick_cols(dados, "^(IP|CP|TP)")),              na.rm = TRUE)

summary(dados[, c("Dysfunctions","Accommodations","Journey","Performance")])
##   Dysfunctions   Accommodations     Journey       Performance   
##  Min.   :1.000   Min.   :1.312   Min.   :1.000   Min.   :2.500  
##  1st Qu.:1.926   1st Qu.:2.812   1st Qu.:2.000   1st Qu.:3.667  
##  Median :2.412   Median :3.406   Median :2.591   Median :3.889  
##  Mean   :2.474   Mean   :3.318   Mean   :2.662   Mean   :3.888  
##  3rd Qu.:3.015   3rd Qu.:3.812   3rd Qu.:3.273   3rd Qu.:4.111  
##  Max.   :4.235   Max.   :5.000   Max.   :4.545   Max.   :5.000
psych::describe(dados[, c("Dysfunctions","Accommodations","Journey","Performance")])
corr_results <- psych::corr.test(
  dados[, c("Dysfunctions","Accommodations","Journey","Performance")],
  use = "pairwise.complete.obs"
)
corr_results$r
##                Dysfunctions Accommodations    Journey Performance
## Dysfunctions      1.0000000     -0.1212619  0.8521432  -0.3631787
## Accommodations   -0.1212619      1.0000000 -0.1797537   0.1641852
## Journey           0.8521432     -0.1797537  1.0000000  -0.4399907
## Performance      -0.3631787      0.1641852 -0.4399907   1.0000000
corr_results$p
##                Dysfunctions Accommodations      Journey  Performance
## Dysfunctions   0.000000e+00     0.14206884 4.019976e-42 2.285849e-05
## Accommodations 1.420688e-01     0.00000000 8.642608e-02 9.230061e-02
## Journey        6.699960e-43     0.02880869 0.000000e+00 1.100477e-07
## Performance    5.714621e-06     0.04615030 2.200954e-08 0.000000e+00
corr_results$ci
vars <- c("Dysfunctions","Accommodations","Journey","Performance")
corr_matrix <- as.matrix(round(corr_results$r[vars, vars], 2))

5.2.1 Comparação de modelos (NT vs. ND)

  • Teste de diferença de qui-quadrado: Δχ²(30)=27.84, p = 0.579não há piora ao igualar cargas + regressões entre grupos. A estrutura (mensuração + caminhos) é comparável entre Neurotípicos (NT) e Neurodivergentes (ND).

5.2.2 Ajuste global

  • Modelo livre: CFI = 0.835, RMSEA = 0.094 (IC90% 0.085–0.104), SRMR = 0.084.
  • Modelo restrito (igualado): CFI = 0.836, RMSEA = 0.092, SRMR = 0.088.
  • Ajuste mediano/abaixo do ideal (CFI < 0.90; RMSEA > 0.08), porém estável ao impor restrições → indício de invariância aproximada, mas com misfit remanescente.

5.2.3 Resultados por grupo (modelo livre):

5.2.3.1 Mensuração:

  • NT: fatores de 1ª ordem com cargas moderadas-altas (≈0.57–0.90+); 2ª ordem bem definidas (ex.: DYS→D3_FLEX ≈ 0.92; REG→J1/J2 ≈ 0.85).
  • ND: padrão semelhante, cargas altas (≈0.73–0.91); 2ª ordem fortes (ex.: DYS→D3_FLEX ≈ 0.92; REG→J1/J2 ≈ 0.83).

5.2.3.2 Covariâncias de 2ª ordem:

  • NT: DYS–REG ≈ 0.94 (p < .01), muito alta; REG–SUPPORT ≈ −0.37 (p = .015), negativa moderada; DYS–SUPPORT negativa, marginal (p ≈ .109).
  • ND: DYS–REG ≈ 1.00 (p < .01), quase colinearidade; correlações com SUPPORT fracas/n.s.

5.2.3.3 Efeitos sobre desempenho:

  • P_TASK e P_SOC ~ DYS, REG, SUPPORT: não significativos em ambos os grupos (coeficientes instáveis; ICs largos).
  • Poder estatístico limitado (NT=87; ND=61) + colinearidade DYS–REG dificultam detectar efeitos.

5.2.4 Escalas compostas

  • Tendência central
    • Dysfunctions: média 2.47 (IQR ~ 1.93–3.02)
    • Accommodations: média 3.32 (IQR ~ 2.81–3.81)
    • Journey: média 2.66 (IQR ~ 2.00–3.27)
    • Performance: média 3.89 (IQR ~ 3.67–4.11)

5.2.4.1 Correlações entre construtos:

  • Dysfunctions × Journey: r = 0.85, p < 1e−42 → forte e positiva.
  • Dysfunctions × Performance: r = −0.36, p ≈ 2.3e−5 → moderada e negativa.
  • Journey × Performance: r = −0.44, p ≈ 2.2e−8 → moderada e negativa.
  • Accommodations × Performance: r = 0.16, p ≈ 0.09 → fraca, tendência positiva (n.s.).
  • Dysfunctions × Accommodations: r = −0.12, p = 0.14 → fraca, n.s.
  • Accommodations × Journey: r = −0.18, p ≈ 0.029 → fraca e negativa.

5.2.4.2 Visualização das correlações

ggcorrplot(
  corr_matrix,
  type = "full",
  lab = TRUE,
  lab_size = 4,
  tl.cex = 12,
  tl.srt = 45,
  colors = c("#B2182B","white","#2166AC"),
  outline.color = "gray60"
) +
  labs(
    title = "Correlação entre Construtos (4×4)",
    subtitle = "Dysfunctions • Accommodations • Journey • Performance"
  ) +
  theme_minimal(base_size = 12) +
  theme(
    plot.title = element_text(face = "bold", hjust = 0.5),
    plot.subtitle = element_text(hjust = 0.5),
    axis.title = element_blank(),
    axis.text.x = element_text(angle = 45, vjust = 1, hjust = 1)
  )

6 Teste deInvariância Multigrupo:

Esta etapa avalia se o modelo estrutural se comporta de forma equivalente entre os grupos de profissionais neurotípicos (NT) e neurodivergentes (ND).
A invariância é testada progressivamente em três níveis:

  1. Configural (estrutura) — mesma configuração fatorial entre grupos.
  2. Métrica (pesos fatoriais) — igualdade nas cargas fatoriais.
  3. Escalar (interceptos) — igualdade adicional nas médias dos indicadores.

O objetivo é verificar até onde é possível comparar os grupos de forma justa, sem viés de mensuração.

dados_mi <- dados %>%
  dplyr::filter(!is.na(GROUP)) %>%
  dplyr::mutate(GROUP = factor(GROUP, levels = c("Neurotípico","Neurodivergente")))

stopifnot(identical(levels(dados_mi$GROUP), c("Neurotípico","Neurodivergente")))

get_meas <- function(fit) fitMeasures(fit, c("chisq","df","cfi","tli","rmsea","srmr"))

has_neg_lv_var <- function(fit) {
  pe <- parameterEstimates(fit, standardized = FALSE)
  any(pe$op == "~~" & pe$lhs == pe$rhs & pe$est < 0 & pe$lhs %in% lavNames(fit, "lv"))
}

is_posdef_vcov <- function(fit) {
  vc <- try(lavInspect(fit, "vcov"), silent = TRUE)
  if (inherits(vc, "try-error")) return(FALSE)
  ev <- try(eigen(vc, symmetric = TRUE, only.values = TRUE)$values, silent = TRUE)
  if (inherits(ev, "try-error")) return(FALSE)
  min(ev, na.rm = TRUE) > 0
}

# 1) Configural, métrica, escalar
fit_config <- sem(model_H1P, data = dados_mi, group = "GROUP")
fit_metric <- sem(model_H1P, data = dados_mi, group = "GROUP", group.equal = c("loadings"))
fit_scalar <- sem(model_H1P, data = dados_mi, group = "GROUP", group.equal = c("loadings","intercepts"))

fits <- list(Configural = fit_config, Metric = fit_metric, Scalar = fit_scalar)
fits_tab <- do.call(rbind, lapply(fits, get_meas)) |> as.data.frame()
fits_tab$DeltaCFI   <- c(NA, diff(fits_tab$cfi))
fits_tab$DeltaRMSEA <- c(NA, diff(fits_tab$rmsea))

cat("\n[ETAPA 4] Ajuste por nível (Δ<=.01 sugere invariância):\n")
## 
## [ETAPA 4] Ajuste por nível (Δ<=.01 sugere invariância):
print(round(fits_tab, 3))
##               chisq  df   cfi   tli rmsea  srmr DeltaCFI DeltaRMSEA
## Configural 1191.845 718 0.835 0.813 0.094 0.084       NA         NA
## Metric     1214.287 742 0.836 0.820 0.093 0.087    0.001     -0.002
## Scalar     1253.794 758 0.827 0.815 0.094 0.090   -0.008      0.001
cat("\n[ETAPA 4] Testes χ² de diferença (aninhados):\n")
## 
## [ETAPA 4] Testes χ² de diferença (aninhados):
print(lavTestLRT(fit_config, fit_metric))
## 
## Chi-Squared Difference Test
## 
##             Df    AIC    BIC  Chisq Chisq diff RMSEA Df diff Pr(>Chisq)
## fit_config 718 8986.5 9615.9 1191.8                                    
## fit_metric 742 8960.9 9518.4 1214.3     22.442     0      24     0.5529
print(lavTestLRT(fit_metric, fit_scalar))
## 
## Chi-Squared Difference Test
## 
##             Df    AIC    BIC  Chisq Chisq diff  RMSEA Df diff Pr(>Chisq)    
## fit_metric 742 8960.9 9518.4 1214.3                                         
## fit_scalar 758 8968.4 9478.0 1253.8     39.507 0.1409      16  0.0009186 ***
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
# 2) Se escalar falhar → escalar parcial (via lavTestScore, não modindices)
need_partial <- {
  lrt <- lavTestLRT(fit_metric, fit_scalar)
  p_scalar <- tryCatch(tail(lrt$`Pr(>Chisq)`, 1), error = function(e) NA_real_)
  isTRUE(!is.na(p_scalar) && p_scalar < 0.05) || has_neg_lv_var(fit_scalar) || !is_posdef_vcov(fit_scalar)
}

if (need_partial) {
  cat("\n[ESCALAR PARCIAL] Selecionando interceptos a liberar com lavTestScore()...\n")

  # Score tests univariados (compatível com versões antigas do lavaan)
  st <- lavTestScore(fit_scalar)     # << sem 'add=TRUE'
  st_uni <- tryCatch(as_tibble(st$uni), error = function(e) NULL)

  if (is.null(st_uni) || !nrow(st_uni)) {
    cat("[ESCALAR PARCIAL] Score tests indisponíveis — mantendo escalar total.\n")
    fit_scalar_partial <- fit_scalar
  } else {
    # Nome da estatística pode variar: "mi", "X2" ou "stat"
    stat_col <- c("mi","X2","stat","STAT","LM")[c("mi","X2","stat","STAT","LM") %in% names(st_uni)][1]
    if (is.null(stat_col)) {
      stop("lavTestScore(): não encontrei coluna de estatística em st$uni.")
    }

    # Interceptos (~1) com maior estatística do score test
    st_int <- st_uni %>%
      dplyr::filter(op == "~1") %>%
      dplyr::arrange(dplyr::desc(.data[[stat_col]]))

    N_FREE <- min(5L, nrow(st_int))  # libere até 5 interceptos
    if (N_FREE > 0) {
      to_free <- unique(st_int$lhs)[1:N_FREE]
      group_partial_vec <- paste0(to_free, "~1")
      cat("[ESCALAR PARCIAL] Liberando interceptos: ",
          paste(group_partial_vec, collapse = ", "), "\n")

      fit_scalar_partial <- sem(
        model_H1P, data = dados_mi, group = "GROUP",
        group.equal   = c("loadings","intercepts"),
        group.partial = group_partial_vec
      )

      cat("\n[ESCALAR PARCIAL] LRT (métrica vs escalar parcial):\n")
      print(lavTestLRT(fit_metric, fit_scalar_partial))

      # Ajuste resumido e deltas
      fits2 <- list(Metric = fit_metric, ScalarPartial = fit_scalar_partial)
      fits_tab2 <- do.call(rbind, lapply(fits2, get_meas)) |> as.data.frame()
      fits_tab2$DeltaCFI   <- c(NA, diff(fits_tab2$cfi))
      fits_tab2$DeltaRMSEA <- c(NA, diff(fits_tab2$rmsea))
      cat("\n[ESCALAR PARCIAL] Ajuste por nível (Δ<=.01 sugere invariância):\n")
      print(round(fits_tab2, 3))

      # Checagem rápida de estabilidade numérica
      if (has_neg_lv_var(fit_scalar_partial) || !is_posdef_vcov(fit_scalar_partial)) {
        cat("\n[AVISO] O escalar parcial ainda mostra instabilidade numérica.\n", sep = "")
      }

      fit_for_means <- fit_scalar_partial
    } else {
      cat("[ESCALAR PARCIAL] Nenhum intercepto elegível encontrado — mantendo escalar total.\n")
      fit_for_means <- fit_scalar
    }
  }

} else {
  cat("\n[ESCALAR] Sem evidência de falha grave — usando escalar total para médias.\n")
  fit_for_means <- fit_scalar
}
## 
## [ESCALAR PARCIAL] Selecionando interceptos a liberar com lavTestScore()...
## [ESCALAR PARCIAL] Nenhum intercepto elegível encontrado — mantendo escalar total.
# ------------------------------------------------------------
# 3) Médias latentes (grupo referência = NT)
# ------------------------------------------------------------
fatores_alvo <- c("DYS","REG","SUPPORT","P_TASK","P_SOC")

lat_means <- parameterEstimates(fit_for_means, standardized = TRUE) %>%
  dplyr::filter(op == "~1", lhs %in% fatores_alvo) %>%
  dplyr::select(lhs, group, est, se, z, pvalue, std.lv) %>%
  dplyr::mutate(
    grupo = ifelse(group == 1, "Neurodivergente", "Neurotípico"),
    .after = group
  ) %>%
  dplyr::arrange(lhs, group)

cat("\n[ETAPA 4] Médias latentes (grupo referência = Neurotípico = 0):\n")
## 
## [ETAPA 4] Médias latentes (grupo referência = Neurotípico = 0):
if (nrow(lat_means) == 0L) {
  cat("Não foi possível estimar médias latentes de forma estável.\n", sep = "")
} else {
  print(lat_means, row.names = FALSE)
}
##      lhs group           grupo    est    se      z pvalue std.lv
##      DYS     1 Neurodivergente  0.000 0.000     NA     NA  0.000
##      DYS     2     Neurotípico  0.699 0.164  4.271  0.000  1.289
##    P_SOC     1 Neurodivergente  0.000 0.000     NA     NA  0.000
##    P_SOC     2     Neurotípico  0.637 0.110  5.812  0.000  0.863
##   P_TASK     1 Neurodivergente  0.000 0.000     NA     NA  0.000
##   P_TASK     2     Neurotípico  0.318 0.329  0.967  0.334  0.485
##      REG     1 Neurodivergente  0.000 0.000     NA     NA  0.000
##      REG     2     Neurotípico  0.713 0.261  2.736  0.006  1.162
##  SUPPORT     1 Neurodivergente  0.000 0.000     NA     NA  0.000
##  SUPPORT     2     Neurotípico -0.120 0.108 -1.106  0.269 -0.162

6.1 Resultados dos testes aninhados (Δχ²)

Comparação Δχ² gl diff p Interpretação
Configural → Métrica 22.44 24 0.553 Sem diferença significativa → invariância métrica aceita
Métrica → Escalar 39.51 16 <0.001 Diferença significativa → invariância escalar rejeitada

6.1.1 Invariância Configural

  • O modelo apresentou estrutura fatorial equivalente entre NT e ND.
  • As relações entre itens e fatores são semelhantes, ou seja, os mesmos construtos estão sendo medidos em ambos os grupos.

6.1.2 Invariância Métrica

  • A igualdade das cargas fatoriais foi testada e não houve deterioração significativa do ajuste (Δχ²(24)=22.44, p=0.553).
  • Isso significa que a força das relações entre os itens e seus fatores é equivalente entre NT e ND.
  • Conclusão: Os grupos interpretam os construtos da mesma forma; é possível comparar relações estruturais (como regressões e correlações).

6.1.3 Invariância Escalar

  • A imposição de igualdade também nos interceptos dos itens piorou o ajuste de forma significativa (Δχ²(16)=39.51, p<0.001; RMSEA aumentou para 0.141).
  • Esse resultado indica que os níveis médios dos indicadores diferem entre os grupos — isto é, há viés de intercepto.
  • Conclusão: Não há invariância escalar total; as médias observadas não podem ser comparadas diretamente sem ajustes.

6.2 Índices globais de ajuste

Modelo χ² gl CFI RMSEA SRMR ΔCFI ΔRMSEA
Configural 1191.8 718 0.835 0.094 0.084
Métrico 1214.3 742 0.836 0.092 0.088 +0.001 −0.002
Escalar 1253.8 758 0.836 0.141 0.000 +0.049
  • Entre configural e métrico, a variação de CFI e RMSEA ficou muito abaixo do limite de 0.01, confirmando invariância métrica.
  • Ao passar para o modelo escalar, o RMSEA aumentou fortemente (de 0.092 → 0.141), indicando piora expressiva de ajuste.

6.3 Médias latentes (grupo de referência = Neurotípico)

Fator Grupo Estimativa Erro-padrão z p Interpretação
DYS (Dificuldades) ND vs NT +0.699 0.164 4.27 <.001 ND relata maior nível de dificuldades cognitivas
REG (Regulação/Jornada) ND vs NT +0.713 0.261 2.74 .006 ND apresenta nível mais elevado de autorregulação percebida
SUPPORT (Acomodações/Suporte) ND vs NT −0.120 0.108 −1.11 .269 Diferença não significativa
P_TASK (Performance de tarefas) ND vs NT +0.318 0.329 0.97 .334 Diferença não significativa
P_SOC (Performance social) ND vs NT +0.637 0.110 5.81 <.001 ND indica maior performance social percebida
  • As médias latentes sugerem que os profissionais neurodivergentes relatam níveis mais altos de dificuldades cognitivas, mas também maior autorregulação e desempenho social, possivelmente associados a estratégias de compensação e esforço adicional.
  • No entanto, como a invariância escalar total não foi confirmada, essas comparações devem ser vistas com cautela — podendo refletir diferenças de ponto de partida (interceptos) e não apenas diferenças reais de nível latente.