options(warn=-1)
suppressMessages(library(knitr, warn.conflicts=FALSE))
suppressMessages(library(readxl, warn.conflicts=FALSE))
suppressMessages(library(psych, warn.conflicts=FALSE))
suppressMessages(library(GGally, warn.conflicts=FALSE))
suppressMessages(library(car, warn.conflicts=FALSE))
suppressMessages(library(polycor, warn.conflicts=FALSE))
suppressMessages(library(likert, warn.conflicts=FALSE))
source("eiras.showdataframe.R")
source("eiras.bartitle.R")
alfa <- 0.05

Adicionar

  • ECGnet::EGA

  • corrplot::corrplot

Material

  • HTML de R Markdown em RPubs

Objetivos

  • Discutir como a Psicometria pode ser aplicada à Área da Saúde,
  • Conceituar a análise fatorial utilizando um exemplo da literatura psicológica,
  • Entrar com o conjunto de dados em R e executar uma análise de fatores comuns,
  • Interpretar a saída estatística,
  • Dar exemplos da literatura que ilustrem como a análise fatorial tem sido utilizada.

Outras disciplinas

Tipo de variável

- resposta dicotômica

- resposta politômica

Likert scale: Wikipedia

WHOQOL

“A OMS organizou um projeto colaborativo multicêntrico com o objetivo de desenvolver um instrumento internacional que avaliasse qualidade de vida como um construto subjetivo, multidimensional e composto tanto por dimensões positivas (mobilidade, autoestima) como negativas (dor, fadiga). Este projeto foi realizado simultaneamente em 15 centros de diferentes continentes e o resultado foi a elaboração do WHOQOL-100, um questionário com 100 itens e sua versão abreviada, o WHOQOL-BREF com 26 itens.”

Projeto VERAS (2011) Vida do Estudante e Residente na Área da Saúde.
Enns et al. (2016)
Tempski et al. (2016)
Paro et al. (2016)

O questionário em português do Brasil está disponível aqui.

Alguns exemplos de questões do WHOQOL-BREF:

As questões são agrupadas em domínios:

Manual do Projeto VERAS (2011)

As questões 3, 4 e 26 são consideradas as únicas que perguntam com valência negativa, e a WHO as inverte (tornando as respostas de 1 a 5 em valores 5 a 1) para colocá-las no mesmo sentido das demais.

A WHO sugere a forma de computar os escores de cada respondente nos domínios, através da somatória das respostas dos itens Likert (de 1 a 5, após inverter os valores das questões 3, 4 e 26), utilizando-os como intervalares embora sejam claramente variáveis ordinais (multiplicados por 4 para serem próximos aos valores da versão plena do WHOQOL com 100 questões, além de procedimentos para transformar em porcentagem devido ao tamanho desigual dos domínios).

Manual do WHOQOL (Apêndice 10, p. 106)

Note que as questões 1 e 2 não são incluídas nos domínios porque são consideradas questões sobre a percepção geral do indivíduo, respectivamente sobre sua qualidade de vida e saúde. Portanto, para podermos comparar a proposta da WHOQOL com a análise feita adiante, também as excluiremos.

Para referência, aqui estão todas as perguntas do WHOQOL-BREF:

1. Como você avaliaria sua qualidade de vida? 
2. Quão satisfeito(a) você está com a sua saúde?

    As questões seguintes são sobre o quanto você tem sentido algumas coisas nas últimas duas semanas.
    
3. Em que medida você acha que sua dor (física) impede você de fazer o que você precisa?
4. O quanto você precisa de algum tratamento médico para levar sua vida diária?
5. O quanto você aproveita a vida?
6. Em que medida você acha que a sua vida tem sentido?
7. O quanto você consegue se concentrar?
8. Quão seguro(a) você se sente em sua vida diária?
9. Quão saudável é o seu ambiente físico (clima, barulho, poluição, atrativos)?

    As questões seguintes perguntam sobre quão completamente você tem sentido ou é capaz de fazer certas coisas nestas últimas duas semanas.
    
10. Você tem energia suficiente para seu dia-a-dia?
11. Você é capaz de aceitar sua aparência física?
12. Você tem dinheiro suficiente para satisfazer suas necessidades?
13. Quão disponíveis para você estão as informações que precisa no seu dia-a-dia?
14. Em que medida você tem oportunidades de atividade de lazer?

    As questões seguintes perguntam sobre quão bem ou satisfeito você se sentiu a respeito de vários aspectos de sua vida nas últimas duas semanas. 
    
15. Quão bem você é capaz de se locomover?
16. Quão satisfeito(a) você está com o seu sono? 
17. Quão satisfeito(a) você está com sua capacidade de desempenhar as atividades do seu dia-a-dia?
18. Quão satisfeito(a) você está com sua capacidade para o trabalho?
19. Quão satisfeito(a) você está consigo mesmo?
20. Quão satisfeito(a) você está com suas relações pessoais (amigos, parentes, conhecidos, colegas)?
21. Quão satisfeito(a) você está com sua vida sexual?
22. Quão satisfeito(a) você está com o apoio que você recebe de seus amigos?
23. Quão satisfeito(a) você está com as condições do local onde mora?
24. Quão satisfeito(a) você está com o seu acesso aos serviços de saúde?
25. Quão satisfeito(a) você está com o seu meio de transporte?

    As questões seguintes referem-se a com que freqüência você sentiu ou experimentou certas coisas nas últimas duas semanas. 
    
26. Com que freqüência você tem sentimentos negativos tais como mau humor, desespero, ansiedade, depressão?

    Sobre o preenchimento do questionário:
    
ext-1. (Alguém lhe ajudou a preencher este questionário? 
ext-2. (Quanto tempo você levou para preencher este questionário?

item Likert e escala Likert

Item Likert é muito usado em testes / escalas / questionários / inventários / baterias. As distâncias entre as categorias do item Likert não são necessariamente iguais/ equidistantes: são variáveis ordinais.

Quando somamos itens Likert (ordinais) obtemos uma escala somatória Likert (intervalar):

“Likert scales [o autor refere-se a individual Likert items] fall within the ordinal level of measurement.”

Jamieson (2004)

“…Likert scales (collections of items [o autor refere-se a individual Likert items]) as opposed to individual Likert items are not ordinal in character, but rather are interval in nature…”

Carifio & Perla (2008)

Itens Likert devem ser diferenciados de itens de diferencial semântico:

Friborg et al. (2006)

Medidas de correlação

Personality Project, Revelle

  • Dicotômica e intervalar
    • Correlação ponto-bisserial
      • Correlação de Pearson (r) para uma variável dicotômica discreta e outra intervalar (e.g.: ter ou não animal de estimação e tempo que passa fora de casa)
    • Correlação bisserial
      • Uma dicotômica com normal subjacente e outra intervalar (e.g.: gostar ou não de animal de estimação e tempo que passa fora de casa)
  • Ambas dicotômicas
    • Correlação tetracórica: dicotômicas com binormal subjacente (e.g.: gostar ou não de musica erudita e ser de direita ou de esquerda)
    • Correlação de Pearson ou coeficiente phi (φ): dicotômicas discretas (e.g.: passear com ou sem cão e ser ou não paulistano) (veja Phi coefficient (Wikipedia))

Um texto didático sobre as medidas de correlação está em Howell (2013) no capítulo 10. Muito do texto de Dancey & Reidy (2019) foi baseado neste livro.

Correlações de Pearson, policórica e poliserial

Em R, podemos usar polycor::hetcor() para obter correlações Pearson, policórica e poliserial.

Exemplo: Escala de Felicidade

Usaremos o arquivo de Felicidade.rds, considerando todas as variáveis como intervalares, implementado em demo_Correlacao.R:

Dados <- data.frame(readxl::read_excel("Felicidade.xlsx"))
Dados[,] <- lapply(Dados[,],as.numeric)
saveRDS(Dados, "Felicidade.rds")
Dados <- readRDS("Felicidade.rds")
print(head(Dados))
print(tail(Dados))

# todas as colunas tratadas como intervalares
Dados[,] <- lapply(Dados[,],as.numeric)

# Correlacoes heterogeneas
print(polycor::hetcor(Dados, use="pairwise.complete.obs"), digits=1)
  Q1 Q2 Q3 Q4 Q5 Q6 Q7 Q8 Q9 Q10
1  1  2  4  2  4  1  3  2  2   1
2  1  3  4  1  1  1  3  3  3   1
3  1  4  3  1  1  1  4  4  4   1
4  1  2  3  1  1  1  1  1  1   1
5  1  3  3  1  1  1  3  3  1   1
6  1  4  4  1  1  1  4  4  4   1
    Q1 Q2 Q3 Q4 Q5 Q6 Q7 Q8 Q9 Q10
195  1  4  4  1  1  1  4  4  4   1
196  1  1  2  1  1  1  1  1  2   1
197  1  3  2  1  1  1  1  2  3   1
198  1  3  3  1  1  1  2  3  3   1
199  1  4  3  1  1  1  3  2  2   1
200  1  4  5  1  1  1  4  4  3   1

Two-Step Estimates

Correlations/Type of Correlation:
      Q1      Q2      Q3      Q4      Q5      Q6      Q7      Q8      Q9     Q10
Q1     1 Pearson Pearson Pearson Pearson Pearson Pearson Pearson Pearson Pearson
Q2  0.02       1 Pearson Pearson Pearson Pearson Pearson Pearson Pearson Pearson
Q3  0.05     0.4       1 Pearson Pearson Pearson Pearson Pearson Pearson Pearson
Q4   0.5   -0.05  -0.001       1 Pearson Pearson Pearson Pearson Pearson Pearson
Q5   0.4   -0.05   -0.05     0.4       1 Pearson Pearson Pearson Pearson Pearson
Q6   0.5    0.06    0.02     0.6     0.4       1 Pearson Pearson Pearson Pearson
Q7  0.07     0.5     0.4   -0.06   -0.01    0.01       1 Pearson Pearson Pearson
Q8  0.02     0.7     0.5   -0.03   -0.02    0.09     0.7       1 Pearson Pearson
Q9   0.1     0.4     0.5   -0.08  -0.006   -0.01     0.6     0.6       1 Pearson
Q10  0.5   0.004   -0.04     0.5     0.4     0.6     0.1    0.04    0.06       1

Standard Errors/Numbers of Observations:
      Q1   Q2   Q3   Q4   Q5   Q6   Q7   Q8   Q9 Q10
Q1   200  200  200  200  200  200  200  200  200 200
Q2  0.07  200  200  200  200  200  200  200  200 200
Q3  0.07 0.06  200  200  200  200  200  200  200 200
Q4  0.05 0.07 0.07  200  200  200  200  200  200 200
Q5  0.06 0.07 0.07 0.06  200  200  200  200  200 200
Q6  0.06 0.07 0.07 0.04 0.06  200  200  200  200 200
Q7  0.07 0.06 0.06 0.07 0.07 0.07  200  200  200 200
Q8  0.07 0.04 0.05 0.07 0.07 0.07 0.03  200  200 200
Q9  0.07 0.06 0.06 0.07 0.07 0.07 0.04 0.05  200 200
Q10 0.05 0.07 0.07 0.05 0.06 0.04 0.07 0.07 0.07 200

P-values for Tests of Bivariate Normality:
        Q1     Q2    Q3     Q4     Q5     Q6    Q7    Q8    Q9
Q1                                                            
Q2   6e-66                                                    
Q3   1e-40  9e-26                                             
Q4   1e-79  2e-66 5e-41                                       
Q5   6e-78  9e-63 2e-37  8e-79                                
Q6  1e-114 3e-101 2e-75 1e-110 3e-112                         
Q7   4e-43  2e-29 2e-05  5e-44  1e-40  6e-80                  
Q8   7e-64  4e-47 1e-24  8e-65  1e-61 8e-100 9e-33            
Q9   5e-67  3e-47 6e-25  3e-66  4e-61 2e-101 1e-30 3e-46      
Q10 2e-111  7e-99 8e-74 5e-112 7e-111 4e-144 2e-77 1e-97 1e-98

Os tipos de alguns itens podem ser alterados, para demonstração. Em demo_Correlacao_NomOrd.R alteramos os itens Q1 e Q2 para serem nominais e Q3 e Q4 para serem ordinais.

Dados$Q1 <- as.factor(Dados$Q1) # nominal
Dados$Q2 <- as.factor(Dados$Q2) # nominal
Dados$Q3 <- as.ordered(Dados$Q3) # ordinal
Dados$Q4 <- as.ordered(Dados$Q4) # ordinal

Ao executar o código, observe que a matriz de correlações muda (demo_Correlacao_NomOrd.R):

source("eiras.showdataframe.R")

Dados <- readRDS("Felicidade.rds")
showdataframe(Dados, head=4, tail=3)

# todas as colunas tratadas como intervalares
Dados[,] <- lapply(Dados[,],as.numeric)

# Alterando tipos de variável em algumas colunas
Dados$Q1 <- as.factor(Dados$Q1) # variavel nominal
Dados$Q2 <- as.factor(Dados$Q2) # variavel nominal
Dados$Q3 <- as.ordered(Dados$Q3) # variavel ordinal
Dados$Q4 <- as.ordered(Dados$Q4) # variavel ordinal
# confere os tipos
print(sapply(Dados,class))
showdataframe(Dados, head=4, tail=3)

# matriz de correlacoes
print(polycor::hetcor(Dados, use="pairwise.complete.obs"), digits=1)
 Q1  Q2  Q3  Q4  Q5  Q6  Q7  Q8  Q9  Q10
 1   2   4   2   4   1   3   2   2   1  
 1   3   4   1   1   1   3   3   3   1  
 1   4   3   1   1   1   4   4   4   1  
 1   2   3   1   1   1   1   1   1   1  
 ... ... ... ... ... ... ... ... ... ...
 1   3   3   1   1   1   2   3   3   1  
 1   4   3   1   1   1   3   2   2   1  
 1   4   5   1   1   1   4   4   3   1  
$Q1
[1] "factor"

$Q2
[1] "factor"

$Q3
[1] "ordered" "factor" 

$Q4
[1] "ordered" "factor" 

$Q5
[1] "numeric"

$Q6
[1] "numeric"

$Q7
[1] "numeric"

$Q8
[1] "numeric"

$Q9
[1] "numeric"

$Q10
[1] "numeric"

 Q1  Q2  Q3  Q4  Q5  Q6  Q7  Q8  Q9  Q10
 1   2   4   2   4   1   3   2   2   1  
 1   3   4   1   1   1   3   3   3   1  
 1   4   3   1   1   1   4   4   4   1  
 1   2   3   1   1   1   1   1   1   1  
 ... ... ... ... ... ... ... ... ... ...
 1   3   3   1   1   1   2   3   3   1  
 1   4   3   1   1   1   3   2   2   1  
 1   4   5   1   1   1   4   4   3   1  

Two-Step Estimates

Correlations/Type of Correlation:
      Q1         Q2         Q3         Q4         Q5         Q6         Q7
Q1     1 Polychoric Polychoric Polychoric Polyserial Polyserial Polyserial
Q2  0.07          1 Polychoric Polychoric Polyserial Polyserial Polyserial
Q3  0.05        0.5          1 Polychoric Polyserial Polyserial Polyserial
Q4   0.6      -0.05      -0.02          1 Polyserial Polyserial Polyserial
Q5   0.4      -0.05      -0.05        0.4          1    Pearson    Pearson
Q6   0.4       0.08       0.02        0.5        0.4          1    Pearson
Q7  0.08        0.5        0.5      -0.08      -0.01       0.01          1
Q8  0.05        0.7        0.5      -0.03      -0.02       0.09        0.7
Q9   0.1        0.5        0.5       -0.1     -0.006      -0.01        0.6
Q10  0.4       0.01      -0.04        0.5        0.4        0.6        0.1
            Q8         Q9        Q10
Q1  Polyserial Polyserial Polyserial
Q2  Polyserial Polyserial Polyserial
Q3  Polyserial Polyserial Polyserial
Q4  Polyserial Polyserial Polyserial
Q5     Pearson    Pearson    Pearson
Q6     Pearson    Pearson    Pearson
Q7     Pearson    Pearson    Pearson
Q8           1    Pearson    Pearson
Q9         0.6          1    Pearson
Q10       0.04       0.06          1

Standard Errors/Numbers of Observations:
      Q1   Q2   Q3   Q4   Q5   Q6   Q7   Q8   Q9 Q10
Q1   200  200  200  200  200  200  200  200  200 200
Q2  0.09  200  200  200  200  200  200  200  200 200
Q3  0.09 0.06  200  200  200  200  200  200  200 200
Q4  0.07 0.09 0.09  200  200  200  200  200  200 200
Q5  0.06 0.07 0.07 0.07  200  200  200  200  200 200
Q6  0.06 0.07 0.07 0.05 0.06  200  200  200  200 200
Q7  0.09 0.05 0.05 0.08 0.07 0.07  200  200  200 200
Q8  0.09 0.03 0.05 0.09 0.07 0.07 0.03  200  200 200
Q9  0.09 0.06 0.05 0.09 0.07 0.07 0.04 0.05  200 200
Q10 0.06 0.08 0.07 0.06 0.06 0.04 0.07 0.07 0.07 200

P-values for Tests of Bivariate Normality:
       Q1    Q2    Q3    Q4     Q5     Q6    Q7    Q8    Q9
Q1                                                         
Q2    0.5                                                  
Q3    0.8   0.3                                            
Q4    0.1  0.01   0.9                                      
Q5  2e-55 7e-36 2e-35 2e-56                                
Q6  3e-94 3e-73 4e-73 5e-98 3e-112                         
Q7  3e-16 1e-05 6e-04 4e-21  1e-40  6e-80                  
Q8  1e-36 5e-22 1e-21 2e-41  1e-61 8e-100 9e-33            
Q9  2e-39 2e-22 3e-22 1e-42  4e-61 2e-101 1e-30 3e-46      
Q10 7e-94 3e-71 2e-71 9e-94 7e-111 4e-144 2e-77 1e-97 1e-98

Usamos a função print(sapply(Dados,class)) para conferir o tipo adotado pelas variáveis.


Finalmente, em demo_Correlacao_Dicotomica.R, dicotomizamos vários itens (Q3 em diante) com métodos variados, obtendo:

source("eiras.showdataframe.R")

Dados <- readRDS("Felicidade.rds")
showdataframe(Dados, head=4, tail=3)

# todas as colunas tratadas como intervalares
Dados[,] <- lapply(Dados[,],as.numeric)

# Alterando tipos de variável 
Dados$Q1 <- as.numeric(Dados$Q1) # variavel intervalar
Dados$Q2 <- as.ordered(Dados$Q2) # variavel ordinal
Dados$Q3 <- cut(Dados$Q3,breaks=c(0,2,5),labels=c(0,1))
Dados$Q3 <- ifelse(Dados$Q3=="0", Dados$Q3<-0, Dados$Q3<-1)
Dados$Q3 <- as.factor(Dados$Q3)
Dados$Q4 <- cut(Dados$Q4,breaks=c(0,2,5),labels=c(0,1))
Dados$Q4 <- ifelse(Dados$Q4=="0", Dados$Q4<-0, Dados$Q4<-1)
Dados$Q4 <- as.factor(Dados$Q4)
Dados$Q5 <- cut(Dados$Q5,breaks=c(0,2,5),labels=c(0,1))
Dados$Q5 <- ifelse(Dados$Q5=="0", Dados$Q5<-0, Dados$Q5<-1)
Dados$Q5 <- as.ordered(Dados$Q5)
Dados$Q6 <- cut(Dados$Q6,breaks=c(0,2,5),labels=c(0,1))
Dados$Q6 <- ifelse(Dados$Q6=="0", Dados$Q6<-0, Dados$Q6<-1)
Dados$Q6 <- as.ordered(Dados$Q6)
Dados$Q7 <- cut(Dados$Q7,breaks=c(0,2,5),labels=c(0,1))
Dados$Q7 <- ifelse(Dados$Q7=="0", Dados$Q7<-0, Dados$Q7<-1)
Dados$Q7 <- as.numeric(Dados$Q7)
Dados$Q8 <- cut(Dados$Q8,breaks=c(0,2,5),labels=c(0,1))
Dados$Q8 <- ifelse(Dados$Q8=="0", Dados$Q8<-0, Dados$Q8<-1)
Dados$Q8 <- as.numeric(Dados$Q8)
Dados$Q9 <- cut(Dados$Q9,breaks=c(0,2,5),labels=c(0,1))
Dados$Q9 <- ifelse(Dados$Q9=="0", Dados$Q9<-0, Dados$Q9<-1)
Dados$Q9 <- as.logical(Dados$Q9)
Dados$Q10 <- cut(Dados$Q10,breaks=c(0,2,5),labels=c(0,1))
Dados$Q10 <- ifelse(Dados$Q10=="0", Dados$Q10<-0, Dados$Q10<-1)
Dados$Q10 <- as.logical(Dados$Q10)
# confere os tipos
print(sapply(Dados,class))
showdataframe(Dados, head=4, tail=3)

# matriz de correlacoes
print(polycor::hetcor(Dados, use="pairwise.complete.obs"), digits=1)
 Q1  Q2  Q3  Q4  Q5  Q6  Q7  Q8  Q9  Q10
 1   2   4   2   4   1   3   2   2   1  
 1   3   4   1   1   1   3   3   3   1  
 1   4   3   1   1   1   4   4   4   1  
 1   2   3   1   1   1   1   1   1   1  
 ... ... ... ... ... ... ... ... ... ...
 1   3   3   1   1   1   2   3   3   1  
 1   4   3   1   1   1   3   2   2   1  
 1   4   5   1   1   1   4   4   3   1  
$Q1
[1] "numeric"

$Q2
[1] "ordered" "factor" 

$Q3
[1] "factor"

$Q4
[1] "factor"

$Q5
[1] "ordered" "factor" 

$Q6
[1] "ordered" "factor" 

$Q7
[1] "numeric"

$Q8
[1] "numeric"

$Q9
[1] "logical"

$Q10
[1] "logical"

 Q1  Q2  Q3  Q4  Q5  Q6  Q7  Q8  Q9    Q10  
 1   2   1   0   1   0   1   0   FALSE FALSE
 1   3   1   0   0   0   1   1   TRUE  FALSE
 1   4   1   0   0   0   1   1   TRUE  FALSE
 1   2   1   0   0   0   0   0   FALSE FALSE
 ... ... ... ... ... ... ... ... ...   ...  
 1   3   1   0   0   0   0   1   TRUE  FALSE
 1   4   1   0   0   0   1   0   FALSE FALSE
 1   4   1   0   0   0   1   1   TRUE  FALSE

Two-Step Estimates

Correlations/Type of Correlation:
      Q1         Q2         Q3         Q4         Q5         Q6         Q7
Q1     1 Polyserial Polyserial Polyserial Polyserial Polyserial    Pearson
Q2  0.03          1 Polychoric Polychoric Polychoric Polychoric Polyserial
Q3  0.09        0.5          1 Polychoric Polychoric Polychoric Polyserial
Q4   0.5       -0.1      -0.06          1 Polychoric Polychoric Polyserial
Q5   0.3      -0.04       0.07        0.4          1 Polychoric Polyserial
Q6   0.5       0.02        0.3        0.8        0.4          1 Polyserial
Q7  0.04        0.3        0.4      -0.04       -0.2       -0.1          1
Q8  0.01        0.5        0.4       -0.1       -0.2        0.1        0.6
Q9   0.3        0.4        0.5      -0.06      -0.02       -0.1        0.4
Q10 <NA>       -0.1        0.3        0.8        0.4        0.9     -0.002
            Q8         Q9        Q10
Q1     Pearson Polyserial Polyserial
Q2  Polyserial Polychoric Polychoric
Q3  Polyserial Polychoric Polychoric
Q4  Polyserial Polychoric Polychoric
Q5  Polyserial Polychoric Polychoric
Q6  Polyserial Polychoric Polychoric
Q7     Pearson Polyserial Polyserial
Q8           1 Polyserial Polyserial
Q9         0.5          1 Polychoric
Q10      -0.05        0.3          1

Standard Errors/Numbers of Observations:
      Q1   Q2   Q3   Q4   Q5   Q6   Q7   Q8  Q9 Q10
Q1   200  200  200  200  200  200  200  200 200 200
Q2  0.07  200  200  200  200  200  200  200 200 200
Q3   0.1 0.08  200  200  200  200  200  200 200 200
Q4  0.07  0.1  0.2  200  200  200  200  200 200 200
Q5  0.08  0.1  0.2  0.1  200  200  200  200 200 200
Q6  0.08  0.1  0.2 0.09  0.2  200  200  200 200 200
Q7  0.07 0.06 0.07  0.1 0.09  0.1  200  200 200 200
Q8  0.07 0.05 0.07  0.1  0.1  0.1 0.04  200 200 200
Q9   0.1 0.09  0.1  0.2  0.2  0.2 0.07 0.06 200 200
Q10 <NA>  0.1  0.2 0.09  0.2 0.06  0.1  0.1 0.2 200

P-values for Tests of Bivariate Normality:
        Q1    Q2    Q3    Q4    Q5    Q6     Q7    Q8   Q9
Q1                                                        
Q2   2e-38                                                
Q3   3e-44   0.4                                          
Q4   1e-44  0.01  <NA>                                    
Q5   2e-44   0.4  <NA>  <NA>                              
Q6   6e-49   0.4  <NA>  <NA>  <NA>                        
Q7  2e-114 3e-70 3e-77 6e-77 5e-77 6e-77                  
Q8  1e-108 3e-65 3e-71 4e-71 4e-71 4e-71 1e-136           
Q9   1e-45   0.9  <NA>  <NA>  <NA>  <NA>  3e-77 3e-71     
Q10   <NA>   0.6  <NA>  <NA>  <NA>  <NA>  6e-77 4e-71 <NA>

Pode ser difícil visualizar as matrizes de correlação, especialmente quando há maior número de itens. A função GGally::ggcorr pode ajudar.

Exemplo: WHOQOL

No exemplo do WHOQOL, os dados dos estudos do VERAS estão disponíveis em:

Dados <- data.frame(readxl::read_excel("WHOQOL.xlsx"))
Dados[,] <- lapply(Dados[,],as.numeric)
saveRDS(Dados, "WHOQOL.rds")

A análise de correlação está implementada em demo_ggcorr_WHOQOL.R, tratando os itens como intervalares:

Dados <- readRDS("WHOQOL.rds")

r <- qgraph::cor_auto(Dados[,4:27], detectOrdinal=FALSE, 
                      forcePD=TRUE, missing="fiml")
print (
  GGally::ggcorr(data=NULL,
                 name="WHOQOL-BREF",
                 cor_matrix=r,
                 geom="tile",
                 min_size=0,
                 max_size=10, 
                 nbreaks=6,
                 digits=2,
                 label=FALSE,
                 label_round=2,
                 label_size=4)
)

O mesmo, forçando os itens serem tratados como variáveis ordinais está implementado em demo_ggcorr_WHOQOL_ord.R:

Dados <- readRDS("WHOQOL.rds")

ro <- qgraph::cor_auto(Dados[,4:27], detectOrdinal=TRUE, 
                       forcePD=TRUE, missing="pairwise")
print (
  GGally::ggcorr(data=NULL,
                 name="WHOQOL-BREF",
                 cor_matrix=ro,
                 geom="tile",
                 min_size=0,
                 max_size=10, 
                 nbreaks=6,
                 digits=2,
                 label=FALSE,
                 label_round=2,
                 label_size=4)
)
Variables detected as ordinal: Q3; Q4; Q5; Q6; Q7; Q8; Q9; Q10; Q11; Q12; Q13; Q14; Q15; Q16; Q17; Q18; Q19; Q20; Q21; Q22; Q23; Q24; Q25; Q26

Recorde a proposta para o WHOQOL:

Manual do Projeto VERAS (2011)

Deste mesmo pacote existem funções que procuram agrupar os itens. Por exemplo, demo_ggcorr_WHOQOL_qgraph.R, utilizando dois métodos diferentes (veja graph=“glasso” e graph=“cor” no código):

Dados <- readRDS("WHOQOL.rds")

ro <- qgraph::cor_auto(Dados[,4:27], detectOrdinal=TRUE, 
                       forcePD=TRUE, missing="pairwise")
n <- nrow(na.omit(Dados))

qgraph::qgraph(ro, 
               graph="glasso", 
               sampleSize=n,
               layout="spring",
               shape="rectangle",
               vsize=5,
               label.cex=2,
               labels=colnames(ro),
               label.prop=0,
               theme="gray",
               title="WHOQOL (glasso)", 
               details=FALSE)

qgraph::qgraph(ro, 
               graph="cor", 
               sampleSize=n,
               #minimum="sig",
               bonf=TRUE,
               layout="spring", 
               shape="rectangle",
               vsize=5,
               label.cex=2,
               labels=colnames(ro),
               label.prop=0,
               theme="gray",
               title="WHOQOL (cor)",
               details=FALSE)
Variables detected as ordinal: Q3; Q4; Q5; Q6; Q7; Q8; Q9; Q10; Q11; Q12; Q13; Q14; Q15; Q16; Q17; Q18; Q19; Q20; Q21; Q22; Q23; Q24; Q25; Q26
Note: Network with lowest lambda selected as best network: assumption of sparsity might be violated.

Aqui, pela primeira vez, aparece uma tentativa de agrupamento das questões. Recorde a proposta para o WHOQOL:

Manual do Projeto VERAS (2011)

No primeiro gráfico, com o método “glasso”, notamos alguma proximidade entre questões propostas para o mesmo domínio, mas nem sempre. Quando mais grossas são as linhas e mais aproximadas as questões, maior a ligação.

As três questões negativas, Q3 e Q4 (ambas tidas como do domínio físico do WHOQOL, F) e Q26 (psicológico, P) estão próximas, mas a ligação entre Q3 e Q4 é mais forte.

As questões do domínio de ligações sociais (S), Q20, Q21 e Q22, aparecem nesta (e em várias análise abaixo) próximas entre si. Q20 é a mais próxima de Q5 do domínio psicológico. São elas:

      1. Quão satisfeito(a) você está com suas relações pessoais (amigos, parentes, conhecidos, colegas)?
      1. O quanto você aproveita a vida?

Q22 liga-se a Q23 e Q24 (ambiente, A) e, mais fracamente, com Q8 (A) e Q19 (P), mas têm similaridade, aparentemente relacionadas a condições de apoio e infraestrutura:

      1. Quão satisfeito(a) você está com o apoio que você recebe de seus amigos?
      1. Quão satisfeito(a) você está com as condições do local onde mora?
      1. Quão satisfeito(a) você está com o seu acesso aos serviços de saúde?
      1. Quão seguro(a) você se sente em sua vida diária?
      1. Quão satisfeito(a) você está consigo mesmo?

Q21 liga-se principalmente a Q11 (psicológico), ambas obviamente conectadas aos relacionamentos sexuais:

      1. Quão satisfeito(a) você está com sua vida sexual?
      1. Você é capaz de aceitar sua aparência física?

O conjunto Q25, Q23, Q24, Q9, Q12 e Q13 são do domínio ambiente, mas a Q15 (do domínio físico), aparece fortemene conectada a Q25. Curiosamente, são ambas ligadas a deslocamento:

      1. Quão bem você é capaz de se locomover?
      1. Quão satisfeito(a) você está com o seu meio de transporte?

Outra ligação forte aparece entre Q5 (psicológico) e Q14 (ambiente). Seus conteúdos são ligados ao lazer:

      1. O quanto você aproveita a vida?
      1. Em que medida você tem oportunidades de atividade de lazer?

Q5 (psicológico) está na ponta do outro conjunto envolvendo Q6, Q19 e Q7 (também do domínio psicológico), Q17, Q18 (físico, fortemente ligadas), Q10 e Q16 (também do físico) e Q8 (ambiente). O ambiente físico, neste agrupamento, está todo representado com a exceção da Q15 que aproximou-se da Q25 por tratar de deslocamento e das negativas Q3 e Q4. Observe seus conteúdos na ordem de proximidade:

      1. O quanto você aproveita a vida?
      1. Em que medida você acha que a sua vida tem sentido?
      1. Quão satisfeito(a) você está consigo mesmo?
      1. Quão seguro(a) você se sente em sua vida diária?
      1. Quão satisfeito(a) você está com sua capacidade de desempenhar as atividades do seu dia-a-dia?
      1. Quão satisfeito(a) você está com sua capacidade para o trabalho?
      1. Quão satisfeito(a) você está com o seu sono?
      1. Você tem energia suficiente para seu dia-a-dia?
      1. O quanto você consegue se concentrar?

Há uma clara ordenação na sequência, iniciando com o aproveitamento da vida e seguindo para satisfação, segurança, atividades diárias, descanso e recuperação. Parece muito com a ideia de “felicidade intrínseca” do outro exemplo: são questões relacionadas com percepções que dependem da própria pessoa.

É supreendente que a análise dependa apenas da matriz de correlações, sem nenhuma análise do conteúdo das perguntas. Ainda assim, agrupa itens que de assuntos similares.

As discordâncias e similaridades entre esta análise e a proposta original da WHO ocorrerá em várias análises adiante. O leitor é convidado a observar os resultados, sob esta óptica, quaisquer que sejam as análises adotadas.

Uma outra análise descritiva interessante está implementada em demo_likert_WHOQOL.R comportaram-se da seguinte forma:

Dados <- readRDS("WHOQOL.rds")

cat("\nTransformando respostas em dados ordinais\n")
Dados[,4:27] <- lapply(Dados[,4:27],as.ordered)
cat("\n\t- verificando com class:\n")
print(sapply(Dados[,4:27],class))
cat("\n\t- verificando com str:\n")
print(str(Dados[,4:27]))

# esta funcao precisa que todos os itens tenham o mesmo numero de niveis
# descritiva com o pacote likert
cat("\nUsando o pacote likert\n")
cat("\nVerifica quantos niveis cada item tem\n")
print(sapply(Dados[,4:27],function(x){length(levels(x))}))

# usa a funcao preparatoria
lkt <- likert::likert(Dados[,4:27])

cat("\nFrequencia das respostas\n")
print(lkt, digits=1)
print(plot(lkt, type="heat", low.color="lightgray", high.color="darkgray"))

cat("\nFrequencia das respostas\n")
print(summary(lkt), digits=2)
print(plot(lkt, low.color="lightgray", high.color="black"))

Transformando respostas em dados ordinais

    - verificando com class:
     Q3        Q4        Q5        Q6        Q7        Q8        Q9        Q10       Q11       Q12       Q13       Q14       Q15       Q16       Q17       Q18       Q19       Q20       Q21       Q22       Q23       Q24       Q25       Q26      
[1,] "ordered" "ordered" "ordered" "ordered" "ordered" "ordered" "ordered" "ordered" "ordered" "ordered" "ordered" "ordered" "ordered" "ordered" "ordered" "ordered" "ordered" "ordered" "ordered" "ordered" "ordered" "ordered" "ordered" "ordered"
[2,] "factor"  "factor"  "factor"  "factor"  "factor"  "factor"  "factor"  "factor"  "factor"  "factor"  "factor"  "factor"  "factor"  "factor"  "factor"  "factor"  "factor"  "factor"  "factor"  "factor"  "factor"  "factor"  "factor"  "factor" 

    - verificando com str:
'data.frame':   2684 obs. of  24 variables:
 $ Q3 : Ord.factor w/ 5 levels "1"<"2"<"3"<"4"<..: 1 1 1 3 1 1 2 1 1 1 ...
 $ Q4 : Ord.factor w/ 5 levels "1"<"2"<"3"<"4"<..: 1 1 1 1 1 1 5 2 2 2 ...
 $ Q5 : Ord.factor w/ 5 levels "1"<"2"<"3"<"4"<..: 3 4 2 2 5 5 3 2 3 5 ...
 $ Q6 : Ord.factor w/ 5 levels "1"<"2"<"3"<"4"<..: 4 4 3 4 5 5 5 3 4 5 ...
 $ Q7 : Ord.factor w/ 5 levels "1"<"2"<"3"<"4"<..: 2 3 3 4 4 4 3 4 3 5 ...
 $ Q8 : Ord.factor w/ 5 levels "1"<"2"<"3"<"4"<..: 4 3 3 3 5 4 3 4 2 5 ...
 $ Q9 : Ord.factor w/ 5 levels "1"<"2"<"3"<"4"<..: 4 3 2 3 4 3 3 2 3 4 ...
 $ Q10: Ord.factor w/ 5 levels "1"<"2"<"3"<"4"<..: 3 3 3 3 4 5 3 4 2 4 ...
 $ Q11: Ord.factor w/ 5 levels "1"<"2"<"3"<"4"<..: 4 2 5 3 5 3 5 4 3 3 ...
 $ Q12: Ord.factor w/ 5 levels "1"<"2"<"3"<"4"<..: 4 5 3 2 5 5 3 3 3 4 ...
 $ Q13: Ord.factor w/ 5 levels "1"<"2"<"3"<"4"<..: 4 5 5 4 5 5 4 4 4 4 ...
 $ Q14: Ord.factor w/ 5 levels "1"<"2"<"3"<"4"<..: 4 3 2 3 4 4 1 3 4 5 ...
 $ Q15: Ord.factor w/ 5 levels "1"<"2"<"3"<"4"<..: 5 5 2 5 5 5 5 5 4 5 ...
 $ Q16: Ord.factor w/ 5 levels "1"<"2"<"3"<"4"<..: 2 2 2 4 4 3 2 1 2 4 ...
 $ Q17: Ord.factor w/ 5 levels "1"<"2"<"3"<"4"<..: 3 2 3 2 5 4 2 4 3 4 ...
 $ Q18: Ord.factor w/ 5 levels "1"<"2"<"3"<"4"<..: 4 2 3 3 4 4 2 4 3 5 ...
 $ Q19: Ord.factor w/ 5 levels "1"<"2"<"3"<"4"<..: 3 2 3 2 5 4 4 3 3 4 ...
 $ Q20: Ord.factor w/ 5 levels "1"<"2"<"3"<"4"<..: 4 3 4 1 5 3 3 2 3 5 ...
 $ Q21: Ord.factor w/ 5 levels "1"<"2"<"3"<"4"<..: 5 3 3 1 5 2 2 3 2 3 ...
 $ Q22: Ord.factor w/ 5 levels "1"<"2"<"3"<"4"<..: 4 3 4 1 5 3 5 2 3 4 ...
 $ Q23: Ord.factor w/ 5 levels "1"<"2"<"3"<"4"<..: 4 2 1 3 5 5 4 5 4 4 ...
 $ Q24: Ord.factor w/ 5 levels "1"<"2"<"3"<"4"<..: 5 2 2 2 3 5 5 4 4 5 ...
 $ Q25: Ord.factor w/ 5 levels "1"<"2"<"3"<"4"<..: 2 4 2 2 4 4 5 2 2 4 ...
 $ Q26: Ord.factor w/ 5 levels "1"<"2"<"3"<"4"<..: 3 4 2 2 1 2 4 3 3 2 ...
NULL

Usando o pacote likert

Verifica quantos niveis cada item tem
 Q3  Q4  Q5  Q6  Q7  Q8  Q9 Q10 Q11 Q12 Q13 Q14 Q15 Q16 Q17 Q18 Q19 Q20 Q21 Q22 Q23 Q24 Q25 Q26 
  5   5   5   5   5   5   5   5   5   5   5   5   5   5   5   5   5   5   5   5   5   5   5   5 

Frequencia das respostas
   Item    1  2  3  4    5
1    Q3 42.7 34 17  6  0.6
2    Q4 44.4 32 14  8  1.6
3    Q5  1.2 18 44 34  3.9
4    Q6  1.0  4 17 44 34.2
5    Q7  1.6 17 44 34  3.8
6    Q8  1.5 12 41 39  5.7
7    Q9  2.0 14 41 38  5.3
8   Q10  1.6 13 55 26  4.4
9   Q11  3.0 12 32 37 16.1
10  Q12  3.5 16 43 24 14.1
11  Q13  0.3  4 24 51 21.3
12  Q14  1.9 29 45 19  5.0
13  Q15  0.6  3  9 32 55.7
14  Q16  9.5 37 25 24  4.4
15  Q17  3.6 24 29 37  5.6
16  Q18  3.2 22 29 40  4.7
17  Q19  2.9 19 28 43  7.2
18  Q20  3.1 17 21 46 13.6
19  Q21 10.1 18 24 32 16.6
20  Q22  2.6  9 23 48 16.9
21  Q23  1.9  8 11 43 35.6
22  Q24  3.2 11 21 41 23.3
23  Q25  8.3 17 15 28 31.8
24  Q26  5.6 44 24 19  7.9


Frequencia das respostas
   Item  low neutral high mean   sd
13  Q15  3.5     8.7 87.8  4.4 0.81
21  Q23 10.0    11.4 78.6  4.0 0.98
4    Q6  4.8    16.7 78.5  4.1 0.86
11  Q13  4.0    23.8 72.3  3.9 0.78
20  Q22 11.6    23.1 65.3  3.7 0.94
22  Q24 14.6    21.0 64.4  3.7 1.05
23  Q25 25.1    15.0 59.9  3.6 1.31
18  Q20 19.9    20.5 59.6  3.5 1.02
9   Q11 14.6    31.9 53.6  3.5 0.99
17  Q19 22.2    27.5 50.3  3.3 0.96
19  Q21 28.0    23.8 48.2  3.3 1.22
6    Q8 14.0    40.8 45.2  3.4 0.83
16  Q18 25.6    29.3 45.1  3.2 0.95
7    Q9 15.9    41.0 43.0  3.3 0.85
15  Q17 28.0    28.9 43.0  3.2 0.98
10  Q12 19.0    43.2 37.8  3.3 1.00
5    Q7 18.1    44.2 37.7  3.2 0.82
3    Q5 18.9    43.6 37.5  3.2 0.82
8   Q10 14.9    54.8 30.2  3.2 0.77
14  Q16 46.7    25.2 28.1  2.8 1.05
24  Q26 49.9    23.7 26.5  2.8 1.06
12  Q14 31.1    45.3 23.6  3.0 0.87
2    Q4 76.6    14.2  9.2  1.9 1.01
1    Q3 76.5    16.6  6.9  1.9 0.94

A função preparatória likert::likert precisa de dados ordinais e que todos os itens tenham o mesmo número de níveis observados. Note que os itens foram apresentados em outra ordem, pois esta função tenta agrupá-las de acordo com suas correlações, mas a ordem que sugere também não coincide completamente (como sempre) com aquela proposta pela Organização Mundial da Saúde para o WHOQOL.

Recorde a proposta para o WHOQOL:

Manual do Projeto VERAS (2011)

Finalmente, um dendrograma (propondo ainda outra combinação de questões) pode ser feito com a função pvclust::pvclust implementada em demo_pvclust_WHOQOL.R:

Dados <- readRDS("WHOQOL.rds")

Dados[,4:27] <- lapply(Dados[,4:27],as.numeric)
res.pv <- pvclust::pvclust(Dados[4:27], 
                           method.dist="abscor",
                           method.hclust="average", 
                           nboot = 5e2)
plot(res.pv)
Bootstrap (r = 0.5)... Done.
Bootstrap (r = 0.6)... Done.
Bootstrap (r = 0.7)... Done.
Bootstrap (r = 0.8)... Done.
Bootstrap (r = 0.9)... Done.
Bootstrap (r = 1.0)... Done.
Bootstrap (r = 1.1)... Done.
Bootstrap (r = 1.2)... Done.
Bootstrap (r = 1.3)... Done.
Bootstrap (r = 1.4)... Done.

Recorde a proposta para o WHOQOL:

Manual do Projeto VERAS (2011)

Análise Fatorial Exploratória (EFA)

Padrão de correlações

Este capítulo é uma continuação de Análise de Correlação. Naquele capítulo analisamos as correlações de Pearson apenas de duas variáveis intervalares com e sem variáveis intervalares de controle. Aqui analisaremos matrizes de correlações ou de covariâncias entre diversos pares de variáveis simultaneamente. Uma forma para reconhecer padrões nestas matrizes é por inspeção visual. No entanto, à medida que o número de variáveis aumenta, a inspeção visual é impraticável.

A análise fatorial foi inicialmente utilizada para estudar a estrutura da mente e inteligência (1904), e mais tarde da personalidade. Lida com padrões de correlações das variáveis manifestas (itens) da escala de avaliação, de forma que itens mais correlacionados entre si e menos correlacionados com outros itens da escala formam um fator comum.

O objetivo é desenvolver algoritmos que nos auxiliem a reconhecer padrões presentes nas matrizes. Tais padrões são variáveis latentes, que chamaremos de fatores comuns (não confundir com outros fatores ou com variáveis do tipo factor). O primeiro passo é encontrar quantos são os fatores comuns subjacentes à configuração adotada pelas matrizes.

Esta análise fatorial tem duas partes:

  • Análise exploratória de fatores comuns (EFA, exploratory factor analysis)
  • Análise confirmatória de fatores comuns (CFA, confirmatory factor analysis)

Dancey & Reidy (2019) apresentam o seguinte exemplo no item 6.3:

Dancey & Reidy (2019)

Por inspeção visual detecta-se dois fatores comuns (correlações em negrito). Depois que os fatores são encontrados, podemos atribuir nomes significativos para eles, tais como “relações humanas” e “tristeza” neste exemplo.

Classificação do modelo

Veremos, adiante, que é crítico para a análise fatorial construir a matriz de correlações adequada, o que é feito pela função polycor::hetcor() exemplificada anteriormente, que tem algorítmos robustos para escolher o tipo de correlação e sua computação. Fator comum é variável latente, não observável. Por exemplo:

As variáveis observáveis ou manifestas (aquelas que estão em seus dados) são runny nose (coriza), cough (tosse), sneeze (espirro), sore throat (dor de garganta). O fator comum é cold (resfriado), variável latente que é a causa destes sintomas.

Como o resfriado (fator comum) é tido como “causa” dos sintomas (itens), este modelo é chamado de reflexivo.

variáveis do modelo: sinonímias

- variável manifesta (\(\tau\))

  • Variável mensurável diretamente
  • Variável aleatória observável
  • Variável observável
  • Indicador
  • Sintoma
  • Sinal
  • Item

- variável latente (\(\theta\))

  • Variável mensurável indiretamente
  • Variável aleatória não observável
  • Variável não observável
  • Variável hipotética
  • Variável oculta
  • Traço latente
  • Fator comum
  • Fator-fonte
  • Habilidade
  • Construto
  • Dimensão
  • Aptidão
  • Domínio
  • Fator

Exemplos de traços latentes:

  • Inteligência
  • Bem-estar
  • Felicidade
  • Satisfação
  • Autocontrole
  • Depressão
  • Esgotamento (burnout)
  • Proficiência em matemática
  • Tamanho total do animal

Qualquer fenômeno não diretamente observável ou conceito para o qual não há método operacional para mensuração direta.

O que é tamanho do pássaro?


O que é quilograma?

“A constante de Planck (\(6.62607004 \cdot 10^{-34} m^2kg/s\)) deve substituir o cilindro metálico usado desde 1889 como referência internacional do quilograma.”

“O quilograma é a última das sete principais unidades internacionais de medida ainda aferida com base em um objeto –´ a mensuração das outras já é feita há anos por meio de constantes universais da Física. Com a alteração, que pode valer a partir de 2018, a aferição deve ser tornar mais confiável, o que tem importância óbvia para Física – o quilograma entra na definição de outras 20 unidades de medida – e para o comércio internacional.”

“O primeiro desses métodos consiste em definir o valor da constante de Planck a partir da contagem dos átomos de uma esfera de silício puro com massa de 1 quilograma. A contagem dos átomos dessa esfera permite calcular o valor da constante de Avogadro, que indica o número de partículas em uma determinada massa, e, posteriormente, chegar ao valor da constante de Planck. Contando os átomos dessas esferas especiais – há apenas duas no mundo, cuidadosamente produzidas a um custo de US$ 3,2 milhões cada –, os pesquisadores do Projeto Internacional Avogadro já conseguiram medir o valor da constante de Avogadro, e consequentemente da de Planck, com uma imprecisão de 30 partes por bilhão.”

Revista FAPESP: Definição de massa

O que é saúde?

“Health is a state of complete physical, mental and social well-being and not merely the absence of disease or infirmity.”

WHO: Definição de saúde

Então o que é uma doença? Não encontramos definição da OMS, mas existe uma extensa classificação, o CID-11 (https://www.who.int/standards/classifications/classification-of-diseases).

“A Organização Mundial de Saúde (OMS) define saúde não apenas como a ausência de doença, mas como a situação de perfeito bem-estar físico, mental e social. Essa definição, até avançada para a época em que foi realizada, é, no momento, irreal, ultrapassada e unilateral.”

Segre & Ferraz (1997)

Objetivo da análise fatorial

O objetivo da análise fatorial é expressar um grande número de variáveis observadas em termos de um número mínimo de fatores comuns.

A análise fatorial é uma técnica estatística multivariada descritiva exploratória (EFA) e confirmatória (CFA) para obtenção de fatores comuns e para validação de construto de escala de avaliação.

Aconselha-se o uso da matriz de correlações dos itens da escala quando executar a análise fatorial exploratória, pois trabalhar com matriz de correlações equivale a padronizar os itens. É aconselhável o uso da matriz de covariância quando executar a análise fatorial confirmatória.

Os itens são as variáveis manifestas, que podem ser nominais dicotômicos ou politômicos, ordinais ou intervalares. As variáveis latentes ou fatores comuns são variáveis não observáveis e intervalares.

As observações são independentes num arquivo no formato wide (cada unidade observacional em uma linha com o valor obtido em cada um dos itens). Para a análise ser possível, a matriz de correlação obtida a partir dos itens deve ser não-homogênea.

A matriz de covariância computa com os indicadores não-padronizados (variâncias não-homogeneizadas). Se os indicadores não são medidos com as mesmas unidades de medida ou não são comparáveis, utilizar a matriz de correlações (variâncias homogeneizadas) irá padronizá-los de forma a torná-los comparáveis.

Áreas de aplicação

Kaplunovsky (2004): http://www.magniel.com/fa/data

Depressão

Brown (2015): http://sites.bu.edu/tabrown/cfabook/;
http://www.amarkos.gr/cfa-lavaan/

No capítulo 2 de Brown (2015, The common factor model and exploratory factor analysis) há um exemplo em que apenas a matriz de correlação de Pearson foi fornecida, mas isto é o suficiente para fazer a análise fatorial exploratória.

Esta matriz de correlação foi obtida a partir de um questionário com 4 itens Likert aplicado a 300 indivíduos internados em uma ala psiquiátrica para avaliar depressão.

Os dados estão em Depressao.xlsx, lidos a partir de readxl::read_excel() como um data frame e convertidos em matriz para serem usados na análise. Os itens são denominados “O1”, “O2”, “O3” e “O4”.

Note que esta matriz de correlação é quadrada, simétrica, com valores iguais a 1 na diagonal principal. A correlação de uma variável consigo própria é unitária, a qual também é igual aos desvios-padrão e variâncias dos itens padronizados. A variância total dos dados é o traço da matriz (a soma desta diagonal principal) que, neste caso, coincide com o número de itens.

Implementamos em demo_Depressao.R, cuja saída completa (discutida adiante) é:

source("eiras.bartitle.R")

cat(bartitle("Data: correlation matrix"))
n <- 300 # number of observations
Matriz <- data.frame(readxl::read_excel("Depressao.xlsx"))
Matriz_tmp <- data.matrix(Matriz)
rownames(Matriz_tmp) <- as.character(unlist(Matriz[1:(ncol(Matriz)-1),1]))
Matriz_tmp <- Matriz_tmp[,-1]
Matriz <- Matriz_tmp
print(Matriz)

cat(bartitle("Singular values"))
sv <- svd(Matriz)$d
dt <- data.frame(1:length(sv),format(as.numeric(sv), digits=2, nsmall=2))
names(dt) <- c("component","value")
print(dt)
plot(sv, 
     xlab="Components", ylab="Singular values", 
     type="o", pch=16, axes=FALSE)
axis(1, at=1:length(sv))
axis(2)
abline(h=1,col="darkgray",lty=2)

cat(bartitle("Model heuristic"))
sv1maior <- sv[1]
sv2maior <- sv[2]
H <- NA
if(sv2maior>0) {H <- sv1maior/sv2maior}
cat("FirstSV/SecondSV = H = ",round(sv1maior,2),"/",round(sv2maior,2)," ~ ",round(H,2),"\n",sep="")
cat("\t- if < 2: first order\n")
cat("\t- if > 3: unifactor\n")
cat("\t- otherwise: bifactor\n")
if (H <= 2) {txt <- "\tpossible first order model, sv1/sv2 <= 2"}
if (H > 2 & H <= 3) {txt <- "\tpossible bifactor model, 2 < sv1/sv2 <= 3"}
if (H > 3) {txt <- "\tpossible unifactor model, sv1/sv2 > 3"}
cat(txt)

cat(bartitle("Condition index"))
sv.maior <- sv[1]
sv.menor <- sv[length(sv)]
IC <- NA
if(sv.menor>0) {IC <- sqrt(sv.maior/sv.menor)}
cat("(MaxSV/MinSV)^0.5 = CI = (",round(sv.maior,2),"/",round(sv.menor,2),")^0.5 ~ ",round(IC,1),"\n",sep="")
cat("(analysis may be jeopardized if index > 30)\n",sep="")

cat(bartitle("Exploratory Common Factor Analysis (EFA)"))
cat(bartitle("suggested number of common factors",2))
print(psych::fa.parallel(x=Matriz, n.obs=n,
                         plot=FALSE)$p)
# print(psych::VSS(x=Matriz,
#                  n.obs=n,
#                  plot=FALSE))

cat(bartitle("usefulness of correlation matrix",2))
print(psych::KMO(Matriz))

cat(bartitle("EFA",2))
num.factors <- 1
fa.fit <- psych::fa(r=Matriz,
                    n.obs=n,
                    nfactors=num.factors)
print(fa.fit, sort=TRUE,digits=2,cut=.3)
psych::fa.diagram(fa.fit, 
                        main="Depression Scale",
                        cut=0,
                        digits=2,
                        sort=TRUE)
cat(bartitle("Heuristic for model rejection:",2))
cat("X^2 = ",fa.fit$chi,"\n",sep="")
cat("df = ",fa.fit$dof,"\n",sep="")
cat("X^2/df = ",fa.fit$chi/fa.fit$dof,"\n",sep="")
cat("(model may possibly be rejected when X^2/df >  2)\n",sep="")

------------------------
Data: correlation matrix
------------------------
     O1   O2   O3   O4
O1 1.00 0.70 0.65 0.62
O2 0.70 1.00 0.66 0.63
O3 0.65 0.66 1.00 0.60
O4 0.62 0.63 0.60 1.00

---------------
Singular values
---------------
  component value
1         1  2.93
2         2  0.41
3         3  0.36
4         4  0.30


---------------
Model heuristic
---------------
FirstSV/SecondSV = H = 2.93/0.41 ~ 7.14
    - if < 2: first order
    - if > 3: unifactor
    - otherwise: bifactor
    possible unifactor model, sv1/sv2 > 3
---------------
Condition index
---------------
(MaxSV/MinSV)^0.5 = CI = (2.93/0.3)^0.5 ~ 3.1
(analysis may be jeopardized if index > 30)

----------------------------------------
Exploratory Common Factor Analysis (EFA)
----------------------------------------

    ----------------------------------
    suggested number of common factors
    ----------------------------------
Parallel analysis suggests that the number of factors =  1  and the number of components =  1 
NULL

    --------------------------------
    usefulness of correlation matrix
    --------------------------------
Kaiser-Meyer-Olkin factor adequacy
Call: psych::KMO(r = Matriz)
Overall MSA =  0.84
MSA for each item = 
  O1   O2   O3   O4 
0.82 0.81 0.85 0.87 

    ---
    EFA
    ---
Factor Analysis using method =  minres
Call: psych::fa(r = Matriz, nfactors = num.factors, n.obs = n)
Standardized loadings (pattern matrix) based upon correlation matrix
   V  MR1   h2   u2 com
O2 2 0.84 0.71 0.29   1
O1 1 0.83 0.68 0.32   1
O3 3 0.79 0.62 0.38   1
O4 4 0.75 0.57 0.43   1

                MR1
SS loadings    2.58
Proportion Var 0.64

Mean item complexity =  1
Test of the hypothesis that 1 factor is sufficient.

df null model =  6  with the objective function =  2.05 with Chi Square =  607.23
df of  the model are 2  and the objective function was  0 

The root mean square of the residuals (RMSR) is  0 
The df corrected root mean square of the residuals is  0.01 

The harmonic n.obs is  300 with the empirical chi square  0.05  with prob <  0.97 
The total n.obs was  300  with Likelihood Chi Square =  0.21  with prob <  0.9 

Tucker Lewis Index of factoring reliability =  1.009
RMSEA index =  0  and the 90 % confidence intervals are  0 0.049
BIC =  -11.2
Fit based upon off diagonal values = 1
Measures of factor score adequacy             
                                                   MR1
Correlation of (regression) scores with factors   0.94
Multiple R square of scores with factors          0.88
Minimum correlation of possible factor scores     0.77


    ------------------------------
    Heuristic for model rejection:
    ------------------------------
X^2 = 0.05427865
df = 2
X^2/df = 0.02713933
(model may possibly be rejected when X^2/df >  2)

Valor singular

A variância total pode ser particionada por meio da função svd() em autovalores (eigenvalues) robustos, chamados de valores singulares. Valor singular é um número positivo. Sua utilidade é sugerir o número de fatores comuns subjacentes aos itens.

Os valores singulares são uma medida da relação entre o número de fatores comuns e parcela da variância total explicada por eles. Dado que cada item tem variância padronizada unitária, esperamos que a inclusão de mais um fator contribua para o modelo se ele vier a adicionar mais do que um item poderia explicar isoladamente. Assim, sugere-se selecionar quanto valores singulares estão acima de 1, o que nos sugere quantos fatores comuns esta análise sugere. Neste exemplo, com apenas um fator comum, capturamos 2.93 da variância total de 4 (cerca de 73.3%).

Esta heurística é própria.

Os valores singulares são variâncias explicadas pelas componentes. A relação entre a primeira e a segunda componentes parecem prenunciar qual tipo de modelo deverá ser a melhor representação para os dados observados.

Assim, a heurística é dada por \[H = {{sv_1}\over{sv_2}}\] em que \(sv_1\) e \(sv_2\) são os dois maiores valores singulares.

Para:

  • \(H > 3\): modelo unifatorial,
  • 2 < \(H \le 3\): modelo hierárquico (segunda ordem ou bifatorial),
  • \(H \le 2\): modelo de primeira ordem.

A lógica desta heurística é que \(H > 3\) indica que a primeira componente captura muito mais do que a próxima (e portanto todas as outras) componentes, de forma que possivelmente um modelo com um único fator será suficiente. No extremo oposto, quando \(H \le 2\), há equilíbrio entre as componentes e, então, vários fatores trabalhando conjuntamente podem ser necessários para compor um bom modelo. Na situação intermediária temos um modelo bifatorial, um modelo que tem um fator geral e fatores secundários.

sv1 = 2.93
sv2 = 0.41
H = 7.14

Nesta heurística são mencionados três tipos de modelo: de primeira ordem (first order), bifatorial (bifactor) e unifatorial (unifactor):

Neste exemplo, a heurística do modelo resultou em 7.14, sugerindo que um modelo com um único fator pode ser adequado.

Índice de condição

O determinante da matriz de correlações é o produtório dos valores singulares, um valor positivo porque esperamos que todos os valores singulares calculados de forma robusta sejam positivos, correspondendo a uma variabilidade generalizada, resumindo toda a informação da matriz de correlações dos itens par-a-par com um único número.

Os cálculos psicométricos precisam do inverso do determinante da matriz de correlações. No entanto, se algum dos valores singulares for muito menor do que o maior, o valor do determinante ficará muito próximo a zero e seu inverso muito grande e a solução pode apresentar instabilidade numérica.

O índice de condição é:

\[\text{CI} = {\sqrt{ {\max(sv)} \over {\min(sv)} }}\] (a raiz quadrada do maior valor singular sobre o menor valor singular).

Caso este índice seja maior que 30, prenuncia-se a instabilidade numérica.

No exemplo da Depressão obtivemos índice igual a 3.1 e podemos prosseguir a análise.

número sugerido de fatores comuns

A análise exploratória inicia com estimativas do número adequado de fatores que os dados sugerem. Aqui escolhemos duas funções do pacote psych, desenvolvido por William Revelle. A primeira é a análise paralela feita com psych::fa.parallel(). Neste exemplo, coerentemente com o que vimos anterioremente, sugere-se um fator comum (number of factors).

Neste exemplo, escolheremos utilizar apenas 1 e, portanto, podemos dar-lhe um nome melhor que “fator 1”. Vamos chamá-lo aqui de “Depressão”.

usabilidade da matriz de correlações

O KMO (MSA global) e os MSA (measure of sampling adequacy) para cada item são índices de quanto as correlações entre os pares de itens são não correlacionadas com os demais itens, ou seja, será tão mais alto quanto menor for a redundância informacional da matriz de correlação. KMO maior ou igual a 0.8 parece produzir boas análise fatorial (Kaiser, 1970). MSA do item avalia o grau de pertinência ao grupo de itens considerados. O valor mínimo de KMO e MSA é, em geral, 0.5.

Como é possível perceber, são medidas relativas de tamanho de efeito. Analogamente ao procedimento da obtenção do \(\eta^2_{\text{global}}\) quando há controle através dos \(\eta^2_{\text{parcial}}\) em Análise de Correlação, o KMO é computado pela composição deste processo para todas as combinações de pares de itens possíveis, sendo que o \(\eta^2_{\text{global}}\) é calculado cada par e os demais itens funcionam como controles fornecendo o \(\eta^2_{\text{parcial}}\):

\[KMO = { { \text{Soma de } \eta^2_{\text{global}} } \over { \text{Soma de } \eta^2_{\text{global}} + \text{Soma de } \eta^2_{\text{parcial}} } }\] Portanto, KMO aproxima-se de um quando a magnitude da influência dos controles aproxima-se de zero, indicando que existe “pureza” na correlação dos pares de itens.

Saída da EFA

Esta é a análise propriamente dita. Neste código precisamos definir quantos fatores comuns queremos postular, o que fizemos em num.factors <- 1. Sua saída tem várias partes.

Na primeira tabela, a coluna MR1 (o fator Depressão) contém as cargas fatoriais padronizadas, que é a inclinação das retas de regressão padronizadas utilizando como VE o fator comum e como VD o item. Como vimos no capítulo de Regressão Linear Simples, em regressões feitas com valores padronizados, a inclinação da reta é numericamente igual à correlação de Pearson. Podemos, portanto, pensar nas cargas fatorias como a intensidade da correlação do fator com o item. São, neste exemplo, grandes e positivas. O R^2 está na coluna h2 e u2 é seu complemento (a variância do resíduo). As funções de Revelle ainda mostram as cargas fatoriais em um diagrama, que é a estrutura do modelo.

Outra parte importante desta saída é Proportion Var 0.64, que é a parcela da variância total explicada pelo modelo.

Adicionamos uma heurística para a rejeição do modelo psicométrico. Temos interesse em rejeitar a hipótese nula do modelo ser coerente com os dados representados pela matriz de correlação. A estatística de teste qui-quadrado da EFA (fa.fit$chi) dividida pelos graus de liberdade deve exceder o valor 2.

Os graus de liberdade estão em fa.fit$dof. O cálculo é dividido em duas partes. A primeira é o número de dados que, neste exemplo, são 10 (\([k \cdot (k+1)]/2\), onde \(k\) é o número de itens). Os 10 dados são as 4 variâncias unitárias e as 6 correlações.

A segunda parte é o número de parâmetros que o modelo deve estimar, que neste caso são 8 (\(2 \cdot k\) no modelo unifatorial): 4 cargas fatoriais e 4 variâncias residuais. O número de graus de liberdade é a diferença entre esta quantidade de dados e a quantidade de parâmetros do modelo, igual a 2 neste exemplo.

Exemplo: Escala de Felicidade

No confucionismo:

“O sucesso social é uma questão de Destino. Confúcio conclui, portanto, que é fútil buscá-lo. Mas a integridade moral está sujeita ao controle de cada um, e é na verdade a única coisa que vale a pena buscar. Podemos nos empenhar em compreender os desígnios do Céu, mas é claro que devemos agir humanisticamente, não obstante o que o Céu nos mande. Mais uma vez, o importante é o cultivo de si mesmo, não o reconhecimento social. ‘O cavalheiro se perturba com sua própria falta de habilidade, não com a incapacidade alheia de admirá-lo.’ (XV.19)”

Stevenson & Haberman (2005)

Felicidade = Bem-estar subjetivo

Eudaimonia (do grego antigo: εὐδαιμονία) é um termo grego que literalmente significa ‘o estado de ser habitado por um bom daemon, um bom gênio’, e, em geral, é traduzido como felicidade ou bem-estar.

Estar de bem com a vida e consigo mesmo; paz interior; estado anímico ou de satisfação e de bem-estar; estado durável de equilíbrio físico e psíquico que varia do contentamento ao júbilo.

Um pesquisador criou um novo questionário para medir felicidade. O questionário criado tem 10 itens respondidos por 200 participantes. Não há dados faltantes (missing values). São itens Likert de concordância de 5 pontos (1: discordância total a 5: concordância total):

  1. Sinto-me entusiasmado
  2. Tenho muitos amigos
  3. Adoro encontrar-me com pessoas
  4. Sinto-me repleto de energia
  5. Tenho várias coisas interessantes para fazer
  6. Espero ansiosamente por várias coisas
  7. Quero contatar amigos e parentes
  8. Quero sair para uma festa
  9. As pessoas do trabalho inspiram-me
  10. Sinto-me animado para iniciar cada dia

Os dados são aqueles do arquivo Felicidade.rds que já utilizamos acima. Diferente do exemplo anterior, temos os dados individualizados, em vez da matriz de correlação.

Consideraremos todos os itens como variáveis intervalares, e usaremos o método que existe na rotina disponível em demo_Correlacao.R para gerar a matriz de correlação e então podemos utilizá-la em código similar ao do exemplo da Depressão (o único ajuste necessário, devido à sessão “suggested number of common factors”, foi alterar para num.factors <- 2). Implantado em demo_Felicidade.R, a saída é:

source("eiras.showdataframe.R")
source("eiras.bartitle.R")

cat(bartitle("Data"))
Dados <- readRDS("Felicidade.rds")
showdataframe(Dados, head=4, tail=3)
n <- nrow(Dados) # number of observations

# todas as colunas tratadas como ordinais
Dados[,] <- lapply(Dados[,],as.ordered)

cat(bartitle("Correlation matrix"))
r <- polycor::hetcor(Dados, use="pairwise.complete.obs", pd=TRUE)
print(r, digits=1)
r.hetcor <- r$correlations

cat(bartitle("assumindo variaveis como ordinais",2))
ro <- qgraph::cor_auto(Dados, detectOrdinal=TRUE, 
                       forcePD=TRUE, missing="pairwise")
print (
  GGally::ggcorr(data=NULL,
                 name="Felicidade",
                 cor_matrix=ro,
                 geom="tile",
                 min_size=0,
                 max_size=10, 
                 nbreaks=6,
                 digits=2,
                 label=FALSE,
                 label_round=2,
                 label_size=4)
)

cat(bartitle("Network (pacote qgraph)"))
n <- nrow(na.omit(Dados))
cat(bartitle("graph=\"glasso\""),2)
qgraph::qgraph(ro, 
               graph="glasso", 
               sampleSize=n,
               layout="spring",
               shape="rectangle",
               vsize=5,
               label.cex=2,
               labels=colnames(ro),
               label.prop=0,
               theme="gray",
               title="Escala de Felicidade", 
               details=FALSE)
cat(bartitle("graph=\"cor\""),2)
qgraph::qgraph(ro, 
               graph="cor", 
               sampleSize=n,
               minimum="sig",
               bonf=TRUE,
               layout="spring", 
               shape="rectangle",
               vsize=5,
               label.cex=2,
               labels=colnames(ro),
               label.prop=0,
               theme="gray",
               title="Escala de Felicidade",
               details=FALSE)

cat(bartitle("Frequencias (pacote likert)"))
cat(bartitle("Verifica numero de niveis observados em cada item",2))
print(sapply(Dados,function(x){length(levels(x))}))
# usa a funcao preparatoria
lkt <- likert::likert(as.data.frame(Dados))
cat(bartitle("Frequencia das respostas",2))
print(lkt)
print(plot(lkt, type="heat", low.color="lightgray", high.color="darkgray"))
print(summary(lkt))
print(plot(lkt, low.color="lightgray", high.color="black"))

cat(bartitle("Dendrograma (pacote pvclust)"))
cat("\n(so funciona assumido itens intervalares)\n")
Dados_num <- Dados
Dados_num[,] <- lapply(Dados_num[,],as.numeric)
res.pv <- pvclust::pvclust(Dados_num, 
                           method.dist="abscor",
                           method.hclust="average", 
                           nboot = 5e2)
plot(res.pv)

cat(bartitle("Singular values"))
sv <- svd(r.hetcor)$d
dt <- data.frame(1:length(sv),format(as.numeric(sv), digits=2, nsmall=2))
names(dt) <- c("component","value")
print(dt)
plot(sv, 
     xlab="Components", ylab="Singular values", 
     type="o", pch=16, axes=FALSE)
axis(1, at=1:length(sv))
axis(2)
abline(h=1,col="darkgray",lty=2)

cat(bartitle("Model heuristic"))
sv1maior <- sv[1]
sv2maior <- sv[2]
H <- NA
if(sv2maior>0) {H <- sv1maior/sv2maior}
cat("FirstSV/SecondSV = H = ",round(sv1maior,2),"/",round(sv2maior,2)," ~ ",round(H,2),"\n",sep="")
cat("\t- if < 2: first order\n")
cat("\t- if > 3: unifactor\n")
cat("\t- otherwise: bifactor\n")
if (H <= 2) {txt <- "\tpossible first order model, sv1/sv2 <= 2"}
if (H > 2 & H <= 3) {txt <- "\tpossible bifactor model, 2 < sv1/sv2 <= 3"}
if (H > 3) {txt <- "\tpossible unifactor model, sv1/sv2 > 3"}
cat(txt)

cat(bartitle("Condition index"))
sv.maior <- sv[1]
sv.menor <- sv[length(sv)]
IC <- NA
if(sv.menor>0) {IC <- sqrt(sv.maior/sv.menor)}
cat("(MaxSV/MinSV)^0.5 = CI = (",round(sv.maior,2),"/",round(sv.menor,2),")^0.5 ~ ",round(IC,1),"\n",sep="")
cat("\t(analysis may be jeopardized if index > 30)\n",sep="")

cat(bartitle("Exploratory Common Factor Analysis (EFA)"))
cat(bartitle("suggested number of common factors",2))
print(psych::fa.parallel(x=r.hetcor, n.obs=n, plot=FALSE)$p)

cat(bartitle("usefulness of correlation matrix",2))
print(psych::KMO(r.hetcor))

cat(bartitle("EFA",2))
num.factors <- 2
fa.fit <- psych::fa(r=r.hetcor,
                    n.obs=n,
                    nfactors=num.factors)
print(fa.fit, sort=TRUE,digits=2,cut=.3)
psych::fa.diagram(fa.fit, 
                  main="Felicidade",
                  cut=0,
                  digits=2,
                  sort=TRUE)
cat(bartitle("Heuristic for model rejection):",2))
cat("X^2 = ",fa.fit$chi,"\n",sep="")
cat("df = ",fa.fit$dof,"\n",sep="")
cat("X^2/df = ",fa.fit$chi/fa.fit$dof,"\n",sep="")
cat("(model may possibly be relected when X^2/df > 2)\n",sep="")

options(warn=0)

----
Data
----
 Q1  Q2  Q3  Q4  Q5  Q6  Q7  Q8  Q9  Q10
 1   2   4   2   4   1   3   2   2   1  
 1   3   4   1   1   1   3   3   3   1  
 1   4   3   1   1   1   4   4   4   1  
 1   2   3   1   1   1   1   1   1   1  
 ... ... ... ... ... ... ... ... ... ...
 1   3   3   1   1   1   2   3   3   1  
 1   4   3   1   1   1   3   2   2   1  
 1   4   5   1   1   1   4   4   3   1  

------------------
Correlation matrix
------------------

Two-Step Estimates

Correlations/Type of Correlation:
      Q1         Q2         Q3         Q4         Q5         Q6         Q7
Q1     1 Polychoric Polychoric Polychoric Polychoric Polychoric Polychoric
Q2  0.07          1 Polychoric Polychoric Polychoric Polychoric Polychoric
Q3  0.05        0.5          1 Polychoric Polychoric Polychoric Polychoric
Q4   0.6      -0.05      -0.02          1 Polychoric Polychoric Polychoric
Q5   0.5      -0.05      -0.09        0.5          1 Polychoric Polychoric
Q6   0.6        0.1      -0.02        0.8        0.5          1 Polychoric
Q7  0.09        0.5        0.5      -0.08       0.01       0.06          1
Q8  0.05        0.7        0.6      -0.02      0.009        0.1        0.8
Q9   0.1        0.5        0.5       -0.1      -0.03       0.02        0.7
Q10  0.6       0.05      -0.09        0.7        0.5        0.8        0.2
            Q8         Q9        Q10
Q1  Polychoric Polychoric Polychoric
Q2  Polychoric Polychoric Polychoric
Q3  Polychoric Polychoric Polychoric
Q4  Polychoric Polychoric Polychoric
Q5  Polychoric Polychoric Polychoric
Q6  Polychoric Polychoric Polychoric
Q7  Polychoric Polychoric Polychoric
Q8           1 Polychoric Polychoric
Q9         0.6          1 Polychoric
Q10        0.1       0.06          1

Standard Errors/Numbers of Observations:
      Q1   Q2   Q3   Q4   Q5   Q6   Q7   Q8  Q9 Q10
Q1   200  200  200  200  200  200  200  200 200 200
Q2  0.09  200  200  200  200  200  200  200 200 200
Q3  0.09 0.06  200  200  200  200  200  200 200 200
Q4  0.07 0.09 0.09  200  200  200  200  200 200 200
Q5  0.07 0.09 0.09 0.08  200  200  200  200 200 200
Q6  0.08  0.1  0.1 0.06 0.08  200  200  200 200 200
Q7  0.09 0.05 0.06 0.09 0.09  0.1  200  200 200 200
Q8  0.09 0.03 0.05 0.09 0.09  0.1 0.03  200 200 200
Q9  0.09 0.06 0.05 0.09 0.09  0.1 0.04 0.04 200 200
Q10 0.08  0.1  0.1 0.07 0.09 0.06  0.1  0.1 0.1 200

P-values for Tests of Bivariate Normality:
      Q1   Q2  Q3   Q4  Q5   Q6   Q7  Q8 Q9
Q1                                         
Q2   0.5                                   
Q3   0.8  0.3                              
Q4   0.1 0.01 0.9                          
Q5  0.08 0.06 0.3 0.09                     
Q6   0.5  0.6 0.5  0.3 0.3                 
Q7   0.7 0.03 0.3  0.7 0.3  0.3            
Q8   0.9    1 0.8  0.4 0.2  0.7 0.07       
Q9  0.09  0.3 0.4  0.5 0.6  0.4  0.5 0.2   
Q10  0.4  0.7 0.5  0.5 0.1 0.06  0.6 0.4  1

    ---------------------------------
    assumindo variaveis como ordinais
    ---------------------------------


-----------------------
Network (pacote qgraph)
-----------------------

--------------
graph="glasso"
--------------
 2


-----------
graph="cor"
-----------
 2


---------------------------
Frequencias (pacote likert)
---------------------------

    -------------------------------------------------
    Verifica numero de niveis observados em cada item
    -------------------------------------------------
 Q1  Q2  Q3  Q4  Q5  Q6  Q7  Q8  Q9 Q10 
  5   5   5   5   5   5   5   5   5   5 

    ------------------------
    Frequencia das respostas
    ------------------------
   Item    1    2    3    4    5
1    Q1 67.0 19.5  6.0  7.0  0.5
2    Q2  6.5 14.0 36.5 36.0  7.0
3    Q3  6.0 15.5 29.0 32.5 17.0
4    Q4 68.0 17.5  8.0  4.0  2.5
5    Q5 63.0 23.5  9.0  2.5  2.0
6    Q6 84.5  9.0  2.0  3.0  1.5
7    Q7  6.0 12.0 29.5 37.5 15.0
8    Q8  5.5 17.5 34.5 30.5 12.0
9    Q9  4.5 17.0 34.0 33.0 11.5
10  Q10 83.0 11.5  3.5  1.5  0.5

   Item  low neutral high  mean        sd
7    Q7 18.0    29.5 52.5 3.435 1.0730949
3    Q3 21.5    29.0 49.5 3.390 1.1198977
9    Q9 21.5    34.0 44.5 3.300 1.0272665
2    Q2 20.5    36.5 43.0 3.230 0.9960222
8    Q8 23.0    34.5 42.5 3.260 1.0573504
1    Q1 86.5     6.0  7.5 1.545 0.9231664
4    Q4 85.5     8.0  6.5 1.555 0.9755684
5    Q5 86.5     9.0  4.5 1.570 0.9050945
6    Q6 93.5     2.0  4.5 1.280 0.7775752
10  Q10 94.5     3.5  2.0 1.250 0.6399592


----------------------------
Dendrograma (pacote pvclust)
----------------------------

(so funciona assumido itens intervalares)
Bootstrap (r = 0.5)... Done.
Bootstrap (r = 0.6)... Done.
Bootstrap (r = 0.7)... Done.
Bootstrap (r = 0.8)... Done.
Bootstrap (r = 0.9)... Done.
Bootstrap (r = 1.0)... Done.
Bootstrap (r = 1.1)... Done.
Bootstrap (r = 1.2)... Done.
Bootstrap (r = 1.3)... Done.
Bootstrap (r = 1.4)... Done.


---------------
Singular values
---------------
   component value
1          1  3.53
2          2  3.29
3          3  0.67
4          4  0.64
5          5  0.55
6          6  0.45
7          7  0.31
8          8  0.27
9          9  0.18
10        10  0.12


---------------
Model heuristic
---------------
FirstSV/SecondSV = H = 3.53/3.29 ~ 1.08
    - if < 2: first order
    - if > 3: unifactor
    - otherwise: bifactor
    possible first order model, sv1/sv2 <= 2
---------------
Condition index
---------------
(MaxSV/MinSV)^0.5 = CI = (3.53/0.12)^0.5 ~ 5.4
    (analysis may be jeopardized if index > 30)

----------------------------------------
Exploratory Common Factor Analysis (EFA)
----------------------------------------

    ----------------------------------
    suggested number of common factors
    ----------------------------------
Parallel analysis suggests that the number of factors =  2  and the number of components =  2 
NULL

    --------------------------------
    usefulness of correlation matrix
    --------------------------------
Kaiser-Meyer-Olkin factor adequacy
Call: psych::KMO(r = r.hetcor)
Overall MSA =  0.78
MSA for each item = 
  Q1   Q2   Q3   Q4   Q5   Q6   Q7   Q8   Q9  Q10 
0.81 0.77 0.85 0.78 0.86 0.76 0.73 0.71 0.83 0.80 

    ---
    EFA
    ---
Carregando namespace exigido: GPArotation
Factor Analysis using method =  minres
Call: psych::fa(r = r.hetcor, nfactors = num.factors, n.obs = n)
Standardized loadings (pattern matrix) based upon correlation matrix
    item   MR1   MR2   h2   u2 com
Q6     6  0.89       0.81 0.19   1
Q10   10  0.83       0.70 0.30   1
Q4     4  0.81       0.66 0.34   1
Q1     1  0.71       0.51 0.49   1
Q5     5  0.63       0.39 0.61   1
Q8     8        0.93 0.87 0.13   1
Q7     7        0.84 0.70 0.30   1
Q9     9        0.74 0.54 0.46   1
Q2     2        0.72 0.52 0.48   1
Q3     3        0.62 0.39 0.61   1

                       MR1  MR2
SS loadings           3.05 3.05
Proportion Var        0.31 0.30
Cumulative Var        0.31 0.61
Proportion Explained  0.50 0.50
Cumulative Proportion 0.50 1.00

 With factor correlations of 
     MR1  MR2
MR1 1.00 0.06
MR2 0.06 1.00

Mean item complexity =  1
Test of the hypothesis that 2 factors are sufficient.

df null model =  45  with the objective function =  6.14 with Chi Square =  1196.7
df of  the model are 26  and the objective function was  0.64 

The root mean square of the residuals (RMSR) is  0.04 
The df corrected root mean square of the residuals is  0.06 

The harmonic n.obs is  200 with the empirical chi square  33.2  with prob <  0.16 
The total n.obs was  200  with Likelihood Chi Square =  124.72  with prob <  7.3e-15 

Tucker Lewis Index of factoring reliability =  0.851
RMSEA index =  0.138  and the 90 % confidence intervals are  0.114 0.163
BIC =  -13.03
Fit based upon off diagonal values = 0.99
Measures of factor score adequacy             
                                                   MR1  MR2
Correlation of (regression) scores with factors   0.95 0.96
Multiple R square of scores with factors          0.91 0.93
Minimum correlation of possible factor scores     0.82 0.85


    -------------------------------
    Heuristic for model rejection):
    -------------------------------
X^2 = 33.20375
df = 26
X^2/df = 1.277067
(model may possibly be relected when X^2/df > 2)

A saída é a quase a mesma do exemplo anterior. Leia e interprete. A diferença é um gráfico adicional que mostra as cargas fatoriais dos itens nos dois fatores comuns extraídos, os quais o pacote denomina MR1 e MR2: perceba que dois grupos distintos claramente se formam neste caso. Os dois grupos são:

1 - Sinto-me entusiasmado
4 - Sinto-me repleto de energia
5 - Tenho várias coisas interessantes para fazer
6 - Espero ansiosamente por várias coisas
10 - Sinto-me animado para iniciar cada dia

que, agora, podemos entender como “Felicidade intrínseca” ou “Felicidade confuciana”.

2 - Tenho muitos amigos
3 - Adoro encontrar-me com pessoas
7 - Quero contatar amigos e parentes
8 - Quero sair para uma festa
9 - As pessoas do trabalho inspiram-me

que podemos entender como “Felicidade extrínseca”.

Neste exemplo, como temos os dados brutos, ainda podemos calcular os escores dos respondentes.

Para isto precisaremos usar a função fa.fit <- psych::fa() com outros parâmetros:

fa.fit <- psych::fa(r=Dados_brutos,
                    scores="regression",
                    nfactors=num.factors)

Está implementada em demo_Felicidade_DadosBrutos.R, resultando em:

source("eiras.showdataframe.R")
source("eiras.bartitle.R")

cat(bartitle("Data"))
Dados_brutos <- readRDS("Felicidade.rds")
showdataframe(Dados_brutos, head=4, tail=3)

cat(bartitle("EFA"))
num.factors <- 2
fa.fit <- psych::fa(r=Dados_brutos,
                    scores="regression",
                    nfactors=num.factors)
print(fa.fit, sort=TRUE,digits=2,cut=.3)

cat(bartitle("Scores"))
Dados_brutos$MR1 <- fa.fit$scores[,1]
Dados_brutos$MR2 <- fa.fit$scores[,2]
showdataframe(Dados_brutos, head=4, tail=3)

----
Data
----
 Q1  Q2  Q3  Q4  Q5  Q6  Q7  Q8  Q9  Q10
 1   2   4   2   4   1   3   2   2   1  
 1   3   4   1   1   1   3   3   3   1  
 1   4   3   1   1   1   4   4   4   1  
 1   2   3   1   1   1   1   1   1   1  
 ... ... ... ... ... ... ... ... ... ...
 1   3   3   1   1   1   2   3   3   1  
 1   4   3   1   1   1   3   2   2   1  
 1   4   5   1   1   1   4   4   3   1  

---
EFA
---
Factor Analysis using method =  minres
Call: psych::fa(r = Dados_brutos, nfactors = num.factors, scores = "regression")
Standardized loadings (pattern matrix) based upon correlation matrix
    item   MR1   MR2   h2   u2 com
Q8     8  0.90       0.82 0.18   1
Q7     7  0.80       0.64 0.36   1
Q9     9  0.70       0.49 0.51   1
Q2     2  0.67       0.45 0.55   1
Q3     3  0.59       0.35 0.65   1
Q6     6        0.79 0.62 0.38   1
Q4     4        0.75 0.56 0.44   1
Q10   10        0.75 0.56 0.44   1
Q1     1        0.66 0.44 0.56   1
Q5     5        0.54 0.29 0.71   1

                       MR1  MR2
SS loadings           2.76 2.46
Proportion Var        0.28 0.25
Cumulative Var        0.28 0.52
Proportion Explained  0.53 0.47
Cumulative Proportion 0.53 1.00

 With factor correlations of 
     MR1  MR2
MR1 1.00 0.03
MR2 0.03 1.00

Mean item complexity =  1
Test of the hypothesis that 2 factors are sufficient.

df null model =  45  with the objective function =  4.21 with Chi Square =  819.75
df of  the model are 26  and the objective function was  0.34 

The root mean square of the residuals (RMSR) is  0.04 
The df corrected root mean square of the residuals is  0.05 

The harmonic n.obs is  200 with the empirical chi square  26.87  with prob <  0.42 
The total n.obs was  200  with Likelihood Chi Square =  65.87  with prob <  2.6e-05 

Tucker Lewis Index of factoring reliability =  0.91
RMSEA index =  0.087  and the 90 % confidence intervals are  0.062 0.114
BIC =  -71.89
Fit based upon off diagonal values = 0.99
Measures of factor score adequacy             
                                                   MR1  MR2
Correlation of (regression) scores with factors   0.95 0.92
Multiple R square of scores with factors          0.90 0.84
Minimum correlation of possible factor scores     0.79 0.69

------
Scores
------
 Q1  Q2  Q3  Q4  Q5  Q6  Q7  Q8  Q9  Q10 MR1                MR2               
 1   2   4   2   4   1   3   2   2   1   -1.06567260965783  0.106855547678851 
 1   3   4   1   1   1   3   3   3   1   -0.221568204339216 -0.569288984979641
 1   4   3   1   1   1   4   4   4   1   0.628310477195119  -0.555747968486246
 1   2   3   1   1   1   1   1   1   1   -2.13246375797838  -0.589494111847742
 ... ... ... ... ... ... ... ... ... ... ...                ...               
 1   3   3   1   1   1   2   3   3   1   -0.499618658717026 -0.574099223955546
 1   4   3   1   1   1   3   2   2   1   -0.913825252790432 -0.580694500442478
 1   4   5   1   1   1   4   4   3   1   0.661904600761249  -0.577236213305773

Os escores fatoriais estimados dos respondentes nos dois fatores comuns extraídos são escores-z. E.g., o primeiro respondente tem escores fatoriais estimados nos fatores comuns de felicidade extrínseca e de felicidade intrínseca iguais a -1.07 e 0.11 desvios-padrão, respectivamente.

Exemplo: WHOQOL

Retomando o exemplo do WHOQOL com os dados disponíveis em WHOQOL.rds, verificaremos o que podemos obter inicialmente com uma EFA, implementada em demo_EFA_WHOQOL.R.

source("eiras.showdataframe.R")
source("eiras.bartitle.R")
options(warn=-1)
Dados <- readRDS("WHOQOL.rds")
n <- nrow(Dados)

# todas as colunas tratadas como ordinais
Dados[,4:27] <- lapply(Dados[,4:27],as.ordered)

r <- polycor::hetcor(Dados[,4:27], use="pairwise.complete.obs", pd=TRUE)
print(r, digits=2)
r.hetcor <- r$correlations

cat(bartitle("Singular values"))
sv <- svd(r.hetcor)$d
dt <- data.frame(1:length(sv),format(as.numeric(sv), digits=2, nsmall=2))
names(dt) <- c("component","value")
print(dt)
plot(sv, 
     xlab="Components", ylab="Singular values", 
     type="o", pch=16, axes=FALSE)
axis(1, at=1:length(sv))
axis(2)
abline(h=1,col="darkgray",lty=2)

cat(bartitle("Model heuristic"))
sv1maior <- sv[1]
sv2maior <- sv[2]
H <- NA
if(sv2maior>0) {H <- sv1maior/sv2maior}
cat("FirstSV/SecondSV = H = ",round(sv1maior,2),"/",round(sv2maior,2)," ~ ",round(H,2),"\n",sep="")
cat("\t- if < 2: first order\n")
cat("\t- if > 3: unifactor\n")
cat("\t- otherwise: bifactor\n")
if (H <= 2) {txt <- "\tpossible first order model, sv1/sv2 <= 2"}
if (H > 2 & H <= 3) {txt <- "\tpossible bifactor model, 2 < sv1/sv2 <= 3"}
if (H > 3) {txt <- "\tpossible unifactor model, sv1/sv2 > 3"}
cat(txt)

cat(bartitle("Condition index"))
sv.maior <- sv[1]
sv.menor <- sv[length(sv)]
IC <- NA
if(sv.menor>0) {IC <- sqrt(sv.maior/sv.menor)}
cat("(MaxSV/MinSV)^0.5 = CI = (",round(sv.maior,2),"/",round(sv.menor,2),")^0.5 ~ ",round(IC,1),"\n",sep="")
cat("\t(analysis may be jeopardized if index > 30)\n",sep="")

cat(bartitle("Exploratory Common Factor Analysis (EFA)"))
cat(bartitle("suggested number of common factors",2))
print(psych::fa.parallel(x=r.hetcor, n.obs=n, plot=FALSE)$p)

cat(bartitle("usefulness of correlation matrix",2))
print(psych::KMO(r.hetcor))

cat(bartitle("EFA",2))

cat(bartitle("tentando como unifatorial",3))
num.factors <- 1
fa.fit <- psych::fa(r=r.hetcor,
                    n.obs=n,
                    nfactors=num.factors)
print(fa.fit, sort=TRUE,digits=2,cut=.3)
psych::fa.diagram(fa.fit, 
                  main="WHOQOL",
                  cut=0.3,
                  digits=1,
                  sort=TRUE)
cat(bartitle("Heuristic for model rejection:",2))
cat("X^2 = ",fa.fit$chi,"\n",sep="")
cat("df = ",fa.fit$dof,"\n",sep="")
cat("X^2/df = ",fa.fit$chi/fa.fit$dof,"\n",sep="")
cat("(model may possibly be rejected when X^2/df > 2)\n",sep="")

cat(bartitle("primeira ordem com 4 fatores comuns (seguindo a WHO)",3))
num.factors <- 4
fa.fit <- psych::fa(r=r.hetcor,
                    n.obs=n,
                    nfactors=num.factors)
print(fa.fit, sort=TRUE,digits=2,cut=.3)
psych::fa.diagram(fa.fit, 
                  main="WHOQOL",
                  cut=0.3,
                  digits=1,
                  sort=TRUE)
cat(bartitle("Heuristic for model rejection:",2))
cat("X^2 = ",fa.fit$chi,"\n",sep="")
cat("df = ",fa.fit$dof,"\n",sep="")
cat("X^2/df = ",fa.fit$chi/fa.fit$dof,"\n",sep="")
cat("(model may possibly be rejected when X^2/df > 2)\n",sep="")

cat(bartitle("tentando como bifatorial com 4 fatores especificos e 1 geral",3))
num.factors <- 4
fabi.fit <- psych::omega(m=r.hetcor,
                         n.obs=n,
                         nfactors=num.factors,
                         cut=0.3)
print(fabi.fit, sort=FALSE, digits=2, cut=0.3)
print(psych::omega.diagram(fabi.fit,main="WHOQOL",cut=0.3,gcut=0.3,sort=TRUE))

cat(bartitle("Heuristic for model rejection:",2))
cat("X^2 = ",fabi.fit$stats$chi,"\n",sep="")
cat("df = ",fabi.fit$stats$dof,"\n",sep="")
cat("X^2/df = ",fabi.fit$stats$chi/fabi.fit$stats$dof,"\n",sep="")
cat("(model may possibly be rejected when X^2/df > 2)\n",sep="")


options(warn=0)

Two-Step Estimates

Correlations/Type of Correlation:
       Q3         Q4         Q5         Q6         Q7         Q8         Q9
Q3      1 Polychoric Polychoric Polychoric Polychoric Polychoric Polychoric
Q4   0.44          1 Polychoric Polychoric Polychoric Polychoric Polychoric
Q5   -0.2      -0.23          1 Polychoric Polychoric Polychoric Polychoric
Q6  -0.18      -0.23       0.49          1 Polychoric Polychoric Polychoric
Q7  -0.19      -0.26       0.35       0.41          1 Polychoric Polychoric
Q8  -0.23      -0.28       0.47       0.54       0.52          1 Polychoric
Q9  -0.22      -0.22       0.28       0.23       0.29       0.33          1
Q10 -0.29      -0.34       0.49        0.4       0.55       0.53       0.33
Q11 -0.22      -0.27       0.35       0.39        0.3       0.45        0.2
Q12 -0.21       -0.2       0.32       0.22       0.21       0.25       0.27
Q13 -0.19      -0.22       0.29       0.29       0.27       0.32        0.3
Q14 -0.18      -0.19        0.6       0.25       0.26       0.31       0.27
Q15 -0.23      -0.21       0.24       0.23        0.2       0.21       0.27
Q16 -0.22      -0.25       0.37       0.25       0.37       0.34       0.29
Q17 -0.26      -0.32       0.46       0.42       0.54       0.52       0.31
Q18 -0.26       -0.3       0.41       0.45       0.56       0.52       0.27
Q19 -0.23      -0.29       0.51       0.56       0.51       0.61       0.29
Q20 -0.19      -0.25       0.49       0.44       0.33       0.45       0.28
Q21 -0.11      -0.16       0.35       0.35       0.23        0.3       0.16
Q22 -0.15      -0.18       0.38       0.35       0.26       0.33        0.2
Q23 -0.13      -0.15       0.29       0.26       0.18       0.23       0.37
Q24 -0.17      -0.17       0.25       0.17       0.12        0.2       0.25
Q25 -0.11      -0.11        0.2       0.15      0.095       0.18       0.22
Q26  0.25       0.36      -0.41      -0.46       -0.4      -0.54      -0.24
           Q10        Q11        Q12        Q13        Q14        Q15
Q3  Polychoric Polychoric Polychoric Polychoric Polychoric Polychoric
Q4  Polychoric Polychoric Polychoric Polychoric Polychoric Polychoric
Q5  Polychoric Polychoric Polychoric Polychoric Polychoric Polychoric
Q6  Polychoric Polychoric Polychoric Polychoric Polychoric Polychoric
Q7  Polychoric Polychoric Polychoric Polychoric Polychoric Polychoric
Q8  Polychoric Polychoric Polychoric Polychoric Polychoric Polychoric
Q9  Polychoric Polychoric Polychoric Polychoric Polychoric Polychoric
Q10          1 Polychoric Polychoric Polychoric Polychoric Polychoric
Q11       0.43          1 Polychoric Polychoric Polychoric Polychoric
Q12       0.27       0.29          1 Polychoric Polychoric Polychoric
Q13        0.3       0.28        0.4          1 Polychoric Polychoric
Q14       0.41       0.23       0.35       0.39          1 Polychoric
Q15       0.24       0.18       0.34       0.34       0.23          1
Q16       0.52       0.25       0.23       0.22       0.38        0.2
Q17       0.66       0.38       0.25       0.32       0.36       0.29
Q18       0.62       0.38       0.23       0.32       0.32       0.24
Q19       0.56       0.55       0.25       0.31       0.31       0.22
Q20       0.38       0.36       0.24       0.29       0.35       0.24
Q21       0.28       0.37       0.18       0.18       0.24       0.15
Q22       0.27       0.25       0.22       0.25       0.25        0.2
Q23       0.16       0.22       0.39       0.29       0.25       0.34
Q24       0.17       0.16       0.39       0.34       0.29        0.3
Q25       0.11       0.16       0.38       0.23       0.21       0.56
Q26       -0.5      -0.37      -0.19      -0.19      -0.27      -0.14
           Q16        Q17        Q18        Q19        Q20        Q21
Q3  Polychoric Polychoric Polychoric Polychoric Polychoric Polychoric
Q4  Polychoric Polychoric Polychoric Polychoric Polychoric Polychoric
Q5  Polychoric Polychoric Polychoric Polychoric Polychoric Polychoric
Q6  Polychoric Polychoric Polychoric Polychoric Polychoric Polychoric
Q7  Polychoric Polychoric Polychoric Polychoric Polychoric Polychoric
Q8  Polychoric Polychoric Polychoric Polychoric Polychoric Polychoric
Q9  Polychoric Polychoric Polychoric Polychoric Polychoric Polychoric
Q10 Polychoric Polychoric Polychoric Polychoric Polychoric Polychoric
Q11 Polychoric Polychoric Polychoric Polychoric Polychoric Polychoric
Q12 Polychoric Polychoric Polychoric Polychoric Polychoric Polychoric
Q13 Polychoric Polychoric Polychoric Polychoric Polychoric Polychoric
Q14 Polychoric Polychoric Polychoric Polychoric Polychoric Polychoric
Q15 Polychoric Polychoric Polychoric Polychoric Polychoric Polychoric
Q16          1 Polychoric Polychoric Polychoric Polychoric Polychoric
Q17       0.55          1 Polychoric Polychoric Polychoric Polychoric
Q18       0.47       0.82          1 Polychoric Polychoric Polychoric
Q19        0.4       0.68       0.67          1 Polychoric Polychoric
Q20        0.3       0.44       0.41       0.54          1 Polychoric
Q21       0.23       0.28       0.29       0.41       0.44          1
Q22       0.21       0.29       0.29       0.35        0.6       0.37
Q23       0.13       0.21       0.22       0.26        0.3       0.22
Q24       0.15       0.18        0.2        0.2       0.23       0.14
Q25       0.14       0.16       0.14       0.15       0.17       0.14
Q26      -0.37      -0.45      -0.46      -0.54      -0.45       -0.3
           Q22        Q23        Q24        Q25        Q26
Q3  Polychoric Polychoric Polychoric Polychoric Polychoric
Q4  Polychoric Polychoric Polychoric Polychoric Polychoric
Q5  Polychoric Polychoric Polychoric Polychoric Polychoric
Q6  Polychoric Polychoric Polychoric Polychoric Polychoric
Q7  Polychoric Polychoric Polychoric Polychoric Polychoric
Q8  Polychoric Polychoric Polychoric Polychoric Polychoric
Q9  Polychoric Polychoric Polychoric Polychoric Polychoric
Q10 Polychoric Polychoric Polychoric Polychoric Polychoric
Q11 Polychoric Polychoric Polychoric Polychoric Polychoric
Q12 Polychoric Polychoric Polychoric Polychoric Polychoric
Q13 Polychoric Polychoric Polychoric Polychoric Polychoric
Q14 Polychoric Polychoric Polychoric Polychoric Polychoric
Q15 Polychoric Polychoric Polychoric Polychoric Polychoric
Q16 Polychoric Polychoric Polychoric Polychoric Polychoric
Q17 Polychoric Polychoric Polychoric Polychoric Polychoric
Q18 Polychoric Polychoric Polychoric Polychoric Polychoric
Q19 Polychoric Polychoric Polychoric Polychoric Polychoric
Q20 Polychoric Polychoric Polychoric Polychoric Polychoric
Q21 Polychoric Polychoric Polychoric Polychoric Polychoric
Q22          1 Polychoric Polychoric Polychoric Polychoric
Q23       0.33          1 Polychoric Polychoric Polychoric
Q24        0.3       0.45          1 Polychoric Polychoric
Q25       0.16       0.41       0.38          1 Polychoric
Q26      -0.31      -0.15      -0.16     -0.063          1

Standard Errors/Numbers of Observations:
       Q3    Q4    Q5    Q6    Q7    Q8    Q9   Q10   Q11   Q12   Q13   Q14
Q3   2684  2683  2684  2684  2684  2684  2683  2684  2684  2683  2683  2683
Q4  0.019  2683  2683  2683  2683  2683  2682  2683  2683  2682  2682  2682
Q5  0.022 0.022  2684  2684  2684  2684  2683  2684  2684  2683  2683  2683
Q6  0.022 0.022 0.017  2684  2684  2684  2683  2684  2684  2683  2683  2683
Q7  0.022 0.021 0.019 0.018  2684  2684  2683  2684  2684  2683  2683  2683
Q8  0.021 0.021 0.017 0.016 0.016  2684  2683  2684  2684  2683  2683  2683
Q9  0.021 0.022  0.02 0.021  0.02 0.019  2683  2683  2683  2682  2682  2682
Q10 0.021  0.02 0.017 0.019 0.015 0.016  0.02  2684  2684  2683  2683  2683
Q11 0.021 0.021 0.019 0.019  0.02 0.017 0.021 0.018  2684  2683  2683  2683
Q12 0.021 0.021 0.019 0.021 0.021  0.02  0.02  0.02 0.019  2683  2683  2683
Q13 0.022 0.022  0.02 0.021 0.021  0.02  0.02 0.021  0.02 0.018  2683  2683
Q14 0.022 0.022 0.014 0.021  0.02  0.02  0.02 0.018  0.02 0.019 0.019  2683
Q15 0.023 0.023 0.022 0.023 0.023 0.023 0.022 0.023 0.023 0.021 0.021 0.023
Q16 0.021 0.021 0.018 0.021 0.018 0.019  0.02 0.016  0.02  0.02 0.021 0.018
Q17 0.021  0.02 0.017 0.018 0.015 0.015 0.019 0.013 0.018  0.02  0.02 0.019
Q18 0.021  0.02 0.018 0.018 0.015 0.016  0.02 0.013 0.018  0.02  0.02 0.019
Q19 0.021  0.02 0.016 0.015 0.016 0.014  0.02 0.015 0.015  0.02  0.02 0.019
Q20 0.022 0.021 0.016 0.018 0.019 0.017  0.02 0.019 0.018  0.02  0.02 0.019
Q21 0.022 0.022 0.019 0.019  0.02 0.019 0.021  0.02 0.018 0.021 0.021  0.02
Q22 0.022 0.022 0.019  0.02  0.02 0.019 0.021 0.021  0.02 0.021 0.021  0.02
Q23 0.023 0.023  0.02 0.021 0.022 0.021 0.019 0.022 0.021 0.018 0.021 0.021
Q24 0.022 0.022  0.02 0.022 0.022 0.021  0.02 0.022 0.021 0.018 0.019  0.02
Q25 0.023 0.022 0.021 0.022 0.022 0.021 0.021 0.022 0.021 0.018 0.021 0.021
Q26 0.021  0.02 0.018 0.017 0.018 0.015 0.021 0.016 0.018 0.021 0.021  0.02
      Q15   Q16    Q17   Q18   Q19   Q20   Q21   Q22   Q23   Q24   Q25  Q26
Q3   2683  2683   2683  2683  2683  2683  2683  2682  2683  2683  2683 2683
Q4   2682  2682   2682  2682  2682  2682  2682  2681  2682  2682  2682 2682
Q5   2683  2683   2683  2683  2683  2683  2683  2682  2683  2683  2683 2683
Q6   2683  2683   2683  2683  2683  2683  2683  2682  2683  2683  2683 2683
Q7   2683  2683   2683  2683  2683  2683  2683  2682  2683  2683  2683 2683
Q8   2683  2683   2683  2683  2683  2683  2683  2682  2683  2683  2683 2683
Q9   2682  2682   2682  2682  2682  2682  2682  2681  2682  2682  2682 2682
Q10  2683  2683   2683  2683  2683  2683  2683  2682  2683  2683  2683 2683
Q11  2683  2683   2683  2683  2683  2683  2683  2682  2683  2683  2683 2683
Q12  2683  2683   2683  2683  2683  2683  2683  2682  2683  2683  2683 2683
Q13  2683  2683   2683  2683  2683  2683  2683  2682  2683  2683  2683 2683
Q14  2683  2683   2683  2683  2683  2683  2683  2682  2683  2683  2683 2683
Q15  2683  2683   2683  2683  2683  2683  2683  2682  2683  2683  2683 2683
Q16 0.023  2683   2683  2683  2683  2683  2683  2682  2683  2683  2683 2683
Q17 0.022 0.015   2683  2683  2683  2683  2683  2682  2683  2683  2683 2683
Q18 0.023 0.016 0.0071  2683  2683  2683  2683  2682  2683  2683  2683 2683
Q19 0.023 0.018  0.011 0.012  2683  2683  2683  2682  2683  2683  2683 2683
Q20 0.022 0.019  0.017 0.018 0.015  2683  2683  2682  2683  2683  2683 2683
Q21 0.023  0.02  0.019  0.02 0.018 0.017  2683  2682  2683  2683  2683 2683
Q22 0.023 0.021   0.02  0.02 0.019 0.014 0.018  2682  2682  2682  2682 2682
Q23 0.021 0.022  0.021 0.021 0.021  0.02 0.021  0.02  2683  2683  2683 2683
Q24 0.021 0.021  0.021 0.021 0.021  0.02 0.021  0.02 0.017  2683  2683 2683
Q25 0.016 0.021  0.021 0.022 0.021 0.021 0.021 0.021 0.018 0.018  2683 2683
Q26 0.023 0.018  0.017 0.017 0.015 0.017 0.019  0.02 0.022 0.021 0.022 2683

P-values for Tests of Bivariate Normality:
         Q3     Q4      Q5      Q6      Q7      Q8      Q9     Q10     Q11
Q3                                                                        
Q4  6.2e-05                                                               
Q5    0.045  0.072                                                        
Q6    0.033  0.045 3.5e-11                                                
Q7   0.0071   0.25 3.8e-05 5.7e-06                                        
Q8    0.061   0.15 2.3e-07 2.9e-05 1.4e-17                                
Q9     0.15   0.15   0.026    0.23 0.00059  0.0065                        
Q10    0.15   0.18   0.082 0.00094 4.3e-06 0.00072   0.085                
Q11    0.34  0.025 6.7e-05   0.002 1.9e-07 0.00081  0.0039    0.12        
Q12    0.51   0.21 2.6e-05  0.0088  0.0034 8.5e-05  0.0028 3.2e-05 7.3e-07
Q13 0.00041  0.001 0.00048  0.0024   0.027  0.0078   0.012  0.0015   0.041
Q14   0.086  0.036 1.4e-07 0.00044   0.013   3e-04  0.0061  0.0046   7e-07
Q15   0.024   0.37    0.52    0.48   0.045    0.79   0.001    0.21  0.0035
Q16    0.69   0.04  0.0092    0.21  0.0047 4.8e-05  0.0031 2.4e-06   0.026
Q17   0.017   0.97 1.2e-05 8.6e-07 0.00019 0.00011    0.28   0.029  0.0052
Q18  0.0052   0.14 1.9e-06 5.9e-09   5e-09 0.00028   0.018   0.011 0.00059
Q19   0.086  0.026   7e-06 1.8e-09 3.1e-07 0.00013   0.024   0.034 4.9e-09
Q20    0.59   0.31 1.3e-06   0.019 6.7e-06 4.8e-05    0.13   2e-04  0.0087
Q21   0.039   0.04    0.18 5.7e-05 9.5e-05  0.0021    0.39    0.33  0.0036
Q22   0.026  0.068   0.013 0.00059 0.00046   0.085   0.059  0.0049   2e-05
Q23    0.28 0.0014   0.047    0.55    0.15     0.1 9.2e-07   0.031   0.063
Q24   0.059  0.095    0.25     0.2    0.21  0.0042   0.046       1   0.011
Q25  0.0034  0.012    0.37    0.92   0.044    0.17   0.013  0.0062    0.09
Q26    0.49   0.72   0.008 7.1e-06 1.4e-06 8.1e-07    0.15 1.6e-06   0.025
        Q12     Q13     Q14     Q15     Q16     Q17     Q18     Q19     Q20
Q3                                                                         
Q4                                                                         
Q5                                                                         
Q6                                                                         
Q7                                                                         
Q8                                                                         
Q9                                                                         
Q10                                                                        
Q11                                                                        
Q12                                                                        
Q13   0.024                                                                
Q14 0.00076 6.3e-09                                                        
Q15  0.0067    0.22    0.15                                                
Q16 0.00063    0.24   0.016    0.39                                        
Q17  0.0018 0.00013  0.0013   0.005 1.6e-06                                
Q18    0.26   0.002  0.0015  0.0018 7.9e-05   4e-39                        
Q19   0.014    0.11    0.26    0.21   0.017 7.9e-08   6e-14                
Q20   0.029    0.29   0.079    0.02  0.0037 1.7e-06 2.9e-05 4.7e-06        
Q21  0.0077    0.11  0.0045   0.089  0.0011 0.00024 7.4e-06 1.4e-07 1.6e-11
Q22    0.19  0.0082    0.14  0.0087    0.14 0.00011   0.004 2.3e-09 7.2e-14
Q23 3.9e-05   2e-05    0.16 1.7e-05  0.0013 6.8e-05  0.0014 0.00053   0.017
Q24   0.043    0.08  0.0023  0.0077   0.011    0.25  0.0043   0.012   0.018
Q25 0.00015   0.052    0.18 1.1e-27  0.0099   0.022 0.00035 0.00094     0.2
Q26 0.00046  0.0065 0.00061    0.51 2.1e-07 2.4e-06 3.7e-06 2.7e-05   0.023
        Q21     Q22     Q23     Q24   Q25
Q3                                       
Q4                                       
Q5                                       
Q6                                       
Q7                                       
Q8                                       
Q9                                       
Q10                                      
Q11                                      
Q12                                      
Q13                                      
Q14                                      
Q15                                      
Q16                                      
Q17                                      
Q18                                      
Q19                                      
Q20                                      
Q21                                      
Q22 3.8e-05                              
Q23 3.2e-05 5.3e-08                      
Q24  0.0022 0.00028 3.8e-19              
Q25    0.03  0.0029 7.1e-09 1.2e-07      
Q26  0.0092 0.00014   0.099    0.42 0.016

---------------
Singular values
---------------
   component value
1          1  8.31
2          2  2.21
3          3  1.41
4          4  1.13
5          5  1.04
6          6  0.88
7          7  0.86
8          8  0.76
9          9  0.75
10        10  0.72
11        11  0.60
12        12  0.58
13        13  0.58
14        14  0.54
15        15  0.52
16        16  0.48
17        17  0.44
18        18  0.43
19        19  0.37
20        20  0.35
21        21  0.32
22        22  0.31
23        23  0.25
24        24  0.16


---------------
Model heuristic
---------------
FirstSV/SecondSV = H = 8.31/2.21 ~ 3.75
    - if < 2: first order
    - if > 3: unifactor
    - otherwise: bifactor
    possible unifactor model, sv1/sv2 > 3
---------------
Condition index
---------------
(MaxSV/MinSV)^0.5 = CI = (8.31/0.16)^0.5 ~ 7.2
    (analysis may be jeopardized if index > 30)

----------------------------------------
Exploratory Common Factor Analysis (EFA)
----------------------------------------

    ----------------------------------
    suggested number of common factors
    ----------------------------------
Parallel analysis suggests that the number of factors =  7  and the number of components =  4 
NULL

    --------------------------------
    usefulness of correlation matrix
    --------------------------------
Kaiser-Meyer-Olkin factor adequacy
Call: psych::KMO(r = r.hetcor)
Overall MSA =  0.92
MSA for each item = 
  Q3   Q4   Q5   Q6   Q7   Q8   Q9  Q10  Q11  Q12  Q13  Q14  Q15  Q16  Q17  Q18 
0.88 0.91 0.91 0.95 0.96 0.95 0.94 0.95 0.93 0.93 0.92 0.88 0.85 0.95 0.90 0.91 
 Q19  Q20  Q21  Q22  Q23  Q24  Q25  Q26 
0.95 0.92 0.95 0.89 0.90 0.90 0.80 0.95 

    ---
    EFA
    ---

        -------------------------
        tentando como unifatorial
        -------------------------
Factor Analysis using method =  minres
Call: psych::fa(r = r.hetcor, nfactors = num.factors, n.obs = n)
Standardized loadings (pattern matrix) based upon correlation matrix
     V   MR1   h2   u2 com
Q19 17  0.78 0.61 0.39   1
Q17 15  0.76 0.58 0.42   1
Q18 16  0.74 0.54 0.46   1
Q10  8  0.72 0.52 0.48   1
Q8   6  0.71 0.50 0.50   1
Q5   3  0.67 0.45 0.55   1
Q20 18  0.65 0.42 0.58   1
Q6   4  0.63 0.39 0.61   1
Q26 24 -0.62 0.38 0.62   1
Q7   5  0.61 0.37 0.63   1
Q11  9  0.56 0.32 0.68   1
Q16 14  0.55 0.30 0.70   1
Q14 12  0.53 0.28 0.72   1
Q22 20  0.50 0.25 0.75   1
Q13 11  0.49 0.24 0.76   1
Q21 19  0.46 0.21 0.79   1
Q9   7  0.46 0.21 0.79   1
Q12 10  0.45 0.21 0.79   1
Q4   2 -0.43 0.19 0.81   1
Q23 21  0.43 0.18 0.82   1
Q15 13  0.41 0.17 0.83   1
Q24 22  0.38 0.14 0.86   1
Q3   1 -0.37 0.14 0.86   1
Q25 23  0.32 0.10 0.90   1

                MR1
SS loadings    7.70
Proportion Var 0.32

Mean item complexity =  1
Test of the hypothesis that 1 factor is sufficient.

df null model =  276  with the objective function =  10.6 with Chi Square =  28337.74
df of  the model are 252  and the objective function was  3.27 

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  2684 with the empirical chi square  10691.62  with prob <  0 
The total n.obs was  2684  with Likelihood Chi Square =  8738.03  with prob <  0 

Tucker Lewis Index of factoring reliability =  0.669
RMSEA index =  0.112  and the 90 % confidence intervals are  0.11 0.114
BIC =  6748.48
Fit based upon off diagonal values = 0.93
Measures of factor score adequacy             
                                                   MR1
Correlation of (regression) scores with factors   0.96
Multiple R square of scores with factors          0.93
Minimum correlation of possible factor scores     0.86


    ------------------------------
    Heuristic for model rejection:
    ------------------------------
X^2 = 10691.62
df = 252
X^2/df = 42.42708
(model may possibly be rejected when X^2/df > 2)

        ----------------------------------------------------
        primeira ordem com 4 fatores comuns (seguindo a WHO)
        ----------------------------------------------------
Factor Analysis using method =  minres
Call: psych::fa(r = r.hetcor, nfactors = num.factors, n.obs = n)
Standardized loadings (pattern matrix) based upon correlation matrix
    item   MR1   MR2   MR3   MR4   h2   u2 com
Q17   15  0.85                   0.73 0.27 1.0
Q18   16  0.84                   0.68 0.32 1.0
Q10    8  0.75                   0.64 0.36 1.1
Q7     5  0.63                   0.44 0.56 1.0
Q19   17  0.61        0.37       0.70 0.30 1.7
Q16   14  0.54                   0.39 0.61 1.4
Q8     6  0.51        0.30       0.53 0.47 1.6
Q26   24 -0.47       -0.30       0.45 0.55 1.8
Q4     2 -0.39                   0.20 0.80 1.3
Q11    9  0.34        0.30       0.34 0.66 2.2
Q3     1 -0.34                   0.16 0.84 1.7
Q25   23        0.72             0.47 0.53 1.0
Q15   13        0.64             0.43 0.57 1.2
Q23   21        0.59             0.44 0.56 1.3
Q24   22        0.54             0.36 0.64 1.2
Q12   10        0.52             0.39 0.61 1.2
Q13   11        0.37             0.31 0.69 1.9
Q9     7        0.32             0.25 0.75 2.0
Q20   18              0.64       0.59 0.41 1.1
Q22   20              0.58       0.42 0.58 1.2
Q21   19              0.49       0.31 0.69 1.1
Q6     4  0.31        0.45       0.46 0.54 1.8
Q14   12                    0.87 0.80 0.20 1.0
Q5     3              0.34  0.47 0.58 0.42 2.1

                       MR1  MR2  MR3  MR4
SS loadings           4.78 2.47 2.34 1.48
Proportion Var        0.20 0.10 0.10 0.06
Cumulative Var        0.20 0.30 0.40 0.46
Proportion Explained  0.43 0.22 0.21 0.13
Cumulative Proportion 0.43 0.65 0.87 1.00

 With factor correlations of 
     MR1  MR2  MR3  MR4
MR1 1.00 0.32 0.52 0.43
MR2 0.32 1.00 0.31 0.37
MR3 0.52 0.31 1.00 0.31
MR4 0.43 0.37 0.31 1.00

Mean item complexity =  1.4
Test of the hypothesis that 4 factors are sufficient.

df null model =  276  with the objective function =  10.6 with Chi Square =  28337.74
df of  the model are 186  and the objective function was  1.13 

The root mean square of the residuals (RMSR) is  0.04 
The df corrected root mean square of the residuals is  0.04 

The harmonic n.obs is  2684 with the empirical chi square  1837.27  with prob <  4e-269 
The total n.obs was  2684  with Likelihood Chi Square =  3023.67  with prob <  0 

Tucker Lewis Index of factoring reliability =  0.85
RMSEA index =  0.075  and the 90 % confidence intervals are  0.073 0.078
BIC =  1555.18
Fit based upon off diagonal values = 0.99
Measures of factor score adequacy             
                                                   MR1  MR2 MR3  MR4
Correlation of (regression) scores with factors   0.96 0.89 0.9 0.91
Multiple R square of scores with factors          0.92 0.80 0.8 0.84
Minimum correlation of possible factor scores     0.83 0.59 0.6 0.67


    ------------------------------
    Heuristic for model rejection:
    ------------------------------
X^2 = 1837.267
df = 186
X^2/df = 9.87778
(model may possibly be rejected when X^2/df > 2)

        ------------------------------------------------------------
        tentando como bifatorial com 4 fatores especificos e 1 geral
        ------------------------------------------------------------

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, cut = 0.3)
Alpha:                 0.91 
G.6:                   0.93 
Omega Hierarchical:    0.67 
Omega H asymptotic:    0.72 
Omega Total            0.93 

Schmid Leiman Factor loadings greater than  0.3 
         g   F1*   F2*   F3*   F4*    h2   h2   u2   p2  com
Q3-   0.30                               0.16 0.84 0.57 2.53
Q4-   0.35                               0.20 0.80 0.61 2.18
Q5    0.61                    0.38  0.58 0.58 0.42 0.63 2.19
Q6    0.53        0.35              0.46 0.46 0.54 0.61 2.10
Q7    0.50  0.42                    0.44 0.44 0.56 0.58 1.96
Q8    0.59  0.34                    0.53 0.53 0.47 0.65 1.98
Q9    0.39                               0.25 0.75 0.60 2.24
Q10   0.61  0.50                    0.64 0.64 0.36 0.58 2.04
Q11   0.47                          0.34 0.34 0.66 0.64 2.08
Q12   0.40              0.45        0.39 0.39 0.61 0.41 2.19
Q13   0.42              0.32        0.31 0.31 0.69 0.57 2.26
Q14   0.54                    0.71  0.80 0.80 0.20 0.36 1.87
Q15   0.35              0.55        0.43 0.43 0.57 0.29 1.85
Q16   0.47  0.36                    0.39 0.39 0.61 0.58 2.27
Q17   0.64  0.57                    0.73 0.73 0.27 0.56 1.99
Q18   0.61  0.56                    0.68 0.68 0.32 0.55 1.99
Q19   0.65  0.40                    0.70 0.70 0.30 0.61 2.12
Q20   0.57        0.50              0.59 0.59 0.41 0.55 2.08
Q21   0.40        0.38              0.31 0.31 0.69 0.52 2.06
Q22   0.44        0.45              0.42 0.42 0.58 0.47 2.23
Q23   0.38              0.51        0.44 0.44 0.56 0.32 2.14
Q24   0.34              0.47        0.36 0.36 0.64 0.32 2.00
Q25                     0.62        0.47 0.47 0.53 0.17 1.41
Q26-  0.52  0.32                    0.45 0.45 0.55 0.61 2.14

With Sums of squares  of:
   g  F1*  F2*  F3*  F4*   h2 
5.69 1.86 1.10 1.63 0.78 5.75 

general/max  0.99   max/min =   7.35
mean percent general =  0.52    with sd =  0.13 and cv of  0.25 
Explained Common Variance of the general factor =  0.51 

The degrees of freedom are 186  and the fit is  1.13 
The number of observations was  2684  with Chi Square =  3023.67  with prob <  0
The root mean square of the residuals is  0.04 
The df corrected root mean square of the residuals is  0.04
RMSEA index =  0.075  and the 90 % confidence intervals are  0.073 0.078
BIC =  1555.18

Compare this with the adequacy of just a general factor and no group factors
The degrees of freedom for just the general factor are 252  and the fit is  3.66 
The number of observations was  2684  with Chi Square =  9795.59  with prob <  0
The root mean square of the residuals is  0.12 
The df corrected root mean square of the residuals is  0.13 

RMSEA index =  0.119  and the 90 % confidence intervals are  0.117 0.121
BIC =  7806.03 

Measures of factor score adequacy             
                                                 g  F1*  F2*  F3*  F4*
Correlation of scores with factors            0.83 0.73 0.75 0.81 0.81
Multiple R square of scores with factors      0.69 0.54 0.57 0.66 0.66
Minimum correlation of factor score estimates 0.39 0.08 0.14 0.33 0.32

 Total, General and Subset omega for each subset
                                                 g  F1*  F2*  F3*  F4*
Omega total for total scores and subscales    0.93 0.88 0.74 0.78 0.78
Omega general for total scores and subscales  0.67 0.56 0.45 0.31 0.41
Omega group for total scores and subscales    0.16 0.32 0.29 0.47 0.37

NULL

    ------------------------------
    Heuristic for model rejection:
    ------------------------------
X^2 = 2136.268
df = 166
X^2/df = 12.86908
(model may possibly be rejected when X^2/df > 2)

Explained Common Variance

A importância de g em relação ao modelo bifatorial como um todo (calculada pelo eigenvalue do fator geral em relação à somatória dos eigenvalues) dá uma noção da unidimensionalidade de uma possível solução (se for um valor muito alto, talvez o modelo unifatorial seja o melhor candidato; se for muito baixo, talvez o modelo de primeira ordem seja o mais indicado). Este valor aparece na saída como Explained Common Variance of the general factor (ECV).

Explained Common Variance of the general factor =  0.51 

Ômega

Os valores de ômega que aparecem na saída são medidas de tamanho de efeito e, portanto, de significância prática do modelo. Análogo ao Alfa de Cronbach, o ômega total é seu análogo escolhido por vários autores.

O ômega hierárquico é similar ao ECV (a proporção da variância total explicada pelo fator comum geral), e portanto dá indicações sobre a uni ou multidimensionalidade do modelo.

O ômega assintótico é a proporção entre o ômega hierárquico e o total, complementando esta interpretação.

Omega Total            0.93 
Omega Hierarchical:    0.67 
Omega H asymptotic:    0.72 

Neste exemplo, 93% da variância total é explicada pelo modelo adotado pelos fatores geral e específicos e 67% (72% de 93%) da variância total é explicada apenas pelo fator geral. Assim, o fator geral parece contribuir importantemente para o modelo, mas cerca de outros 30% dependem de considerarmos os fatores específicos, justificando experimentarmos o ajuste com o modelo bifatorial.

A análise de valores singulares sugere 4 ou 5 domínios (para 5 está no limite). Por parcimônia e para comparar com a proposta da WHO, ensaiamos os modelos de primeira ordem com 4 fatores comuns e bifatorial com um fator comum geral e 4 específicos.

Recorde a proposta para o WHOQOL:

Manual do Projeto VERAS (2011)

No entanto, os quatro domínios divergem daqueles propostos pela WHO: físico (F), psicológico (P), relações sociais (S) e ambiente (A).

Q20, Q21 e Q22 (relações sociais) foram juntadas a Q6 (psicológico):

      1. Quão satisfeito(a) você está com suas relações pessoais (amigos, parentes, conhecidos, colegas)?
      1. Quão satisfeito(a) você está com sua vida sexual?
      1. Quão satisfeito(a) você está com o apoio que você recebe de seus amigos?
      1. Em que medida você acha que a sua vida tem sentido?

Q5 (psicológico) e Q14 (ambiente) formaram um domínio pequeno:

      1. O quanto você aproveita a vida?
      1. Em que medida você tem oportunidades de atividade de lazer?

Apareceram dois domínios maiores:

Uma mistura majoritariamene dos domínios originais físico e psicológico Q17, Q18, Q10, Q7, Q19, Q16, Q8 (a única do ambiente), Q26, Q4, Q11 e Q3:

      1. Quão satisfeito(a) você está com sua capacidade de desempenhar as atividades do seu dia-a-dia?
      1. Quão satisfeito(a) você está com sua capacidade para o trabalho?
      1. Você tem energia suficiente para seu dia-a-dia?
      1. O quanto você consegue se concentrar?
      1. Quão satisfeito(a) você está consigo mesmo?
      1. Quão satisfeito(a) você está com o seu sono?
      1. Quão seguro(a) você se sente em sua vida diária?
      1. Com que freqüência você tem sentimentos negativos tais como mau humor, desespero, ansiedade, depressão?
      1. O quanto você precisa de algum tratamento médico para levar sua vida diária?
      1. Você é capaz de aceitar sua aparência física?
      1. Em que medida você acha que sua dor (física) impede você de fazer o que você precisa?

e o outro quase que exclusivamente do domínio ambiental Q25, Q15, Q23, Q24, Q12, Q13 e Q9:

      1. Quão satisfeito(a) você está com o seu meio de transporte?
      1. Quão bem você é capaz de se locomover?
      1. Quão satisfeito(a) você está com as condições do local onde mora?
      1. Quão satisfeito(a) você está com o seu acesso aos serviços de saúde?
      1. Você tem dinheiro suficiente para satisfazer suas necessidades?
      1. Quão disponíveis para você estão as informações que precisa no seu dia-a-dia?
      1. Quão saudável é o seu ambiente físico (clima, barulho, poluição, atrativos)?

Duas observações:

(1) Os diagramas da EFA que mostramos aqui exibem apenas as conexões com carga fatorial igual ou superior a um determinado valor (escolhemos 0.3 nestas saídas), o que é enganoso. Na EFA, todos os fatores comuns apontam para todos os itens. O diagrama, a rigor, deveria ser apresentado completamente, mas torna-se ilegível e não ajuda a definir a quais itens um fator comum pode ser proposto na análise confirmatória.

(1) A heurística do modelo que computamos

---------------
Model heuristic
---------------
FirstSV/SecondSV = H = 8.31/2.21 ~ 3.75
    - if < 2: first order
    - if > 3: unifactor
    - otherwise: bifactor
    possible bifactor model, 2 < sv1/sv2 <= 3

sugeriu um modelo bifatorial e, portanto, também experimentamos com ele. Há duas saídas gráficas: considere somente a segunda. A primeira vem da função psych::omega que emite seu gráfico e não encontramos parâmetro para suprimi-lo. A solução rotacionada é a segunda, exibida por psych::omega.diagram, na qual usamos os parâmetros cut=0.3 e gcut=0.3, gerando:

print(psych::omega.diagram(fabi.fit,
                           main="WHOQOL",
                           cut=0.3,
                           gcut=0.3,
                           sort=TRUE))

NULL

Um aspecto notável na EFA (e na CFA) é que não necessitamos inverter as questões Q3, Q4 e Q26. Questões com valência negativa naturalmente associam-se com correlações negativas às demais, aparecendo como setas pontilhadas em vermelho nestas saídas.

O diagrama completo é exibido deixando-se os pontos de corte com valor nulo:

print(psych::omega.diagram(fabi.fit,main="WHOQOL",cut=0,gcut=0,sort=TRUE))

NULL

Ilegível, como mencionamos, mas este é o diagrama que EFA considera.

O modelo de primeira ordem proposto pela EFA (considerando as correlações mais fortes) criou fatores comuns com número de itens desiguais. Para finalizar, vamos analisar o modelo bifatorial produzido pela EFA, conforme sugerido pela heurística do modelo, considerando 4 fatores comuns secundários similares.

Com o ponto de corte de 0.3 algumas questões não foram ligadas ao fator comum secundário, mas esta ligação existe e vamos verificar qual a maior carga fatorial para propor sua inclusão em algum fator comum. A tabela completa (sem o ponto de corte de 0.3) é acessível dentro do objeto que psych::omega retorna:

print(fabi.fit$schmid$sl, digits=2)
        g     F1*      F2*     F3*     F4*   h2   u2   p2 com
Q3-  0.30  0.2237 -0.05137  0.1674 -0.0037 0.16 0.84 0.57 2.5
Q4-  0.35  0.2604 -0.00041  0.1364 -0.0223 0.20 0.80 0.61 2.2
Q5   0.61  0.1031  0.26641  0.0062  0.3808 0.58 0.42 0.63 2.2
Q6   0.53  0.2069  0.34922  0.0437 -0.0162 0.46 0.54 0.61 2.1
Q7   0.50  0.4225  0.04126  0.0121 -0.0117 0.44 0.56 0.58 2.0
Q8   0.59  0.3427  0.23513  0.0435 -0.0135 0.53 0.47 0.65 2.0
Q9   0.39  0.1599  0.00677  0.2753  0.0618 0.25 0.75 0.60 2.2
Q10  0.61  0.4984 -0.03311 -0.0242  0.1369 0.64 0.36 0.58 2.0
Q11  0.47  0.2259  0.23356  0.0886 -0.0360 0.34 0.66 0.64 2.1
Q12  0.40  0.0415 -0.00049  0.4465  0.1331 0.39 0.61 0.41 2.2
Q13  0.42  0.1123  0.02137  0.3167  0.1344 0.31 0.69 0.57 2.3
Q14  0.54  0.0083  0.00321  0.0295  0.7118 0.80 0.20 0.36 1.9
Q15  0.35  0.1060 -0.06997  0.5491 -0.0409 0.43 0.57 0.29 1.9
Q16  0.47  0.3574 -0.08007  0.0133  0.1832 0.39 0.61 0.58 2.3
Q17  0.64  0.5697 -0.04470  0.0290  0.0287 0.73 0.27 0.56 2.0
Q18  0.61  0.5571 -0.00697  0.0269 -0.0279 0.68 0.32 0.55 2.0
Q19  0.65  0.4047  0.28828  0.0042 -0.0512 0.70 0.30 0.61 2.1
Q20  0.57  0.0548  0.49906  0.0481  0.1075 0.59 0.41 0.55 2.1
Q21  0.40  0.0366  0.38034  0.0260  0.0545 0.31 0.69 0.52 2.1
Q22  0.44 -0.0458  0.45344  0.1237  0.0773 0.42 0.58 0.47 2.2
Q23  0.38 -0.0634  0.17237  0.5100  0.0132 0.44 0.56 0.32 2.1
Q24  0.34 -0.0528  0.06895  0.4684  0.0949 0.36 0.64 0.32 2.0
Q25  0.28 -0.0254 -0.03676  0.6235 -0.0336 0.47 0.53 0.17 1.4
Q26- 0.52  0.3151  0.23466 -0.0596  0.0178 0.45 0.55 0.61 2.1

Assim, ligaremos:

  • Q4 com F1 (carga fatorial de 0.26)
  • Q3 com F1 (carga fatorial de 0.22)
  • Q11 com F2 (carga fatorial de 0.23)
  • Q9 com F3 (carga fatorial de 0.28)

Embora um pouco mais balanceados que o modelo de primeira ordem, o modelo bifatorial produziu solução similar. Em comparação com os domínios propostos pela WHO, claramente também há proximidade entre os modelos:

F1:

      1. Quão satisfeito(a) você está com sua capacidade de desempenhar as atividades do seu dia-a-dia?
      1. Quão satisfeito(a) você está com sua capacidade para o trabalho?
      1. Você tem energia suficiente para seu dia-a-dia?
      1. O quanto você consegue se concentrar?
      1. Quão satisfeito(a) você está com o seu sono?
      1. Quão seguro(a) você se sente em sua vida diária?
      1. Com que freqüência você tem sentimentos negativos tais como mau humor, desespero, ansiedade, depressão?
      1. O quanto você precisa de algum tratamento médico para levar sua vida diária?
      1. Em que medida você acha que sua dor (física) impede você de fazer o que você precisa?

F2:

      1. Quão satisfeito(a) você está com suas relações pessoais (amigos, parentes, conhecidos, colegas)?
      1. Quão satisfeito(a) você está com o apoio que você recebe de seus amigos?
      1. Quão satisfeito(a) você está com sua vida sexual?
      1. Em que medida você acha que a sua vida tem sentido?
      1. Você é capaz de aceitar sua aparência física?

F3:

      1. Quão satisfeito(a) você está com o seu meio de transporte?
      1. Quão bem você é capaz de se locomover?
      1. Quão satisfeito(a) você está com as condições do local onde mora?
      1. Quão satisfeito(a) você está com o seu acesso aos serviços de saúde?
      1. Você tem dinheiro suficiente para satisfazer suas necessidades?
      1. Quão disponíveis para você estão as informações que precisa no seu dia-a-dia?
      1. Quão saudável é o seu ambiente físico (clima, barulho, poluição, atrativos)?

F4:

      1. Em que medida você tem oportunidades de atividade de lazer?
      1. O quanto você aproveita a vida?

A análise foi feita sem que o modelo interpretasse o conteúdo das questões, nomeando os fatores como F1, F2, F3 e F4. Caso fôssemos prosseguir para uma CFA, poderíamos escolher nomes para os fatores. Por exemplo:

  • F1: felicidade intrínseca,
  • F2: felicidade extrínseca,
  • F3: infraestrutura ou condições físicas,
  • F4: lazer.

A proposta da WHO, independentemente dos detalhes de como foi alcançada, poder ter tido base em critérios teóricos, proposta de especialistas ou análise com populações diversas da amostra que utilizamos aqui.

No entanto a formação de fatores comuns proposta pela WHO não é (modelo nenhum é) a solução única. Em uma análise na qual os pesquisadores não tivessem referenciais teóricos ou proposta para a formação de fatores comuns, EFA pode auxiliar bastante, buscando obter um modelo a partir dos dados e verificando junto aos pesquisadores da área quais agrupamentos fazem sentido para suas perguntas de pesquisa. É óbvio que os domínios propostos não são estanques e não tão claramente definidos neste questionário e nada impediria a adoção de outros domínios, com outros enfoques, caso não fosse esta a proposta escolhida pela WHO.

Finalmente, é importante enfatizar que EFA não é uma etapa obrigatória que precede obrigatoriamente a CFA. Nada impede que, com base em conhecimento dos pesquisadores, uma CFA seja proposta diretamente. Aliás, EFA não deve ser usada para a decisão estatística final devido à ligação dos fatores comuns com todos os itens, de certa forma misturando os efeitos dos domínios.

EFA pode ser vista como uma análise descritiva, exploratória e multivariada. É na CFA, vista em disciplina de Psicometria, que firmamos modelos explicativos com a decisão inferencial estatística.

Para saber mais, dois artigos que auxiliam para o uso do R em análise fatorial são Lou et al. (2019) e Beaujean (2013).

Referências

  • BEAUJEAN, AA (2013) Factor analysis using R. Practical assessment, research & evaluation 18(4). DOI: https://doi.org/10.7275/z8wr-4j42
  • BEAUJEAN, AA (2014) Latent variable modeling using R. NY: Routledge.
  • BROWN, TA (2015) Confirmatory factor analysis for applied research. 2nd ed. NY: Guilford.
  • CARIFIO, J & PERLA, R (2008) Resolving the 50-year debate around using and misusing Likert scales. Medical Education 42: 1150-1152.
  • CRONBACH, LJ (1996) Fundamentos de testagem psicológica. 5a ed. Porto Alegre: Artes Médicas.
  • ENNS, SC et al. (2016) Medical Students’ Perception of Their Educational Environment and Quality of Life: Is There a Positive Association? Academic Medicine 91(3). https://doi.org/10.1097/ACM.0000000000000952
  • FINCH Jr, HW; FRENCH, BF (2015) Latent variable modeling with R. NY: Routledge.
  • FRIBORG, O et al. (2006) Likert-based vs. semantic differential-based scorings of positive psychological constructs: A psychometric
  • GANA, K & BROC, G (2019) Structural equation modeling with lavaan. NJ: Wiley.
  • HOWELL, D (2013) Statistical Methods for Psychology. 8th ed. USA: CENGAGE.
  • JAMIESON, S (2004) Likert scales: how to (ab)use them. Medical Education 38: 1212-1218.
  • KAISER, HF (1970) A second generation little jiffy. Psychometrika 35(4): 401-415.
  • KAPLUNOVSKY, AS (2004) Why using factor analysis? (dedicated to the centenary of factor analysis). http://www.magniel.com/fa/data
  • LEE, SY & SONG, XY (2012) Basic and Advanced Bayesian Structural Equation Modeling: With Applications in the Medical and Behavioral Sciences. NJ: Wiley. DOI: 10.1002/9781118358887
  • LUO, L et al. (2019) Exploratory fator analysis (EFA) programs in R. Structural equation modeling: A multidisciplinar journal, 0: 1-8.
  • MAIR, P (2018) Modern Psychometrics with R. USA: Springer.
  • PARO, HBMS et al. (2014) Empathy among medical students: Is there a relation with quality of life and burnout? PLoS ONE 9(4). https://doi.org/10.1371/journal.pone.0094133
  • PASQUALI, L. (2010) Psicometria: teoria dos testes na Psicologia e Educação. RJ: Vozes.
  • RENCHER, AC (2012) Methods of Multivariate Analysis. 2nd ed. NJ: Wiley.
  • REVELLE, W Personality Project. http://www.personality-project.org/
  • SEGRE, M &; FERRAZ, FC (1997) O conceito de saúde. Rev Saúde Pública 31(5):538-42.
  • STEVENSON, L & HABERMAN, L (2005) Dez teorias da natureza humana. SP: Martins Fontes, p. 46-7.
  • TEMPSKY, P et al. (2015) Relationship among medical student resilience, educational environment and quality of life. PLoS ONE 10(6). https://doi.org/10.1371/journal.pone.0131535
  • THAKKAR, JJ (2020) Structural equation modelling: Application for research and practice (with AMOS and R). Springer. comparison of two versions of a scale measuring resilience. Personality and Individual Differences 40: 873–884.