Bastão de Asclépio & Distribuição Normal
suppressMessages(library(car, warn.conflicts=FALSE))
suppressMessages(library(corrplot, warn.conflicts=FALSE))
suppressMessages(library(GGally, warn.conflicts=FALSE))
suppressMessages(library(ggstatsplot, warn.conflicts=FALSE))
suppressMessages(library(knitr, warn.conflicts=FALSE))
suppressMessages(library(likert, warn.conflicts=FALSE))
suppressMessages(library(polycor, warn.conflicts=FALSE))
suppressMessages(library(psych, warn.conflicts=FALSE))
suppressMessages(library(qgraph, warn.conflicts=FALSE))
suppressMessages(library(readxl, warn.conflicts=FALSE))RPubsbruceR
bruceR::CorrbruceR::DescribebruceR::RECODEbruceR::model_summarybruceR::regressbruceR::EMMEANSbruceR::GLM_summarybruceR::HLM_summarybruceR::TTESTbruceR::MANOVA: https://psychbruce.github.io/bruceR/reference/MANOVA.htmlbruceR::lavaan_summarybruceR::PCAbruceR::EFAbruceR::cfa“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.”
O questionário em português do Brasil está disponível aqui.
Alguns exemplos de questões do WHOQOL-BREF:
…
…
Os itens são agrupados em domínios (Manual do Projeto VERAS (2011)):
Os itens 3, 4 e 26 têm valência negativa. As respostas podem ser invertidas, tornando as respostas de 1 a 5 em valores 5 a 1, para transformá-las em valência positiva.
WHO sugere a forma de computar os escores de cada respondente nos domínios, por meio da somatória das respostas dos itens Likert (com mesma valência), utilizando-os como intervalares embora sejam, no máximo, ordinais. O escore é multiplicado por 4 para se tornar próximo ao valor da versão plena do WHOQOL-100, além de procedimentos para transformar em porcentagem devido ao tamanho desigual dos domínios. Conforme Manual do WHOQOL (Apêndice 10, p. 106),
Note que os itens 1 e 2 não são incluídas nos domínios porque são muito gerais sobre qualidade de vida e saúde, respectivamente. Portanto, para comparar a proposta da WHOQOL-BREF com a análise feita adiante, também os 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 é muito usado em testes/ escalas/ questionários/ inventários/ baterias. As distâncias entre as categorias de item Likert não são necessariamente iguais/ equidistantes. Portanto, item Likert é, no máximo, ordinal.
A soma de itens Likert (ordinais) produz a escala somatória Likert (intervalar), conforme Jamieson (2004) e Carifio & Perla (2008), respectivamente:
“Escalas de Likert [o autor refere-se a itens individuais Likert] situam-se no nível ordinal de mensuração.”
“…As escalas de Likert (conjuntos de itens), em oposição a itens individuais de Likert, não são de natureza ordinal, mas sim de natureza intervalar…”
Item Likert é distinto de item de diferencial semântico.
O item de Likert apresenta uma afirmação e solicita que o respondente indique o grau de concordância em uma escala ordenada (por exemplo, de discordo totalmente a concordo totalmente), geralmente em uma escala de cinco pontos. Mede o grau de concordância com uma proposição unidimensional, resultando em uma variável ordinal.
O item de diferencial semântico apresenta um conceito (por exemplo, tratamento) e pares de adjetivos opostos (como eficiente–ineficiente), geralmente em uma escala de sete pontos.
Friborg et al. (2006)
Um texto didático sobre as medidas de correlação está em Howell (2013, capítulo 10). Muito do texto de Dancey & Reidy (2019) foi baseado neste livro.
Em R, podemos usar polycor::hetcor() para obter
correlações Pearson, policórica e poliserial.
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))
# itens intervalares
Dados[,] <- lapply(Dados[,], as.numeric)
# Correlacoes heterogeneas
print(polycor::hetcor(Dados, use="complete.obs"), digits=2)
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
Q1 1 Pearson Pearson Pearson Pearson Pearson Pearson Pearson Pearson
Q2 0.021 1 Pearson Pearson Pearson Pearson Pearson Pearson Pearson
Q3 0.046 0.43 1 Pearson Pearson Pearson Pearson Pearson Pearson
Q4 0.51 -0.054 -0.0013 1 Pearson Pearson Pearson Pearson Pearson
Q5 0.43 -0.051 -0.047 0.35 1 Pearson Pearson Pearson Pearson
Q6 0.46 0.059 0.024 0.64 0.4 1 Pearson Pearson Pearson
Q7 0.074 0.47 0.44 -0.059 -0.013 0.0099 1 Pearson Pearson
Q8 0.024 0.67 0.5 -0.029 -0.019 0.094 0.74 1 Pearson
Q9 0.12 0.43 0.46 -0.077 -0.0065 -0.011 0.62 0.58 1
Q10 0.49 0.0039 -0.039 0.53 0.4 0.62 0.097 0.037 0.061
Q10
Q1 Pearson
Q2 Pearson
Q3 Pearson
Q4 Pearson
Q5 Pearson
Q6 Pearson
Q7 Pearson
Q8 Pearson
Q9 Pearson
Q10 1
Standard Errors:
Q1 Q2 Q3 Q4 Q5 Q6 Q7 Q8 Q9
Q1
Q2 0.071
Q3 0.071 0.058
Q4 0.052 0.071 0.071
Q5 0.058 0.071 0.071 0.062
Q6 0.056 0.071 0.071 0.042 0.06
Q7 0.07 0.055 0.057 0.071 0.071 0.071
Q8 0.071 0.039 0.053 0.071 0.071 0.07 0.032
Q9 0.07 0.058 0.056 0.07 0.071 0.071 0.044 0.048
Q10 0.054 0.071 0.071 0.051 0.059 0.044 0.07 0.071 0.071
n = 200
P-values for Tests of Bivariate Normality:
Q1 Q2 Q3 Q4 Q5 Q6 Q7 Q8
Q1
Q2 6.4e-66
Q3 9.7e-41 8.5e-26
Q4 1.4e-79 1.5e-66 5e-41
Q5 5.7e-78 9.1e-63 2.3e-37 7.6e-79
Q6 1.4e-114 3.5e-101 1.8e-75 1.2e-110 2.8e-112
Q7 3.9e-43 2e-29 2.1e-05 4.6e-44 1e-40 6e-80
Q8 7.5e-64 4.3e-47 1.3e-24 8.2e-65 1.4e-61 8.2e-100 9.4e-33
Q9 5e-67 2.9e-47 5.6e-25 2.7e-66 3.8e-61 1.6e-101 1.1e-30 2.9e-46
Q10 1.8e-111 6.5e-99 7.8e-74 5e-112 6.6e-111 4.5e-144 2.4e-77 1.3e-97
Q9
Q1
Q2
Q3
Q4
Q5
Q6
Q7
Q8
Q9
Q10 1.2e-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) # ordinalAo executar o código, observe que a matriz de correlações muda (demo_Correlacao_NomOrd.R):
Dados <- readRDS("Felicidade.rds")
print(head(Dados))
print(tail(Dados))
# itens intervalares
Dados[,] <- lapply(Dados[,], as.numeric)
str(Dados)
# 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
str(Dados)
print(sapply(Dados,class))
# matriz de correlacoes
print(polycor::hetcor(Dados, use="complete.obs"), digits=2)
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
'data.frame': 200 obs. of 10 variables:
$ Q1 : num 1 1 1 1 1 1 1 1 1 1 ...
$ Q2 : num 2 3 4 2 3 4 5 4 4 4 ...
$ Q3 : num 4 4 3 3 3 4 5 5 5 5 ...
$ Q4 : num 2 1 1 1 1 1 1 1 1 1 ...
$ Q5 : num 4 1 1 1 1 1 1 1 1 1 ...
$ Q6 : num 1 1 1 1 1 1 1 1 1 1 ...
$ Q7 : num 3 3 4 1 3 4 5 4 5 4 ...
$ Q8 : num 2 3 4 1 3 4 5 4 4 5 ...
$ Q9 : num 2 3 4 1 1 4 5 4 4 4 ...
$ Q10: num 1 1 1 1 1 1 1 1 1 1 ...
'data.frame': 200 obs. of 10 variables:
$ Q1 : Factor w/ 5 levels "1","2","3","4",..: 1 1 1 1 1 1 1 1 1 1 ...
$ Q2 : Factor w/ 5 levels "1","2","3","4",..: 2 3 4 2 3 4 5 4 4 4 ...
$ Q3 : Ord.factor w/ 5 levels "1"<"2"<"3"<"4"<..: 4 4 3 3 3 4 5 5 5 5 ...
$ Q4 : Ord.factor w/ 5 levels "1"<"2"<"3"<"4"<..: 2 1 1 1 1 1 1 1 1 1 ...
$ Q5 : num 4 1 1 1 1 1 1 1 1 1 ...
$ Q6 : num 1 1 1 1 1 1 1 1 1 1 ...
$ Q7 : num 3 3 4 1 3 4 5 4 5 4 ...
$ Q8 : num 2 3 4 1 3 4 5 4 4 5 ...
$ Q9 : num 2 3 4 1 1 4 5 4 4 4 ...
$ Q10: num 1 1 1 1 1 1 1 1 1 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"
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.046 0.48 1 Polychoric Polyserial Polyserial Polyserial
Q4 0.59 -0.052 -0.023 1 Polyserial Polyserial Polyserial
Q5 0.42 -0.048 -0.051 0.37 1 Pearson Pearson
Q6 0.4 0.076 0.024 0.54 0.4 1 Pearson
Q7 0.078 0.51 0.46 -0.077 -0.013 0.0099 1
Q8 0.046 0.71 0.53 -0.027 -0.019 0.094 0.74
Q9 0.15 0.45 0.48 -0.12 -0.0065 -0.011 0.62
Q10 0.43 0.014 -0.038 0.46 0.4 0.62 0.097
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.58 1 Pearson
Q10 0.037 0.061 1
Standard Errors:
Q1 Q2 Q3 Q4 Q5 Q6 Q7 Q8 Q9
Q1
Q2 0.09
Q3 0.089 0.058
Q4 0.07 0.092 0.09
Q5 0.063 0.074 0.074 0.066
Q6 0.062 0.075 0.074 0.052 0.06
Q7 0.086 0.051 0.055 0.085 0.071 0.071
Q8 0.086 0.033 0.049 0.086 0.071 0.07 0.032
Q9 0.086 0.055 0.052 0.085 0.071 0.071 0.044 0.048
Q10 0.061 0.075 0.074 0.058 0.059 0.044 0.07 0.071 0.071
n = 200
P-values for Tests of Bivariate Normality:
Q1 Q2 Q3 Q4 Q5 Q6 Q7 Q8 Q9
Q1
Q2 0.47
Q3 0.84 0.3
Q4 0.13 0.012 0.87
Q5 2.3e-55 7.4e-36 1.6e-35 1.9e-56
Q6 2.5e-94 2.5e-73 3.9e-73 4.5e-98 2.8e-112
Q7 2.7e-16 1.4e-05 0.00064 4.4e-21 1e-40 6e-80
Q8 1.1e-36 5.3e-22 1.3e-21 2.3e-41 1.4e-61 8.2e-100 9.4e-33
Q9 1.8e-39 2.4e-22 3.3e-22 9.8e-43 3.8e-61 1.6e-101 1.1e-30 2.9e-46
Q10 7.1e-94 3.1e-71 2.3e-71 8.8e-94 6.6e-111 4.5e-144 2.4e-77 1.3e-97 1.2e-98
Usamos a função print(sapply(Dados,class)) para conferir o
tipo adotado pelas variáveis.
|
Finalmente, em demo_Correlacao_Dicotomica.R,
dicotomizamos alguns itens (Q3 em diante) com métodos variados,
obtendo:
Dados <- readRDS("Felicidade.rds")
# itens 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
str(Dados)
print(sapply(Dados,class))
# matriz de correlacoes
print(polycor::hetcor(Dados, use="complete.obs"), digits=2)
'data.frame': 200 obs. of 10 variables:
$ Q1 : num 1 1 1 1 1 1 1 1 1 1 ...
$ Q2 : Ord.factor w/ 5 levels "1"<"2"<"3"<"4"<..: 2 3 4 2 3 4 5 4 4 4 ...
$ Q3 : Factor w/ 2 levels "0","1": 2 2 2 2 2 2 2 2 2 2 ...
$ Q4 : Factor w/ 2 levels "0","1": 1 1 1 1 1 1 1 1 1 1 ...
$ Q5 : Ord.factor w/ 2 levels "0"<"1": 2 1 1 1 1 1 1 1 1 1 ...
$ Q6 : Ord.factor w/ 2 levels "0"<"1": 1 1 1 1 1 1 1 1 1 1 ...
$ Q7 : num 1 1 1 0 1 1 1 1 1 1 ...
$ Q8 : num 0 1 1 0 1 1 1 1 1 1 ...
$ Q9 : logi FALSE TRUE TRUE FALSE FALSE TRUE ...
$ Q10: logi FALSE FALSE FALSE FALSE FALSE FALSE ...
$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"
Two-Step Estimates
Correlations/Type of Correlation:
Q1 Q2 Q3 Q4 Q5 Q6 Q7
Q1 1 Polyserial Polyserial Polyserial Polyserial Polyserial Pearson
Q2 0.025 1 Polychoric Polychoric Polychoric Polychoric Polyserial
Q3 0.09 0.53 1 Polychoric Polychoric Polychoric Polyserial
Q4 0.49 -0.12 -0.056 1 Polychoric Polychoric Polyserial
Q5 0.33 -0.037 0.065 0.41 1 Polychoric Polyserial
Q6 0.54 0.02 0.3 0.8 0.43 1 Polyserial
Q7 0.037 0.33 0.4 -0.043 -0.21 -0.14 1
Q8 0.014 0.52 0.37 -0.11 -0.23 0.1 0.61
Q9 0.34 0.45 0.49 -0.056 -0.015 -0.15 0.42
Q10 <NA> -0.1 0.25 0.82 0.38 0.91 -0.0023
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.48 1 Polychoric
Q10 -0.048 0.25 1
Standard Errors:
Q1 Q2 Q3 Q4 Q5 Q6 Q7 Q8 Q9
Q1
Q2 0.075
Q3 0.11 0.082
Q4 0.068 0.11 0.15
Q5 0.083 0.11 0.16 0.14
Q6 0.076 0.14 0.21 0.088 0.17
Q7 0.071 0.064 0.071 0.11 0.094 0.12
Q8 0.071 0.05 0.075 0.1 0.095 0.15 0.045
Q9 0.12 0.087 0.11 0.15 0.16 0.18 0.069 0.064
Q10 <NA> 0.15 0.22 0.087 0.18 0.057 0.14 0.14 0.22
n = 200
P-values for Tests of Bivariate Normality:
Q1 Q2 Q3 Q4 Q5 Q6 Q7 Q8 Q9
Q1
Q2 1.7e-38
Q3 3e-44 0.42
Q4 9.6e-45 0.01 <NA>
Q5 2.4e-44 0.44 <NA> <NA>
Q6 6.2e-49 0.39 <NA> <NA> <NA>
Q7 2.2e-114 2.6e-70 3.1e-77 6.3e-77 5.4e-77 6.1e-77
Q8 1.3e-108 2.6e-65 3.5e-71 4.3e-71 4e-71 4.3e-71 1.3e-136
Q9 1.3e-45 0.9 <NA> <NA> <NA> <NA> 2.7e-77 3.3e-71
Q10 <NA> 0.62 <NA> <NA> <NA> <NA> 6.4e-77 4.5e-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.
No exemplo do WHOQOL-BREF, os dados dos estudos do Projeto VERAS estão disponíveis em:
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[-1],
detectOrdinal=FALSE,
forcePD=TRUE,
missing="fiml")
print (
GGally::ggcorr(data=NULL,
name="WHOQOL-BREF: intervalar",
cor_matrix=r,
geom="tile",
min_size=0,
max_size=10,
nbreaks=6,
digits=2,
label=FALSE,
label_round=2,
label_size=4)
)
Registered S3 method overwritten by 'GGally':
method from
+.gg ggplot2
O mesmo, convertendo os itens para ordinais está implementado em demo_ggcorr_WHOQOL_ord.R:
Dados <- readRDS("WHOQOL.rds")
ro <- qgraph::cor_auto(Dados[-1],
detectOrdinal=TRUE,
forcePD=TRUE)
print (
GGally::ggcorr(data=NULL,
name="WHOQOL-BREF: ordinal",
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-BREF (Manual do Projeto VERAS (2011)):
DExistem funções R que procuram agrupar itens ordinais. Por exemplo,
demo_ggcorr_WHOQOL_ord2.R, utilizando
alguns métodos (e.g., graph=“glasso” (correlação policórica
parcial) e graph=“cor” (correlação policórica de ordem
zero) no código):
Dados <- readRDS("WHOQOL.rds")
ro <- qgraph::cor_auto(Dados[-1],
detectOrdinal=TRUE,
forcePD=TRUE)
n <- nrow(Dados)
corrplot::corrplot(corr=ro,
is.corr=TRUE,
#method="number",
diag=FALSE,
title="Polychoric Correlation",
order="hclust",
hclust.method="ward.D",
tl.col="black",
addrect=4)
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-BREF (polychoric cor)",
details=FALSE)
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-BREF (polychoric glasso)",
details=FALSE)
itens <- paste0("Q", 3:26)
# 2) Correlação policórica e hclust
Rpoly <- psych::polychoric(Dados[, itens, drop = FALSE])$rho
D <- as.dist(1 - Rpoly)
hc <- hclust(D, method = "ward.D2")
# 3) Clusters (k=4) e nomes
cl <- cutree(hc, k = 4)
names(cl) <- colnames(Dados[, itens, drop = FALSE])
# 4) Domínios a priori (WHOQOL-BREF/Veras)
dom_ap <- c(
"Físico","Físico", # Q3,Q4
"Psicológico","Psicológico","Psicológico", # Q5,Q6,Q7
"Ambiente","Ambiente", # Q8,Q9
"Físico", # Q10
"Psicológico", # Q11
"Ambiente","Ambiente","Ambiente", # Q12,Q13,Q14
"Físico","Físico","Físico","Físico", # Q15–Q18
"Psicológico", # Q19
"Relações Sociais","Relações Sociais","Relações Sociais", # Q20–Q22
"Ambiente","Ambiente","Ambiente", # Q23–Q25
"Psicológico" # Q26
)
names(dom_ap) <- itens
# 5) Rótulo de cluster = maioria do domínio a priori dentro do cluster
tab <- table(Cluster = cl, Apriori = dom_ap[names(cl)])
lab_cluster <- apply(tab, 1, function(r) names(which.max(r)))
dom_post <- lab_cluster[as.character(cl)]
names(dom_post) <- names(cl)
# 6) Significado conciso por item
sig <- c(
Q3 = "dor limita atividades",
Q4 = "dependência de tratamento",
Q5 = "aproveita a vida",
Q6 = "sentido da vida",
Q7 = "capacidade de concentração",
Q8 = "sensação de segurança",
Q9 = "qualidade do ambiente físico",
Q10 = "energia disponível",
Q11 = "aceitação da aparência",
Q12 = "recursos financeiros suficientes",
Q13 = "acesso à informação",
Q14 = "oportunidades de lazer",
Q15 = "locomoção",
Q16 = "satisfação com sono",
Q17 = "satisfação com atividades diárias",
Q18 = "satisfação com capacidade trabalho",
Q19 = "autoestima/satisfação pessoal",
Q20 = "satisfação com relações pessoais",
Q21 = "satisfação com vida sexual",
Q22 = "satisfação com apoio social",
Q23 = "satisfação com moradia",
Q24 = "satisfação com acesso à saúde",
Q25 = "satisfação com transporte",
Q26 = "freq sentimentos negativos"
)
# 7) Tabela final
tabela <- data.frame(
"Item" = names(cl),
"Significado" = unname(sig[names(cl)]),
"Domínio a priori" = unname(dom_ap[names(cl)]),
"Domínio a posteriori" = unname(dom_post[names(cl)]),
stringsAsFactors = FALSE,
check.names = FALSE
)
# Ordenar e exibir
tabela <- tabela[order(tabela$"Domínio a priori", tabela$"Item"), ]
print(tabela, row.names = 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
Item Significado Domínio a priori Domínio a posteriori
Q12 recursos financeiros suficientes Ambiente Ambiente
Q13 acesso à informação Ambiente Ambiente
Q14 oportunidades de lazer Ambiente Relações Sociais
Q23 satisfação com moradia Ambiente Ambiente
Q24 satisfação com acesso à saúde Ambiente Ambiente
Q25 satisfação com transporte Ambiente Ambiente
Q8 sensação de segurança Ambiente Físico
Q9 qualidade do ambiente físico Ambiente Ambiente
Q10 energia disponível Físico Físico
Q15 locomoção Físico Ambiente
Q16 satisfação com sono Físico Físico
Q17 satisfação com atividades diárias Físico Físico
Q18 satisfação com capacidade trabalho Físico Físico
Q3 dor limita atividades Físico Físico
Q4 dependência de tratamento Físico Físico
Q11 aceitação da aparência Psicológico Físico
Q19 autoestima/satisfação pessoal Psicológico Físico
Q26 freq sentimentos negativos Psicológico Físico
Q5 aproveita a vida Psicológico Relações Sociais
Q6 sentido da vida Psicológico Físico
Q7 capacidade de concentração Psicológico Físico
Q20 satisfação com relações pessoais Relações Sociais Relações Sociais
Q21 satisfação com vida sexual Relações Sociais Relações Sociais
Q22 satisfação com apoio social Relações Sociais Relações Sociais
Aqui, pela primeira vez, aparece uma tentativa de agrupamento dos itens.
Recorde a proposta para o WHOQOL-BREF (Manual do Projeto VERAS (2011)):
No 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:
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:
Q21 liga-se principalmente a Q11 (psicológico), ambas obviamente conectadas aos relacionamentos sexuais:
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:
Outra ligação forte aparece entre Q5 (psicológico) e Q14 (ambiente). Seus conteúdos são ligados ao 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:
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 perspectiva, 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:
suppressMessages(suppressWarnings(
invisible(Sys.setlocale("LC_ALL", "pt_BR.UTF-8"))
))
Dados <- readRDS("WHOQOL.rds")
cat("\nItens ordinais\n")
Dados[-1] <- lapply(Dados[-1], as.ordered)
cat("\n\t- verificando com class:\n")
print(sapply(Dados[-1],class))
cat("\n\t- verificando com str:\n")
print(str(Dados[-1]))
# esta funcao precisa que todos os itens tenham o mesmo numero de niveis
# descritiva com o pacote likert
cat("\nPacote likert\n")
cat("\nNúmero de níveis do item\n")
print(sapply(Dados[-1], function(x) nlevels(x)))
# usa a funcao preparatoria
lkt <- likert::likert(Dados[-1])
cat("\nFrequência das respostas\n")
print(lkt, digits=1)
print(plot(lkt,
type="heat",
low.color="lightgray",
high.color="darkgray"))
cat("\nFrequência das respostas\n")
print(summary(lkt), digits=2)
print(plot(lkt,
low.color="lightgray",
high.color="black"))
Itens ordinais
- verificando com class:
Q3 Q4 Q5 Q6 Q7 Q8 Q9
[1,] "ordered" "ordered" "ordered" "ordered" "ordered" "ordered" "ordered"
[2,] "factor" "factor" "factor" "factor" "factor" "factor" "factor"
Q10 Q11 Q12 Q13 Q14 Q15 Q16
[1,] "ordered" "ordered" "ordered" "ordered" "ordered" "ordered" "ordered"
[2,] "factor" "factor" "factor" "factor" "factor" "factor" "factor"
Q17 Q18 Q19 Q20 Q21 Q22 Q23
[1,] "ordered" "ordered" "ordered" "ordered" "ordered" "ordered" "ordered"
[2,] "factor" "factor" "factor" "factor" "factor" "factor" "factor"
Q24 Q25 Q26
[1,] "ordered" "ordered" "ordered"
[2,] "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
Pacote likert
Número de níveis do item
Q3 Q4 Q5 Q6 Q7 Q8 Q9 Q10 Q11 Q12 Q13 Q14 Q15 Q16 Q17 Q18 Q19 Q20 Q21 Q22
5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5
Q23 Q24 Q25 Q26
5 5 5 5
Frequência 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
Frequência 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 necessita de dados
ordinais (em data.frame) 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 seus
padrões de freqências de respostas. A ordem que sugere também não
coincide completamente (como sempre) com aquela proposta pela OMS para o
WHOQOL.
Recorde a proposta para o WHOQOL-BREF (Manual do Projeto VERAS (2011)):
Finalmente, um dendrograma é produzido pela análise hierárquica de
grupos (hierarchical cluster analysis) usando
pvclust::pvclust com itens intervalares. Ele apresenta
outra classificação de itens.
Dados <- readRDS("WHOQOL.rds")
Dados[,-1] <- lapply(Dados[,-1],as.numeric)
res.pv <- pvclust::pvclust(Dados[-1],
method.dist="correlation",
method.hclust="ward.D2",
quiet=TRUE,
nboot=5e2)
plot(res.pv)
Recorde a proposta para o WHOQOL-BREF (Manual do Projeto VERAS (2011)):
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 e de covariâncias entre pares de variáveis simultaneamente. Uma forma inicial 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.
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 da análise de
variância). O primeiro passo é encontrar quantos são os fatores comuns
subjacentes à configuração adotada pelas matrizes.
Esta análise fatorial tem duas partes:
Neste texto, abordaremos EFA.
Dancey & Reidy (2019) apresentam o seguinte exemplo no item 6.3:
Por inspeção visual, detectam-se dois fatores comuns (maiores correlações absolutas em negrito). Depois que os fatores são encontrados, podemos atribuir nomes significativos para eles, tais como “satisfação social (extrínseca)” e “satisfação pessoal (intrínseca)” neste exemplo.
Veremos, adiante, que é crítico para EFA construir a matriz de
correlações adequada, o que é feito pela função
polycor::hetcor() exemplificada anteriormente, que tem
algoritmos 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 (manifestas) presentes no banco de dados são runny nose (coriza), cough (tosse), sneeze (espirro) e sore throat (dor de garganta). O fator comum, denominado cold (resfriado), é uma variável latente hipotetizada como causa subjacente desses sintomas.
Como o resfriado (fator comum) é tido como “causa” dos sintomas (itens), este modelo é chamado de reflexivo.
Variável latente é uma representação de qualquer fenômeno não diretamente observável ou conceito para o qual não há método operacional para mensuração direta.
As variáveis latentes são variáveis intervalares.
|
|
Conforme Revista FAPESP: Definição de massa,
“A constante de Planck (\(6.62607004 \cdot 10^{-34}\) m2kg/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.”
“Resumo: Comparamos diversas medidas univariadas e multivariadas de tamanho corporal usadas comumente em pesquisas ornitológicas, incluindo oito medidas multivariadas (obtidas por análises de componentes principais (PCA)), além do comprimento do crânio, ulna, tibiotarso, asa e massa. As análises basearam-se em 26 medições de três machos e três fêmeas selecionados aleatoriamente de pardal da savana (Passerculus sandwichensis) provenientes de 53 localidades geográficas diferentes dentro da distribuição da espécie. Seis dos oito componentes principais forneceram essencialmente a mesma informação sobre o tamanho corporal. As análises baseadas na matriz de variância-covariância dos dados brutos ou transformados em logaritmo geraram eixos que variaram mais em relação às demais estimativas multivariadas de tamanho. Entre as medidas univariadas, comprimento da ulna, comprimento da asa e massa forneceram informações que divergiram das medidas multivariadas de tamanho corporal total. A massa representa melhor o tamanho geral (isto é, PC I) do que o comprimento da asa; porém, devido à variação nas condições reprodutivas, a massa é uma medida muito melhor em machos do que em fêmeas. O comprimento da asa não é uma medida representativa do tamanho corporal. Como cada análise de componentes principais fornece essencialmente a mesma informação sobre o tamanho corporal no PC I, encorajamos os pesquisadores a escolher entre as diversas abordagens de acordo com seus objetivos analíticos, e não com base apenas na simplicidade metodológica ou utilidade geral.”
Definição clássica da OMS, Constituição da OMS, 1946:
“Saúde é um estado de completo bem-estar físico, mental e social, e não apenas a ausência de doença ou enfermidade.”
Então, o que é doença?
Não encontramos definição para doença da OMS, mas existe uma extensa classificação, o CID-11 (https://www.who.int/standards/classifications/classification-of-diseases).
Conforme Segre & Ferraz (1997),
“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.”
As práticas médicas consistem num conjunto de procedimentos para manter e restabelecer a homeostase do organismo humano individual e coletivo.
Homeostasia ou homeostase, a partir dos termos gregos homeo, “similar” ou “igual”, e stasis, “estático”, é a condição de relativa estabilidade da qual o organismo necessita para realizar suas funções adequadamente para o equilíbrio do corpo. É a propriedade de um sistema aberto, especialmente dos seres vivos, de regular o seu ambiente interno, de modo a manter uma condição estável mediante múltiplos ajustes de equilíbrio dinâmico, controlados por mecanismos de regulação inter-relacionados.
A homeostase é uma das características fundamentais dos seres vivos. É a manutenção do ambiente interno dentro de limites toleráveis. O ambiente interno de um organismo vivo consiste basicamente nos seus fluidos corporais. Estes incluem o plasma sanguíneo, a linfa, e vários outros fluidos inter e intracelulares. A manutenção de condições estáveis nestes fluidos é essencial para os seres vivos, uma vez que a ausência de tais condições é prejudicial ao material genético.
A capacidade de sustentar a vida dos fluidos do corpo humano é afetada por todo um leque de fatores, como a temperatura, a salinidade, o pH ou as concentrações de nutrientes, como a glicose, vários íons, oxigênio e resíduos, como o dióxido de carbono e a ureia. Dado que estes fatores afetam as reações químicas que mantêm o corpo vivo, este inclui mecanismos fisiológicos para os manter dentro dos limites desejáveis.
Portanto, o que é doença?
O objetivo da análise fatorial é transformar um grande número de variáveis observadas em termos de um número pequeno e interpretável 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, validação de construto de escala de avaliação e pontuação (escoragem) dos respondentes.
Aconselha-se o uso da matriz de correlação dos itens da escala para EFA, pois usar matriz de correlação equivale a padronizar os itens. É aconselhável o uso da matriz de covariância qpara CFA.
Os itens são variáveis manifestas, que podem ser nominais dicotômicos ou politômicos, ordinais e/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 experimental numa 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 é computada com os itens não-padronizados (variâncias não-homogeneizadas). Se os itens não são medidos com as mesmas unidades de medida ou não são comparáveis, utilizar a matriz de correlação (variâncias homogeneizadas) irá padronizá-los de forma a torná-los cotejáveis.
Brown (2015) Confirmatory Factor Analysis for Applied Research
Angelos Markos: CFA for Applied Research in R package lavaan
No capítulo 2: The common factor model and exploratory factor analysis de Brown (2015), há um exemplo em que apenas a matriz de correlação de Pearson foi fornecida. Porém, isto é o suficiente para EFA.
Esta matriz de correlação foi obtida a partir das respostas de 300 indivíduos internados em uma ala psiquiátrica a um questionário de quatro itens do tipo Likert, desenvolvido para avaliar sintomas de depressão maior.
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
Matriz <- as.data.frame(readxl::read_excel("Depressao.xlsx"))
Matriz <- as.matrix(Matriz[-1]) # remove a primeira coluna
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="Component", ylab="Singular value",
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
[1,] 1.00 0.70 0.65 0.62
[2,] 0.70 1.00 0.66 0.63
[3,] 0.65 0.66 1.00 0.60
[4,] 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)
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%).
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 = {{\text{sv}_1}\over{\text{sv}_2}} \] em que \(sv_1\) e \(sv_2\) são os dois maiores valores singulares.
Para:
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 \(H=\) 7.14, sugerindo que um modelo com um único fator pode ser adequado.
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(\text{sv})} \over {\min(\text{sv})} }} \] i.e, 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, invalidando a EFA.
No exemplo da Depressão maior, obtivemos índice igual a \(CI=3.1\). Desta forma, podemos prosseguir com EFA.
EFA 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 maior”.
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 boa 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, 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 1 se a magnitude da influência dos controles aproxima-se de 0, indicando que existe “pureza” na correlação dos pares de itens.
Esta é EFA propriamente dita. Neste código precisamos definir quantos
fatores comuns queremos postular, o que fizemos em
num.factors <- 1. Sua saída tem algumas partes.
Na primeira tabela, a coluna MR1 (o fator Depressão
maior) 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 associação linear do fator com
o item. São, neste exemplo, grandes e positivas. 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.
O número de 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 (k+1)/2\),
sendo que \(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 \times 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 (10) e a quantidade de parâmetros do modelo (8), igual a 2, neste exemplo.
Conforme Stevenson & Haberman (2005), 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)”
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):
Os dados são aqueles do arquivo Felicidade.rds que já utilizamos
anteriormente. 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 maior (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 é:
suppressMessages(suppressWarnings(
invisible(Sys.setlocale("LC_ALL", "pt_BR.UTF-8"))))
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="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)
print (
GGally::ggcorr(data=NULL,
name="Felicidade: ordinal",
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=\"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: ordinal (cor)",
details=FALSE)
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: ordinal (glasso)",
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="correlation",
method.hclust="ward.D2",
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="Component", ylab="Singular value",
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 = ",round(fa.fit$chi,2),"\n",sep="")
cat("df = ",fa.fit$dof,"\n",sep="")
cat("X^2/df = ",round(fa.fit$chi/fa.fit$dof,2),"\n",sep="")
cat("(model may possibly be relected when X^2/df > 2)\n",sep="")
----
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:
Q1 Q2 Q3 Q4 Q5 Q6 Q7 Q8 Q9
Q1
Q2 0.09
Q3 0.09 0.06
Q4 0.07 0.09 0.09
Q5 0.07 0.09 0.09 0.08
Q6 0.08 0.1 0.1 0.06 0.08
Q7 0.09 0.05 0.06 0.09 0.09 0.1
Q8 0.09 0.03 0.05 0.09 0.09 0.1 0.03
Q9 0.09 0.06 0.05 0.09 0.09 0.1 0.04 0.04
Q10 0.08 0.1 0.1 0.07 0.09 0.06 0.1 0.1 0.1
n = 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="cor"
-----------
2
--------------
graph="glasso"
--------------
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.2
df = 26
X^2/df = 1.28
(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” ou “Felicidade não confuciana”.
Neste exemplo, como temos os dados brutos, ainda podemos calcular os escores (pontuações) dos respondentes.
Para isto, precisaremos usar a função psych::fa com
outros parâmetros:
Está implementada em demo_Felicidade_DadosBrutos.R,
resultando em:
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]
print(head(Dados_brutos), digits=3)
print(tail(Dados_brutos), digits=3)
print(summary(Dados_brutos[11:12], digits=2))
GGally::ggpairs(Dados_brutos[11:12])+ggplot2::theme_bw()+
ggplot2::theme(panel.grid = ggplot2::element_blank())
----
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 1 2 4 2 4 1 3 2 2 1 -1.066 0.107
2 1 3 4 1 1 1 3 3 3 1 -0.222 -0.569
3 1 4 3 1 1 1 4 4 4 1 0.628 -0.556
4 1 2 3 1 1 1 1 1 1 1 -2.132 -0.589
5 1 3 3 1 1 1 3 3 1 1 -0.657 -0.585
6 1 4 4 1 1 1 4 4 4 1 0.729 -0.561
Q1 Q2 Q3 Q4 Q5 Q6 Q7 Q8 Q9 Q10 MR1 MR2
195 1 4 4 1 1 1 4 4 4 1 0.729 -0.561
196 1 1 2 1 1 1 1 1 2 1 -2.156 -0.564
197 1 3 2 1 1 1 1 2 3 1 -1.292 -0.576
198 1 3 3 1 1 1 2 3 3 1 -0.500 -0.574
199 1 4 3 1 1 1 3 2 2 1 -0.914 -0.581
200 1 4 5 1 1 1 4 4 3 1 0.662 -0.577
MR1 MR2
Min. :-2.474 Min. :-0.59
1st Qu.:-0.527 1st Qu.:-0.56
Median : 0.017 Median :-0.35
Mean : 0.000 Mean : 0.00
3rd Qu.: 0.693 3rd Qu.: 0.18
Max. : 1.788 Max. : 4.59
Os escores fatoriais estimados dos respondentes nos dois fatores comuns extraídos são valores padronizados (escore-z). E.g., o primeiro respondente tem escores fatoriais estimados nos fatores comuns de felicidade extrínseca e intrínseca iguais a -1.07 e 0.11 desvios-padrão, respectivamente. Observar que os escores fatoriais têm correlação de Pearson não significante igual a 0.035.
Retomando o exemplo do WHOQOL-BREF com os dados disponíveis em WHOQOL.rds,
verificaremos o que podemos obter inicialmente com EFA, implementada em
demo_EFA_WHOQOL.R.
source("eiras.showdataframe.R")
source("eiras.bartitle.R")
Dados <- readRDS("WHOQOL.rds")
n <- nrow(Dados)
# todas as colunas tratadas como ordinais
Dados[,-1] <- lapply(Dados[,-1],as.ordered)
r <- polycor::hetcor(Dados[-1],
use="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="Component", ylab="Singular value",
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 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="")
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.5 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.21 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.24 0.27
Q13 -0.19 -0.22 0.29 0.29 0.27 0.33 0.31
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.25 -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.1 -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.19 0.25
Q25 -0.1 -0.11 0.2 0.15 0.094 0.18 0.22
Q26 0.25 0.36 -0.41 -0.46 -0.39 -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.22 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.27 0.37 0.18 0.18 0.24 0.15
Q22 0.26 0.25 0.22 0.25 0.25 0.2
Q23 0.16 0.22 0.4 0.29 0.25 0.34
Q24 0.17 0.16 0.39 0.34 0.29 0.29
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.22 0.28 0.29 0.41 0.43 1
Q22 0.21 0.29 0.29 0.35 0.6 0.36
Q23 0.13 0.21 0.22 0.26 0.3 0.22
Q24 0.15 0.18 0.19 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.29 0.45 1 Polychoric Polychoric
Q25 0.16 0.42 0.38 1 Polychoric
Q26 -0.31 -0.15 -0.16 -0.062 1
Standard Errors:
Q3 Q4 Q5 Q6 Q7 Q8 Q9 Q10 Q11 Q12 Q13 Q14
Q3
Q4 0.019
Q5 0.022 0.022
Q6 0.022 0.022 0.017
Q7 0.022 0.021 0.019 0.019
Q8 0.021 0.021 0.017 0.016 0.016
Q9 0.021 0.022 0.02 0.021 0.02 0.019
Q10 0.021 0.02 0.017 0.019 0.015 0.016 0.02
Q11 0.021 0.021 0.019 0.019 0.02 0.017 0.021 0.018
Q12 0.021 0.021 0.019 0.021 0.021 0.02 0.02 0.02 0.019
Q13 0.022 0.022 0.02 0.021 0.021 0.02 0.02 0.021 0.02 0.018
Q14 0.022 0.022 0.014 0.021 0.02 0.02 0.02 0.018 0.021 0.019 0.019
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
Q3
Q4
Q5
Q6
Q7
Q8
Q9
Q10
Q11
Q12
Q13
Q14
Q15
Q16 0.023
Q17 0.022 0.015
Q18 0.023 0.016 0.0071
Q19 0.023 0.018 0.011 0.012
Q20 0.022 0.019 0.017 0.018 0.015
Q21 0.023 0.02 0.019 0.02 0.018 0.017
Q22 0.023 0.021 0.02 0.02 0.019 0.014 0.018
Q23 0.021 0.022 0.021 0.021 0.021 0.02 0.021 0.02
Q24 0.021 0.021 0.021 0.021 0.021 0.02 0.021 0.02 0.017
Q25 0.016 0.021 0.021 0.022 0.021 0.021 0.021 0.021 0.018 0.018
Q26 0.023 0.018 0.017 0.017 0.015 0.017 0.019 0.02 0.022 0.021 0.022
n = 2680
P-values for Tests of Bivariate Normality:
Q3 Q4 Q5 Q6 Q7 Q8 Q9 Q10 Q11
Q3
Q4 6.4e-05
Q5 0.043 0.069
Q6 0.033 0.046 4.3e-11
Q7 0.0073 0.26 3.6e-05 5.1e-06
Q8 0.062 0.15 2.4e-07 2.6e-05 1.6e-17
Q9 0.14 0.15 0.029 0.23 0.00057 0.0067
Q10 0.16 0.18 0.12 0.00071 4.2e-06 0.00058 0.11
Q11 0.34 0.025 6.5e-05 0.0022 1.8e-07 8e-04 0.0041 0.11
Q12 0.51 0.22 2.5e-05 0.0088 0.0036 8.8e-05 0.003 3.6e-05 8.1e-07
Q13 0.00044 0.001 0.00044 0.0022 0.028 0.0076 0.012 0.0015 0.048
Q14 0.083 0.037 1.2e-07 0.00045 0.013 0.00033 0.0061 0.0047 7.9e-07
Q15 0.02 0.35 0.56 0.48 0.053 0.79 0.0011 0.23 0.0019
Q16 0.68 0.039 0.0097 0.2 0.0047 4.7e-05 0.0031 2.4e-06 0.027
Q17 0.018 0.97 1.2e-05 8.9e-07 0.00018 0.00011 0.29 0.028 0.0049
Q18 0.0055 0.13 1.6e-06 5.5e-09 5.3e-09 0.00026 0.017 0.01 0.00066
Q19 0.089 0.025 6.6e-06 2e-09 3.2e-07 0.00014 0.024 0.034 5.1e-09
Q20 0.61 0.31 1.1e-06 0.018 7.8e-06 4.9e-05 0.13 0.00023 0.0088
Q21 0.038 0.04 0.17 5e-05 0.00012 0.002 0.38 0.34 0.003
Q22 0.026 0.067 0.013 0.00056 0.00045 0.083 0.06 0.0047 2e-05
Q23 0.29 0.0013 0.046 0.55 0.15 0.097 8.9e-07 0.031 0.064
Q24 0.058 0.097 0.24 0.2 0.2 0.0042 0.048 1 0.013
Q25 0.0037 0.013 0.37 0.92 0.038 0.16 0.013 0.0055 0.093
Q26 0.5 0.71 0.0082 7e-06 1.6e-06 7.9e-07 0.15 1.6e-06 0.023
Q12 Q13 Q14 Q15 Q16 Q17 Q18 Q19 Q20
Q3
Q4
Q5
Q6
Q7
Q8
Q9
Q10
Q11
Q12
Q13 0.023
Q14 0.00079 6.9e-09
Q15 0.0091 0.17 0.16
Q16 0.00062 0.23 0.016 0.42
Q17 0.0018 0.00012 0.0013 0.0057 1.7e-06
Q18 0.27 0.0019 0.0012 0.00079 7.9e-05 1.9e-39
Q19 0.016 0.12 0.25 0.19 0.019 8.3e-08 8.6e-14
Q20 0.029 0.26 0.077 0.016 0.0038 1.5e-06 4.1e-05 5.5e-06
Q21 0.009 0.11 0.0048 0.092 0.0011 0.00026 6.2e-06 1.2e-07 1.4e-11
Q22 0.18 0.0074 0.13 0.0065 0.13 9.4e-05 0.0045 2.8e-09 7e-14
Q23 3.8e-05 1.5e-05 0.16 1.8e-05 0.0012 6.6e-05 0.0017 0.00059 0.021
Q24 0.046 0.077 0.0024 0.0071 0.011 0.24 0.0055 0.013 0.022
Q25 0.00014 0.052 0.18 6.9e-28 0.01 0.021 0.00043 0.0011 0.2
Q26 0.00055 0.0065 0.00058 0.55 2.2e-07 2.5e-06 4e-06 2.6e-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.1e-05
Q23 4.1e-05 5.6e-08
Q24 0.0021 0.00028 6e-19
Q25 0.027 0.0029 6.9e-09 1.2e-07
Q26 0.009 0.00012 0.1 0.42 0.014
---------------
Singular values
---------------
component value
1 1 8.31
2 2 2.22
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.59
13 13 0.58
14 14 0.54
15 15 0.52
16 16 0.48
17 17 0.44
18 18 0.42
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.22 ~ 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.91 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.73 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.31 0.69 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.13 0.87 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 = 28346.72
df of the model are 252 and the objective function was 3.27
The root mean square of the residuals (RMSR) is 0.09
The df corrected root mean square of the residuals is 0.09
The harmonic n.obs is 2684 with the empirical chi square 10720.83 with prob < 0
The total n.obs was 2684 with Likelihood Chi Square = 8754.1 with prob < 0
Tucker Lewis Index of factoring reliability = 0.668
RMSEA index = 0.112 and the 90 % confidence intervals are 0.11 0.114
BIC = 6764.55
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 = 10720.83
df = 252
X^2/df = 42.54298
(model may possibly be rejected when X^2/df > 2)
--------------------------------------------------
primeira ordem com 4 fatores comuns (seguindo 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.65 0.35 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.44 0.56 1.8
Q4 2 -0.39 0.20 0.80 1.3
Q11 9 0.34 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.66 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 = 28346.72
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 1842.26 with prob < 4.2e-270
The total n.obs was 2684 with Likelihood Chi Square = 3031.96 with prob < 0
Tucker Lewis Index of factoring reliability = 0.849
RMSEA index = 0.076 and the 90 % confidence intervals are 0.073 0.078
BIC = 1563.48
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.89 0.91
Multiple R square of scores with factors 0.92 0.80 0.80 0.83
Minimum correlation of possible factor scores 0.83 0.59 0.60 0.67
------------------------------
Heuristic for model rejection:
------------------------------
X^2 = 1842.265
df = 186
X^2/df = 9.90465
(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.56 2.54
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.11
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.99
Q9 0.39 0.25 0.75 0.60 2.25
Q10 0.61 0.50 0.65 0.65 0.35 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.42 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 2.00
Q18 0.61 0.56 0.68 0.68 0.32 0.55 1.99
Q19 0.65 0.41 0.70 0.70 0.30 0.61 2.13
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.13
Q24 0.34 0.47 0.36 0.36 0.64 0.31 2.00
Q25 0.62 0.47 0.47 0.53 0.17 1.41
Q26- 0.52 0.32 0.44 0.44 0.56 0.61 2.14
With Sums of squares of:
g F1* F2* F3* F4* h2
5.68 1.86 1.09 1.63 0.78 5.75
general/max 0.99 max/min = 7.37
mean percent general = 0.51 with sd = 0.13 and cv of 0.26
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 = 3031.96 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.076 and the 90 % confidence intervals are 0.073 0.078
BIC = 1563.48
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.67
The number of observations was 2684 with Chi Square = 9813.62 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 = 7824.06
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.31
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 = 2141.171
df = 166
X^2/df = 12.89862
(model may possibly be rejected when X^2/df > 2)
A importância do fator geral 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
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-BREF (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):
Q5 (psicológico) e Q14 (ambiente) formaram um domínio pequeno:
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:
e o outro quase que exclusivamente do domínio ambiental Q25, Q15, Q23, Q24, Q12, Q13 e Q9:
|
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. (2) 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
Um aspecto notável na EFA (e 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:
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:
g F1* F2* F3* F4* h2 u2 p2 com
Q3- 0.30 0.2240 -0.05251 0.1666 -0.0026 0.16 0.84 0.56 2.5
Q4- 0.35 0.2610 -0.00142 0.1361 -0.0218 0.20 0.80 0.61 2.2
Q5 0.61 0.1035 0.26597 0.0067 0.3811 0.58 0.42 0.63 2.2
Q6 0.53 0.2076 0.34900 0.0445 -0.0170 0.46 0.54 0.61 2.1
Q7 0.50 0.4226 0.04123 0.0115 -0.0115 0.44 0.56 0.58 2.0
Q8 0.59 0.3433 0.23528 0.0440 -0.0142 0.53 0.47 0.65 2.0
Q9 0.39 0.1604 0.00664 0.2752 0.0617 0.25 0.75 0.60 2.2
Q10 0.61 0.4988 -0.03256 -0.0250 0.1377 0.65 0.35 0.58 2.0
Q11 0.47 0.2265 0.23305 0.0887 -0.0361 0.34 0.66 0.64 2.1
Q12 0.40 0.0415 -0.00016 0.4460 0.1334 0.39 0.61 0.42 2.2
Q13 0.42 0.1123 0.02245 0.3170 0.1341 0.31 0.69 0.57 2.3
Q14 0.54 0.0087 0.00355 0.0302 0.7088 0.80 0.20 0.36 1.9
Q15 0.35 0.1060 -0.06949 0.5493 -0.0408 0.43 0.57 0.29 1.8
Q16 0.47 0.3572 -0.07989 0.0128 0.1837 0.39 0.61 0.58 2.3
Q17 0.64 0.5700 -0.04479 0.0294 0.0284 0.73 0.27 0.56 2.0
Q18 0.61 0.5577 -0.00804 0.0267 -0.0274 0.68 0.32 0.55 2.0
Q19 0.65 0.4054 0.28779 0.0049 -0.0518 0.70 0.30 0.61 2.1
Q20 0.57 0.0545 0.49916 0.0478 0.1081 0.59 0.41 0.55 2.1
Q21 0.40 0.0361 0.38140 0.0253 0.0547 0.31 0.69 0.52 2.1
Q22 0.44 -0.0460 0.45303 0.1235 0.0781 0.42 0.58 0.47 2.2
Q23 0.38 -0.0627 0.17155 0.5121 0.0124 0.44 0.56 0.32 2.1
Q24 0.34 -0.0531 0.06781 0.4682 0.0962 0.36 0.64 0.31 2.0
Q25 0.28 -0.0255 -0.03786 0.6241 -0.0333 0.47 0.53 0.17 1.4
Q26- 0.52 0.3151 0.23484 -0.0598 0.0179 0.44 0.56 0.61 2.1
Assim, ligaremos:
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:
F2:
F3:
F4:
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 com CFA, poderíamos escolher nomes para os fatores. Por exemplo:
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, abordada em disciplina de Psicometria, que validamos modelos explicativos com a decisão inferencial estatística.
Para saber mais, dois textos que auxiliam para o uso de R em análise fatorial são Rosseel & Vidal (2025), Lou et al. (2019) e Beaujean (2013).