Introdução Este relatório apresenta a análise psicométrica da Escala de Literacia em Saúde, seguindo as etapas de preparação dos dados, análise de correlação, análise de confiabilidade, análise fatorial exploratória (AFE) e análise fatorial confirmatória (AFC). 1. Instalação dos Pacotes Necessários Os seguintes pacotes são necessários para executar este script: tidyverse: Para manipulação e exploração de dados. psych: Para análise psicométrica. corrplot: Para visualização da matriz de correlação. igraph: Para manipulação e análise de grafos. qgraph: Para visualização de redes. lavaan: Para modelagem de equações estruturais (incluindo AFC). semPlot: Para visualização do modelo AFC.

  1. Importação e Preparação dos Dados Os dados são importados do arquivo CSV “literacia_data.csv” e preparados para análise.
knitr::opts_chunk$set(echo = TRUE, message = FALSE, warning = FALSE)


library(tidyverse)
library(psych)
library(corrplot)
library(igraph)
library(qgraph)
library(lavaan)
library(semPlot)
knitr::opts_chunk$set(echo = TRUE, message = FALSE, warning = FALSE)

# Importar os dados do arquivo CSV
dados <- read_csv("G:/My Drive/01_PPGPS/04_Disciplinas/Estatistica no R/banco de dados_aula_Psicometria/literacia_data.csv")
# Converter variáveis numéricas que representam categorias em fatores
dados$sexo <- factor(dados$sexo)
dados$etnia <- factor(dados$etnia)
dados$estcivil <- factor(dados$estcivil)
dados$escolaridade <- factor(dados$escolaridade)
dados$economia <- factor(dados$economia)
dados$renda <- factor(dados$renda)
dados$beneficio <- factor(dados$beneficio)
dados$comunicacao <- factor(dados$comunicacao)
dados$celular <- factor(dados$celular)
dados$internet <- factor(dados$internet)
dados$acesso <- factor(dados$acesso)
  1. Exploração dos Dados Uma exploração inicial dos dados é realizada para verificar sua estrutura e conteúdo.
knitr::opts_chunk$set(echo = TRUE, message = FALSE, warning = FALSE)


# Visualizar as primeiras linhas do dataframe
head(dados)
## # A tibble: 6 × 26
##   sexo  etnia idade estcivil cidade     escolaridade economia profissao    renda
##   <fct> <fct> <dbl> <fct>    <chr>      <fct>        <fct>    <chr>        <fct>
## 1 1     1        30 2        Faxinal Pr 5            3        Enfermeira   4    
## 2 1     1        39 2        Faxinal    5            3        Enfermeira   4    
## 3 1     1        57 2        Londrina   3            3        Vendedora    3    
## 4 1     1        67 2        Londrina   3            3        Professora … 3    
## 5 1     1        28 2        Faxinal    2            3        Doméstica    2    
## 6 2     3        30 1        Faxinal    4            2        Professor e… 3    
## # ℹ 17 more variables: beneficio <fct>, comunicacao <fct>, celular <fct>,
## #   internet <fct>, acesso <fct>, L1 <dbl>, L2 <dbl>, L3 <dbl>, L4 <dbl>,
## #   L5 <dbl>, L6 <dbl>, L7 <dbl>, L8 <dbl>, L9 <dbl>, L10 <dbl>,
## #   literacia <dbl>, scores <dbl>
# Visualizar a estrutura do dataframe
str(dados)
## spc_tbl_ [431 × 26] (S3: spec_tbl_df/tbl_df/tbl/data.frame)
##  $ sexo        : Factor w/ 2 levels "1","2": 1 1 1 1 1 2 2 1 2 1 ...
##  $ etnia       : Factor w/ 4 levels "1","2","3","4": 1 1 1 1 1 3 1 1 1 1 ...
##  $ idade       : num [1:431] 30 39 57 67 28 30 37 32 45 26 ...
##  $ estcivil    : Factor w/ 4 levels "1","2","3","4": 2 2 2 2 2 1 2 1 2 2 ...
##  $ cidade      : chr [1:431] "Faxinal Pr" "Faxinal" "Londrina" "Londrina" ...
##  $ escolaridade: Factor w/ 5 levels "1","2","3","4",..: 5 5 3 3 2 4 4 5 4 2 ...
##  $ economia    : Factor w/ 4 levels "1","2","3","4": 3 3 3 3 3 2 4 2 1 2 ...
##  $ profissao   : chr [1:431] "Enfermeira" "Enfermeira" "Vendedora" "Professora Municipal" ...
##  $ renda       : Factor w/ 5 levels "1","2","3","4",..: 4 4 3 3 2 3 3 2 2 3 ...
##  $ beneficio   : Factor w/ 5 levels "1","2","3","4",..: 5 5 5 5 1 5 5 5 5 5 ...
##  $ comunicacao : Factor w/ 12 levels "Internet","Jornal Escrito e/ou Revistas",..: 1 1 1 1 1 10 10 1 9 1 ...
##  $ celular     : Factor w/ 2 levels "1","2": 1 1 1 1 1 1 1 1 2 1 ...
##  $ internet    : Factor w/ 2 levels "1","2": 1 1 1 1 1 1 1 1 1 1 ...
##  $ acesso      : Factor w/ 10 levels "Celular","Celular, Notebook",..: 4 1 1 9 1 1 4 2 3 1 ...
##  $ L1          : num [1:431] 4 5 3 4 5 5 5 4 3 4 ...
##  $ L2          : num [1:431] 4 5 4 5 5 4 4 4 4 5 ...
##  $ L3          : num [1:431] 4 4 4 4 4 3 4 3 4 5 ...
##  $ L4          : num [1:431] 4 4 4 4 4 3 4 2 3 5 ...
##  $ L5          : num [1:431] 4 4 4 4 4 3 4 3 4 5 ...
##  $ L6          : num [1:431] 5 5 4 4 4 4 4 3 1 5 ...
##  $ L7          : num [1:431] 4 4 4 4 4 4 5 3 1 5 ...
##  $ L8          : num [1:431] 4 4 4 4 4 3 4 2 1 5 ...
##  $ L9          : num [1:431] 4 4 4 4 4 4 4 2 1 5 ...
##  $ L10         : num [1:431] 4 4 4 4 4 2 4 3 1 5 ...
##  $ literacia   : num [1:431] 4.1 4.3 3.9 4.1 4.2 3.5 4.2 2.9 2.3 4.9 ...
##  $ scores      : num [1:431] 0.586 0.586 0.335 0.335 0.335 ...
##  - attr(*, "spec")=
##   .. cols(
##   ..   sexo = col_double(),
##   ..   etnia = col_double(),
##   ..   idade = col_double(),
##   ..   estcivil = col_double(),
##   ..   cidade = col_character(),
##   ..   escolaridade = col_double(),
##   ..   economia = col_double(),
##   ..   profissao = col_character(),
##   ..   renda = col_double(),
##   ..   beneficio = col_double(),
##   ..   comunicacao = col_character(),
##   ..   celular = col_double(),
##   ..   internet = col_double(),
##   ..   acesso = col_character(),
##   ..   L1 = col_double(),
##   ..   L2 = col_double(),
##   ..   L3 = col_double(),
##   ..   L4 = col_double(),
##   ..   L5 = col_double(),
##   ..   L6 = col_double(),
##   ..   L7 = col_double(),
##   ..   L8 = col_double(),
##   ..   L9 = col_double(),
##   ..   L10 = col_double(),
##   ..   literacia = col_double(),
##   ..   scores = col_double()
##   .. )
##  - attr(*, "problems")=<externalptr>
# Resumo estatístico das variáveis numéricas
summary(dados)
##  sexo    etnia       idade       estcivil    cidade          escolaridade
##  1:288   1:335   Min.   :15.00   1:142    Length:431         1:  8       
##  2:143   2: 16   1st Qu.:27.00   2:253    Class :character   2: 38       
##          3: 64   Median :36.00   3: 31    Mode  :character   3:173       
##          4: 16   Mean   :36.75   4:  5                       4: 90       
##                  3rd Qu.:45.00                               5:122       
##                  Max.   :76.00                                           
##                                                                          
##  economia  profissao         renda   beneficio
##  1: 57    Length:431         1: 65   1:  8    
##  2:142    Class :character   2:134   2:  1    
##  3: 91    Mode  :character   3:148   3:  3    
##  4:141                       4: 45   4:  1    
##                              5: 39   9:418    
##                                               
##                                               
##                                             comunicacao  celular internet
##  Internet                                         :300   1:429   1:419   
##  TV, Internet                                     : 55   2:  2   2: 12   
##  TV                                               : 18                   
##  TV, Rádio, Internet                              : 16                   
##  Jornal Escrito e/ou Revistas, TV, Rádio, Internet: 10                   
##  Jornal Escrito e/ou Revistas, TV, Internet       :  8                   
##  (Other)                                          : 24                   
##                                    acesso          L1              L2       
##  Celular                              :231   Min.   :1.000   Min.   :1.000  
##  Celular, Notebook                    : 79   1st Qu.:3.000   1st Qu.:4.000  
##  Computador, Celular                  : 52   Median :4.000   Median :4.000  
##  Computador, Celular, Notebook        : 42   Mean   :3.668   Mean   :4.204  
##  Tablet, Celular, Notebook            :  7   3rd Qu.:5.000   3rd Qu.:5.000  
##  Computador, Tablet, Celular, Notebook:  6   Max.   :5.000   Max.   :5.000  
##  (Other)                              : 14                                  
##        L3              L4              L5              L6             L7       
##  Min.   :1.000   Min.   :1.000   Min.   :1.000   Min.   :1.00   Min.   :1.000  
##  1st Qu.:3.000   1st Qu.:3.000   1st Qu.:3.000   1st Qu.:3.00   1st Qu.:3.000  
##  Median :4.000   Median :4.000   Median :4.000   Median :4.00   Median :4.000  
##  Mean   :3.536   Mean   :3.661   Mean   :3.712   Mean   :3.64   Mean   :3.675  
##  3rd Qu.:4.000   3rd Qu.:4.000   3rd Qu.:4.000   3rd Qu.:4.00   3rd Qu.:4.000  
##  Max.   :5.000   Max.   :5.000   Max.   :5.000   Max.   :5.00   Max.   :5.000  
##                                                                                
##        L8              L9             L10          literacia    
##  Min.   :1.000   Min.   :1.000   Min.   :1.000   Min.   :1.600  
##  1st Qu.:3.000   1st Qu.:3.000   1st Qu.:2.000   1st Qu.:3.300  
##  Median :4.000   Median :4.000   Median :3.000   Median :3.700  
##  Mean   :3.631   Mean   :3.603   Mean   :3.181   Mean   :3.651  
##  3rd Qu.:4.000   3rd Qu.:4.000   3rd Qu.:4.000   3rd Qu.:4.100  
##  Max.   :5.000   Max.   :5.000   Max.   :5.000   Max.   :5.000  
##                                                                 
##      scores         
##  Min.   :-1.838299  
##  1st Qu.:-0.454011  
##  Median : 0.021178  
##  Mean   : 0.001026  
##  3rd Qu.: 0.335293  
##  Max.   : 1.632261  
## 
# Verificar os nomes das colunas
names(dados)
##  [1] "sexo"         "etnia"        "idade"        "estcivil"     "cidade"      
##  [6] "escolaridade" "economia"     "profissao"    "renda"        "beneficio"   
## [11] "comunicacao"  "celular"      "internet"     "acesso"       "L1"          
## [16] "L2"           "L3"           "L4"           "L5"           "L6"          
## [21] "L7"           "L8"           "L9"           "L10"          "literacia"   
## [26] "scores"
# Verificar os tipos de dados de cada coluna
sapply(dados, class)
##         sexo        etnia        idade     estcivil       cidade escolaridade 
##     "factor"     "factor"    "numeric"     "factor"  "character"     "factor" 
##     economia    profissao        renda    beneficio  comunicacao      celular 
##     "factor"  "character"     "factor"     "factor"     "factor"     "factor" 
##     internet       acesso           L1           L2           L3           L4 
##     "factor"     "factor"    "numeric"    "numeric"    "numeric"    "numeric" 
##           L5           L6           L7           L8           L9          L10 
##    "numeric"    "numeric"    "numeric"    "numeric"    "numeric"    "numeric" 
##    literacia       scores 
##    "numeric"    "numeric"
# Verificar a quantidade de dados faltantes por coluna
colSums(is.na(dados))
##         sexo        etnia        idade     estcivil       cidade escolaridade 
##            0            0            0            0            0            0 
##     economia    profissao        renda    beneficio  comunicacao      celular 
##            0            0            0            0            0            0 
##     internet       acesso           L1           L2           L3           L4 
##            0            0            0            0            0            0 
##           L5           L6           L7           L8           L9          L10 
##            0            0            0            0            0            0 
##    literacia       scores 
##            0            0
# Verificar a proporção de dados faltantes por coluna
colMeans(is.na(dados)) * 100
##         sexo        etnia        idade     estcivil       cidade escolaridade 
##            0            0            0            0            0            0 
##     economia    profissao        renda    beneficio  comunicacao      celular 
##            0            0            0            0            0            0 
##     internet       acesso           L1           L2           L3           L4 
##            0            0            0            0            0            0 
##           L5           L6           L7           L8           L9          L10 
##            0            0            0            0            0            0 
##    literacia       scores 
##            0            0
  1. Visualização de Relações entre Dados 4.1. Análise de Correlação As relações lineares entre as variáveis de literacia e idade são visualizadas usando matrizes de correlação.
knitr::opts_chunk$set(echo = TRUE, message = FALSE, warning = FALSE)


# Selecionar as variáveis de literacia (L1 a L10) e idade
dados_cor <- dados %>%
  select(L1:L10, idade)

# Calcular a matriz de correlação
matriz_cor <- cor(dados_cor)

# Visualizar a matriz de correlação
corrplot(matriz_cor, method = "circle") # Exemplo com círculos

corrplot(matriz_cor, method = "number") # Correlação com Coeficientes Numéricos

corrplot(matriz_cor, method = "color") # Correlação com Cores e Intensidades

corrplot(matriz_cor, method = "circle", order = "hclust") # Correlação Ordenada

#ggcorr(dados_cor) # Visualização com GGally - Removido devido a possível não instalação
heatmap(matriz_cor) # Heatmap

#4.2. Análise de Redes
#A estrutura das relações entre as variáveis de literacia é visualizada usando análise de redes.
# Selecionar as variáveis de literacia (L1 a L10)
dados_rede <- dados %>%
  select(L1:L10)

# Estimar a matriz de correlação
matriz_rede <- cor(dados_rede)

# Calcular o tamanho da amostra
n_amostra <- nrow(dados_rede)

# Criar a rede
rede <- qgraph(matriz_rede,
              graph = "glasso",
              layout = "spring",
              vsize = 8,
              sampleSize = n_amostra)

# Criar a rede com valores de correlação nas arestas
rede <- qgraph(matriz_rede,
              graph = "glasso",
              layout = "spring",
              vsize = 8,
              sampleSize = n_amostra,
              edge.labels = TRUE,
              edge.label.cex = 0.8)

5. Análise de Confiabilidade A consistência interna da escala é avaliada usando o Alfa de Cronbach e o Ômega de McDonald.

knitr::opts_chunk$set(echo = TRUE, message = FALSE, warning = FALSE)


# Selecionar os itens da escala
itens_escala <- dados %>%
  select(L1:L10)

# Calcular o Alfa de Cronbach
alfa <- psych::alpha(itens_escala, n.iter = 1000, check.keys = TRUE)

# Exibir os resultados do Alfa de Cronbach
print(alfa)
## 
## Reliability analysis   
## Call: psych::alpha(x = itens_escala, check.keys = TRUE, n.iter = 1000)
## 
##   raw_alpha std.alpha G6(smc) average_r S/N    ase mean   sd median_r
##       0.88      0.89     0.9      0.44 7.8 0.0087  3.7 0.64     0.46
## 
##     95% confidence boundaries 
##              lower alpha upper
## Feldt         0.86  0.88   0.9
## Duhachek      0.86  0.88   0.9
## bootstrapped  0.86  0.88   0.9
## 
##  Reliability if an item is dropped:
##     raw_alpha std.alpha G6(smc) average_r S/N alpha se var.r med.r
## L1       0.89      0.89    0.90      0.47 8.1   0.0079 0.027  0.48
## L2       0.88      0.90    0.91      0.49 8.5   0.0085 0.021  0.48
## L3       0.87      0.88    0.90      0.44 7.1   0.0096 0.032  0.46
## L4       0.86      0.87    0.88      0.42 6.6   0.0099 0.026  0.43
## L5       0.86      0.87    0.88      0.42 6.6   0.0100 0.025  0.43
## L6       0.86      0.87    0.88      0.42 6.5   0.0103 0.026  0.44
## L7       0.86      0.86    0.88      0.42 6.4   0.0104 0.026  0.44
## L8       0.86      0.87    0.89      0.42 6.6   0.0101 0.028  0.43
## L9       0.87      0.88    0.90      0.45 7.3   0.0094 0.028  0.46
## L10      0.86      0.87    0.89      0.43 6.7   0.0102 0.031  0.44
## 
##  Item statistics 
##       n raw.r std.r r.cor r.drop mean   sd
## L1  431  0.57  0.53  0.45   0.41  3.7 1.22
## L2  431  0.46  0.45  0.36   0.34  4.2 0.85
## L3  431  0.68  0.69  0.64   0.60  3.5 0.81
## L4  431  0.75  0.77  0.77   0.69  3.7 0.80
## L5  431  0.76  0.78  0.77   0.69  3.7 0.80
## L6  431  0.80  0.80  0.80   0.74  3.6 0.90
## L7  431  0.81  0.82  0.82   0.76  3.7 0.87
## L8  431  0.77  0.78  0.75   0.71  3.6 0.87
## L9  431  0.66  0.66  0.61   0.56  3.6 0.94
## L10 431  0.77  0.75  0.72   0.69  3.2 1.07
## 
## Non missing response frequency for each item
##        1    2    3    4    5 miss
## L1  0.07 0.08 0.28 0.24 0.33    0
## L2  0.02 0.02 0.08 0.48 0.40    0
## L3  0.01 0.09 0.32 0.50 0.07    0
## L4  0.00 0.10 0.22 0.58 0.10    0
## L5  0.01 0.08 0.20 0.61 0.10    0
## L6  0.02 0.11 0.18 0.57 0.11    0
## L7  0.02 0.10 0.18 0.59 0.11    0
## L8  0.02 0.09 0.23 0.55 0.10    0
## L9  0.03 0.10 0.24 0.50 0.13    0
## L10 0.06 0.23 0.24 0.39 0.07    0
# Calcular o Ômega de McDonald
omega <- omega(itens_escala)

# Exibir os resultados do Ômega de McDonald
print(omega)
## Omega 
## Call: omegah(m = m, nfactors = nfactors, fm = fm, key = key, flip = flip, 
##     digits = digits, title = title, sl = sl, labels = labels, 
##     plot = plot, n.obs = n.obs, rotate = rotate, Phi = Phi, option = option, 
##     covar = covar)
## Alpha:                 0.89 
## G.6:                   0.9 
## Omega Hierarchical:    0.83 
## Omega H asymptotic:    0.9 
## Omega Total            0.92 
## 
## Schmid Leiman Factor loadings greater than  0.2 
##        g   F1*   F2*   F3*    h2   h2   u2   p2  com
## L1  0.38              0.89  0.93 0.93 0.07 0.15 1.35
## L2  0.30              0.32       0.19 0.81 0.46 2.03
## L3  0.55        0.30        0.42 0.42 0.58 0.72 1.77
## L4  0.65        0.69        0.90 0.90 0.10 0.47 1.99
## L5  0.68        0.53        0.74 0.74 0.26 0.62 1.89
## L6  0.82                    0.68 0.68 0.32 1.00 1.00
## L7  0.86                    0.74 0.74 0.26 1.00 1.00
## L8  0.79                    0.62 0.62 0.38 1.00 1.01
## L9  0.63                    0.42 0.42 0.58 0.96 1.10
## L10 0.74                    0.55 0.55 0.45 0.98 1.04
## 
## With Sums of squares  of:
##    g  F1*  F2*  F3*   h2 
## 4.41 0.00 0.86 0.95 4.32 
## 
## general/max  1.02   max/min =   Inf
## mean percent general =  0.74    with sd =  0.3 and cv of  0.41 
## Explained Common Variance of the general factor =  0.71 
## 
## The degrees of freedom are 18  and the fit is  0.4 
## The number of observations was  431  with Chi Square =  169.31  with prob <  1.2e-26
## The root mean square of the residuals is  0.04 
## The df corrected root mean square of the residuals is  0.06
## RMSEA index =  0.14  and the 90 % confidence intervals are  0.121 0.159
## BIC =  60.12
## 
## Compare this with the adequacy of just a general factor and no group factors
## The degrees of freedom for just the general factor are 35  and the fit is  1.21 
## The number of observations was  431  with Chi Square =  513.4  with prob <  2.3e-86
## The root mean square of the residuals is  0.1 
## The df corrected root mean square of the residuals is  0.11 
## 
## RMSEA index =  0.178  and the 90 % confidence intervals are  0.165 0.192
## BIC =  301.09 
## 
## Measures of factor score adequacy             
##                                                  g F1*  F2*  F3*
## Correlation of scores with factors            0.95   0 0.89 0.96
## Multiple R square of scores with factors      0.91   0 0.80 0.92
## Minimum correlation of factor score estimates 0.81  -1 0.59 0.84
## 
##  Total, General and Subset omega for each subset
##                                                  g F1*  F2*  F3*
## Omega total for total scores and subscales    0.92  NA 0.89 0.78
## Omega general for total scores and subscales  0.83  NA 0.75 0.67
## Omega group for total scores and subscales    0.07  NA 0.14 0.11
  1. Análise Fatorial Exploratória (AFE) 6.1. Adequação da Amostra para Análise Fatorial
knitr::opts_chunk$set(echo = TRUE, message = FALSE, warning = FALSE)


#O teste KMO é realizado para verificar a adequação da amostra para a análise fatorial.
# Selecionar os itens da escala
itens_escala <- dados %>%
  select(L1:L10)

# Calcula o KMO
kmo_resultado <- KMO(itens_escala)

# Imprime o KMO geral
cat("KMO geral:", kmo_resultado$MSA, "\n")
## KMO geral: 0.8706569
# Interpreta o resultado do KMO
if (kmo_resultado$MSA >= 0.8) {
  cat("A adequação da amostra é adequada.\n")
} else if (kmo_resultado$MSA >= 0.7) {
  cat("A adequação da amostra é razoável.\n")
} else if (kmo_resultado$MSA >= 0.6) {
  cat("A adequação da amostra é medíocre.\n")
} else if (kmo_resultado$MSA >= 0.5) {
  cat("A adequação da amostra é inadequada.\n")
} else {
  cat("A adequação da amostra é inaceitável.\n")
}
## A adequação da amostra é adequada.

6.2. Determinação do Número de Fatores A análise paralela é utilizada para auxiliar na determinação do número apropriado de fatores a serem extraídos.

knitr::opts_chunk$set(echo = TRUE, message = FALSE, warning = FALSE)


# Selecionar os itens da escala
itens_escala <- dados %>%
  select(L1:L10)

fa.parallel(itens_escala, fa = "fa", n.iter = 100)

## Parallel analysis suggests that the number of factors =  4  and the number of components =  NA

6.3. Realização da AFE A AFE é realizada com o número de fatores determinado na etapa anterior.

knitr::opts_chunk$set(echo = TRUE, message = FALSE, warning = FALSE)


# Selecionar os itens da escala
itens_escala <- dados %>%
  select(L1:L10)

n_fatores <- 4
af_resultado <- fa(itens_escala, nfactors = n_fatores, rotate = "varimax", fm = "ml")
print(af_resultado)
## Factor Analysis using method =  ml
## Call: fa(r = itens_escala, nfactors = n_fatores, rotate = "varimax", 
##     fm = "ml")
## Standardized loadings (pattern matrix) based upon correlation matrix
##      ML3  ML1  ML4  ML2   h2   u2 com
## L1  0.07 0.10 0.11 0.89 0.81 0.19 1.1
## L2  0.13 0.16 0.06 0.41 0.21 0.79 1.6
## L3  0.46 0.17 0.31 0.33 0.44 0.56 3.0
## L4  0.82 0.23 0.30 0.14 0.84 0.16 1.5
## L5  0.78 0.34 0.23 0.14 0.80 0.20 1.6
## L6  0.34 0.76 0.26 0.22 0.81 0.19 1.9
## L7  0.28 0.77 0.33 0.24 0.84 0.16 1.9
## L8  0.30 0.40 0.61 0.17 0.65 0.35 2.4
## L9  0.26 0.17 0.76 0.04 0.67 0.33 1.4
## L10 0.22 0.39 0.51 0.31 0.56 0.44 3.1
## 
##                        ML3  ML1  ML4  ML2
## SS loadings           1.92 1.75 1.64 1.33
## Proportion Var        0.19 0.18 0.16 0.13
## Cumulative Var        0.19 0.37 0.53 0.66
## Proportion Explained  0.29 0.26 0.25 0.20
## Cumulative Proportion 0.29 0.55 0.80 1.00
## 
## Mean item complexity =  1.9
## Test of the hypothesis that 4 factors are sufficient.
## 
## df null model =  45  with the objective function =  5.51 with Chi Square =  2344.82
## df of  the model are 11  and the objective function was  0.04 
## 
## The root mean square of the residuals (RMSR) is  0.01 
## The df corrected root mean square of the residuals is  0.02 
## 
## The harmonic n.obs is  431 with the empirical chi square  5.23  with prob <  0.92 
## The total n.obs was  431  with Likelihood Chi Square =  15.62  with prob <  0.16 
## 
## Tucker Lewis Index of factoring reliability =  0.992
## RMSEA index =  0.031  and the 90 % confidence intervals are  0 0.064
## BIC =  -51.11
## Fit based upon off diagonal values = 1
## Measures of factor score adequacy             
##                                                    ML3  ML1  ML4  ML2
## Correlation of (regression) scores with factors   0.90 0.89 0.82 0.90
## Multiple R square of scores with factors          0.82 0.79 0.68 0.81
## Minimum correlation of possible factor scores     0.64 0.58 0.36 0.62

6.4. AFE Unidimensional Uma AFE unidimensional também é realizada para comparar com a solução multidimensional.

knitr::opts_chunk$set(echo = TRUE, message = FALSE, warning = FALSE)


# Selecionar os itens da escala
itens_escala <- dados %>%
  select(L1:L10)

n_fatores <- 1
af_resultado_1_fator <- fa(itens_escala, nfactors = n_fatores, rotate = "varimax", fm = "ml")
print(af_resultado_1_fator)
## Factor Analysis using method =  ml
## Call: fa(r = itens_escala, nfactors = n_fatores, rotate = "varimax", 
##     fm = "ml")
## Standardized loadings (pattern matrix) based upon correlation matrix
##      ML1   h2   u2 com
## L1  0.40 0.16 0.84   1
## L2  0.32 0.11 0.89   1
## L3  0.61 0.37 0.63   1
## L4  0.75 0.56 0.44   1
## L5  0.77 0.59 0.41   1
## L6  0.83 0.69 0.31   1
## L7  0.84 0.71 0.29   1
## L8  0.75 0.57 0.43   1
## L9  0.61 0.37 0.63   1
## L10 0.71 0.50 0.50   1
## 
##                 ML1
## SS loadings    4.63
## Proportion Var 0.46
## 
## Mean item complexity =  1
## Test of the hypothesis that 1 factor is sufficient.
## 
## df null model =  45  with the objective function =  5.51 with Chi Square =  2344.82
## df of  the model are 35  and the objective function was  1.13 
## 
## The root mean square of the residuals (RMSR) is  0.08 
## The df corrected root mean square of the residuals is  0.09 
## 
## The harmonic n.obs is  431 with the empirical chi square  253.09  with prob <  7.2e-35 
## The total n.obs was  431  with Likelihood Chi Square =  481.23  with prob <  7.8e-80 
## 
## Tucker Lewis Index of factoring reliability =  0.75
## RMSEA index =  0.172  and the 90 % confidence intervals are  0.159 0.186
## BIC =  268.92
## Fit based upon off diagonal values = 0.97
## Measures of factor score adequacy             
##                                                    ML1
## Correlation of (regression) scores with factors   0.96
## Multiple R square of scores with factors          0.92
## Minimum correlation of possible factor scores     0.84
fa.diagram(af_resultado_1_fator)

7. Análise Fatorial Confirmatória (AFC) A AFC é realizada para testar um modelo fatorial específico. 7.1. Especificação do Modelo O modelo fatorial confirmatório é definido com base na teoria.

knitr::opts_chunk$set(echo = TRUE, message = FALSE, warning = FALSE)


# Selecionar os itens da escala
itens_escala <- dados %>%
  select(L1:L10)

modelo_afc <- '
  Literacia =~ L1 + L2 + L3 + L4 + L5 + L6 + L7 + L8 + L9 + L10
'

7.2. Estimação do Modelo O modelo é ajustado aos dados usando a função cfa().

knitr::opts_chunk$set(echo = TRUE, message = FALSE, warning = FALSE)


# Selecionar os itens da escala
itens_escala <- dados %>%
  select(L1:L10)

ajuste_afc <- cfa(modelo_afc, data = itens_escala, estimator = "ML")

7.3. Avaliação do Ajuste do Modelo O ajuste do modelo é avaliado usando várias medidas de ajuste.

knitr::opts_chunk$set(echo = TRUE, message = FALSE, warning = FALSE)
# Selecionar os itens da escala
itens_escala <- dados %>%
  select(L1:L10)

summary(ajuste_afc, fit.measures = TRUE, standardized = TRUE)
## lavaan 0.6-19 ended normally after 34 iterations
## 
##   Estimator                                         ML
##   Optimization method                           NLMINB
##   Number of model parameters                        20
## 
##   Number of observations                           431
## 
## Model Test User Model:
##                                                       
##   Test statistic                               487.836
##   Degrees of freedom                                35
##   P-value (Chi-square)                           0.000
## 
## Model Test Baseline Model:
## 
##   Test statistic                              2373.267
##   Degrees of freedom                                45
##   P-value                                        0.000
## 
## User Model versus Baseline Model:
## 
##   Comparative Fit Index (CFI)                    0.806
##   Tucker-Lewis Index (TLI)                       0.750
## 
## Loglikelihood and Information Criteria:
## 
##   Loglikelihood user model (H0)              -4737.734
##   Loglikelihood unrestricted model (H1)      -4493.816
##                                                       
##   Akaike (AIC)                                9515.468
##   Bayesian (BIC)                              9596.791
##   Sample-size adjusted Bayesian (SABIC)       9533.322
## 
## Root Mean Square Error of Approximation:
## 
##   RMSEA                                          0.173
##   90 Percent confidence interval - lower         0.160
##   90 Percent confidence interval - upper         0.187
##   P-value H_0: RMSEA <= 0.050                    0.000
##   P-value H_0: RMSEA >= 0.080                    1.000
## 
## Standardized Root Mean Square Residual:
## 
##   SRMR                                           0.073
## 
## 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
##   Literacia =~                                                          
##     L1                1.000                               0.482    0.397
##     L2                0.570    0.107    5.335    0.000    0.275    0.324
##     L3                1.018    0.136    7.478    0.000    0.491    0.610
##     L4                1.245    0.156    8.000    0.000    0.600    0.747
##     L5                1.276    0.158    8.066    0.000    0.616    0.769
##     L6                1.555    0.189    8.235    0.000    0.750    0.833
##     L7                1.524    0.185    8.255    0.000    0.735    0.842
##     L8                1.357    0.169    8.024    0.000    0.655    0.755
##     L9                1.190    0.159    7.487    0.000    0.574    0.612
##     L10               1.560    0.198    7.865    0.000    0.752    0.706
## 
## Variances:
##                    Estimate  Std.Err  z-value  P(>|z|)   Std.lv  Std.all
##    .L1                1.247    0.086   14.435    0.000    1.247    0.843
##    .L2                0.644    0.044   14.526    0.000    0.644    0.895
##    .L3                0.407    0.029   13.901    0.000    0.407    0.628
##    .L4                0.286    0.022   13.012    0.000    0.286    0.442
##    .L5                0.262    0.021   12.765    0.000    0.262    0.409
##    .L6                0.248    0.021   11.657    0.000    0.248    0.306
##    .L7                0.222    0.019   11.440    0.000    0.222    0.291
##    .L8                0.324    0.025   12.931    0.000    0.324    0.431
##    .L9                0.550    0.040   13.893    0.000    0.550    0.626
##    .L10               0.570    0.043   13.371    0.000    0.570    0.502
##     Literacia         0.233    0.056    4.120    0.000    1.000    1.000

7.4. Visualização do Modelo O modelo fatorial é visualizado usando a função semPaths().

knitr::opts_chunk$set(echo = TRUE, message = FALSE, warning = FALSE)


# Selecionar os itens da escala
itens_escala <- dados %>%
  select(L1:L10)

semPaths(ajuste_afc,
         what = "std",
         layout = "tree2",
         edge.label.cex = 0.8,
         sizeMan = 8,
         sizeLat = 10,
         esize = 1,
         residuals = TRUE,
         intercepts = FALSE)