1 Carregar pacotes

library(readxl)
library(flextable)    #tables
library(tidyverse)    #enrinonment
library(mice)         #imputation
library(janitor)
library(psych)        #psychometrics (classical theory)
library(GPArotation)
library(lavaan)       #SEM
library(semPlot)      #plot cfa models
library(semTools)     #reliability sem models
library(DataExplorer) #missing
library(summarytools) #show data info
library(gridExtra)    #add features for grid
library(emmeans)      #anova and posthoc
library(effsize)      #cohen D
library(ggpubr)       #ridge plot
library(cutpointr)    #ROC
library(DT)           #tabelas
library(corrplot)

2 Importar base de dados

O exemplo de análise apresentado a seguir tem como base o conjunto de dados “BD_original_satifacao_alunos” disponível no moodle. Os dados se referem a uma pesquisa sobre a satisfação dos alunos com a disciplina de Estatística. Questionário composto por 23 itens, aplicado a uma amostra de 500 alunos de diferentes cursos de graduação da UFSM.

Salvar arquivo localmente e importar para o R: arquivo “BD_original_satifacao_alunos” (disponível no moodle).

File -> Import Dataset -> From excel… (ou outro formato) -> Browse -> Import

3 Verificar a existência de Missing values (MVs)

Contar o número de dados faltantes (missing values) na base de dados (corresponde a itens que não foram respondidos):

BD_original_satisfacao_alunos %>%
  select(Item1:Item23) %>%      #selecionar variáveis Item1 até Item23 da base de dados
  summarise(sum(is.na(.)))      #contagem dos dados faltantes
## # A tibble: 1 × 1
##   `sum(is.na(.))`
##             <int>
## 1              58

Podemos também criar um gráfico que indicará o número de dados faltantes por item:

BD_original_satisfacao_alunos %>% 
  select(Item1:Item23) %>% 
  plot_missing()      #plot da contagem dos dados faltantes por item

4 Imputação de Missing values

O pacote “mice” permite fazer a substituição dos dados faltantes (imputação múltipla). Principalmente quando temos muito dados ausentes no conjunto de dados, os métodos de imputação simples (média, mediana, regressão) comprometem a análise da variância da variável imputada (subestimação da variabilidade) e a análise da correlação entre as variáveis em estudo. A principal vantagem da imputação múltipla é a de que ela leva em conta a variabilidade (incerteza) entre as imputações (NUNES et al., 2010).

imputing_MV <- BD_original_satisfacao_alunos %>% 
  select(Item1:Item23) %>%  
  mice(.,
       m=5,          #nº de imputações múltiplas
       maxit=50,     #nº máx de iterações
       meth='pmm',   #método Predictive mean matching
       seed=123)     #seed qualquer (aleatória)
BD_completo <- complete(imputing_MV,1)  #1 para arquivo sem os MVs, 0 para arquivo com MVs
datatable(BD_completo)

Observamos que agora a base de dados não possui mais MVs:

BD_completo %>%
    summarise(sum(is.na(.)))      #contagem dos dados faltantes
##   sum(is.na(.))
## 1             0

Para obtermos as estatísticas descritivas da base de dados completa:

summary(BD_completo)
##      Item1           Item2           Item3           Item4      
##  Min.   :1.000   Min.   :1.000   Min.   :1.000   Min.   :1.000  
##  1st Qu.:4.000   1st Qu.:3.000   1st Qu.:4.000   1st Qu.:4.000  
##  Median :4.000   Median :4.000   Median :5.000   Median :4.000  
##  Mean   :4.218   Mean   :4.032   Mean   :4.332   Mean   :4.098  
##  3rd Qu.:5.000   3rd Qu.:5.000   3rd Qu.:5.000   3rd Qu.:5.000  
##  Max.   :5.000   Max.   :5.000   Max.   :5.000   Max.   :5.000  
##      Item5           Item6           Item7           Item8      
##  Min.   :1.000   Min.   :1.000   Min.   :1.000   Min.   :1.000  
##  1st Qu.:3.000   1st Qu.:3.000   1st Qu.:3.000   1st Qu.:3.000  
##  Median :4.000   Median :4.000   Median :4.000   Median :4.000  
##  Mean   :3.562   Mean   :3.502   Mean   :3.878   Mean   :3.834  
##  3rd Qu.:5.000   3rd Qu.:4.000   3rd Qu.:5.000   3rd Qu.:5.000  
##  Max.   :5.000   Max.   :5.000   Max.   :5.000   Max.   :5.000  
##      Item9           Item10         Item11         Item12          Item13     
##  Min.   :1.000   Min.   :1.00   Min.   :1.00   Min.   :1.000   Min.   :1.000  
##  1st Qu.:3.000   1st Qu.:3.00   1st Qu.:4.00   1st Qu.:3.750   1st Qu.:3.000  
##  Median :4.000   Median :4.00   Median :5.00   Median :4.000   Median :4.000  
##  Mean   :3.668   Mean   :4.01   Mean   :4.54   Mean   :4.064   Mean   :3.914  
##  3rd Qu.:5.000   3rd Qu.:5.00   3rd Qu.:5.00   3rd Qu.:5.000   3rd Qu.:5.000  
##  Max.   :5.000   Max.   :5.00   Max.   :5.00   Max.   :5.000   Max.   :5.000  
##      Item14        Item15          Item16          Item17          Item18     
##  Min.   :1.0   Min.   :1.000   Min.   :1.000   Min.   :1.000   Min.   :1.000  
##  1st Qu.:3.0   1st Qu.:3.000   1st Qu.:3.000   1st Qu.:3.000   1st Qu.:3.000  
##  Median :3.0   Median :4.000   Median :3.000   Median :4.000   Median :4.000  
##  Mean   :3.4   Mean   :3.478   Mean   :3.246   Mean   :3.696   Mean   :3.596  
##  3rd Qu.:4.0   3rd Qu.:4.000   3rd Qu.:4.000   3rd Qu.:4.000   3rd Qu.:4.000  
##  Max.   :5.0   Max.   :5.000   Max.   :5.000   Max.   :5.000   Max.   :5.000  
##      Item19          Item20          Item21         Item22          Item23     
##  Min.   :1.000   Min.   :1.000   Min.   :1.00   Min.   :1.000   Min.   :1.000  
##  1st Qu.:2.000   1st Qu.:3.000   1st Qu.:3.00   1st Qu.:3.000   1st Qu.:3.000  
##  Median :3.000   Median :3.000   Median :4.00   Median :4.000   Median :4.000  
##  Mean   :3.218   Mean   :3.302   Mean   :3.65   Mean   :3.456   Mean   :3.468  
##  3rd Qu.:4.000   3rd Qu.:4.000   3rd Qu.:4.00   3rd Qu.:4.000   3rd Qu.:4.000  
##  Max.   :5.000   Max.   :5.000   Max.   :5.00   Max.   :5.000   Max.   :5.000

5 Avaliação da fidedignidade

A consistência interna dos itens de um instrumento pode ser avaliada utilizado o Alpha de Cronbach e o Ômega de McDonald.

5.1 Alpha de Cronbach

Analisa a qualidade do instrumento. Valores próximos de “1” são indicativos de que o instrumento avalia bem o traço latente, ou seja, de que há uma forte correlação dos itens com o traço latente.

O alpha é uma estimativa de confiabilidade de um instrumento proposto para medir único construto comum a todos os itens sob as condições de que: (a) um modelo de apenas um fator seja apropriado (ou seja, o teste é unidimensional), (b) as cargas fatoriais são iguais em todos os itens, e (c) os erros são independentes entre os itens. Como é improvável que todas essas condições sejam atendidas em situações reais, alguns pesquisadores defendem o uso de medidas alternativas de confiabilidade, tal como o Ômega de McDonald (FLORA, 2020).

O pacote psych, previamente carregado, nos fornece os valores do alpha de Cronbach.

BD_completo %>%
  alpha(.)
## 
## Reliability analysis   
## Call: alpha(x = .)
## 
##   raw_alpha std.alpha G6(smc) average_r S/N    ase mean   sd median_r
##       0.94      0.94    0.96      0.42  17 0.0036  3.7 0.71     0.42
## 
##     95% confidence boundaries 
##          lower alpha upper
## Feldt     0.94  0.94  0.95
## Duhachek  0.94  0.94  0.95
## 
##  Reliability if an item is dropped:
##        raw_alpha std.alpha G6(smc) average_r S/N alpha se var.r med.r
## Item1       0.94      0.94    0.95      0.42  16   0.0038 0.018  0.42
## Item2       0.94      0.94    0.95      0.42  16   0.0038 0.017  0.41
## Item3       0.94      0.94    0.95      0.42  16   0.0038 0.018  0.42
## Item4       0.94      0.94    0.95      0.42  16   0.0038 0.018  0.42
## Item5       0.94      0.94    0.95      0.41  16   0.0039 0.017  0.41
## Item6       0.94      0.94    0.95      0.42  16   0.0039 0.018  0.41
## Item7       0.94      0.94    0.95      0.41  16   0.0039 0.017  0.41
## Item8       0.94      0.94    0.95      0.41  16   0.0039 0.018  0.41
## Item9       0.94      0.94    0.95      0.43  16   0.0037 0.019  0.43
## Item10      0.94      0.94    0.95      0.42  16   0.0038 0.019  0.42
## Item11      0.94      0.94    0.96      0.44  17   0.0036 0.016  0.44
## Item12      0.94      0.94    0.95      0.42  16   0.0038 0.019  0.43
## Item13      0.94      0.94    0.95      0.42  16   0.0039 0.018  0.41
## Item14      0.95      0.95    0.96      0.44  17   0.0035 0.014  0.43
## Item15      0.94      0.94    0.95      0.43  16   0.0037 0.018  0.43
## Item16      0.94      0.94    0.96      0.43  17   0.0037 0.018  0.43
## Item17      0.94      0.94    0.95      0.42  16   0.0039 0.019  0.41
## Item18      0.94      0.94    0.95      0.42  16   0.0039 0.018  0.42
## Item19      0.94      0.94    0.95      0.42  16   0.0039 0.017  0.41
## Item20      0.94      0.94    0.95      0.42  16   0.0039 0.017  0.42
## Item21      0.94      0.94    0.95      0.42  16   0.0039 0.018  0.41
## Item22      0.94      0.94    0.95      0.42  16   0.0038 0.017  0.42
## Item23      0.94      0.94    0.95      0.42  16   0.0039 0.017  0.41
## 
##  Item statistics 
##          n raw.r std.r r.cor r.drop mean   sd
## Item1  500  0.67  0.68  0.67   0.64  4.2 0.94
## Item2  500  0.71  0.72  0.72   0.68  4.0 0.97
## Item3  500  0.64  0.66  0.64   0.61  4.3 0.87
## Item4  500  0.68  0.69  0.67   0.65  4.1 0.95
## Item5  500  0.76  0.77  0.76   0.73  3.6 1.16
## Item6  500  0.74  0.74  0.74   0.71  3.5 1.15
## Item7  500  0.77  0.77  0.77   0.74  3.9 1.07
## Item8  500  0.76  0.76  0.75   0.73  3.8 1.07
## Item9  500  0.58  0.58  0.56   0.54  3.7 1.14
## Item10 500  0.66  0.66  0.64   0.62  4.0 1.11
## Item11 500  0.40  0.42  0.38   0.36  4.5 0.80
## Item12 500  0.62  0.63  0.61   0.59  4.1 0.91
## Item13 500  0.74  0.75  0.74   0.71  3.9 0.98
## Item14 500  0.38  0.37  0.34   0.31  3.4 1.23
## Item15 500  0.59  0.58  0.56   0.54  3.5 1.12
## Item16 500  0.54  0.53  0.50   0.48  3.2 1.17
## Item17 500  0.73  0.73  0.71   0.70  3.7 0.98
## Item18 500  0.74  0.74  0.73   0.71  3.6 1.13
## Item19 500  0.72  0.71  0.70   0.68  3.2 1.20
## Item20 500  0.71  0.70  0.70   0.68  3.3 1.13
## Item21 500  0.73  0.73  0.71   0.70  3.6 1.04
## Item22 500  0.70  0.69  0.69   0.67  3.5 1.14
## Item23 500  0.75  0.75  0.74   0.72  3.5 1.21
## 
## Non missing response frequency for each item
##           1    2    3    4    5 miss
## Item1  0.02 0.02 0.18 0.28 0.50    0
## Item2  0.01 0.06 0.20 0.34 0.39    0
## Item3  0.01 0.03 0.13 0.29 0.54    0
## Item4  0.02 0.04 0.19 0.35 0.41    0
## Item5  0.05 0.14 0.27 0.29 0.26    0
## Item6  0.06 0.13 0.29 0.29 0.23    0
## Item7  0.03 0.08 0.21 0.33 0.34    0
## Item8  0.02 0.09 0.24 0.30 0.34    0
## Item9  0.05 0.09 0.29 0.28 0.29    0
## Item10 0.04 0.06 0.19 0.27 0.44    0
## Item11 0.00 0.03 0.08 0.19 0.70    0
## Item12 0.01 0.04 0.20 0.37 0.38    0
## Item13 0.01 0.08 0.22 0.36 0.33    0
## Item14 0.09 0.14 0.29 0.24 0.24    0
## Item15 0.06 0.12 0.31 0.30 0.21    0
## Item16 0.09 0.15 0.35 0.25 0.17    0
## Item17 0.03 0.05 0.33 0.36 0.23    0
## Item18 0.05 0.12 0.25 0.35 0.24    0
## Item19 0.12 0.13 0.31 0.29 0.15    0
## Item20 0.09 0.11 0.34 0.31 0.14    0
## Item21 0.03 0.10 0.29 0.35 0.23    0
## Item22 0.07 0.12 0.29 0.33 0.19    0
## Item23 0.08 0.12 0.27 0.30 0.23    0
tab_descritiva <- BD_completo %>%  
  alpha(.)

O valor global do alpha de Cronbach foi de 0.9427, o que indica uma consistência interna muito boa (PESTANA et al., 2008).

tab_descritiva$total
##  raw_alpha std.alpha  G6(smc) average_r      S/N         ase     mean        sd
##  0.9427012 0.9435896 0.956227 0.4210521 16.72723 0.003646308 3.746174 0.7123813
##   median_r
##  0.4156862

Análise do valor de alpha excluindo um item cada vez: quando excluímos um item e o alpha aumenta muito, é indicativo de problema com o item, pois ao removê-lo a confiabilidade do instrumento aumenta.

Observamos que quando removemos dois itens (Itens 11 e 14) a confiabilidade aumenta, no entanto, a diferença é pequena. Teremos que analisar outros elementos para decidir se devemos eliminá-los ou não. A eliminação de um item deve ser uma decisão tomada levando em conta um conjunto de elementos (confiabilidade, correlações, cargas fatoriais, comunalidades), nunca com base em uma única evidência.

tab_descritiva$alpha.drop %>% 
  data.frame()  
tab_descritiva$alpha.drop %>%
  data.frame()%>%
  select(raw_alpha) %>% 
  arrange(raw_alpha)   #ordenando a tabela pelo valor do raw_alpha
##        raw_alpha
## Item7  0.9386583
## Item5  0.9386635
## Item8  0.9388026
## Item23 0.9388287
## Item18 0.9390067
## Item6  0.9390146
## Item13 0.9391360
## Item21 0.9392824
## Item17 0.9393886
## Item19 0.9394417
## Item20 0.9395342
## Item2  0.9396140
## Item22 0.9396713
## Item4  0.9400356
## Item1  0.9401676
## Item10 0.9403614
## Item3  0.9406238
## Item12 0.9408203
## Item15 0.9414754
## Item9  0.9416242
## Item16 0.9424699
## Item11 0.9433136
## Item14 0.9452929

Nas estatísticas dos itens podemos observar o valor do “r.drop”, que nos fornece a correlação entre os scores do item com os scores totais quando o item é excluído. Quando o valor do “r.drop” for baixo, ou seja, se a correlação for baixa, o item é um “candidato” à eliminação (análise inicial). Em geral, pode-se usar como referência o valor de 0.3 (se o tamanho da amostra for pequeno, é desejável que o valor da correlação seja ainda maior). Nessa análise, observamos que os itens 11 e 14 apresentaram os menores valores de correlação do score do item com o score total.

tab_descritiva$item.stats %>% 
  data.frame()  
tab_descritiva$item.stats %>%
  data.frame() %>%
  select(mean, sd, r.drop) %>%   #das estatísticas, selecionar média, d. padrão e correlação item-total 
  arrange(r.drop)                #ordenar pelo r.drop
##         mean        sd    r.drop
## Item14 3.400 1.2341175 0.3146608
## Item11 4.540 0.8035492 0.3593936
## Item16 3.246 1.1731311 0.4835550
## Item9  3.668 1.1438500 0.5357173
## Item15 3.478 1.1242972 0.5436352
## Item12 4.064 0.9130012 0.5872683
## Item3  4.332 0.8667633 0.6085907
## Item10 4.010 1.1065029 0.6190320
## Item1  4.218 0.9424715 0.6385801
## Item4  4.098 0.9477301 0.6486721
## Item22 3.456 1.1430999 0.6662656
## Item20 3.302 1.1319712 0.6754124
## Item2  4.032 0.9720420 0.6792900
## Item19 3.218 1.2038998 0.6820242
## Item17 3.696 0.9764686 0.6962473
## Item21 3.650 1.0438771 0.6969045
## Item6  3.502 1.1491898 0.7094903
## Item18 3.596 1.1275312 0.7107859
## Item13 3.914 0.9821064 0.7149352
## Item23 3.468 1.2066017 0.7204042
## Item8  3.834 1.0699222 0.7287612
## Item5  3.562 1.1614016 0.7319258
## Item7  3.878 1.0683627 0.7390616

5.2 Omega de McDonald

Diferentemente do Alpha de Cronbach, as estimativas do Ômega serão não-viesadas quando as cargas fatoriais dos itens avaliados forem diferentes entre elas (ou seja, quando a equivalência de tau é violada). Essa característica torna o Ômega de McDonald uma medida mais robusta de confiabilidade do instrumento. Além disso, as estimativas Ômega são robustas quando o modelo estimado contém mais de um fator (FLORA, 2020).

O pacote psych, previamente carregado, nos fornece os valores do Ômega de McDonald. Com base em uma análise paralela (discutida nas seções seguintes), observou-se que uma solução baseada em 3 fatores parece apropriada para refletir as relações subjacentes entre os itens. Essa informação foi inserida da função para o cálculo do Ômega.

resultado_omega <- BD_completo %>%
  omega(.,
      nfactors=3,       #number of factors believed to be group factors
      fm="wls",         
      poly=TRUE,        #matriz de correlação policórica 
      title="Omega",
      sl=TRUE,          #FALSE para gráfico com solução hierárquica
      labels=NULL,
      plot=TRUE,        #TRUE para mostrar o gráfico
      rotate="oblimin")

resultado_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.96 
## G.6:                   0.97 
## Omega Hierarchical:    0.77 
## Omega H asymptotic:    0.8 
## Omega Total            0.97 
## 
## Schmid Leiman Factor loadings greater than  0.2 
##           g   F1*   F2*   F3*   h2   u2   p2
## Item1  0.63  0.47             0.62 0.38 0.64
## Item2  0.66  0.54             0.74 0.26 0.59
## Item3  0.61  0.50             0.63 0.37 0.59
## Item4  0.62  0.43             0.58 0.42 0.67
## Item5  0.69  0.45             0.69 0.31 0.70
## Item6  0.67  0.42             0.63 0.37 0.71
## Item7  0.71  0.46             0.72 0.28 0.70
## Item8  0.70  0.37             0.64 0.36 0.75
## Item9  0.51  0.27             0.35 0.65 0.75
## Item10 0.62  0.30             0.49 0.51 0.77
## Item11 0.36  0.39             0.34 0.66 0.37
## Item12 0.57  0.36             0.46 0.54 0.71
## Item13 0.68  0.35             0.63 0.37 0.75
## Item14 0.31              0.66 0.54 0.46 0.18
## Item15 0.53              0.64 0.69 0.31 0.41
## Item16 0.47              0.45 0.44 0.56 0.51
## Item17 0.69  0.20        0.24 0.60 0.40 0.78
## Item18 0.71        0.36       0.67 0.33 0.76
## Item19 0.70        0.46       0.71 0.29 0.70
## Item20 0.71        0.51       0.77 0.23 0.65
## Item21 0.70        0.33       0.62 0.38 0.79
## Item22 0.70        0.50       0.74 0.26 0.66
## Item23 0.74        0.46       0.77 0.23 0.72
## 
## With eigenvalues of:
##   g F1* F2* F3* 
## 9.2 2.3 1.3 1.2 
## 
## general/max  3.92   max/min =   1.88
## mean percent general =  0.65    with sd =  0.15 and cv of  0.23 
## Explained Common Variance of the general factor =  0.65 
## 
## The degrees of freedom are 187  and the fit is  2.19 
## The number of observations was  500  with Chi Square =  1068.13  with prob <  2.3e-123
## The root mean square of the residuals is  0.03 
## The df corrected root mean square of the residuals is  0.04
## RMSEA index =  0.097  and the 10 % confidence intervals are  0.092 0.103
## BIC =  -94
## 
## Compare this with the adequacy of just a general factor and no group factors
## The degrees of freedom for just the general factor are 230  and the fit is  5.62 
## The number of observations was  500  with Chi Square =  2753.38  with prob <  0
## The root mean square of the residuals is  0.13 
## The df corrected root mean square of the residuals is  0.14 
## 
## RMSEA index =  0.148  and the 10 % confidence intervals are  0.143 0.153
## BIC =  1324.02 
## 
## Measures of factor score adequacy             
##                                                  g  F1*  F2*  F3*
## Correlation of scores with factors            0.89 0.74 0.71 0.84
## Multiple R square of scores with factors      0.79 0.55 0.51 0.70
## Minimum correlation of factor score estimates 0.57 0.11 0.01 0.40
## 
##  Total, General and Subset omega for each subset
##                                                  g  F1*  F2*  F3*
## Omega total for total scores and subscales    0.97 0.94 0.93 0.80
## Omega general for total scores and subscales  0.77 0.65 0.67 0.41
## Omega group for total scores and subscales    0.15 0.29 0.26 0.40
resultado_omega$omega.tot 
## [1] 0.9664249

O valor do Ômega de McDonald varia entre zero e 1, quanto mais próximo de 1, maior é a consistência interna do instrumento. Considera-se um valor aceitável de fidedignidade entre 0.70 e 0.90 (CAMPO-ARIAS e OVIEDO, 2008). Nesse exemplo, o valor global Ômega de McDonald (g) foi de 0.9664, o que indica uma consistência interna muito boa.

6 Análise Fatorial Exploratória (EFA)

O objetivo mais abrangente da EFA é identificar as relações subjacentes entre os itens medidos, ou então, avaliar a dimensionalidade de uma série de itens de maneira a identificar o menor número de traços latentes que explica o padrão das correlações (OSBORNE, 2014).

Com relação ao tamanho da amostra, Hair et al. (2009, p. 108) coloca como regra geral que o mínimo é ter pelo menos cinco vezes mais observações do que o número de itens a serem analisadas, e o tamanho mais aceitável teria uma proporção de dez para um. No entanto, alguns autores, como Izquierdo et al. (2014), destacam que não há uma razão recomendada entre o número de respondentes e itens, pois a necessidade é modulada pelas comunalidades dos itens (proporção da variância explicada pelos fatores comuns), pelo nível de correlação entre os fatores e pelo número de variáveis que definem cada fator. Se as comunalidades forem superiores a 0.5, 100 ou 200 respondentes são geralmente suficiente. Quando as comunalidades são baixas, mesmo com um tamanho de amostra elevado a estimativa das cargas fatoriais podem não ser precisas (IZQUIERDO et al., 2014).

6.1 Matriz de correlação policórica

Como neste exemplo estamos trabalhando com variáveis categóricas ordinais, a Análise Fatorial será conduzida tendo como base a matriz de correlação policórica. Especialmente quando os itens têm quatro ou menos categorias de resposta, recomenda-se trabalhar com a correlação policórica (FINNEY and DISTEFANO, 2006; IZQUIERDO et al., 2014). Além disso, mesmo que tivéssemos uma número elevado de categorias, não é aconselhável aplicar uma EFA utilizando as correlações de Pearson se os itens possuirem distribuições assimétricas, pois os itens podem se agrupar em função da média de sua distribuição (IZQUIERDO et al., 2014).

poly <- BD_completo %>%
  polychoric(.)
correl_poly <- poly$rho %>%
  data.frame() 
correl_poly
##            Item1      Item2     Item3     Item4     Item5     Item6     Item7
## Item1  1.0000000 0.74332889 0.6336793 0.5745681 0.6444338 0.5743430 0.6319683
## Item2  0.7433289 1.00000000 0.7842065 0.6327082 0.7158265 0.7322927 0.6895841
## Item3  0.6336793 0.78420652 1.0000000 0.6611119 0.6372075 0.5579648 0.6578844
## Item4  0.5745681 0.63270816 0.6611119 1.0000000 0.6586327 0.5765189 0.6611546
## Item5  0.6444338 0.71582648 0.6372075 0.6586327 1.0000000 0.8012435 0.6955890
## Item6  0.5743430 0.73229274 0.5579648 0.5765189 0.8012435 1.0000000 0.6757137
## Item7  0.6319683 0.68958414 0.6578844 0.6611546 0.6955890 0.6757137 1.0000000
## Item8  0.6142244 0.59857723 0.5742895 0.6225153 0.6478991 0.6036748 0.7179466
## Item9  0.5718622 0.43718615 0.3807924 0.4221941 0.4032370 0.4552096 0.4536623
## Item10 0.5272864 0.49702490 0.4764758 0.4727249 0.5450127 0.5103771 0.6103930
## Item11 0.4055661 0.37729919 0.4159210 0.3859603 0.3429429 0.3573045 0.4416617
## Item12 0.4888458 0.51823072 0.4982649 0.4806930 0.5484927 0.5294384 0.5484186
## Item13 0.5702983 0.56152156 0.5552403 0.5953851 0.6246276 0.6255477 0.6668924
## Item14 0.1706246 0.07661801 0.1270917 0.2406819 0.2080145 0.2356574 0.1669921
## Item15 0.3809841 0.32625149 0.3249609 0.3557672 0.3741973 0.3923918 0.4107983
## Item16 0.4132548 0.35622351 0.3222933 0.3435856 0.3837035 0.3666408 0.3491570
## Item17 0.4990333 0.53855625 0.5321609 0.4920017 0.5740792 0.5309355 0.5842846
## Item18 0.4705776 0.47093488 0.4782687 0.4539819 0.5334021 0.4675845 0.5975830
## Item19 0.4124348 0.49783494 0.3798703 0.4654058 0.5485817 0.5349638 0.5287492
## Item20 0.4193590 0.43900871 0.4064772 0.4500664 0.5056012 0.4777999 0.5163768
## Item21 0.5135333 0.52331059 0.5094466 0.4787426 0.5370890 0.5595998 0.5755919
## Item22 0.4597161 0.46653272 0.4451922 0.4449727 0.5174401 0.4854261 0.4878105
## Item23 0.4742828 0.54240246 0.4856341 0.5176462 0.5774439 0.5499104 0.6064418
##            Item8     Item9    Item10    Item11    Item12    Item13     Item14
## Item1  0.6142244 0.5718622 0.5272864 0.4055661 0.4888458 0.5702983 0.17062461
## Item2  0.5985772 0.4371862 0.4970249 0.3772992 0.5182307 0.5615216 0.07661801
## Item3  0.5742895 0.3807924 0.4764758 0.4159210 0.4982649 0.5552403 0.12709175
## Item4  0.6225153 0.4221941 0.4727249 0.3859603 0.4806930 0.5953851 0.24068186
## Item5  0.6478991 0.4032370 0.5450127 0.3429429 0.5484927 0.6246276 0.20801455
## Item6  0.6036748 0.4552096 0.5103771 0.3573045 0.5294384 0.6255477 0.23565742
## Item7  0.7179466 0.4536623 0.6103930 0.4416617 0.5484186 0.6668924 0.16699213
## Item8  1.0000000 0.5136720 0.6099789 0.3697439 0.5659014 0.6647983 0.24749470
## Item9  0.5136720 1.0000000 0.5438054 0.2935031 0.4737259 0.4348766 0.21814455
## Item10 0.6099789 0.5438054 1.0000000 0.3903056 0.4730948 0.6024422 0.17522123
## Item11 0.3697439 0.2935031 0.3903056 1.0000000 0.4549471 0.3914485 0.21308495
## Item12 0.5659014 0.4737259 0.4730948 0.4549471 1.0000000 0.6283847 0.23176017
## Item13 0.6647983 0.4348766 0.6024422 0.3914485 0.6283847 1.0000000 0.32685903
## Item14 0.2474947 0.2181445 0.1752212 0.2130849 0.2317602 0.3268590 1.00000000
## Item15 0.4370381 0.3350622 0.4103601 0.2613814 0.2897160 0.4633520 0.59776615
## Item16 0.4124795 0.2933315 0.3230590 0.2174356 0.2980685 0.4095917 0.41711458
## Item17 0.5771683 0.4584276 0.5181605 0.3915013 0.4664946 0.5680131 0.33967010
## Item18 0.5906201 0.4124351 0.5171133 0.2740700 0.4480613 0.5928752 0.29196141
## Item19 0.5336315 0.4592264 0.5365396 0.1333510 0.4482055 0.4930443 0.26291555
## Item20 0.5505544 0.3292471 0.4611465 0.1565719 0.4283107 0.4985968 0.23101422
## Item21 0.5620943 0.4137848 0.5232027 0.2521824 0.4670326 0.5681429 0.21126346
## Item22 0.5098344 0.4085978 0.4668780 0.1544021 0.4213080 0.4919542 0.20901330
## Item23 0.5427634 0.3989092 0.5062079 0.1795129 0.4664547 0.5843567 0.18147138
##           Item15    Item16    Item17    Item18    Item19    Item20    Item21
## Item1  0.3809841 0.4132548 0.4990333 0.4705776 0.4124348 0.4193590 0.5135333
## Item2  0.3262515 0.3562235 0.5385562 0.4709349 0.4978349 0.4390087 0.5233106
## Item3  0.3249609 0.3222933 0.5321609 0.4782687 0.3798703 0.4064772 0.5094466
## Item4  0.3557672 0.3435856 0.4920017 0.4539819 0.4654058 0.4500664 0.4787426
## Item5  0.3741973 0.3837035 0.5740792 0.5334021 0.5485817 0.5056012 0.5370890
## Item6  0.3923918 0.3666408 0.5309355 0.4675845 0.5349638 0.4777999 0.5595998
## Item7  0.4107983 0.3491570 0.5842846 0.5975830 0.5287492 0.5163768 0.5755919
## Item8  0.4370381 0.4124795 0.5771683 0.5906201 0.5336315 0.5505544 0.5620943
## Item9  0.3350622 0.2933315 0.4584276 0.4124351 0.4592264 0.3292471 0.4137848
## Item10 0.4103601 0.3230590 0.5181605 0.5171133 0.5365396 0.4611465 0.5232027
## Item11 0.2613814 0.2174356 0.3915013 0.2740700 0.1333510 0.1565719 0.2521824
## Item12 0.2897160 0.2980685 0.4664946 0.4480613 0.4482055 0.4283107 0.4670326
## Item13 0.4633520 0.4095917 0.5680131 0.5928752 0.4930443 0.4985968 0.5681429
## Item14 0.5977662 0.4171146 0.3396701 0.2919614 0.2629155 0.2310142 0.2112635
## Item15 1.0000000 0.6060512 0.5224863 0.4666426 0.4135760 0.4260094 0.4477170
## Item16 0.6060512 1.0000000 0.4710023 0.4266929 0.3601958 0.4156478 0.3918426
## Item17 0.5224863 0.4710023 1.0000000 0.7006512 0.5610620 0.5629014 0.5747370
## Item18 0.4666426 0.4266929 0.7006512 1.0000000 0.6908195 0.7129568 0.6384617
## Item19 0.4135760 0.3601958 0.5610620 0.6908195 1.0000000 0.7522714 0.6015437
## Item20 0.4260094 0.4156478 0.5629014 0.7129568 0.7522714 1.0000000 0.6751346
## Item21 0.4477170 0.3918426 0.5747370 0.6384617 0.6015437 0.6751346 1.0000000
## Item22 0.3855907 0.3135668 0.5646291 0.6291189 0.7063733 0.7863440 0.6746304
## Item23 0.4390717 0.3507399 0.6128193 0.6988459 0.7350279 0.7090558 0.6998618
##           Item22    Item23
## Item1  0.4597161 0.4742828
## Item2  0.4665327 0.5424025
## Item3  0.4451922 0.4856341
## Item4  0.4449727 0.5176462
## Item5  0.5174401 0.5774439
## Item6  0.4854261 0.5499104
## Item7  0.4878105 0.6064418
## Item8  0.5098344 0.5427634
## Item9  0.4085978 0.3989092
## Item10 0.4668780 0.5062079
## Item11 0.1544021 0.1795129
## Item12 0.4213080 0.4664547
## Item13 0.4919542 0.5843567
## Item14 0.2090133 0.1814714
## Item15 0.3855907 0.4390717
## Item16 0.3135668 0.3507399
## Item17 0.5646291 0.6128193
## Item18 0.6291189 0.6988459
## Item19 0.7063733 0.7350279
## Item20 0.7863440 0.7090558
## Item21 0.6746304 0.6998618
## Item22 1.0000000 0.7758245
## Item23 0.7758245 1.0000000

Visualização das correlações:

corrplot(as.matrix(correl_poly), method = "shade")

De modo geral, pode-se observar que os itens estão correlacionados. Os itens tem correlação forte (entre 0.6 a 0.8) com pelo menos um outro item, exceto o item 11, em que a correlação mais alta foi de 0.45.

6.2 Verificar a adequação da estrutura das intercorrelações

Podemos avaliar a adequação da estrutura das intercorrelações para a aplicação da EFA através da medida de adequação da amostra (MSA), também conhecida como medida de Kaiser–Meyer–Olkin (KMO).

Essa medida varia de 0 a 1 e pode ser interpretada com as seguintes orientações:

MSA \(\geq\) 0.8, boa adequação;

0.8 \(>\) MSA \(\geq\) 0.7, mediana;

0.7 \(>\) MSA \(\geq\) 0.6, medíocre;

0.6 \(>\) MSA \(\geq\) 0,5, ruim;

MSA \(<\) 0.5, inaceitável.

Quando a adequação geral não for boa, as MSA de cada item podem identificar variáveis para eliminação de modo a atingir um valor geral de 0.50 (HAIR et al., 2009).

KMO(correl_poly)    
## Kaiser-Meyer-Olkin factor adequacy
## Call: KMO(r = correl_poly)
## Overall MSA =  0.93
## MSA for each item = 
##  Item1  Item2  Item3  Item4  Item5  Item6  Item7  Item8  Item9 Item10 Item11 
##   0.92   0.89   0.92   0.96   0.93   0.90   0.97   0.98   0.89   0.95   0.90 
## Item12 Item13 Item14 Item15 Item16 Item17 Item18 Item19 Item20 Item21 Item22 
##   0.94   0.95   0.79   0.90   0.94   0.97   0.95   0.93   0.92   0.98   0.93 
## Item23 
##   0.95

Ainda, para testar a existência de correlações significativas entre os itens, pode-se realizar o Teste de esfericidade de Bartlett, que testa a hipótese de que as variáveis não sejam correlacionadas na população, ou seja, a matriz de correlação da população é uma matriz identidade onde cada variável se correlaciona perfeitamente com ela mesma, mas não apresenta correlação com as outras variáveis. Quando o resultado do teste indicar p-value < 0,05 (como no caso de exemplo abaixo), conclui-se que existem correlações suficientes existem entre as variáveis para se continuar a análise. No entanto, deve-se observar que a medida em que o tamanho da amostra aumenta, o teste se torna mais sensível na detecção de correlações entre as variáveis, isso significa que quando estamos trabalhando com amostras grandes, quase sempre o teste concluirá que há correlações significativas (HAIR et al. 2009).

cortest.bartlett(correl_poly, n = 500)  #entramos com a matriz de correlações e informamos o tamanho da amostra n
## $chisq
## [1] 9002.46
## 
## $p.value
## [1] 0
## 
## $df
## [1] 253

6.3 Decisão sobre quantos fatores reter na EFA

De acordo com Hair et al. (2009), para determinar o número de fator que serão retidos na EFA o pesquisador deve “combinar uma fundamentação conceitual (quantos fatores devem estar na estrutura?) com alguma evidência empírica (quantos fatores podem ser razoavelmente sustentados?)”.

Para apoiar a decisão baseada na evidência empírica, diferentes critérios podem ser empregados, o mais comum é o Critério da Raiz latente (ou de Kaiser). Nesse critério, apenas os fatores que têm raízes latentes (autovalores) maiores que 1 são considerados. Usar o autovalor para estabelecer um corte é mais adequado quando o número de variáveis (itens) estiver entre 20 e 50 (HAIR et al., 2009).

O Critério do teste Scree é usado para identificar o número ótimo de fatores que podem ser extraídos antes que a quantia de variância única comece a dominar a estrutura de variância comum. O teste Scree é determinado a partir do gráfico das raízes latentes em relação ao número de fatores. Os ângulos de inclinação decrescem acentuadamente no início e lentamente se aproximam de uma reta horizontal. O ponto no qual o gráfico começa a ficar horizontal é considerado indicativo do número máximo de fatores a serem extraídos (HAIR et al., 2009).

De acordo com Garrido, Abad e Ponsoda (2012) e Izquierdo et al., (2014), principalmente quando estamos trabalhando com variáveis categóricas, o procedimento da Análise paralela é recomendada para determinação do número de fatores a extrair. A análise paralela é baseada na simulação de dados aleatórios para determinar o número de fatores. Conjuntos aleatórios de dados são submetidos à análise e os autovalores obtidos são registrados. Como critério adota-se que os fatores (ou componentes) a serem retidos na análise com os dados reais devem ter autovalor claramente superior do que os autovalores obtidos aleatoriamente (LEDESMA e MORA, 2007).

analise_paralela <- fa.parallel(correl_poly,   #já entramos com a matriz de correlações, poderíamos ter entrado com os dados originais (neste caso, n.obs=NULL)
                                n.obs=500,       #n.obs = quantos casos foram usados para determinar a matriz de correlações (quando o input é a matriz de correlações)
                                fm="wls",        #factor method (minres, ml, uls, wls, gls, pa)
                                fa="fa",         #fa="pc" ou "fa" ou "both"
                                nfactors=1,      #marcação no gráfico para autovalor > 1
                                main="Parallel Analysis Scree Plots",
                                n.iter=20,
                                error.bars=FALSE,
                                se.bars=FALSE,
                                SMC=FALSE,
                                ylabel=NULL,
                                show.legend=TRUE,
                                sim=TRUE,
                                quant=.95,
                                cor="poly",       
                                plot=TRUE)

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

O gráfico acima mostra que 3 a 4 fatores parecem apropriados. A linha preta indica os autovalores maiores que 1 (critério da Raiz Latente). Pelo critério do teste de Scree observa-se que a partir do segundo fator os ângulos de inclinação decrescem acentuadamente, se aproximando de uma reta a partir do quarto fator. A linha vermelha pontilhada mostra o resultado da análise paralela. Para o quarto fator, apesar do autovalor dos dados reais ser superior ao dos dados simulados, nota-se que estão bastante próximos.

Os autovalores mostrados no gráfico para os dados reais e os simulados são os seguintes (critério da análise paralela):

analise_paralela$fa.values
##  [1] 11.379814065  1.329950075  0.821883004  0.332218752  0.188615824
##  [6]  0.170439373  0.073863767  0.052430142  0.009537694 -0.032830280
## [11] -0.067902383 -0.091004474 -0.105616570 -0.136922526 -0.151656338
## [16] -0.186427300 -0.218293395 -0.227124639 -0.267627602 -0.327444718
## [21] -0.344381981 -0.356647134 -0.464305283
analise_paralela$fa.sim
##  [1]  0.557835769  0.368634702  0.317656192  0.275672909  0.233850754
##  [6]  0.191347054  0.154260850  0.120183305  0.093443164  0.058398578
## [11]  0.030403986  0.001653355 -0.030026599 -0.054712699 -0.078176284
## [16] -0.105103145 -0.133818155 -0.161601400 -0.193064208 -0.219090052
## [21] -0.247947820 -0.288676865 -0.332233969

Neste exemplo, usaremos a solução baseada em 3 fatores. Em caso de dúvida a respeito da melhor solução, é possível rodar as duas soluções (com 3 e 4 fatores) e analisar qual delas traz resultados mais coerentes com o conhecimento prévio do pesquisador sobre o tema.

6.4 Conduzindo a EFA

Para conduzir a EFA, precisamos determinar o método de extração dos fatores. Os procedimentos Ordinary Least Squares (OLS, também conhecido como unweighted least squares, ULS)), Minimum Resisuals (MINRES), Principal Axes, Weighted Least Square (WLS) e Máxima verossimilhança (Maximum Likelihood - ML) são os mais frequentemente utilizados.

O método ML requer testar a suposição de que as variáveis seguem uma distribuição normal multivariada para obter índices de qualidade de ajuste do modelo. O método ML apresenta mais problemas de convergência e estimativas incorretas se a amostra for pequena (BANDALOS e FINNEY, 2010; IZQUIERDO et al., 2014). Para itens categóricos, os métodos WLS, WLSMV (que é um refinamento do método WLS) e OLS são recomendados (IZQUIERDO et al., 2014).

Quanto ao método de rotação dos fatores, podemos usar um método de rotação ortogonal ou oblíquo. Métodos de rotação ortogonais supõem que os fatores são não correlacionados, o que não é uma tendência em estudos psicométricos, nas Ciências Sociais ou na saúde. Nessas áreas, os fatores apresentam correlação, por isso, métodos oblíquos como o oblimin, promax ou geominQ são mais adequados.

modelo_policorico1 <- BD_completo %>% 
 fa(., 
    nfactors = 3, 
    cor = "poly", 
    fm = "wls", 
    rotate = "geominQ")   #método de rotação oblíqua, supõe que há correlação entre os fatores.

A seguir é possível observar as cargas fatoriais de cada item em cada um dos três fatores (os valores suprimidos correspondem a cargas fatoriais nulas ou muito baixas).

Hair et al. (2009) e Wolfinbarger e Gilly (2003) sugerem os seguintes critérios para reter os itens na análise: os itens devem carregar pelo menos 0.50 em um fator e nenhum item deve carregar mais de 0.50 em dois ou mais fatores (cross-loadings).

Observa-se que o item 17 apresentou carga fatorial fraca a moderada nos três fatores. Esse item parece ser menos importante para explicar a satisfação dos alunos. O item 9 teve carga fatorial de 0.48 no fator 1, estando próximo do valor de referência. Os demais itens tiveram carga fatorial elevada.

O item 11 apresentou carga fatorial elevada no Fator 1 e moderada no Fator 2, os demais itens não apresentam carregamentos cruzados (cross-loading) relevantes, mostrando que são significativos para explicar apenas um dos fatores.

modelo_policorico1$loadings
## 
## Loadings:
##        WLS1   WLS2   WLS3  
## Item1   0.831              
## Item2   0.939        -0.188
## Item3   0.880        -0.107
## Item4   0.759              
## Item5   0.785              
## Item6   0.741              
## Item7   0.804              
## Item8   0.661  0.126       
## Item9   0.478         0.109
## Item10  0.537  0.163       
## Item11  0.688 -0.364  0.167
## Item12  0.632              
## Item13  0.625         0.178
## Item14                0.791
## Item15                0.751
## Item16  0.176         0.527
## Item17  0.358  0.303  0.266
## Item18  0.139  0.619  0.172
## Item19         0.800       
## Item20         0.896       
## Item21  0.246  0.575       
## Item22         0.880       
## Item23  0.130  0.800       
## 
##                 WLS1  WLS2  WLS3
## SS loadings    7.222 3.901 1.719
## Proportion Var 0.314 0.170 0.075
## Cumulative Var 0.314 0.484 0.558
modelo_policorico1$communalities
##     Item1     Item2     Item3     Item4     Item5     Item6     Item7     Item8 
## 0.6115155 0.7196933 0.6288997 0.5830173 0.6874792 0.6195979 0.7111266 0.6343437 
##     Item9    Item10    Item11    Item12    Item13    Item14    Item15    Item16 
## 0.3118031 0.5010840 0.3685555 0.4727874 0.6195998 0.5499805 0.6841324 0.4339477 
##    Item17    Item18    Item19    Item20    Item21    Item22    Item23 
## 0.5941051 0.6669618 0.7020697 0.7601955 0.6205609 0.7411626 0.7584316

Os itens 9 e 11 apresentaram baixa comunalidade. Comunalidade pode ser definida como a “quantia total de variância que uma variável original compartilha com todas as outras variáveis incluídas na análise” (HAIR et al., 2009). Um valor mínimo de 0.5 é desejável para a comunalidade ser considerada satisfatória, tendo autores que defendem valores mais baixos como satisfatórios. Conforme destacado em Brown (2015, p. 34), itens com comunalidade baixa e itens com carregamentos cruzados (cross-loadings) em dois ou mais fatores são candidatos à eliminação.

fa.diagram(modelo_policorico1)

Podemos rodar novamente a AFE, agora sem os itens 9, 11 e 17. Item 9: apresentou baixo valor de comunalidade e carga fatorial fraca a moderada nos fatores. Item 11: apresentou baixo valor de comunalidade; carga fatorial elevada no fator 1 e moderada no fator 2 (sugestão de cross-loading). Além disso, o valor do alpha de Cronbach quando o item é excluído e baixas correlações já mostravam que esse item poderia ter problema. Item 17: não apresentou carga fatorial relevante em nenhum dos fatores.

Base de dados sem os itens 9, 11 e 17:

BD_completo2 <- BD_completo %>% 
  select(-c(Item9,Item11,Item17))
modelo_policorico2 <- BD_completo2 %>% 
    fa(., 
    nfactors = 3, 
    cor = "poly", 
    fm = "wls", 
    rotate = "geominQ")
modelo_policorico2
## Factor Analysis using method =  wls
## Call: fa(r = ., nfactors = 3, rotate = "geominQ", fm = "wls", cor = "poly")
## Standardized loadings (pattern matrix) based upon correlation matrix
##         WLS1  WLS2  WLS3   h2   u2 com
## Item1   0.81 -0.06  0.04 0.61 0.39 1.0
## Item2   0.96 -0.05 -0.15 0.77 0.23 1.1
## Item3   0.88 -0.07 -0.08 0.64 0.36 1.0
## Item4   0.75 -0.01  0.04 0.58 0.42 1.0
## Item5   0.81  0.06 -0.01 0.71 0.29 1.0
## Item6   0.75  0.05  0.03 0.64 0.36 1.0
## Item7   0.78  0.10 -0.02 0.72 0.28 1.0
## Item8   0.64  0.14  0.11 0.64 0.36 1.2
## Item10  0.48  0.22  0.07 0.47 0.53 1.5
## Item12  0.56  0.10  0.05 0.44 0.56 1.1
## Item13  0.60  0.11  0.20 0.63 0.37 1.3
## Item14 -0.06 -0.08  0.79 0.53 0.47 1.0
## Item15  0.08  0.05  0.78 0.71 0.29 1.0
## Item16  0.19  0.02  0.55 0.45 0.55 1.2
## Item18  0.12  0.65  0.14 0.66 0.34 1.2
## Item19  0.02  0.81  0.03 0.70 0.30 1.0
## Item20 -0.08  0.92  0.03 0.78 0.22 1.0
## Item21  0.23  0.60  0.04 0.63 0.37 1.3
## Item22 -0.02  0.91 -0.07 0.75 0.25 1.0
## Item23  0.13  0.80 -0.06 0.76 0.24 1.1
## 
##                       WLS1 WLS2 WLS3
## SS loadings           6.66 4.34 1.81
## Proportion Var        0.33 0.22 0.09
## Cumulative Var        0.33 0.55 0.64
## Proportion Explained  0.52 0.34 0.14
## Cumulative Proportion 0.52 0.86 1.00
## 
##  With factor correlations of 
##      WLS1 WLS2 WLS3
## WLS1 1.00 0.69 0.44
## WLS2 0.69 1.00 0.49
## WLS3 0.44 0.49 1.00
## 
## Mean item complexity =  1.1
## Test of the hypothesis that 3 factors are sufficient.
## 
## The degrees of freedom for the null model are  190  and the objective function was  16.16 with Chi Square of  7942.02
## The degrees of freedom for the model are 133  and the objective function was  1.55 
## 
## The root mean square of the residuals (RMSR) is  0.03 
## The df corrected root mean square of the residuals is  0.04 
## 
## The harmonic number of observations is  500 with the empirical chi square  175.42  with prob <  0.0081 
## The total number of observations was  500  with Likelihood Chi Square =  758.72  with prob <  2.7e-88 
## 
## Tucker Lewis Index of factoring reliability =  0.884
## RMSEA index =  0.097  and the 90 % confidence intervals are  0.09 0.104
## BIC =  -67.82
## Fit based upon off diagonal values = 1
## Measures of factor score adequacy             
##                                                   WLS1 WLS2 WLS3
## Correlation of (regression) scores with factors   0.98 0.97 0.91
## Multiple R square of scores with factors          0.95 0.94 0.83
## Minimum correlation of possible factor scores     0.90 0.88 0.65

Novas cargas fatoriais:

modelo_policorico2$loadings
## 
## Loadings:
##        WLS1   WLS2   WLS3  
## Item1   0.806              
## Item2   0.960        -0.147
## Item3   0.877              
## Item4   0.748              
## Item5   0.805              
## Item6   0.747              
## Item7   0.778  0.104       
## Item8   0.639  0.138  0.115
## Item10  0.479  0.218       
## Item12  0.558  0.105       
## Item13  0.602  0.108  0.199
## Item14                0.788
## Item15                0.777
## Item16  0.187         0.553
## Item18  0.116  0.650  0.136
## Item19         0.811       
## Item20         0.920       
## Item21  0.226  0.598       
## Item22         0.912       
## Item23  0.128  0.803       
## 
##                 WLS1  WLS2  WLS3
## SS loadings    6.157 3.889 1.652
## Proportion Var 0.308 0.194 0.083
## Cumulative Var 0.308 0.502 0.585
modelo_policorico2$communalities
##     Item1     Item2     Item3     Item4     Item5     Item6     Item7     Item8 
## 0.6211774 0.7595905 0.6511508 0.5907877 0.7147335 0.6507985 0.7148874 0.6411517 
##    Item10    Item12    Item13    Item14    Item15    Item16    Item18    Item19 
## 0.4786782 0.4224298 0.6262565 0.5393125 0.7037812 0.4509452 0.6625480 0.7054848 
##    Item20    Item21    Item22    Item23 
## 0.7691833 0.6338480 0.7527147 0.7484079

Agora que todos os itens possuem carga fatorial significativa e possuem valores de comunalidade moderados a altos. Os itens 10, 12 e 16 ainda possuem comunalidade abaixo de 0.50, mas mesmo assim manteremos esses itens na análise.

Observando os itens que carregaram significativamente em cada fator (questionário disponível no moodle da disciplina), notamos que os itens que se mostram significativos no primeiro fator (item 1 ao item 13), estão relacionados à atuação dos docentes. Este item explica 31.4% da variabilidade dos dados, sendo, claramente, o mais importante. No fator 2 se mostraram significativos os itens relacionados à infraestrutura (itens 14 a 16), explicando cerca de 17% da variabilidade dos dados. No último fator, temos como significativos os itens relacionados à disciplina (itens 18 ao 23), este último fator explica apenas 7.5% da variância dos dados.

fa.diagram(modelo_policorico2)

7 Análise Fatorial Confirmatória (CFA)

Quando o pesquisador tem um conhecimento prévio teórico sólido sobre a estrutura das relações entre os itens (que permita saber o número adequado de fatores e a relação dos itens com os fatores), a etapa da análise fatorial exploratória (EFA) pode não ser necessária (IZQUIERDO et al., 2014), podendo-se aplicar diretamente a análise fatorial confirmatória (CFA).

Quando tanto a EFA quanto a CFA são conduzidas, alguns autores defendem que é adequado dividir o conjunto de dados em duas partes, usando uma parte para a EFA e a outra para a CFA (validação cruzada). Neste sentido, seria possível testar o grau de estabilidade dos resultados obtidos usando amostras independentes (BROWN, 2006, p. 301; IZQUIERDO et al., 2014). Os autores destacam que quando o conjunto de dados é o mesmo nas duas etapas, os resultados da CFA tendem a fornecer bons índices de ajuste e estar em conformidade com a estrutura da escala descoberta na EFA justamente por terem sido calculados com base nos mesmos dados.

No entanto, vale observar que o fato de usar os mesmos dados não garante um bom ajuste na CFA. Na etapa confirmatória, cada item é associado a um fator, diferentemente da etapa exploratória em que todos os itens tem carga fatorial em todos os fatores. Conforme Arruda et al. (2020), essas restrições implementadas na CFA fazem com que os resultados de ajuste sejam mais pobres que os alcançados na EFA.

Outros autores destacam que a CFA pode ser definida como uma regra de decisão para, com base em dados amostrais, rejeitar ou não rejeitar uma ou mais hipóteses sobre uma estrutura fatorial populacional e que as pessoas muitas vezes interpretam isso como a comparação dos resultados de uma amostra com os de outra amostra, mas não é isso que a generalização aborda. A generalização aplica resultados de uma amostra para uma população. Sem uma análise cuidadosa de como nossas amostras representam a população, não abordaremos adequadamente a questão de generalização (HURLEY et al., 1997). Por isso, principalmente quando não dispomos de uma grande quantidade de dados, a divisão do conjunto de dados em duas partes pode empobrecer a qualidade da amostra usada em cada uma das etapas da análise.

7.1 Escrevendo o modelo

A partir dos insights sobre a estrutura das relações entre os itens, obtidos na EFA, podemos escrever o modelo a seguir, baseado em três fatores (Satisfação com relação aos professores; Satisfação com relação à Infraestrutura; Satisfação com relação à Disciplina). Cada um dos itens está associado a um único fator (ao que apresentou maior carga fatorial na EFA).

mod_cfa_1 <- 'prof =~ Item1 + Item2 + Item3 + Item4 + Item5 + Item6 + Item7 + Item8  + Item10 +  Item12 + Item13 
infra   =~ Item14 + Item15 + Item16
disc =~ Item18 + Item19 + Item20 + Item21 + Item22 + Item23'

O modelo da CFA será estimado com base no método WLSMV (weighted least squares means and variance adjusted), que é recomendado para o caso em que temos itens categóricos (IZQUIERDO et al., 2014):

cfa_1 <- cfa(mod_cfa_1,          
             data=BD_completo2,  
             estimator = 'WLSMV',  
             orthogonal=FALSE,
             ordered=TRUE)
cfa_1
## lavaan 0.6-12 ended normally after 50 iterations
## 
##   Estimator                                       DWLS
##   Optimization method                           NLMINB
##   Number of model parameters                       103
## 
##   Number of observations                           500
## 
## Model Test User Model:
##                                               Standard      Robust
##   Test Statistic                               434.270     679.919
##   Degrees of freedom                               167         167
##   P-value (Chi-square)                           0.000       0.000
##   Scaling correction factor                                  0.700
##   Shift parameter                                           59.735
##     simple second-order correction

A seguir é apresentado o resumo dos resultados (parâmetros) do modelo. As cargas fatoriais (betas do modelo) são apresentadas em ordem decrescente dentro de cada fator. Observa-se que as cargas fatoriais são todas altas.

tabela_cfa1 <- parameterEstimates(cfa_1, standardized = TRUE) %>%
  filter(op == "=~") %>%
  select('Factor'=lhs,
         Item=rhs,
         B=est,
         SE=se, 
         Z=z,
         Beta=std.all) %>%
  arrange(Factor,desc(Beta))
tabela_cfa1
##    Factor   Item     B    SE      Z  Beta
## 1    disc Item23 1.059 0.028 38.172 0.875
## 2    disc Item20 1.032 0.025 41.575 0.853
## 3    disc Item22 1.012 0.028 35.904 0.837
## 4    disc Item19 1.009 0.030 33.720 0.834
## 5    disc Item18 1.000 0.000     NA 0.827
## 6    disc Item21 0.994 0.033 30.300 0.822
## 7   infra Item15 1.616 0.132 12.289 0.882
## 8   infra Item16 1.410 0.124 11.392 0.770
## 9   infra Item14 1.000 0.000     NA 0.546
## 10   prof  Item5 1.119 0.037 30.049 0.855
## 11   prof  Item7 1.105 0.036 31.016 0.844
## 12   prof  Item2 1.098 0.035 31.538 0.839
## 13   prof  Item6 1.080 0.037 29.127 0.825
## 14   prof  Item8 1.068 0.036 29.329 0.816
## 15   prof Item13 1.049 0.037 28.188 0.801
## 16   prof  Item3 1.026 0.038 27.225 0.784
## 17   prof  Item1 1.000 0.000     NA 0.764
## 18   prof  Item4 0.985 0.038 25.683 0.752
## 19   prof Item10 0.930 0.040 23.525 0.710
## 20   prof Item12 0.883 0.043 20.375 0.675

Representação gráfica do modelo estimado:

semPaths(cfa_1, title = FALSE, 
         layout = "spring",
         #style = "lisrel",
         label.cex = 1.2, #font - variables
         sizeLat = 5,  #font latent
         sizeMan = 4, #font - variables
         edge.label.cex = 0.6, #lambda font
         minimum = 0.1, 
         mar = c(1, 1, 1, 1), 
         residuals = FALSE, 
         intercepts = FALSE, 
         thresholds = FALSE, 
         whatLabels = "std", #"hide", #para omitir as cargas
         posCol = c("black", "dimgray"), #color of paths
         color = list(lat = rgb(173, 216, 230, maxColorValue = 255), 
                      man = rgb(240, 248, 255, maxColorValue = 255)))

7.2 Avaliação do ajuste do modelo

Uma série de medidas podem ser usadas para avaliar o ajuste do modelo, como a estatística Qui-Quadrado, Erro Quadrático Médio de Aproximação (RMSEA), Quadrado Médio Padronizado Residual (SRMR), Índice de Ajuste Comparativo (CFI) e Índice de Tucker-Lewis (TLI). Os índices CFI e TLI são as mais importantes.

Indicações de bom ajuste do modelo de acordo com Hu e Bentler (1999), Browne e Cudeck (1993) e Hair et al. (2009):

Chi-quadrado relativo (\(\chi\)^2/df) < 3;

SRMR < 0.09;

RMSEA < 0.05 (bom ajuste); RMSEA < 0.1 (ajuste razoável);

CFI > 0.95;

TLI > 0.95.

A rejeição de Ho indica que o modelo não reproduz bem a matriz de covariância amostral, ou seja, que os dados não se ajustam ao modelo, no entanto, o valor do Chi-quadrado é inflado com o aumento da amostra, sendo sempre significativo para amostras grandes, mesmo que com diferenças pequenas, por isso, é mais adequado avaliar o Chi-quadrado relativo. Também é importante que a avaliação do ajuste do modelo seja feita com base no conjunto de medidas e nunca observando medidas individuais de ajuste.

Observando as medidas obtidas para o exemplo apresentado, notamos que o modelo tem um bom ajuste.

fitMeasures(cfa_1, c("aic","chisq", "df", "pvalue", "cfi", "tli", "rmsea", "srmr"))
##     aic   chisq      df  pvalue     cfi     tli   rmsea    srmr 
##      NA 434.270 167.000   0.000   0.995   0.995   0.057   0.048

7.3 Avaliação da validade de constructo

A Variância Média Extraída (Average Variance Extracted - AVE) e a Confiabilidade Composta (ou Composite Reliability - CR) foram calculados para avaliar a validade de construto do modelo proposto. Evidências de validade de construto indicam que os itens medidos na amostra representam as medidas reais que existem na população (HAIR et al, 2009). Ainda, segundo Fachel e Camey (2000), a validade de construto pode ser entendida como o quanto um instrumento mede o traço ou conceito teórico que se propõe a medir.

As medidas podem ser avaliadas seguindo as recomendações apresentadas em Fornell e Larcker (1981) e Hair et al. (2009): as medidas da AVE para todos os fatores devem ser maiores que 0.5; o modelo deve apresentar Confiabilidade Composta (CR) acima de 0.7 para todos os fatores, sugerindo a consistência interna de cada dimensão.

A AVE pode ser calculada através da função reliability do pacote semTools (“avevar”).

semTools::reliability(cfa_1)
## For constructs with categorical indicators, Zumbo et al.`s (2007) "ordinal alpha" is calculated in addition to the standard alpha, which treats ordinal variables as numeric. See Chalmers (2018) for a critique of "alpha.ord" and the response by Zumbo & Kroc (2019). Likewise, average variance extracted is calculated from polychoric (polyserial) not Pearson correlations.
##                prof     infra      disc
## alpha     0.9252345 0.7347713 0.9148037
## alpha.ord 0.9441313 0.7790572 0.9330624
## omega     0.9323382 0.7426308 0.9183988
## omega2    0.9323382 0.7426308 0.9183988
## omega3    0.9525895 0.7324186 0.9264784
## avevar    0.6234587 0.5561151 0.7084162

A confiabilidade composta pode ser obtida através da função compRelSEM do pacote semTools.

semTools::compRelSEM(cfa_1) 
##  prof infra  disc 
## 0.953 0.732 0.926

Os resultados da Variância Média Extraída e a Confiabilidade Composta, combinados com as cargas fatoriais dos itens nas dimensões da CFA, evidenciam validade de constructo do instrumento: todos os fatores apresentaram Variância Média Extraída superior a 0.5 e Confiabilidade Composta superior a 0.7. Conforme mostrado na etapa da CFA, todas as cargas fatoriais estão acima do limite de 0.5 e boa parte delas estão acima do limite ideal de 0.7.

8 Referências

ARRUDA, M.A.; ARRUDA, R. and ANUNCIAÇÃO, L. (2020). Psychometric properties and clinical utility of the executive function inventory for children and adolescents: a large multistage populational study including children with ADHD. Applied Neuropsychology: Child. v. 11. p.1-17.

BANDALOS, D.L.; FINNEY, S.J. (2010). Exploratory and confirmatory factor analysis. In G.R. Hancock and R.O. Mueller, (Eds.). Quantitative Methods in the Social and Behavioral Sciences: A Guide for Researchers and Reviewers, 2nd edition. New York, Routledge.

BROWN, T.A. (2006). Confirmatory factor analysis for applied research. New York: Guilford Press.

BRONE, M.W., and CUDECK, R. (1993). Alternative ways of assessing model fit. In K. A. Bollen & J. S. Long (Eds.), Testing structural equation models (pp. 136-162). Newbury Park, CA: Sage.

CAMPO-ARIAS, A., & OVIEDO, H. (2008). Propiedades psicométricas de una escala: La consistencia interna. Rev. Salud Pública, 10(5), p. 831–839.

FACHEL, J.M. G. and CAMEY, S. (2000). Avaliação psicométrica: a qualidade das medidas e o entendimento dos dados. Em J. A. Cunha (Org.). Psicodiagnóstico – V (p. 158-176). Porto Alegre: Artmed.

FINNEY, S.J. and DISTEFANO, C. (2006). Non-normal and categorical data in structural equation modeling. In G.R. Hancock & R.O. Mueller (Eds.), Structural equation modeling: A second course (p. 269-314). Greenwich, CT: Information Age.

FLORA, D.B. (2020). Your Coefficient Alpha Is Probably Wrong, but Which Coefficient Omega Is Right? A Tutorial on Using R to Obtain Better Reliability Estimates. Advances in Methods and Practices in Psychological Science, v. 3(4). p. 484-501.

FORNELL, C. and LARCKER, D.F. (1981). Evaluating Structural Equation Models with Unobservable Variables and Measurement Error Evaluating Structural Equation Models with. Source Journal of Marketing Research Journal of Marketing Research.

GARRIDO, L.E.; ABAD, F.J.; PONSODA, v. (2012). A new look at Horn’s parallel analysis with ordinal variables. Psychological Methods, in press. Psychol Methods. 18(4). p. 454-74.

HAIR, J.F.; BLACK, W.C.; BABIN, B.J.; ANDERSON, R.E. and TATHAM, R.L. (2009). Análise Multivariada de Dados. Bookman. 6 ed.

HU, L. and BENTLER, P.M. (1999). Cutoff criteria for fit indexes in covariance structure analysis: Conventional criteria versus new alternatives. Structural Equation Modeling: A Multidisciplinary Journal.

HURLEY, A.E.; SCANDURA, T.A.; SCHRIESHEIM, C.A.; BRANNICK, M.T.; SEERS, A.; VANDENBERG, R.J. and WILLIAMS, L.J. (1997). Exploratory and confirmatory factor analysis: guidelines, issues, and alternatives. JOURNAL OF ORGANIZATIONAL BEHAVIOR, v.18. 667-683.

IZQUIERDO, I.; OLEA, J. and ABAD, F.J. (2014). Exploratory factor analysis in validation studies: Uses and recommendations. Psicothema v. 26, n. 3, p. 395-400.

LEDESMA, D.R. and MORA, P.V. (2007). Determining the number of factors to retain in EFA: An easy-to-use computer program for carrying out parallel analysis. Practica Assessment, Research& Evaluation, 12(2), 1–11.

NUNES, L.N.; KLÜCK, M.M.; FACHEL, J.M.G. (2010). Comparação de métodos de imputação única e múltipla usando como exemplo um modelo de risco para mortalidade cirúrgica. Rev. Bras. Epidemial, 13 (4): p. 596-606.

OSBONE, J. W. (2014). Best Practices in Exploratory Factor Analysis. Scotts Valley, CA: CreateSpace Independent Publishing.

PESTANA, M.H.; & GAGEIRO, J.N. (2008). Análise de Dados para Ciências Sociais. A complementaridade do SPSS, 5ª edição revista e corrigida. Lisboa, Edições Sílabo, p. 527-528.

WOLFINBARGER, M. and GILLY, M.C. (2003) ‘eTailQ: Dimensionalizing, measuring and predicting etail quality’, Journal of Retailing. JAI, 79(3), p. 183–198.