Antes de começar temas mais voltados à Psicometria, esta seção se propõe a apresentar um breve tutorial estatístico e computacional visando orientar às análises e seus resultados principais no ambiente das pesquisas em Psicologia. Como nosso curso possui ênfase pragmática, a supressão de conceitos teóricos (matemáticos ou não) e provas por indução ou aproximação numérica são intencionais. Todos os códigos estarão disponíveis e os pacotes serão carregados à medida da usabilidade deles.
Os dados das seguintes pesquisas serão parcialmente utilizados no decorrer das explicações:
Arruda, Arruda, Anunciação (2019). Psychometric properties and clinical utility of the Executive Function Inventory for Children and Adolescents: a large multistage populational study including children with ADHD. Applied Neuropsychology: Child. Under review.
Matsubara, L.M., Luna, S.P.L., Teixeira, L.R., Castilho, M.S., Björkman, A.H., Oliveira, H.S., & Anunciação, L.F.C.. (2019). Avaliação psicométrica em português do indicador de dor crônica de Helsinki em cães com sinais crônicos de osteoartrite. Arquivo Brasileiro de Medicina Veterinária e Zootecnia, 71(1), 109-118. https://dx.doi.org/10.1590/1678-4162-9892
Anunciação, L., Chen, C., Pereira, D.A., & Landeira-Fernandez, J.. (2019). Factor Structure of a Social-Emotional Screening Instrument for Preschool Children. Psico-USF, 24(3), 449-461. Epub October 10, 2019. https://dx.doi.org/10.1590/1413-82712019240304
Anunciação, Luis, et al. “Confirmatory Analysis and Normative Tables for the Brazilian Ages and Stages Questionnaires : Social–Emotional.” Child: Care, Health and Development, vol. 45, no. 3, Apr. 2019, pp. 387–393., https://dx.doi.org/10.1111/cch.12649.
O primeiro trabalho será utilizado para explicitação de técnicas estatísticas.
Esse handout faz parte de um compilado de aulas e tutoriais feitos por mim e por muitos outros pesquisadores. Assim, não há absolutamente nenhum material original nele e todas as obras consultadas têm suas citações e referências disponíveis ao fim. Penso que a originalidade deste trabalho está justamente em organizar todo o conteúdo de maneira estruturada, que faça sentido e possa ser computacionalmente demonstrada. Caso você deseje utilizar esse material em outros contextos não-comerciais, sinta-se livre para isso. Não se esqueça de citar.
Todo material foi feito com atenção no ambiente R Markdown, mas erros de digitação, acentuação (etc) podem ocorrer. Por sua vez, aspectos estatísticos foram amplamente revistos e espera-se que não haja erros ou ambuiguidades. No entanto, caso você identifique algo fora do esperado, por favor, envie um e-mail para luisfca@gmail.com.
Esse material é sempre salvo em formato pdf e online. Por motivos óbvios, a versão online apresenta-se mais completa e atualizada do que as outras. Você pode verificar a data do website na parte superior, sabendo que a primeira versão deste material foi feita em 23 de outubro de 2019. Atente-se que a cor de fundo de alguns pontos é diferente e isso serve para destacar tanto códigos como algumas passagens.
A inferência estatística pode ser querbada em estimação pontual, estimação intervalar, testes de hipóteses e comparação de modelos. Toda inferência está sujeita a erros e isso, por ora, recebe maior destaque quando se trabalha com testes de hipóteses de hipóteses. A relação entre os erros do tipo 1 e do tipo 2 está apresentada a seguir. É importante notar que a forma de passar esse conteúdo é bastante dependente do contexto acadêmico. Areas como epidemiologia, biomedicina e psicologia quase sempre tem predileção de uso da nomenclatura de “falso positivo”/“falso negativo”. Áreas como estatística, egenharias e ciências da computação tendem a classificar os erros por seus dois “tipos”. Não é difícil perceber que, apesar da forma de ensino ser um pouco distinta, o conteúdo é similar. Dessa maneira, visando criar um ambiente pedagógico que atenda os diferentes públicos, os conceitos serão vistos em paralelo e com auxílio de tabelas e gráficos.
A maioria dos livros de estatística apresenta uma tabela similar a posta a seguir.
Tabela de tomada de decisão
É possível verificar que existe uma interface entre o processo de inferência estatística e as condições da realidade. A estatística frequentista assume que a \(H_0\) é verdadeira e é isso que está expresso nas colunas. Técnicamente, não controlamos isso. Por sua vez, o processo inferencial pode ter seu desfecho em rejeitar a hipótese nula ou falhar em rejeitar e ele depende de algumas características definidas pelo pesquisador.
É claro perceber que existem acertos e erros no processo inferencial (e, consequentemente, nas decisões calcadas nele). O Erro do tipo 1 ocorre quando rejeitamos a hipótese nula quando ela é verdadeira. A probabilidade desse erro é o nível de significância eleito e é apresentado pela letra grega \(\alpha\). Dessa maneira, \(\alpha = P(Tipo 1 erro)\).
O erro do tipo 2 ocorre quando falhamos em rejeitar a hipótese nula quando ela é falsa. Ele é apresentado pela letra grega \(\beta\). Assim, \(\beta = P(Type 2 Error)\). Um conceito fundamental na inferência estatística é o Poder do teste. O Poder é a probabilidade de rejeitar a hipótese nula quando ela é falsa. Todo pesquisador deseja minimizar os erros, no entanto, existe um tradeoff em que minimizar o erro do tipo 1 vem acompanhado da maximização do erro do tipo 2. Um ponto de comum acordo entre os pesquisadores está na estipulação do limite máximo do Erro do tipo 1 em 10% (\(\alpha = 0.1\)) e a tentativa de manter o \(\beta\) em 80% (\(\beta = 0.8\))
Tabela de tomada de decisão
Evidentemente, sem ter exemplos mais aderentes à realidade, o conteúdo torna-se difícil de assimilar.Apesar de úteis, eles costumam criar muitos(!) problemas quando tenta-se fazer uma interface matemática com eles. No entanto, um exemplo muito conhecido seguie assim: imagine que um um teste diagnóstico foi desenvolvido para verificar se uma pessoa está grávida (resultado positivo) ou não (resultado negativo). Por definição, a estatística frequentista vai assumir que a Hipótese nula é verdadeira (não há sinal e, portanto, não há gravidez). Caso um homem faça o exame e o teste acuse que ele não está grávido (resultado negativo), o teste acertou (trata-se de um VN). Caso o homem faça o exame e o teste acuse que ele está grávido (resultado positivo), o teste errou (trata-se de um FP ou erro do tipo 1). Em contraste, caso uma mulher grávida (e sabe-se disso por outros meios) faça este exame e ele acuse que ela está grávida (resultado positivo), o teste acertou (trata-se de um VP ou 1-\(\beta\)). Caso o teste tenha como resultado que ela não está grávida (resultado negativo), ele errou (trata-se de um FN).
A apresentação gráfica também tem lugar na apresentação do conceito e ela é quase sempre feita apresentando duas distribuições normais parcialmente interpostas. A Normal do lado esquerdo é uma em que a Hipótese nula é verdadeira (apenas ruído) e a do lado direito é aquela em que a Hipótese nula é falsa (tecnicamente, sinal + ruído). A linha vertical ao centro é o critério decisional e, na imagem abaixo, ela tenta ser equilibrado, visando uma diminuição de ambos os erros. Resultados à direita do critério são positivos, uma vez que rejeitam a hipótese nula. Resultados à esquerda ao critério são negativos, uma vez que falham em rejeitar a hipótese nula.
grafico sobre possíveis decisõeso
Esse diagrama é bastante útil para notar que existe uma área (em azul escuro) onde a hipótese nula é verdadeira, mas foi rejeitada, gerando um erro do tipo 1 \(\alpha\). Além disso, á area em verde escuro apresenta a região em que a hipótese nula é falta e deveria ter sido rejeitada mas não foi, ilustrando o erro do tipo 2 (\(\beta\))
criterio moderado
Mantidas as disitruições, levar o critério mais à esquerda acarreta em duas condições, que são: (i) a redução do erro do tipo 2, seguida pelo (ii) aumento do erro do tipo 1. Pragmaticamente, a inferência estatística agora tende a rejeitar \(H_0\), gerando resultados positivos, inclusive àqueles que não eram positivos. Esse critério é considerado muito leniente, já que, em detrimento de diminuir o falso negativo, aumenta o verdadeiro positivo, mas também o Falso positivo. Alguns autores também chamam esse critério de liberal ou sensível.
criterio liberal
Por sua vez, levar o critério à direita faz o inverso: diminui os falsos positivos, mas aumenta o falso negativo. Como agora a tomada de decisão tende a falhar em rejeitar a hipótese nula e, consequentemente, gerar muitos resultados negativos, esse critério é também entendido como rígido, específico ou conservador.
criterio conservador
Sobre esse tema, existem discussões interessantes pelo menos (i) sobre os possíveis motivos que aumentam ambos os erros, especialmente o erro do tipo 1, (ii) as consequências desses erros, (iii) em quais situações o detrimento de um erro sobre o outro poderia ser justificável e (iv) quais são as estratégias (de delineamento ou analíticas) para prevenção dos erros. Colateralmente, há também um debate muito inflamado sobre a proporção de falsos positivos publicados que quase sempre é associado à uma ideia mais geral de de viés de publicação e uma condição mais probablemática sobre p-hacking, que anda por uma linha tênue entre a necessidade de discussão e ofensas e desconfianças aos pesquisadores.
Ter uma clara noção sobre a teoria dos erros é importante, mas o olhar atento sobre o esquema até agora apresentado pode trazer à cena uma condição crucial: até o momento, o que é feito é uma comparação entre condições binárias de presença ou ausência. Em outras palavras, estamos comparando a exisência de um fenômeno ou sinal com a sua inexistência. Obviamente, situações reais são totalmente distantes desse concepção e quase sempre o que temos como foco analítico é a comparação entre dois ou mais modelos. Apesar de muito importante, esse tema não será discorrido nesse hand out.
Além disso - e para encerrar o tópico - o framework de base desta ilustração é o da estatística frequentista. Nele, assume-se que a hipótese nula é verdadeira e que a probabilidade é entendida como uma repetição infinida de experimentos idênticos. Assim, o p-valor é uma probabilidade de se obter uma estatística de teste tão extrema, ou ainda mais extrema!, do que a observada assumindo \(H_0\) como verdadeira. De forma alguma, o p-valor comenta sobre teorias, tampouco permite que se aceite a hipótese alternativa quando se rejeita a hipótese nula. Assim, é fácil perceber que a realidade das pesquisas e a capacidade de respostas oferecidas pela estatística frequentista não são totalmente associadas. Um ponto de saída é a estatística Bayesiana, que também nào será tema do hand out.
Isto posto, temos condição de avançar para o próximo tópico.
Atenção! Os resultados abaixo são baseados na ‘base_efica’.
As medidas de posição podem ser quebradas em medidas tendência central e separatrizes. As medidas de tendência central, no entanto, são compostas pela Moda, Media e Mediana. A moda tem pouca utilidade pragmática, uma vez que apresenta a realização mais frequente de uma variável. A média é uma medida muito utilizada, além de intuitiva. Como a média é sensível a todos os pontos, apesar dela ser consistente e não-viesada (de \(\mu\)), seus resultados são pouco resistentes/robustos. A mediana, por sua vez, é menos intuitiva, mas mais robusta aos pontos anômalos. A mediana também pode ser classificada como uma separatriz, com resultados análogos ao 2o Quartil, 50 percentil e 50 Decil. Frequentemente, a mediana é utilizada em distribuições assimétricas.
As medidas de dispersão indicam o grau que as observações se afastam ou se espalham de uma medida de posição. Há varias medidas, mas ao verificar a frequência em que elas aparecem, provavelmente o Desvio-padrão e o Intervalo Interquartil são as mais comuns. O Desvio-padrão apresenta o afastamento em torno da média e o Intervalo Interquartil apresenta distância entre o primeiro quartil (Q1) e o terceiro quartil (Q3). Dessa maneira, 50% dos dados estão dentro deste intervalo.
Para ilustrar, a tabela a seguir apresenta as principais estatísticas descritivas da ‘idade’ dos participantes da pesquisa agrupados por sua condição clínica.
library(summarytools)
## Registered S3 method overwritten by 'pryr':
## method from
## print.bytes Rcpp
##
## Attaching package: 'summarytools'
## The following object is masked from 'package:tibble':
##
## view
library(janitor)
##
## Attaching package: 'janitor'
## The following objects are masked from 'package:stats':
##
## chisq.test, fisher.test
base_efica <- clean_names(base_efica)
base_efica %>%
group_by(group) %>%
select(age) %>%
descr(.)
## Adding missing grouping variables: `group`
## Descriptive Statistics
## age by group
## Data Frame: base_efica
## N: 165
##
## group = tdah group = tipico
## ----------------- -------------- ----------------
## Mean 7.70 8.18
## Std.Dev 2.16 2.60
## Min 5.00 5.00
## Q1 6.00 6.00
## Median 7.00 8.00
## Q3 9.00 10.00
## Max 15.00 18.00
## MAD 1.48 2.97
## IQR 3.00 4.00
## CV 0.28 0.32
## Skewness 0.72 1.09
## SE.Skewness 0.19 0.04
## Kurtosis -0.11 1.36
## N.Valid 165.00 3284.00
## Pct.Valid 100.00 100.00
A escolha do gráfico é relacionada à quantidade de variáveis presentes e ao nível de medida da VI quando há duas (ou mais) variáveis. Gráficos de barras e de setores são úteis quando há apenas uma variável categórica e Boxplot, Histogramas e gráficos de densidade são uteis quando há apenas uma variável contínua.
Por exemplo, para variável “sexo”, o gráfico de setor abaixo é informativo.
ggplot(base_efica, aes(x = "", fill = sex)) +
geom_bar(width = 1) +
coord_polar(theta="y") +
theme_bw()
Já para variável idade, o gráfico de densidade (de kernel) é adequado. Esse gráfico é uma variante do histograma.
ggplot(base_efica, aes(age)) +
geom_density(fill = "royalblue", alpha=.4) +
theme_bw()
A relação entre duas variáveis em que a VI é discreta (sexo, por exemplo) é bem vista por um boxplot, tal como abaixo
ggplot(base_efica, aes(x = sex, y = age, color = sex)) +
geom_boxplot() +
theme_bw() +
theme(legend.position = "none")
Quando ela é continua, um gráfico de dispersão auxilia
ggplot(base_efica, aes(x=parents_totalpoints, y = teachers_totalpoints)) +
geom_jitter() +
theme_bw()
Os testes mais comumente utilizados em Psicologia podem ser entendidos como modelos lineares (GLM) e, em sentido mais específico, modelos de regressão com algumas restrições (para mais informações, este link é interessante. Pragmaticamente, análises univariadas podem ser representadas pela relação entre a VI e a VD e, ao considera-las como discretas ou contínuas, o quadro abaixo apresenta os modelos estatísticos:
tabela de testes
Como por óbvio esse sistema apresentado é limitado e as controversias podem ser impulsionadas, algumas notas de ponderação:
Há bastante polêmica em considerar variáveis categóricas como discretas e isso é uma saída provisória apenas por considerar que elas se seguem uma função de probabilidade de massa
Tecnicamente, o qui-quadrado não assume uma VI e uma vD.
Um passo altamente informativo antes mesmo da realização de testes inferenciais é a apresentação gráfica das variáveis.
Da maneira mais breve possível, o teste T compara duas médias. Caso se compare uma determinada média amostral com uma média populacional (previamente esperada, \(\mu_0\)), trata-se de um teste T para uma amostra (ou um grupo), caso se compare os resultados médios de dois grupos, trata-se de um teste T para duas amostras (ou dois grupos) e caso se compare duas médias de um mesmo grupo obtidas em momentos diferentes, trata-se de um teste T pareado (ou repetido). Os pressupostos dos modelos lineares (normalidade, homocedasticidade) também se aplicam aqui e as violações deles podem gerar resultados distorcidos.
Um exemplo simples de alcançar da usabilidade do teste T (para dois grupos independentes) é a tentativa de verificar se os resultados são significativamente diferentes em função da cor da pele da criança avaliada. Os resultados estão apresentados abaixo e é possível concluir que não há diferenças significativas em relação à média em função da cor da pele da criança (t(3185) = 0.578, p = 0.526).
t.test(base_efica$parents_totalpoints ~ base_efica$race, var.equal=T)
##
## Two Sample t-test
##
## data: base_efica$parents_totalpoints by base_efica$race
## t = 0.57899, df = 3185, p-value = 0.5626
## alternative hypothesis: true difference in means is not equal to 0
## 95 percent confidence interval:
## -1.104575 2.030291
## sample estimates:
## mean in group non-white mean in group White
## 45.09978 44.63692
O gráfico característico (barras) desse resultado encontra-se abaixo. As barras de erro foram adicionadas. Elas são importantes para ter uma ‘noção’ sobre resultados inferenciais, mas não devem ser utilizadas como substituição dos testes formais para isso.
base_efica %>%
filter(!is.na(race)) %>%
ggplot(., aes(x = race, y = parents_totalpoints, fill = race)) +
geom_bar(stat = "summary") +
stat_summary(fun.data = mean_se, geom = "errorbar") +
theme_bw() +
theme(legend.position = "none")
## No summary function supplied, defaulting to `mean_se()
É fundamental deixar uma nota. Essa pesquisa contou com questionários sociodemográficos preenchidos pelos participantes e o que se entende aqui como cor é a percepção de cada um deles sobre esse atributo. Sabe-se que isso é amplamente problemático aqui no Brasil. O exemplo foi eleito propositadamente apenas para demonstrar como se executa o teste T, uma vez que resultados significativos ou não significativos nesse ponto são pouco críveis.
Violações aos pressupostos do teste T são frequentes tanto em relação à normalidade da distribuição como em relação à homocedasticidade. Como notas de apoio, o entendimento desses pressupostos é bastante complexo e tem baixo ou nenhum acordo teórico na literatura. Da forma como alguns autores entendem, todo teste estatístico visa concluir sobre propriedades dos parâmetros (medidas populacionais) e, nesse sentido, o teste T assume que o parâmetro é normalmente distribuído (não necessariamente a amostra). No entanto, uma vez que, pelo Teorema Central do Limite, as médias das diferentes amostras tiradas de uma determinada população com variância finita se distribuem normalmente mesmo quando têm uma distribuição de origem diferente da normal (sampling distribution), haverá acadêmicos que dirão que o teste T não assume normalidade nem dos resultados amostrais, nem da população subjacente, mas tão somente da sampling distribution das médias ou diferenças de médias em jogo. A discussão parece infinta, como você pode ver aqui ou aqui e tem argumentos interessantes, como o exposto por um querido colega nosso aqui. Optei aqui – como em quase todo material meu – por utilizar o termo ‘sampling distrubution’ em vez de tentar uma tradução brasileira. Tecnicamente, sampling distribution é distribuição amostral, mas aqui entendido como a distribuição das infinitas amostras obtidas da população e não apenas a distibuição de uma amostra única em questão (que é a que o pesquisador possui).
Superada essa dificulade, quase sempre o interesse do pesquisador é checar passo-a-passo os pressupostos em sua amostra, que é a única que ele tem disponível. Para testar a normalidade, veja a distribuição dos resultados de cada um dos grupos e faça um teste de Shapiro-Wilk (SW). A \(H_0\) do SW é de normalidade. Este teste tem duas características, a primeira é sua sensibilidade ao tamanho da amostra. Quão maior o tamanho da amostra, mais facilmente ele vai rejeitar a hipótese de normalidade. A segunda é a seguinte: se duas distribuições são normais, mas com médias diferentes, os resultados serão bimodais e o shapiro-wilt também vai rejeitar a hipótese de normalidade de maneira incorreta. Ambos os resultados são bons exemplos de falsos positivos, uma vez que \(H_0\) é verdadeira (distribuição normal) e o teste a rejeita.
Realizar o welch-test é uma primeira saída quando a violação ocorre apenas na homocedasticidade ou a realização de sua versão considerada não-paramétrica pode ser feita pelo teste de Mann-Whitney (MW). O Welch-test pode ser feito com a mesma sintaxe do Teste T, surpimindo apenas o argumento var.equal=T. Já o MW está expresso a seguir e com resultados apontando à mesma direção do previamente encontrado.
wilcox.test(base_efica$parents_totalpoints ~ base_efica$race)
##
## Wilcoxon rank sum test with continuity correction
##
## data: base_efica$parents_totalpoints by base_efica$race
## W = 1047324, p-value = 0.6725
## alternative hypothesis: true location shift is not equal to 0
Conforme previamente mencionado, a ANOVA (e suas variações) são modelos de regressão que consideram que a VI é categórica (aqui, tomada como discreta). As vias/fatores e delineamento de uma ANOVA definem seus (sub)tipos. Se há apenas uma variável independente, a ANOVA é chamada de uma via. Caso haja duas, ela é chamada de duas vias, etc. Caso haja possibilidade de interação entre esses fatores, essa ANOVA recebe o nome de Fatorial. As categórias dentro de cada uma das variáveis (vias ou fatores) são chamadas de níveis ou condições. Se houver variáveis contínuas entre as independentes, tradicionalmente os livros entenderam que se trata de uma ANVOCA. É possível ter um delineamento entre grupos e intragrupos, bem como considerar medidas repetidas.
Quando o resutado da ANOVA é significativo, isto aponta que uma diferença significativa existe em todas as possíveis combinações entre/intra grupos. Isso é o conceito de um Omnibus test. É importante ter atenção a isso, pois testes post-hoc e ANOVA não respondem às mesmas perguntas e não são necessariamente dependentes. Esse é um tema bastante debatido, como pode ser visto aqui.
Uma atenção computacional aqui deve ser clara. Se a variável não for reconhecida como chr ou factor, será necessário incluir este argumento no modelo. Do contrário, o R vai estimar a variável considerando que ela é contínua e, consequentemente, os resultados serão incorretos. Você poderá notar isso pelos graus de liberdade dos resultados. Por definição, o df entre grupos (segunda linha da tabela) é K-1. Como temos três guardiões (pais, mães e outros), o df deve ser 2.
library(apaTables)
base_efica %>%
filter(group == "tipico" & !is.na(guardian)) %>%
lm(parents_totalpoints ~ guardian, .) %>%
apa.aov.table(.)
##
##
## ANOVA results using parents_totalpoints as the dependent variable
##
##
## Predictor SS df MS F p partial_eta2
## (Intercept) 726639.20 1 726639.20 1923.21 .000
## guardian 1690.71 2 845.36 2.24 .107 .00
## Error 1214331.63 3214 377.83
## CI_90_partial_eta2
##
## [.00, .00]
##
##
## Note: Values in square brackets indicate the bounds of the 90% confidence interval for partial eta-squared
O gráfico de barras dessa relação encontra-se abaixo. Repare que barras de erros foram introduzidas.
base_efica %>%
filter(group == "tipico" & !is.na(guardian)) %>%
ggplot(., aes(x = guardian, y = parents_totalpoints, fill = guardian)) +
geom_bar(stat = "summary") +
stat_summary(fun.data = mean_se, geom = "errorbar") +
theme_bw() +
theme(legend.position = "none")
## No summary function supplied, defaulting to `mean_se()
Os resultados de um modelo estatístico dependem da adequação dos pressupostos subjacentes a ele. Quando existe uma violação deles, é necessário transformar os dados ou alterar o modelo. Quase sempre, a alternativa - chamada de não-paramétrica - à uma ANOVA de uma via é o teste Kruskal-Wallis. Os resultados são similares à realização da ANOVA com dados ranqueados. Abaixo a demonstração:
base_efica %>%
filter(group == "tipico" & !is.na(guardian)) %>%
kruskal.test(parents_totalpoints ~ guardian, .)
##
## Kruskal-Wallis rank sum test
##
## data: parents_totalpoints by guardian
## Kruskal-Wallis chi-squared = 3.7039, df = 2, p-value = 0.1569
A associação entre duas variáveis numéricas pode ser vista em função de sua forma, magnitude e direção. Apesar dos coeficientes terem relação com cada uma dessas características, a convenção em Psicologia para ponto de corte é a seguinte [@cohen_1988]:
Caso a correlação seja até |0.1|, é tida como fraca
temp_data <- MASS::mvrnorm(n=200, mu=c(0, 0), Sigma=matrix(c(1, .1, .1, 1), nrow=2), empirical=TRUE)
ggplot(data = data.frame(temp_data), aes(x = X1, y = X2)) + geom_jitter() +
geom_smooth(method = "lm") +
geom_text(aes(label=paste("r=", cor(temp_data)[2])),
x=-Inf, y=Inf, hjust=-0.2, vjust=1.2)
Caso a correlação seja superior ou igual a |0.3|, é tida como moderada
temp_data <- MASS::mvrnorm(n=200, mu=c(0, 0), Sigma=matrix(c(1, .3, .3, 1), nrow=2), empirical=TRUE)
ggplot(data = data.frame(temp_data), aes(x = X1, y = X2)) + geom_jitter() +
geom_smooth(method = "lm") +
geom_text(aes(label=paste("r=", cor(temp_data)[2])),
x=-Inf, y=Inf, hjust=-0.2, vjust=1.2)
Caso a correlação seja superior ou igual a |0.5|, é tida como forte
temp_data <- MASS::mvrnorm(n=200, mu=c(0, 0), Sigma=matrix(c(1, .5, .5, 1), nrow=2), empirical=TRUE)
ggplot(data = data.frame(temp_data), aes(x = X1, y = X2)) + geom_jitter() +
geom_smooth(method = "lm") +
geom_text(aes(label=paste("r=", cor(temp_data)[2])),
x=-Inf, y=Inf, hjust=-0.2, vjust=1.2)
temp_data <- MASS::mvrnorm(n=200, mu=c(0, 0), Sigma=matrix(c(1, .1, .1, 1), nrow=2), empirical=TRUE) %>% data.frame()
temp_data <- temp_data %>%
add_row(., X1 = 11, X2 = 12)
ggplot(data = temp_data, aes(x = X1, y = X2)) + geom_jitter() +
geom_smooth(method = "lm") +
geom_text(aes(label=paste("r=", round(cor(temp_data)[2],1))),
x=-Inf, y=Inf, hjust=-0.2, vjust=1.2)
O Coeficiente de correlação produto-momento de Pearson é utilizado para variáveis contínuas e apresenta como duas variáveis se relacionam linearmente, tal como apresentado no resultado abaixo.
cor.test(base_efica$parents_totalpoints, base_efica$teachers_totalpoints)
##
## Pearson's product-moment correlation
##
## data: base_efica$parents_totalpoints and base_efica$teachers_totalpoints
## t = 24.102, df = 3447, p-value < 2.2e-16
## alternative hypothesis: true correlation is not equal to 0
## 95 percent confidence interval:
## 0.3508413 0.4079745
## sample estimates:
## cor
## 0.37977
O gráfico de dispersão apresenta essa condição.
ggplot(base_efica, aes(parents_totalpoints, teachers_totalpoints)) +
geom_jitter() +
theme_bw()
Quando a relação não é linear, mas preserva uma monotonicidade, a correlação de Spearman é mais indicada. Isso é muito frequente entre itens de um instrumento psicológico.
cor.test(base_efica$parents_totalpoints, base_efica$teachers_totalpoints, method = "spearman")
## Warning in cor.test.default(base_efica$parents_totalpoints,
## base_efica$teachers_totalpoints, : Cannot compute exact p-value with ties
##
## Spearman's rank correlation rho
##
## data: base_efica$parents_totalpoints and base_efica$teachers_totalpoints
## S = 4369458850, p-value < 2.2e-16
## alternative hypothesis: true rho is not equal to 0
## sample estimates:
## rho
## 0.3610022
Empiricamente, os resultados são bastante similares. Analiticamente, o rho de Spearman é virtualmnente similar à correlação de Pearson com dados ranqueados.
cor.test(rank(base_efica$parents_totalpoints), rank(base_efica$teachers_totalpoints), method = "pearson")
##
## Pearson's product-moment correlation
##
## data: rank(base_efica$parents_totalpoints) and rank(base_efica$teachers_totalpoints)
## t = 22.727, df = 3447, p-value < 2.2e-16
## alternative hypothesis: true correlation is not equal to 0
## 95 percent confidence interval:
## 0.3316222 0.3896827
## sample estimates:
## cor
## 0.3610022
A imagem abaixo foi retirada deste site e pode ser um bom recurso para verificar essa afirmativa.
coeficientes de correlação
Pontos importantes:
É também possível ‘descontar’, ‘controlar’ o efeito de uma terceira variável em uma análise correlacional. Dá-se o nome de ‘correlação parcial’ quando se faz isso e a imagem a seguir apresenta o conceito.
correlação parcial
Por exemplo, para verificar a correlação entre a pontuação de pais (parents_totalpoints) e professores (teachers_totalpoints), controlando pela idade (age) do participante:
ppcor::pcor.test(x = base_efica$parents_totalpoints,
y = base_efica$teachers_totalpoints,
z = base_efica$age, method = "pearson")
É fundamental lembrar: caso a estimativa da correlação parcial seja maior do que o efeito bruto, trata-se de um efeito de supressão. Caso a estimativa seja menor, trata-se de um efeito de atenuamento ou explicativo. O resultado é identico à estimativa padronizada de uma regressão linear múltipla, graficamente demonstrado abaixo.
visreg::visreg2d(
lm(teachers_totalpoints ~ parents_totalpoints + age, base_efica),
"parents_totalpoints", "age", plot.type="persp")
O tópico de correlação é muito importante para análises psicométricas e isso terá uma grande valia quando conceitos sobre fidedignidade e validade forem apresentados. Em momento posterior, matrizes tetracóricas e policóricas serão vistas para tal finalidade.
É importante lembrar que um resultado correlacional não expressa causalidade e só tem sentido em contextos de estacionariedade.
A Regressão linear pode ser simples ou múltipla. Quando simples, há apenas uma VI (por tradição mas não necessariamente, contínua). Quando mútlipla, há varias variáveis independentes. O delineamento pode ser aditivo (x1 + x2) ou multiplicativo (x1 * x2). A resposta principal que um modelo de regressão deseja responder é como predizer os valores de uma variável em função de outra. Refraseando um pouco, isso é similar a responder o quanto a variabilidade de uma variável depende/pode ser atribuída/explicada pela variabilidade de outra (s).
Importante notar que os outros modelos vistos até aqui são casos particulares de modelos de regressão. Talvez se a docência fosse mais atrelada à modelagem matemática, em vez de seleção de testes estatísticos, seria mais fácil perceber o como todos os resultados são baseados em modelos probabilísticos (e não às teorias psicológicas subjacenets), além do amplo relacionamento entre os testes estatísticos e o pouco fundamento de algumas análises super complexas e quase nunca interpretáveis (imagine uma ANOVA fatorial de 4 vias)
bem como ter atenção aos principais pressupostos dos modelos de regressão, que são i. linearidade do relacionamento entre as variáveis, e que os reíduos tem ii. média zero, iii. variância constante, são iv. independentes e v. normalmente distribuídos.
library(olsrr)
##
## Attaching package: 'olsrr'
## The following object is masked from 'package:datasets':
##
## rivers
lm(parents_totalpoints ~ age, base_efica) %>%
ols_regress()
## Model Summary
## ---------------------------------------------------------------
## R 0.066 RMSE 20.450
## R-Squared 0.004 Coef. Var 45.461
## Adj. R-Squared 0.004 MSE 418.212
## Pred R-Squared 0.003 MAE 16.564
## ---------------------------------------------------------------
## RMSE: Root Mean Square Error
## MSE: Mean Square Error
## MAE: Mean Absolute Error
##
## ANOVA
## -------------------------------------------------------------------------
## Sum of
## Squares DF Mean Square F Sig.
## -------------------------------------------------------------------------
## Regression 6343.805 1 6343.805 15.169 1e-04
## Residual 1441575.286 3447 418.212
## Total 1447919.091 3448
## -------------------------------------------------------------------------
##
## Parameter Estimates
## ----------------------------------------------------------------------------------------
## model Beta Std. Error Std. Beta t Sig lower upper
## ----------------------------------------------------------------------------------------
## (Intercept) 49.265 1.153 42.727 0.000 47.004 51.525
## age -0.525 0.135 -0.066 -3.895 0.000 -0.789 -0.261
## ----------------------------------------------------------------------------------------
Quando existe apenas uma variável no modelo, o gráfico é virtualmente identico ao gráfico correlacional, a excetuar pela reta de regressão amostral.
library(effects)
## Loading required package: carData
## Registered S3 methods overwritten by 'lme4':
## method from
## cooks.distance.influence.merMod car
## influence.merMod car
## dfbeta.influence.merMod car
## dfbetas.influence.merMod car
## lattice theme set by effectsTheme()
## See ?effectsTheme for details.
plot(allEffects(lm(parents_totalpoints ~ age, base_efica)))
O coeficiente de determinação (R2) é uma razão entre a SQR (Soma dos quadrados da regressão) pela SQT (soma dos quadrados total) ou 1-SQE/SQT.
Tecnicamente, esses modelos são generalizações dos modelos de regressão e, portanto, tem as mesmas exigências em seus pressupostos. A modelagem de mediação e moderação ocorre quando há, ao menos, duas variáveis independentes e uma variável dependente, em que uma das VIs poderia ser considerada como uma terceira variável que devesse ser controlada, seja porque ela é confundidora, estranha ou interveniente à pesquisa.
Como a distinção conceitual entre ambos os modelos é as vezes mais densa do que sua distinção matemática – que é fácil – a imagem abaixo apresenta o mais simples de um modelo de mediação.
Modelo de mediação
Nele, tecnicamente, a variável X gera efeito direto (c’) em Y, como um efeito indireto (a * b) nele (passando por M). X deve vir antes de M e não o contrário, como pontua Hayes (2013, p. 87), mas há uma discussão intensa sobre o delineamento de pesquisa para realização de um modelo de mediação.
Exemplos poderiam ser:
A relação entre o nível socio-econômico (A e B vs C, D e E) de um participante (X) e a avaliação que os professores fazem dele (Y) é mediada pela avaliação que os pais fazem dele (M) (é um exemplo muito ruim, já que o nível socioeconômico deveria ter a capacidade de influenciar a avaliaçao dos pais. Serve apenas para fins didáticos)
A intensidade do consumo de álcool (X) e sua relação com pensamentos suicidas (Y) é mediada por estados depressivos (M) (o álcool influencia e possibilita ocorrer a depressão)
o quanto a prática de atividade física intensa (X) influencia a tomada de decisão econômica (Y) em uma relação mediada por excitação (liberação de dopamina) (M)
Qual é o efeito da idade (M) em gerar condições clínicas (problemas visuais, por exemplo) (M) e acidentes de trânsito (Y)
O primeiro exemplo (bastante ambíguo, concordo) encontra-se abaixo:
library(psych)
base_efica %>%
mutate(ses_ab = if_else(socioeconomic == "A" | socioeconomic == "B",1,0)) %>%
#mutate(sex = if_else(sex == "Female",1,0)) %>%
mediate(teachers_totalpoints ~ ses_ab + (parents_totalpoints), data = .) #<- mediation line
##
## Mediation/Moderation Analysis
## Call: mediate(y = teachers_totalpoints ~ ses_ab + (parents_totalpoints),
## data = .)
##
## The DV (Y) was teachers_totalpoints . The IV (X) was ses_ab . The mediating variable(s) = parents_totalpoints .
##
## Total effect(c) of ses_ab on teachers_totalpoints = -1.61 S.E. = 0.86 t = -1.87 df= 3447 with p = 0.062
## Direct effect (c') of ses_ab on teachers_totalpoints removing parents_totalpoints = -1.66 S.E. = 0.8 t = -2.08 df= 3446 with p = 0.038
## Indirect effect (ab) of ses_ab on teachers_totalpoints through parents_totalpoints = 0.05
## Mean bootstrapped indirect effect = 0.05 with standard error = 0.32 Lower CI = -0.58 Upper CI = 0.68
## R = 0.38 R2 = 0.15 F = 292.9 on 2 and 3446 DF p-value: 3.3e-118
##
## To see the longer output, specify short = FALSE in the print statement or ask for the summary
Talvez uma breve explicação seja útil. Os valores de c’e b são os mesmos de uma regressão linear múltipla da regressão do ‘teachers_totalpoints’ em ‘ses_ab’ e ‘parents_totalpoints’. O valor do a é o valor de uma regressão linear simples do ‘parents_totalpoints’ em ‘ses_ab’. O efeito indireto (do ‘ses_ab’ passando por ‘parents_totalpoints’ no ‘teachers_totalpoint’) é o produto a,b. Nesse caso, 0.11 * 0.44, que resulta em 0.05 arredondado.
Uma série de discussões começam a surgir também neste ponto. Como inspecionar o modelo, como testar diferentes níveis da mediação, como controlar por possíveis efeitos espúrios, etc. Esses debates são importantes e o livro do Hayes é um bom caminho, apesar de ser longo, massante e, pelo menos para mim, confuso.
Já a imagem a seguir apresenta o caso mais simples de um modelo de moderação. Nos modelos de moderação, o tamanho, força ou o sinal do efeito de X em Y depende de M. Repare que agora o M tem papel um papel fundamental.
Modelo de moderação
Matematicamente, ele é a mesma coisa que uma ANOVA fatorial. Nesse caso, uma ANOVA fatorial de 2-vias.
Modelo de moderação
Discussão a parte, como exemplo, imagina que se deseja investigar se o efeito da idade da criança nos resultados da avaliação que o professor faz dela depende de seu sexo (M ou F). Outros exmeplos poderiam ser os seguintes:
Será que a relação entre neuroticismo (X) e depressão (Y) dependente de uma ansiedade de estado (M) ?
Será que a relação entre variáveis demográficas de uma criança (Sexo, por exemplo) e suas atitudes e crenças sociais (Y) é moderada pela frequência que ela assiste televisão (M) ?
Como a idade da pessoa (M) modera a relação entre o sexo (M) e o estilo de condução veicular (Y). Aqui assume-se que há uma relação entre sexo e condução veicular que é moderada pela idade.
Tecnicamente, essa moderação é feita estimando um \(\beta\) para o produto entre as variáveis independentes, tal como expresso abaixo.
lm(teachers_totalpoints ~ age * sex, data = base_efica) %>%
apa.reg.table(.)
##
##
## Regression results using teachers_totalpoints as the criterion
##
##
## Predictor b b_95%_CI sr2 sr2_95%_CI Fit
## (Intercept) 24.79** [21.14, 28.45]
## age -0.30 [-0.73, 0.12] .00 [-.00, .00]
## sexMale -1.26 [-6.37, 3.85] .00 [-.00, .00]
## age:sexMale 1.36** [0.76, 1.96] .01 [.00, .01]
## R2 = .050**
## 95% CI[.04,.06]
##
##
## Note. A significant b-weight indicates the semi-partial correlation is also significant.
## b represents unstandardized regression weights.
## sr2 represents the semi-partial correlation squared.
## Square brackets are used to enclose the lower and upper limits of a confidence interval.
## * indicates p < .05. ** indicates p < .01.
##
O gráfico é muito informativo
ggplot(base_efica, aes(x=age, y = teachers_totalpoints, color = sex)) +
geom_smooth(method="lm") +
theme_bw()
E particularmente, o pacote effects também tem uma enorme utilidade neste gráfico:
plot(allEffects(lm(teachers_totalpoints ~ age * sex, data = base_efica)),
multiline=TRUE,
#ci.style="bars",
ci.style="bands")
Acredito que todo livro em português (brasileiro) de Psicometria (e estatística multivariada, no geral) tenha traduzido o termo “Reliability” como fidedignidade. Apesar de não conhecer o background cultural de todos os leitores deste capítulo, atrevo-me a falar que quase ninguém utiliza essa palavra cotidianamente, principalmente se o ambiente de conversa for fora do acadêmico. Dessa forma, apesar do termo Fidedignidade ser amplamente utilizado, não necessariamente ele tem um sentido ou uma definição imediata, solicitando que a gente dê outros passos até conseguir desvelar esse tema e a utilidade que ele apresenta na Psicometria. Primeiro, uma definição longa, ampla, extensiva e que pode servir como um coringa, já que ela fala sobre tudo, sem ser específica em área alguma.
A confiabilidade – ou fidedignidade – é a capacidade em reproduzir um resultado de forma consistente no tempo e no espaço, ou a partir de observadores diferentes, indicando aspectos sobre coerência, precisão, estabilidade, equivalência e homogeneidade. Trata-se de um dos critérios principais de qualidade de um instrumento (Terwee et al., 2007)
Posto isso, agora uma discussão mais elaborada que toca na Metrologia, Educação, Saúde e a própria Psicometria, a partir da Teoria Clássica dos Testes. Como já exposto, a Psicometria pode ser entendida como uma área de interface (ou ponte) entre diferentes campos científicos. Se por um lado isso pode proporcionar grande interação acadêmica, por outro, alguns conceitos-chaves acabam por terem definições apenas parcialmente convergentes, justamente pela dependência à área base em que o tema é discutido.
Considerando aspectos instrumentais, a Psicometria é uma disciplina dentro do conjunto da Metrologia. Dessa forma (e neste contexto), a fidedginidade refere-se exclusivamente a características ou propriedades do instrumento de medida. Neste contexto, sua tradução é exatidão ou precisão. Como é também amplamente sabido que processos de mensuração geram erros (aleatórios ou não), a análise desses erros poderá expor sobre a estabilidade (stability), viés (bias), linearidade (linearity), repetibilidade (repeatability) e reprodutibilidade (reproducibility) dos resultados. É justamente pela proximidade da Psicometria à Metrologia, que o tema da Fidedignidade é apresentado por analogia a um jogo de dardos.
já considerando a íntima relação que o desenvolvimento de instrumentos têm com teorias psicológicas e condições educacionais, a ideia por detrás de fidedignidade é expressa pelo grau de consistência entre um instrumento e seus resultados. Agora, este conceito pode ser traduzido como “confiabilidade” e, apesar de associado à precisão (na verdade, precisão é o complemento da confiança), traz à cena condições de consistência entre os itens, entre diferentes examinadores e entre diferentes intervalos de tempo.
Bom, é necessário dar um passo mais ao fundo deste oceano a partir da Teoria Clássica dos Testes. Apesar de considerar que o que vou expressar agora pode levantar alguma polêmica, a maneira pela qual Furr expressa a fidedignidade de um instrumento tem plena lógica. Uma vez que os testes psicológicos são construídos para que seus resultados reflitam de maneira acurada a variabilidade do fenômeno psicológico, a fidedignidade de um teste reflete a extensão que as diferenças nos escores dos respondentes ocorrem em função de suas diferenças psicológicas em oposição de erros de medidas.
Finalmente, pelo guia de autoridade que a AERA representa, atualmente não haveria problema em alocar as discussões sobre Fidedignidade (seja entendida como medir sem erros, seja relacionada com uma consistência entre os itens ou avaliadores em um ou mais momentos) como uma etapa dos estudos de validade sobre a estrutura interna de um instrumento, junto com a dimensionalidade e a invariância da medida.
“Superado” alguns debates, é possível quebrar pragmaticamente e analiticamente as técnicas estatísticas para acessar a Fidedignidade de um instrumento por medidas associadas à ‘consistência’ entre os itens, entre avaliadores e entre as metades de um instrumentos, bem como por medidas que acessam a ‘estabilidade’ dos resultados por análises temporais. Uma vez que Fidedignidade se trata de um ‘grau’, todas as análises buscam identificar o quanto o erro distorce os resultados. A imagem a seguir visa fazer esta distinção:
É possível agora entender que os três principais aspectos sobre fidedignidade são (i) medir sem erro, (ii) de forma consistente e (iii) estável no tempo.
Aspectos correlacionais já foram expostos acima. No entanto, a este momento torna-se necessário ampliar um pouco para que algumas análises que serão expostas façam sentido. A técnica correlacional depende da escala entre as variáveis (aqui, entendido tanto como nível de medida, como quantidade de informação numérica) como da natureza da variavel (observada ou latente). Pela literatura que conheço, a forma mais palatável de apresentar esta relação foi feita no artigo de 1982 de Olsson, Drasgow e Dorans.
Tipos de Correlação
Há um bookdown interessante sobre este tópico e ele pode ser acessado aqui, bem como um tutorial, que pode ser acessado aqui. Posto isso, algumas análises serão realizadas para mostrar algumas características.Para redução de intensidade computacional, apenas os 5 primeiros itens serão trabalhados.
Quando as variáveis são contínuas, emprega-se o Produto Momento de Pearson. Por exemplo, a correlação entre os itens fica:
base_efica %>%
select(y1:y5) %>%
corrr::correlate()
##
## Correlation method: 'pearson'
## Missing treated using: 'pairwise.complete.obs'
O teste inferencial para o coeficiente de correlação pode ser feito. Por exemplo, se há o interesse em verificar se a correlação entre y1 e y2, temos:
cor.test(base_efica$y1, base_efica$y2)
##
## Pearson's product-moment correlation
##
## data: base_efica$y1 and base_efica$y2
## t = 25.487, df = 3408, p-value < 2.2e-16
## alternative hypothesis: true correlation is not equal to 0
## 95 percent confidence interval:
## 0.3715434 0.4279379
## sample estimates:
## cor
## 0.4001193
r se distribui numa t-2 graus de liberdade, assumindo normalidade bivariada. Assim,
\(H_0: \rho=0 \\ H_0: \rho \neq 0 \\ \alpha = 0.05\) \(t=r\sqrt{\frac{n-2}{1-r^2}}\). Como temos 3410, isso explica o grau de liberdade (df = 3408).
Caso se assuma que as variáveis são ordinais (apesar de contínuas), ou que os dados estão ranqueados e é necessário uma proteção aos outliers, a correlação de Spearman é mais indicada. Essa informação não está na tabela anterior. Dessa maneira, temos:
base_efica %>%
select(y1:y5) %>%
corrr::correlate(method = "spearman")
##
## Correlation method: 'spearman'
## Missing treated using: 'pairwise.complete.obs'
Repare que a correlação foi algo atenuada.
Quando se lida com variáveis latentes e as variáveis manifestas sejam ordinais é possível (e desejável) realizar correlações tetracóricas ou policóricas. Se as variáveis apresentarem dois valores (variáveis binárias ou dicotômicas), pode-se utilizar a correlação tetracórica. Caso haja mais níveis, pode-se utilizar a correlação policórica. Ambas as técnicas foram desenvolvidas também por Pearson e sua computação manual é bem mais densa do que a Produto momento.
A função ‘tetrachoric’ do pacote psych está abaixo. A demontração do código abaixo é apenas pedagógica, já que as variáveis acessadas não são dicotômicas e por isso, o pacote psych não iria realizar essa análise.
#base_efica %>%
# select(y1:y5) %>%
# tetrachoric(.)
Esse mesmo pacote tem a função ‘polychoric’, que realiza a correlação policórica entre as variáveis.
base_efica %>%
select(y1:y5) %>%
polychoric(.)
## Call: polychoric(x = .)
## Polychoric correlations
## y1 y2 y3 y4 y5
## y1 1.00
## y2 0.50 1.00
## y3 0.39 0.41 1.00
## y4 0.41 0.44 0.62 1.00
## y5 0.38 0.49 0.41 0.54 1.00
##
## with tau of
## 1 2
## y1 -0.141 1.1
## y2 -0.161 1.3
## y3 -0.278 1.1
## y4 0.045 1.2
## y5 0.305 1.5
Repare que, a esse momento, o coeficiente tornou-se maior (inclusive, do que o produto momento de Pearson). Será possível verificar posteriormente que as análises realizadas em matrizes tetracóricas ou policóricas apresentam resultados distintos (maiores, normalmente) às realizadas em uma matriz gerada pela correlação produto-momento.
[Em processo de ajuste] Todas as análises clássicas (TCT) assumem:
\(X = \tau + \varepsilon\) O escore observado (X) por uma pessoa é o somatório dos itens (que gera o Escore verdadeiro) mais uma parcela de erro
\(E[X] = \tau\) O valor esperado do Escore Observado (X) é o escore verdadeiro. Ou seja, é não-viesado.
\(\rho(\tau,\varepsilon)=0\) A correlação entre o escore verdadeiro (\(\tau\)) e o erro (\(\varepsilon\)) é zero
\(\rho({\varepsilon_{1}, \varepsilon_{2}}) = 0\) Os resíduos (erros) entre dois testes diferentes feitos é descorrelatado
Um aspecto que julgo importante em análises psicométricas é ter o entendimento da base analítica que gera os resultados. Nem sempre isso é possível, mas para algumas análises de consistência interna, isso pode ser feito.
Este tipo de fidedignidade é relacionado à estabilidade da medida. Existem pressupostos para realização desta técnica. Entre eles,
(i) Não há diferença entre o escore real entre os participantes
(ii) A variância residual (erro) é igual entre as duas ocasiões
Em relação às análises, técnicas correlacionais costumam ser feitas e elas costumam analisar individualmente em cada um dos itens e/ou o total obtido. A utilização da Correlação de Spearman é mais adequada, mas apesar disso, não é infrequente verificar que a Correlação Produto-Momento de Pearson. Também se encontra na literatura testes inferenciais de médias por medidas repetidas.
Pontos de corte são relacionados à finalidade do instrumento, além do tempo entre as aplicações. Para técnicas correlacionais, valores de r = 0.7 ou superiores são necessários (Kline, 1998), mas valores menores não devem ser entendidos como restritivos. Já para técnicas de diferenças entre médias (ranqueadas ou não), valores não significativos são bem vindos.
Entre as características positivas desta técnica, ela é intuitiva e feita em todas as áreas que desenvolvem instrumentos (Kline, 1998, p.29). É bastante natural que se uma medida (instrumento) é estável ao longo do tempo, os resultados sejam correlacionados. Em constraste, é fácil perceber que os pressupostos expostos acima sejam mais facilmente associados a funções como inteligência e personalidade, mas amplamente problemáticos em instrumentos que visam acessar aspectos afetivos ou ansiosos.
Como exemplo, vou usar agora a base do Matsubara et al., 2019. Abaixo, o primeiro item da escala é correlacionado nas duas medidas temporais utilizadas.
base_carprofeno %>%
select(w4_1,w0_1) %>%
cor(.,use="complete.obs", method="spearman")
## w4_1 w0_1
## w4_1 1.0000000 0.5043351
## w0_1 0.5043351 1.0000000
Por sua vez, a rotina a seguir apresenta a correlação entre todos os itens no primeiro e no segundo momento.
#calcular coeficiente de correlacao
cor_raw <- base_carprofeno %>%
select(w4_1:w4_11, w0_1: w0_11) %>% # Pegar os itens de interesse
{Hmisc::rcorr(as.matrix(.), type = "spearman")$r} %>% #trazer apenas o coef. correlacao $r
data.frame(.) %>% #colocar em dataframe para manipulacao
select(.,-starts_with("w4")) %>% #Vou ficar apenas com os itens da primeira aplicação (11 itens)
as.matrix() %>% # Colocar em matriz para pegar diagonais
diag() %>% #Pegar os diagonais
cbind.data.frame()
#Pegar valor de p
cor_p <- base_carprofeno %>%
select(w4_1:w4_11, w0_1: w0_11) %>% # Pegar os itens de interesse
{Hmisc::rcorr(as.matrix(.), type = "spearman")$P} %>% #trazer apenas o coef. correlacao $r
data.frame(.) %>% #colocar em dataframe para manipulacao
select(.,-starts_with("w4")) %>% #Vou ficar apenas com os itens da primeira aplicação (11 itens)
as.matrix() %>% # Colocar em matriz para pegar diagonais
diag() %>% #Pegar os diagonais
cbind.data.frame()
#Unir ambas as bases (provisorias)
bind_cols(c("coeficiente"=cor_raw, "p_valor"=cor_p)) %>%
rownames_to_column(., "item") %>%
kable(digits = 2) %>% # Aprsentacao
kable_styling(bootstrap_options = c("striped", "hover", "condensed"))
| item | coeficiente.. | p_valor.. |
|---|---|---|
| 1 | 0.50 | 0 |
| 2 | 0.72 | 0 |
| 3 | 0.83 | 0 |
| 4 | 0.51 | 0 |
| 5 | 0.84 | 0 |
| 6 | 0.81 | 0 |
| 7 | 0.70 | 0 |
| 8 | 0.58 | 0 |
| 9 | 0.55 | 0 |
| 10 | 0.64 | 0 |
| 11 | 0.62 | 0 |
# Remover bases provisorias
rm(cor_raw, cor_p)
Agora há a correlação entre os resultados totais obtidos em ambas as aplicações.
cor.test(base_carprofeno$total_w4, base_carprofeno$total_w0)
##
## Pearson's product-moment correlation
##
## data: base_carprofeno$total_w4 and base_carprofeno$total_w0
## t = 11.506, df = 38, p-value = 6.016e-14
## alternative hypothesis: true correlation is not equal to 0
## 95 percent confidence interval:
## 0.7856992 0.9359723
## sample estimates:
## cor
## 0.8814671
Conforme explicitado, eventualmente, alguns autores também entendem que a diferença entre os dois resultados obtidos é também uma forma de fidedignidade relacionada à estabilidada da medida. Nesse sentido, apesar de no artigo nós não termos feito isso, apresentamos uma tabela com as diferenças das médias entre as semanas que antecediam o tratamento, que encontra-se abaixo:
base_carprofeno %>%
select(starts_with("w4"), starts_with("w0")) %>%
pivot_longer(names(.),names_to=c('g0','g1'),
names_pattern= '^(w.*)_(.*)') %>% #convert to long format
group_by(g0,g1) %>% # group by g0 = (w0 or w1) and g1=(1,2,3)
summarise(value=mean(value,na.rm=TRUE)) %>% # get mean by group
pivot_wider(names_from=g0,values_from=value) %>% # pivot to get three lines
mutate(dif = w4-w0) %>% # difference of mean by group
select(g1,dif) %>% # keep only useful columns
pivot_wider(names_from=g1,names_prefix='dif_',values_from=dif)
#via PURRR
#base_carprofeno %>%
# select(starts_with("w4"), starts_with("w0")) %>%
# split.default((seq_along(.)-1) %/% (ncol(.)/2)) %>%
# pmap_dbl(~ mean(.x, na.rm = TRUE) - mean(.y, na.rm = TRUE))
E caso tivéssemos interesse em computar as diferenças entre os totais, um teste T pareado talvez fosse candidato para isso. Valores de P não significativos seriam necessários para evidenciar que ambos os resultados não são significativamente diferentes.
base_carprofeno %>%
mutate(soma_t1 = rowSums(select(.,w4_1:w4_11), na.rm = T),
soma_t2 = rowSums(select(.,w0_1:w0_11), na.rm = T)) %>%
t.test(.$soma_t1, .$soma_t2, paired = T, data =.)
##
## Paired t-test
##
## data: .$soma_t1 and .$soma_t2
## t = 1.3449, df = 55, p-value = 0.1842
## alternative hypothesis: true difference in means is not equal to 0
## 95 percent confidence interval:
## -0.3062873 1.5562873
## sample estimates:
## mean of the differences
## 0.625
Este tipo de fidedignidade se relaciona com duas versões de um mesmo teste, sendo aplicado ao mesmo tempo, para as mesmas pessoas. Esta técnica assume que:
(i) O escore verdadeiro do participante para um teste (uma forma específica do teste) é exatamente igual ao seu escore no outro teste (na segunda forma do teste). Isso é a mesma coisa que falar que ambos os testes/as formas mensaram o mesmo construto, o que é entendido como equivalência tau.
(ii) Ambos os testes/formas paralelas tem o mesmo nível de variância residual.
Esta técnica traz consigo uma lógica relacioanada com segurança dos dados e talvez essa seja a maior vantagem. É também adequado mencionar que a variabilidade em função de múltiplas testagens é elimitada. Entretanto, pragmaticamente fazer formas paralelas impõe um trabalho exaustivo e, talvez por isso, a frequência deste tipo de modelagem seja baixa.
Não tenho dados exclusivamente relacionados a essa técnica e os artigos que nosso grupo têm sobre redução instrumental é o mais próximo que, a este momento, consigo chegar em exemplos.
Este tipo de fidedigidade é feita pela divisão do instrumento em duas metades iguais. Pragmaticamente, isso é similar a ter duas Formas paralelas (acima exposto), mas sem ter a necessidade de criar dois instrumentos.
Analiticamente, é necessário dividir o instrumento em duas metades, criar um escore geral para cada metade, correlacionar o resultado da metade 1 com a metade 2 e, em seguida, fazer um ajuste, dado pela equação Spearman-Brown split-half (também chamada de Spearman-Brown Prophency), abaixo exposta.
\(R_{xx}=\frac{2r_{hh}}{1+r_{hh}}\)
vou usar agora a base do Arruda et al., 2019 para demonstração:
base_efica %>%
select(starts_with("y")) %>%
splitHalf()
## Split half reliabilities
## Call: splitHalf(r = .)
##
## Maximum split half reliability (lambda 4) = 0.96
## Guttman lambda 6 = 0.96
## Average split half reliability = 0.95
## Guttman lambda 3 (alpha) = 0.95
## Minimum split half reliability (beta) = 0.91
## Average interitem r = 0.23 with median = 0.23
A literatura também traz o termo “Confiabilidade / Consistência interavaliadores” (inter-rater) para este tópico. Sintetizando, quando dois ou mais avaliadores observam e avaliam um determinado fenômeno psicológico como por, exemplo, aspectos comportamentais, do desenvolvimento infantil ou características de personalidade, a consistência / ou concordância entre os juízes é uma das formas de fidedignidade. Se os juízes forem consistentes, se supõe que a fidedignidade será alta e, caso o oposto seja o encontrado, estima-se uma baixa consistência da medida.
As técnicas para avaliação da consistência entre avaliadores dependem de condições como o número de juízes, a escala de medida utilizada (nominal, ordinal, etc) e a finalidade é obter os valores absolutos ou as diferenças relativas entre os participantes.
Em uma pesquisa em que sou co-autor [@blagica, 2018], tivemos análises iniciais durante a primeira fase de execução em que pais e professores avaliaram o desenvolvimento infantil de crianças entre 12 (1 ano) e 60 meses (5 anos). Como pais e professores avaliaram a mesma criança, com o mesmo instrumento e, virtualmente, ao mesmo momento, optamos por fazer a correlação de pearson entre ambos os resultados.
library(readxl)
base_icc <- read_excel("C:/Users/luisf/Dropbox/Puc-Rio/Notas de Aula/Aulas ANOVA/EAD/Psicometria no R/base_icc.xlsx")
base_icc <- janitor::clean_names(base_icc)
cor.test(base_icc$asqgm_total_20, base_icc$asqgm_total_39)
##
## Pearson's product-moment correlation
##
## data: base_icc$asqgm_total_20 and base_icc$asqgm_total_39
## t = 6.0515, df = 46, p-value = 2.424e-07
## alternative hypothesis: true correlation is not equal to 0
## 95 percent confidence interval:
## 0.4706583 0.7987914
## sample estimates:
## cor
## 0.6657606
A correlação foi significativa (p < 0.01), proporcional e forte (r = 0.66).
Caso tivéssemos interesse em fazer o ICC, também seria possível. É importante atentar que ICC não significa uma única análise, mas uma classe de análises que são quebradas em função da quantidade de avaliadores e intenção de uso da métrica (valores absolutos ou diferenças). O pacote psych apresenta uma função específica para isso.
base_icc %>%
select(asqgm_total_20,asqgm_total_39) %>%
ICC(.)
## Warning in checkConv(attr(opt, "derivs"), opt$par, ctrl =
## control$checkConv, : Model failed to converge with max|grad| = 0.0231553
## (tol = 0.002, component 1)
## Call: ICC(x = .)
##
## Intraclass correlation coefficients
## type ICC F df1 df2 p lower bound
## Single_raters_absolute ICC1 0.66 4.9 47 48 8.1e-08 0.47
## Single_random_raters ICC2 0.66 4.9 47 47 1.0e-07 0.47
## Single_fixed_raters ICC3 0.66 4.9 47 47 1.0e-07 0.47
## Average_raters_absolute ICC1k 0.80 4.9 47 48 8.1e-08 0.64
## Average_random_raters ICC2k 0.80 4.9 47 47 1.0e-07 0.64
## Average_fixed_raters ICC3k 0.80 4.9 47 47 1.0e-07 0.64
## upper bound
## Single_raters_absolute 0.80
## Single_random_raters 0.80
## Single_fixed_raters 0.80
## Average_raters_absolute 0.89
## Average_random_raters 0.89
## Average_fixed_raters 0.89
##
## Number of subjects = 48 Number of Judges = 2
Tecnicamente, ICC e ANOVA são similares, havendo apenas uma questão de como particionar a variância para convergir um resultado ao outro.
base_icc %>%
select(id, asqgm_total_20, asqgm_total_39) %>%
rename(parents = asqgm_total_20,
teachers = asqgm_total_39) %>%
pivot_longer(., cols = -id, names_to = "rater") %>%
lm(value ~ factor(id),.) %>%
anova(.)
Este tipo de fidedignidade é relacionado com a consistência interna da medida e pode ser avaliada de algumas formas. Em relação a indicadores da TCT, encontra-se a medida da (i) correlação entre os itens do instrumento, a (ii) correlação entre os itens e o (pseudo) total obtido, a (iii) correlação entre as duas metades iguais do instrumento e (vi) coeficientes gerais, como o Alfa de Cronbach (seja bruto ou padronizado). Apesar de todas as técnicas terem utilidade quando o pesquisador deseja verificar a manutenção (ou retirada) de um item específico do instrumento, frequentemente é somente pelo Alfa de Cronbach que isso é realizado.
Existem claras vantagens neste tipo de análise. Entre elas: só é necessário que o grupo de examinandos passe pelo mesmo instrumento uma única vez no tempo. Isso elimina as variações de erros decorrentes de alterações ocorridas durante o intervalo entre as aplicações. Analiticamente, as análises são simples e não costuma haver muita discussão acerca da utilidade dos resultados.
A correlação inter-item (ou entre os itens da escala) visa examinar o grau de relacionamento não-redudante médio entre um item da escala e o restante. Os resultados podem ser utilizados para indicar redundância entre o conteúdo dos itens. Valores entre .20 e .40 sugerem uma correlação adequada (não sendo muito baixa ou alta) (Piedmont, 2014), apesar de alguns autores sugerirem valores superiores a 0.3 neste coeficiente (Hair, p. 126).
Para cálculo dessa medida, é necessário criar uma matriz de correlação entre os itens e, em seguida, verificar a média dessas correlações. Uma vez que as correlações redudantes das diagonais não são incluídas, a análise precisa retirá-las da equação, tal como feito a seguir pela função ‘correlate’ do pacote ‘corrr’.
base_efica %>%
select(starts_with("y")) %>%
corrr::correlate() %>%
select(-rowname) %>%
colMeans(na.rm = TRUE) -> inter_item
##
## Correlation method: 'pearson'
## Missing treated using: 'pairwise.complete.obs'
inter_item
## y1 y2 y3 y4 y5 y6
## 0.24705292 0.26329082 0.27211132 0.30509710 0.25087769 0.18368374
## y7 y8 y9 y10 y11 y12
## 0.25040062 0.26153123 0.20907420 0.24097413 0.22577306 0.25858349
## y13 y14 y15 y16 y17 y18
## 0.23264267 0.27829506 0.27836109 0.31516434 0.24460827 0.26919557
## y19 y20 y21 y22 y23 y24
## 0.28168445 0.23876344 0.27756991 0.21846338 0.26907478 0.26781310
## y25 y26 y27 y28 y29 y30
## 0.27711486 0.25272792 0.26575602 0.26840323 0.17266912 0.14966487
## y31 y32 y33 y34 y35 y36
## 0.23549690 0.23238317 0.15149929 0.23474043 0.23449380 0.21875307
## y37 y38 y39 y40 y41 y42
## 0.28620476 0.22138197 0.13910339 0.21294673 0.19264943 0.23702861
## y43 y44 y45 y46 y47 y48
## 0.23908528 0.28419712 0.28477942 0.25550910 0.27479646 0.26681807
## y49 y50 y51 y52 y53 y54
## 0.16379452 0.26209555 0.02823777 0.26614966 0.25429661 0.23575125
## y55 y56 y57 y58 y59 y60
## 0.22860719 0.16687879 0.21660712 0.17201520 0.27962608 0.23277123
## y61 y62 y63 y64 y65
## 0.21171203 0.27621005 0.26260663 0.07861226 0.17412543
A média desses valores gera o valor de 0.2344367, que é chamado de “Correlação entre-itens” ou “Coeficiente de correlação inter-itens” e expressa o grau de associação entre todos os itens do instrumento. Segundo os critérios expostos há pouco, até o momento tudo aparente estar ok.
Por sua vez, a correlação entre cada item e o (pseudo)Total da escala tenta generalizar a análise anterior considerando agora a relação entre cada um dos itens em específico e o total gerado pelo somatório de todos os itens que compoem a escala. Há também algumas recomendações da literatura em considerar 0.3 (Nunnally e Bernstein, 1994), ou 0.5 (Hair, 2014) como valor mínimo para cada resultado individual. Resultados inferiores a esse colocam o item em questão como um candidato à supressão.
base_efica %>%
mutate(total = rowSums(select(.,starts_with("y")), na.rm=T)) %>% #criar o total
select(total, starts_with("y")) %>% #selecionar apenas as variaveis de interesse
cor(., use="complete.obs") %>% #correlacional
subset(., TRUE, c("total")) #apresentar apenas a primeira
## total
## total 1.00000000
## y1 0.51722309
## y2 0.54732666
## y3 0.56566601
## y4 0.63196329
## y5 0.52231168
## y6 0.37645951
## y7 0.51823714
## y8 0.55444632
## y9 0.44638286
## y10 0.52122380
## y11 0.47957144
## y12 0.55962942
## y13 0.50249610
## y14 0.59487745
## y15 0.60222391
## y16 0.66181502
## y17 0.51895519
## y18 0.56850996
## y19 0.59310897
## y20 0.49603293
## y21 0.58191190
## y22 0.46796574
## y23 0.58842795
## y24 0.55899920
## y25 0.58225019
## y26 0.53738297
## y27 0.55665560
## y28 0.56388631
## y29 0.37934714
## y30 0.32636030
## y31 0.49978113
## y32 0.50289098
## y33 0.36915869
## y34 0.52862751
## y35 0.49926969
## y36 0.46790580
## y37 0.61027046
## y38 0.47905824
## y39 0.33216682
## y40 0.46458013
## y41 0.42532966
## y42 0.52071146
## y43 0.51689414
## y44 0.60485999
## y45 0.59770836
## y46 0.52025082
## y47 0.57922854
## y48 0.56004244
## y49 0.37883188
## y50 0.56443080
## y51 0.09245117
## y52 0.56988426
## y53 0.53818128
## y54 0.51270413
## y55 0.49444321
## y56 0.36455122
## y57 0.45404303
## y58 0.37898510
## y59 0.58986903
## y60 0.51221522
## y61 0.45819816
## y62 0.57546835
## y63 0.56106151
## y64 0.18593371
## y65 0.38747292
O Coeficiente Alfa é uma razão entre a variabilidade dos itens pela variabilidade total do instrumento: \(\alpha =\frac{K}{K-1} ( 1-\frac{\sum_{i=1}^{K}\sigma^2_{Y_i}}{\sigma^2\sum_{i=1}^{K}{Yt}}\)
Repare que: \(\sum_{i=1}^{K}\sigma^2_{Y_i}\): Somtório da variância de cada item \(\sigma^2\sum_{i=1}^{K}{Yt}\): Variância do somatório do total de cada participante (ou variância total do teste) \((1-\frac{\sum_{i=1}^{K}\sigma^2_{Y_i}}{\sigma^2\sum_{i=1}^{K}{Yt}}\) é análogo ao R2 de uma regressão
Tenha em mente que há outras maneiras de fazer essa equação e na literatura, frequentemente, os autores divergem na forma de apresentaçào. O código abaixo apresenta as contas e foi inspirado aqui
#variancia de cada item
base_efica %>% #base
select(starts_with("y")) %>% #itens
var(.,na.rm=TRUE) %>% #variancia de todos contra todos
diag() %>% #preservar apenas a variancia individuual
sum() -> var_item #somar
# variancia total do teste (de cada participante)
base_efica %>%
mutate(total = rowSums(select(.,starts_with("y")), na.rm=T)) %>%
summarise(var(total)) %>% pull() -> var_tot
#total de itens
base_efica %>% select(starts_with("y")) %>% ncol %>% as.vector() -> itens
itens/(itens-1)*(1-var_item/var_tot)
## [1] 0.9519945
É possível também ter o chamado Alfa padronizado, que é mais adequado a instrumentos com itens agregados ou com escalas diferentes de respostas. Sua formula é baseada na média das correlações não redundantes entre os itens(o que é mais palatável do que covariâncias) e os resultados são quase sempre muito próximos ao Alfa bruto.
\(\alpha_{std} =\frac{K\bar{r}_{xx}}{1+(K-1)\bar{r}_{xx}}\)
Uma curiosidade: O Alfa padronizado é uma generalizaçào da fórmula Spearman-Brown.
Em nosso caso, o valor seria:
itens*mean(inter_item)/(1+(itens-1)*mean(inter_item))
## [1] 0.9521641
O pacote psych, com a função alpha, encurta toda essa explicação e apresenta as estimativas previamente calculadas.
base_efica %>%
select(starts_with("y")) %>%
{alpha(.)$total}
Ainda pouco, mencionei sobre o Alfa ordinal. O pacote psych não o calcula por uma função específica, sendo necessário fazer isso a mão ou utilizar o pacote userfriendlyscience, que é também bastante amigável. Apesar de não ter, neste handout, uma base específica para demonstrar a importância desse procedimento, em um teste que sou co-autor (MEMORE), uma vez que os itens eram certo/errado, usamos essa estimativa.
Para finalizar, é importante mencionar os aspectos positivos e outros problemáticos do Alfa. Talvez o mais importante desses seja a sua relação com a quantidade de itens. Repare que, mantida a correlação baixa entre os itens, esse valor sempre aumenta como função dos itens. Abaixo uma demontração inspirada em [@Krable, 2016, p. 143].
cronb <- vector("list",50) #create a list
for (i in 1:50) {
x <- i*0.1/(1+(i-1)*0.1) #compute cronbach alpha for 0.1 correlatiom
x2 <- i*0.3/(1+(i-1)*0.3) #compute cronbach alpha for 0.3 correlatiom
x3 <- i*0.5/(1+(i-1)*0.5) #compute cronbach alpha for 0.5 correlatiom
cronb[[i]] <- c(i, x, x2, x3) #store
rm(i, x, x2, x3) #remove
}
do.call(rbind,cronb) %>% #colocar num dataframe
as.data.frame(.) %>% #estipular o df
rename("itens" = V1,
"r=0.1" = V2,
"r=0.3" = V3,
"r=0.5" = V4) %>% #renomear
pivot_longer(-itens, #itens virara o ID
names_to = "correlacao", #os A v2 vai ser nomes
values_to = "valor") %>% #os valores vao se chamar valor
ggplot(aes(x = itens, y = valor, color = correlacao)) +
geom_point() +
geom_hline(yintercept = 0.7, color="black", linetype="dashed") + #insert line
theme_bw()
rm(cronb)
Posto isso, existem diferentes recomendações sobre o conjunto de valores resultantes do Alfa de Cronbach que indicam consistência adequada. Pela Resolução 09/2018 do Conselho Federal de Psicologia, 0.6 é o mínimo necessário para atingir. Recomendações acadêmicas mais embasadas recomendam valores de 0.7 ou 0.8 como mínimos (Furr, 2011). É importante também destacar que valores muito altos (> 0.90) podem indicar redundância (Streiner, 2003)
Posto isso, é importante atentar que o Alfa de Cronbach não é uma medida da dimensionalidade da escala, mas somente de sua consistência interna. De maneira mais específica, a consistência deve ser entendida como dos dados.
Uma atenção é importante aqui nessa demonstração. As diagonais (por definição, 1) não devem fazer parte da analise. Se elas forem inclluídos, os resultados serão um pouco diferentes.
base_efica %>%
summarise(sd(parents_totalpoints))
20.5*sqrt(1-0.9521459)
## [1] 4.484494
Validade é o conceito mais importante em Psicometria. Pelas recomendações da 6a edição da AERA (2014), validade se refere ao grau que as evidências e a teoria apoiam a interpretação dos resultados de um teste para os propósitos pelos quais ele foi desenvolvido. Consequentemente, o processo de validação envolve o acúmulo de evidências relevantes que proveem a base científica e metodológica para esta interpretação. Pela AERA, a validade não é uma propriedade do instrumento, tampouco teria sentido falar em diferentes tipos de validade. Para a AERA, a validade se refere aos resultados do teste.
Existem alguns trabalhos meus em que apresento uma revisão teórica e histórica sobre a evolução do conceito de validade e recomendo fortemente o [@Anunciação2018], que pode ser lido integralmente aqui. É notória a evolução do conceito de validade e a imagem abaixo (retirada de (Sireci & Padilla, 2014) apresenta esse progresso:
Evolução do conceito de validade
Penso que o primeiro grande salto surgiu em 1985, pela conceituação de validade enquanto algo unitário, com grande ênfase no que era entendido como “construct-related” [@Teo, p.38]. Em 1999 e 2014, a ênfase nas consequências da testagem oportunizou o segundo grande salto do conceito de validade.
Tornando o assunto (que é longo) em algo mais conciso e bastante influenciado pela lista feita pelo Stephen Sireci, os principais tópicos entendidos atualmente são:
A tualmente se considera 5 fontes de evidencia de validade, tal como a imagem abaixo.
Tipos de validade
O cálculo do CVC é realizado seguindo cinco etapas A primeira, com base nas notas dos juízes (1 a 5), calcula-se a média das notas de cada item
Em seguida (segunda etapa), com base na média, calcula-se o CVC inicial para cada item (CVCi), dividindo-se pelo valor máximo que a assertiva poderia receber nas dimensões acessadas pelos juízes.
Na terceira etapa, calcula-se o erro (Pei), para descontar possíveis vieses dos juízes avaliadores, para cada questão. Neste caso, divide-se um (1) pelo número de juízes avaliadores, elevado pelo mesmo número de avaliadores.
Com isso, o CVC final (quarta etapa) de cada item/questão (CVCc) poderá ser calculado a partir da subtração do CVCipelo Pei.
A última etapa é destinada para o CVC total do questionário (CVCt), para cada uma das características (clareza de linguagem, pertinência prática e relevância teórica). Consiste em subtrair a média do CVCi (MCVCi) pela média do Pei (MPei).
O Coeficiente de Validade de Conteúdo é muito útil para verificar a adequação de cada um dos itens àquilo que se tem interesse de medir. É possível utilizar essa métrica como um indexador geral do instrumento, mas também como uma etapa dentro de um processo maior de adaptação de um instrumento psicológico. Apesar de não haver um consenso em relação a quais devem ser os critérios avaliados pelo CVC, pelo menos a “adequação” e a “simplicidade de entendimento” do item devem estar presente. Quando o instrumento estiver em processo de retrotradução, é importante também verificar a qualidade da tradução.
Neste artigo, optamos por realizar o CVc apenas da coerência do item (seu aspecto principal de validade de conteúdo). Nesse sentido, ao calcular o CVc deste domínio, teria-se chego ao CVc da escala como um todo. A base de dados vai ser algo tratada abaixo para que seja fácil de visualizar os resultados.
Atenção! Os resultados abaixo são baseados na ‘base_cvc’.
base_cvc %>% #get dataset
select(intersect(starts_with("q0009"), ends_with("001"))) %>% #select specific variables
rename_all(., list( ~paste0("x_", seq_along(.),""))) %>% #rename
mutate_all(as.numeric) -> base_cvc_1
A primeira etapa do CVC é o cálculo da média de cada um dos itens, que e encontra abaixo:
base_cvc_1 %>%
summarytools::descr(.) %>%
t(.) %>% #traspor
as.data.frame() %>% #transformar em base
rownames_to_column("item") %>% #inserir o indexador
.[gtools::mixedorder(.$item), ] %>% #<- ordenacao correta
format(., digits=3) #round
A segunda etapa é o cálculo do CVC individual (\(CVC_i\)). O ponto máximo utilizado foi 5 e abaixo a rotina para realização da fórmula.
base_cvc_1 %>%
map(., ~mean(.)/5) %>% #every column (variable) by the maximum point
simplify() %>% #simplity output
round(1) -> cvci #round decimals to 1
O fator de correção é desprezível. Uma vez que temos 11 juízes, esse valor teria 12 zeros antes à esquerda do primeiro valor diferente de zero. Dessa maneira, O CVC (tecnicamente, não ajustado) da escala seria de 0.6777778
base_cvc %>% #get dataset
select(intersect(starts_with("q0009"), ends_with("002"))) %>% #select specific variables
rename_all(., list( ~paste0("x_", seq_along(.),""))) %>% #rename
mutate_all(as.numeric) -> base_cvc_2
A média de cada um dos itens é.
base_cvc_2 %>%
summarytools::descr(.) %>%
t(.) %>% #traspor
as.data.frame() %>% #transformar em base
rownames_to_column("item") %>% #inserir o indexador
.[gtools::mixedorder(.$item), ] %>% #<- ordenacao correta
format(., digits=1) #round
base_cvc_2 %>%
map(., ~mean(.)) %>% #every column (variable)
simplify() %>% #simplity output
round(0) -> simplicidade #round decimals to 1
Para unir as bases
resultado_cvc <- cbind(cvci, simplicidade) %>%
as.data.frame() %>%
rownames_to_column("item")
Para deixar apenas aqueles que citamos no artigo (CVCi > 0.4, Simplicidade > 4)
resultado_cvc %>%
filter(cvci >= 0.7, simplicidade >= 4) %>%
pull(item)
## [1] "x_2" "x_6" "x_8" "x_10" "x_12" "x_14" "x_15" "x_16" "x_18" "x_20"
## [11] "x_24" "x_29" "x_30" "x_31" "x_33" "x_34" "x_35" "x_36" "x_37" "x_38"
## [21] "x_39" "x_40" "x_41" "x_42" "x_44" "x_46" "x_47" "x_48" "x_50" "x_52"
## [31] "x_53" "x_54"
rm(base_cvc_1, base_cvc_2, cvci, simplicidade)
Atenção! Os resultados abaixo são baseados na ‘base_carprofeno’.
Nesse artigo, além do questionário-algo aplicado, exames colaterais (tanto via alguns questionários, como a partir de avaliação física) foram realizados. Um dos critérios de inclusão no estudo foi baseado em resultados de exames radiográficos que foram ordenados em função da intensidade das possíveis em grupos de A (excelente) a E (grave). No entanto, é possível pegar esse delineamento para apresentar justamente uma técnica estatística utilizada para investigar a relação que os resultados de um instrumento possuem com outras variáveis. Para tornar o exemplo mais assertivo, dado que a associação entre os resultados do Raio-X D com o Raio-X são altos (v = 0.68), apenas o Direito será utilizado.
DescTools::CramerV(table(base_carprofeno$rxdir_dummy, base_carprofeno$rxesq_dummy),conf.level=0.95)
## Cramer V lwr.ci upr.ci
## 0.6807354 0.4921604 0.7652546
É possível notar que os resultados obtidos pela escala são maiores nos grupos C, D e E.
ggplot(base_carprofeno, aes(x = factor(rxgrau_dir), y = total_w4, fill = factor(rxgrau_dir))) +
geom_boxplot() +
theme_bw() +
theme(legend.position = "hide")
Tradicionalmente, quando a VI é categórica (tratada como discreta) e a VD é uma variável coníntua, uma ANOVA permite investigar o efeito do grupo nos resultados. Nesse sentido, os resultados globais apontam para um modelo significativo (F(4,51) = 13.30, p < 0.01).
mod_criterio <- lm(total_w4 ~ factor(rxgrau_dir),base_carprofeno)
apaTables::apa.aov.table(mod_criterio)
##
##
## ANOVA results using total_w4 as the dependent variable
##
##
## Predictor SS df MS F p partial_eta2
## (Intercept) 475.00 1 475.00 12.58 .001
## factor(rxgrau_dir) 2008.39 4 502.10 13.30 .000 .51
## Error 1925.45 51 37.75
## CI_90_partial_eta2
##
## [.31, .60]
##
##
## Note: Values in square brackets indicate the bounds of the 90% confidence interval for partial eta-squared
A comparação pareada demonstra que os níveis iniciais (A e B) são, majoritariamente, significativamente diferentes dos níveis terminais (C, D e E) permitindo ter uma conclusão totalmente aderente às recomendações da AERA, quando diz que “A variável critério é uma medida de algum atributo ou resultado operacionalmente distinto do teste. Assim, o teste não é uma medida de critério, mas é uma medida hipotetizada como um potencial preditor desse critério alvo” (p. 17).
emmeans::emmeans(mod_criterio, pairwise ~ rxgrau_dir , adjust = "tukey")$contrasts
## contrast estimate SE df t.ratio p.value
## A - B -3.000 3.38 51 -0.888 0.9002
## A - C -11.111 2.49 51 -4.469 0.0004
## A - D -13.923 2.21 51 -6.295 <.0001
## A - E -11.818 2.33 51 -5.077 0.0001
## B - C -8.111 3.69 51 -2.197 0.1975
## B - D -10.923 3.51 51 -3.109 0.0244
## B - E -8.818 3.59 51 -2.458 0.1167
## C - D -2.812 2.66 51 -1.055 0.8281
## C - E -0.707 2.76 51 -0.256 0.9990
## D - E 2.105 2.52 51 0.836 0.9180
##
## P value adjustment: tukey method for comparing a family of 5 estimates
emmeans::emmip(mod_criterio, ~ rxgrau_dir, CI = T)
Como nota de apoio, é importante atentar que a ideia de “teste referenciado por critério”, apesar de relacionado a ideia geral de estudos de validade em que existem critérios externos ao teste em questão, guarda mais o nome como comunalidade do que as situações de uso. Isso ocorre pois, a este momento, estudos que visam correlacionar os resultados de uma medida psicológica com um critério externo são feitos antes da utilização em maior escala do instrumento psicológico em processos de avaliação psicológica.
Posto isso, no trabalho realizamos formalmente uma etapa da investigação da relação dos escores da escala com outras variáveis e concluímos que: Em A1, a correlação entre o IDCH e a EAVloc foi de 0,59. No A2, para a EAVloc, foi de 0,56 (moderada). No S2, a correlação entre o IDCH e a EAVloc foi de 0,55. A rotina abaixo demonstra os resultados.
base_carprofeno %>%
#filter(grupo_dummy == 1) %>%
{cor.test(.$total_w4, .$vas_loc_w4)}
##
## Pearson's product-moment correlation
##
## data: .$total_w4 and .$vas_loc_w4
## t = 4.4724, df = 38, p-value = 6.794e-05
## alternative hypothesis: true correlation is not equal to 0
## 95 percent confidence interval:
## 0.3374624 0.7597647
## sample estimates:
## cor
## 0.5872395
base_carprofeno %>%
#filter(grupo_dummy != 3) %>%
{cor.test(.$total_w0, .$vas_loc_w0)}
##
## Pearson's product-moment correlation
##
## data: .$total_w0 and .$vas_loc_w0
## t = 4.1377, df = 38, p-value = 0.0001873
## alternative hypothesis: true correlation is not equal to 0
## 95 percent confidence interval:
## 0.2974498 0.7403040
## sample estimates:
## cor
## 0.5573188
base_carprofeno %>%
#filter(grupo_dummy != 3) %>%
{cor.test(.$total_s2, .$vas_loc_s2)}
##
## Pearson's product-moment correlation
##
## data: .$total_s2 and .$vas_loc_s2
## t = 4.1026, df = 38, p-value = 0.000208
## alternative hypothesis: true correlation is not equal to 0
## 95 percent confidence interval:
## 0.2931319 0.7381586
## sample estimates:
## cor
## 0.5540492
Finalmente, como uma ideia subjacente a este curso é também permitir que o estudante tenha habilidade de programação e consiga, eficientemente, utilizar funções de pacotes desenvolvidos para auxiliar as análises estatísticas, o gráfico a seguir é uma generalização das correlações individuais e pode ser muito informativo para responder perguntas relacionadas a relação entre medidas psicológicas.
base_carprofeno %>%
select(starts_with("total_"), starts_with("vas_loc_")) %>%
DataExplorer::plot_correlation(df, type = 'continuous', cor_args = list("use" = "pairwise.complete.obs"))
Os escores gerados são combinações ponderadas dos itens e o objetivo é simplesmente explicar a variância nos itens.
Decisões que a gente toma ao realizar uma Análise de Componentes Principais
Bartlett de esferecidade - Testa se a matriz de correlação é uma matriz identidade. Se for, não há correlação entre os dados e isso previne de fazermos uma técnica de redução de dados (seja lá qual for). Para calcular esse coeficiente, é necessário diferentes passos intermediários e entre eles, o cálculo do determinante da matriz. Apesar do objetivo do curso não ser diretamente relacionado à matemática, alguns tópicos serão pormenorizados na medida da necessidade.
Assim, o determinante de uma matriz quadrada M é a associação de um número real único, chamado de determinante de M e podemos abreviar por det (M), que pode ser utilizado na resolução de sistemas lineares.
A fórmula do teste de Bartlett é a seguinte:
\[\chi = -[(N-1)-\frac{(2k+5)}{6}]*ln|Det(M)|\]
base_carprofeno %>%
select(w4_1:w4_11) %>%
psych::cortest.bartlett()
## R was not square, finding R from data
## $chisq
## [1] 504.8484
##
## $p.value
## [1] 5.737049e-74
##
## $df
## [1] 55
base_carprofeno %>%
select(w4_1:w4_11) %>%
psych::KMO(.)
## Kaiser-Meyer-Olkin factor adequacy
## Call: psych::KMO(r = .)
## Overall MSA = 0.89
## MSA for each item =
## w4_1 w4_2 w4_3 w4_4 w4_5 w4_6 w4_7 w4_8 w4_9 w4_10 w4_11
## 0.87 0.79 0.92 0.92 0.89 0.86 0.94 0.85 0.92 0.92 0.94
base_carprofeno %>%
select(w4_1:w4_11) %>%
psych::scree()
base_carprofeno %>%
select(w4_1:w4_11) %>%
psych::fa.parallel(cor = ,nfactors = 1, fa = "pc") %>% print()
## Parallel analysis suggests that the number of factors = NA and the number of components = 1
## Call: psych::fa.parallel(x = ., fa = "pc", nfactors = 1)
## Parallel analysis suggests that the number of factors = NA and the number of components = 1
##
## Eigen Values of
##
## eigen values of factors
## [1] 6.62 0.58 0.29 0.19 -0.02 -0.07 -0.08 -0.14 -0.17 -0.21 -0.37
##
## eigen values of simulated factors
## [1] NA
##
## eigen values of components
## [1] 6.98 1.07 0.82 0.57 0.38 0.34 0.24 0.19 0.17 0.14 0.09
##
## eigen values of simulated components
## [1] 1.79 1.54 1.35 1.24 1.11 0.94 0.83 0.73 0.62 0.49 0.37
base_carprofeno %>%
select(w4_1:w4_11) %>%
psych::principal(., nfactors = 1)
## Principal Components Analysis
## Call: psych::principal(r = ., nfactors = 1)
## Standardized loadings (pattern matrix) based upon correlation matrix
## PC1 h2 u2 com
## w4_1 0.65 0.42 0.58 1
## w4_2 0.72 0.52 0.48 1
## w4_3 0.57 0.33 0.67 1
## w4_4 0.88 0.77 0.23 1
## w4_5 0.86 0.75 0.25 1
## w4_6 0.86 0.75 0.25 1
## w4_7 0.82 0.68 0.32 1
## w4_8 0.74 0.55 0.45 1
## w4_9 0.85 0.72 0.28 1
## w4_10 0.88 0.78 0.22 1
## w4_11 0.85 0.73 0.27 1
##
## PC1
## SS loadings 6.98
## Proportion Var 0.63
##
## Mean item complexity = 1
## Test of the hypothesis that 1 component is sufficient.
##
## The root mean square of the residuals (RMSR) is 0.09
## with the empirical chi square 47.99 with prob < 0.31
##
## Fit based upon off diagonal values = 0.98
Existem mutias formas de nomear os traços latentes que supostamente exercem influência causal nas probabilidades ou processos de respostas aos itens. Na literatura, se encontra “dimensão”, “habilidade”, “domínio”, “construto”, fator“, etc. O nome”fator" tecnicamente é mais associado à técnica estatística do que a habilidade psicológica. No entanto, uma vez que procedimentos de Análise Fatorial são muito empregados em análises psicométricas, acabou que o termo fator tornou-se a primeira escolha quando alguém deseja falar sobre o traço latente subjacente ao processo de resposta.
Antes de qualquer análise, ter segurança dos dados é fundamental. Essa atenção deve ser redobrada quando se trabalha no ambiente da análise fatorial. Pequenas alterações na base (por exemplo, forma de tratar os missing cases ou erros de codificação) podem gerar erros enormes e que, quando detectados apenas em uma etapa posterior do trabalho, criam um ambiente de muita dificuldade analítica e operacional.
Assim, a base de uso será totalmente checada. Inicialmente, a codificação e os valores minimos e máximos de cada categoria serão averiguados.
ife_65 %>% summarytools::descr(., stats = "common", style = "grid", transpose = T) %>%
kable(digits = 2) %>% # Aprsentacao
kable_styling(bootstrap_options = c("striped", "hover", "condensed"))
| Mean | Std.Dev | Min | Median | Max | N.Valid | Pct.Valid | |
|---|---|---|---|---|---|---|---|
| y1 | 0.65 | 0.67 | 0 | 1 | 2 | 3267 | 99.48 |
| y10 | 0.96 | 0.76 | 0 | 1 | 2 | 3269 | 99.54 |
| y11 | 0.39 | 0.60 | 0 | 0 | 2 | 3267 | 99.48 |
| y12 | 0.90 | 0.73 | 0 | 1 | 2 | 3264 | 99.39 |
| y13 | 0.69 | 0.60 | 0 | 1 | 2 | 3261 | 99.30 |
| y14 | 0.78 | 0.73 | 0 | 1 | 2 | 3262 | 99.33 |
| y15 | 0.90 | 0.68 | 0 | 1 | 2 | 3262 | 99.33 |
| y16 | 1.08 | 0.73 | 0 | 1 | 2 | 3273 | 99.67 |
| y17 | 0.83 | 0.65 | 0 | 1 | 2 | 3273 | 99.67 |
| y18 | 0.84 | 0.74 | 0 | 1 | 2 | 3267 | 99.48 |
| y19 | 0.80 | 0.72 | 0 | 1 | 2 | 3266 | 99.45 |
| y2 | 0.63 | 0.62 | 0 | 1 | 2 | 3258 | 99.21 |
| y20 | 0.32 | 0.54 | 0 | 0 | 2 | 3276 | 99.76 |
| y21 | 0.88 | 0.71 | 0 | 1 | 2 | 3273 | 99.67 |
| y22 | 1.17 | 0.71 | 0 | 1 | 2 | 3274 | 99.70 |
| y23 | 0.88 | 0.71 | 0 | 1 | 2 | 3275 | 99.73 |
| y24 | 0.70 | 0.68 | 0 | 1 | 2 | 3271 | 99.60 |
| y25 | 0.90 | 0.70 | 0 | 1 | 2 | 3273 | 99.67 |
| y26 | 1.00 | 0.74 | 0 | 1 | 2 | 3280 | 99.88 |
| y27 | 0.78 | 0.61 | 0 | 1 | 2 | 3281 | 99.91 |
| y28 | 0.70 | 0.68 | 0 | 1 | 2 | 3272 | 99.63 |
| y29 | 0.44 | 0.67 | 0 | 0 | 2 | 3256 | 99.15 |
| y3 | 0.72 | 0.67 | 0 | 1 | 2 | 3268 | 99.51 |
| y30 | 0.37 | 0.63 | 0 | 0 | 2 | 3169 | 96.50 |
| y31 | 0.73 | 0.62 | 0 | 1 | 2 | 3272 | 99.63 |
| y32 | 0.83 | 0.78 | 0 | 1 | 2 | 3270 | 99.57 |
| y33 | 0.83 | 0.70 | 0 | 1 | 2 | 3254 | 99.09 |
| y34 | 0.86 | 0.64 | 0 | 1 | 2 | 3265 | 99.42 |
| y35 | 0.57 | 0.63 | 0 | 0 | 2 | 3212 | 97.81 |
| y36 | 0.77 | 0.68 | 0 | 1 | 2 | 3254 | 99.09 |
| y37 | 0.69 | 0.68 | 0 | 1 | 2 | 3263 | 99.36 |
| y38 | 0.81 | 0.63 | 0 | 1 | 2 | 3272 | 99.63 |
| y39 | 0.88 | 0.74 | 0 | 1 | 2 | 3250 | 98.96 |
| y4 | 0.55 | 0.66 | 0 | 0 | 2 | 3273 | 99.67 |
| y40 | 0.84 | 0.67 | 0 | 1 | 2 | 3257 | 99.18 |
| y41 | 0.70 | 0.67 | 0 | 1 | 2 | 3264 | 99.39 |
| y42 | 0.92 | 0.68 | 0 | 1 | 2 | 3262 | 99.33 |
| y43 | 0.94 | 0.62 | 0 | 1 | 2 | 3268 | 99.51 |
| y44 | 0.77 | 0.71 | 0 | 1 | 2 | 3266 | 99.45 |
| y45 | 0.53 | 0.66 | 0 | 0 | 2 | 3267 | 99.48 |
| y46 | 0.35 | 0.56 | 0 | 0 | 2 | 3272 | 99.63 |
| y47 | 0.83 | 0.68 | 0 | 1 | 2 | 3274 | 99.70 |
| y48 | 0.59 | 0.63 | 0 | 1 | 2 | 3280 | 99.88 |
| y49 | 0.96 | 0.65 | 0 | 1 | 2 | 3281 | 99.91 |
| y5 | 0.42 | 0.60 | 0 | 0 | 2 | 3267 | 99.48 |
| y50 | 0.77 | 0.71 | 0 | 1 | 2 | 3270 | 99.57 |
| y51 | 1.06 | 0.65 | 0 | 1 | 2 | 3263 | 99.36 |
| y52 | 0.83 | 0.70 | 0 | 1 | 2 | 3276 | 99.76 |
| y53 | 0.65 | 0.63 | 0 | 1 | 2 | 3267 | 99.48 |
| y54 | 0.89 | 0.75 | 0 | 1 | 2 | 3273 | 99.67 |
| y55 | 0.62 | 0.67 | 0 | 1 | 2 | 3272 | 99.63 |
| y56 | 0.60 | 0.70 | 0 | 0 | 2 | 3264 | 99.39 |
| y57 | 0.72 | 0.74 | 0 | 1 | 2 | 3262 | 99.33 |
| y58 | 0.98 | 0.74 | 0 | 1 | 2 | 3264 | 99.39 |
| y59 | 0.85 | 0.68 | 0 | 1 | 2 | 3263 | 99.36 |
| y6 | 0.27 | 0.49 | 0 | 0 | 2 | 3274 | 99.70 |
| y60 | 0.75 | 0.79 | 0 | 1 | 2 | 3276 | 99.76 |
| y61 | 0.69 | 0.75 | 0 | 1 | 2 | 3265 | 99.42 |
| y62 | 0.70 | 0.67 | 0 | 1 | 2 | 3257 | 99.18 |
| y63 | 0.40 | 0.59 | 0 | 0 | 2 | 3259 | 99.24 |
| y64 | 0.98 | 0.68 | 0 | 1 | 2 | 3268 | 99.51 |
| y65 | 0.81 | 0.66 | 0 | 1 | 2 | 3274 | 99.70 |
| y7 | 0.83 | 0.52 | 0 | 1 | 2 | 3278 | 99.82 |
| y8 | 1.08 | 0.71 | 0 | 1 | 2 | 3272 | 99.63 |
| y9 | 0.56 | 0.61 | 0 | 0 | 2 | 3249 | 98.93 |
É possível notar que existem dados ausentes na maioria das variáveis trabalhadas, mas que os valores mínimos e máximos estão adequados. Ou seja, estão dentro do intervalo 0-2 que a escala permite. No entanto, como os dados são categóricos (ordinais), é necessário verificar se as categorias foram definidas. Em alguns casos, por descuido, pesquisadores podem colocar valores fracionários dentro do intervalo 0-2.
ife_65 %>% {alpha(.)$response.freq} %>%
kable(digits = 2) %>% # Aprsentacao
kable_styling(bootstrap_options = c("striped", "hover", "condensed"))
| 0 | 1 | 2 | miss | |
|---|---|---|---|---|
| y1 | 0.46 | 0.43 | 0.11 | 0.01 |
| y2 | 0.45 | 0.47 | 0.08 | 0.01 |
| y3 | 0.40 | 0.47 | 0.12 | 0.00 |
| y4 | 0.54 | 0.37 | 0.09 | 0.00 |
| y5 | 0.64 | 0.30 | 0.06 | 0.01 |
| y6 | 0.76 | 0.22 | 0.02 | 0.00 |
| y7 | 0.23 | 0.70 | 0.06 | 0.00 |
| y8 | 0.21 | 0.49 | 0.29 | 0.00 |
| y9 | 0.51 | 0.43 | 0.06 | 0.01 |
| y10 | 0.31 | 0.42 | 0.27 | 0.00 |
| y11 | 0.67 | 0.27 | 0.06 | 0.01 |
| y12 | 0.32 | 0.45 | 0.23 | 0.01 |
| y13 | 0.38 | 0.55 | 0.07 | 0.01 |
| y14 | 0.40 | 0.42 | 0.18 | 0.01 |
| y15 | 0.29 | 0.52 | 0.19 | 0.01 |
| y16 | 0.23 | 0.47 | 0.31 | 0.00 |
| y17 | 0.31 | 0.55 | 0.14 | 0.00 |
| y18 | 0.37 | 0.43 | 0.20 | 0.01 |
| y19 | 0.38 | 0.45 | 0.18 | 0.01 |
| y20 | 0.72 | 0.25 | 0.04 | 0.00 |
| y21 | 0.32 | 0.48 | 0.20 | 0.00 |
| y22 | 0.18 | 0.46 | 0.35 | 0.00 |
| y23 | 0.32 | 0.48 | 0.20 | 0.00 |
| y24 | 0.43 | 0.45 | 0.12 | 0.00 |
| y25 | 0.30 | 0.50 | 0.20 | 0.00 |
| y26 | 0.28 | 0.45 | 0.27 | 0.00 |
| y27 | 0.32 | 0.57 | 0.10 | 0.00 |
| y28 | 0.42 | 0.45 | 0.12 | 0.00 |
| y29 | 0.66 | 0.24 | 0.10 | 0.01 |
| y30 | 0.71 | 0.21 | 0.08 | 0.04 |
| y31 | 0.37 | 0.54 | 0.09 | 0.00 |
| y32 | 0.40 | 0.37 | 0.23 | 0.00 |
| y33 | 0.34 | 0.48 | 0.18 | 0.01 |
| y34 | 0.29 | 0.57 | 0.14 | 0.01 |
| y35 | 0.50 | 0.42 | 0.08 | 0.02 |
| y36 | 0.37 | 0.49 | 0.14 | 0.01 |
| y37 | 0.43 | 0.44 | 0.13 | 0.01 |
| y38 | 0.31 | 0.57 | 0.12 | 0.00 |
| y39 | 0.34 | 0.44 | 0.22 | 0.01 |
| y40 | 0.32 | 0.53 | 0.15 | 0.01 |
| y41 | 0.41 | 0.47 | 0.12 | 0.01 |
| y42 | 0.27 | 0.53 | 0.19 | 0.01 |
| y43 | 0.23 | 0.61 | 0.17 | 0.00 |
| y44 | 0.40 | 0.44 | 0.17 | 0.01 |
| y45 | 0.56 | 0.35 | 0.09 | 0.01 |
| y46 | 0.70 | 0.26 | 0.05 | 0.00 |
| y47 | 0.33 | 0.50 | 0.16 | 0.00 |
| y48 | 0.49 | 0.44 | 0.08 | 0.00 |
| y49 | 0.23 | 0.57 | 0.19 | 0.00 |
| y50 | 0.40 | 0.44 | 0.16 | 0.00 |
| y51 | 0.18 | 0.58 | 0.24 | 0.01 |
| y52 | 0.35 | 0.47 | 0.18 | 0.00 |
| y53 | 0.43 | 0.48 | 0.08 | 0.01 |
| y54 | 0.34 | 0.43 | 0.23 | 0.00 |
| y55 | 0.49 | 0.41 | 0.11 | 0.00 |
| y56 | 0.53 | 0.34 | 0.13 | 0.01 |
| y57 | 0.45 | 0.38 | 0.17 | 0.01 |
| y58 | 0.28 | 0.46 | 0.26 | 0.01 |
| y59 | 0.32 | 0.51 | 0.17 | 0.01 |
| y60 | 0.47 | 0.31 | 0.22 | 0.00 |
| y61 | 0.48 | 0.34 | 0.18 | 0.01 |
| y62 | 0.42 | 0.46 | 0.12 | 0.01 |
| y63 | 0.66 | 0.28 | 0.06 | 0.01 |
| y64 | 0.24 | 0.54 | 0.22 | 0.00 |
| y65 | 0.33 | 0.52 | 0.14 | 0.00 |
#caso opte por uma função purrr
#ife_65 %>%
# mutate_all(., as.factor) %>%
# map(., table)
Uma vez que tudo parece adequado, o tratamento dos casos ausentes é uma condição necessára e deve anteceder a análise exploratória. Evidentemente, existem muitas recomendações sobre o que fazer com dados ausentes (até mesmo não fazer nada). No entanto, esse assunto já foi trabalhado em aulas anteriores e, por não ser o foco de agora, iremos trabalhar com a base já consolidada, em que um processo de múltipla imputação foi performado. Essa base se chama ife_65_c. É possível visualizar na tabela seguinte que os valores estão adequados e nenhum caso ausente está presente.
ife_65_c %>% {alpha(.)$response.freq} %>%
kable(digits = 2) %>% # Aprsentacao
kable_styling(bootstrap_options = c("striped", "hover", "condensed"))
| 0 | 1 | 2 | miss | |
|---|---|---|---|---|
| y1 | 0.46 | 0.43 | 0.11 | 0 |
| y2 | 0.45 | 0.47 | 0.08 | 0 |
| y3 | 0.40 | 0.48 | 0.12 | 0 |
| y4 | 0.54 | 0.37 | 0.09 | 0 |
| y5 | 0.64 | 0.30 | 0.06 | 0 |
| y6 | 0.76 | 0.22 | 0.02 | 0 |
| y7 | 0.24 | 0.70 | 0.06 | 0 |
| y8 | 0.21 | 0.49 | 0.29 | 0 |
| y9 | 0.51 | 0.43 | 0.06 | 0 |
| y10 | 0.31 | 0.42 | 0.27 | 0 |
| y11 | 0.67 | 0.27 | 0.06 | 0 |
| y12 | 0.32 | 0.45 | 0.23 | 0 |
| y13 | 0.38 | 0.55 | 0.07 | 0 |
| y14 | 0.40 | 0.42 | 0.18 | 0 |
| y15 | 0.29 | 0.52 | 0.19 | 0 |
| y16 | 0.23 | 0.47 | 0.31 | 0 |
| y17 | 0.31 | 0.54 | 0.14 | 0 |
| y18 | 0.37 | 0.43 | 0.20 | 0 |
| y19 | 0.37 | 0.45 | 0.18 | 0 |
| y20 | 0.72 | 0.25 | 0.04 | 0 |
| y21 | 0.32 | 0.48 | 0.20 | 0 |
| y22 | 0.18 | 0.46 | 0.35 | 0 |
| y23 | 0.32 | 0.48 | 0.20 | 0 |
| y24 | 0.43 | 0.45 | 0.12 | 0 |
| y25 | 0.30 | 0.50 | 0.20 | 0 |
| y26 | 0.28 | 0.45 | 0.27 | 0 |
| y27 | 0.32 | 0.57 | 0.10 | 0 |
| y28 | 0.42 | 0.45 | 0.12 | 0 |
| y29 | 0.66 | 0.24 | 0.10 | 0 |
| y30 | 0.71 | 0.21 | 0.08 | 0 |
| y31 | 0.37 | 0.54 | 0.09 | 0 |
| y32 | 0.40 | 0.37 | 0.23 | 0 |
| y33 | 0.34 | 0.48 | 0.18 | 0 |
| y34 | 0.29 | 0.57 | 0.14 | 0 |
| y35 | 0.50 | 0.42 | 0.08 | 0 |
| y36 | 0.37 | 0.49 | 0.14 | 0 |
| y37 | 0.43 | 0.44 | 0.13 | 0 |
| y38 | 0.31 | 0.57 | 0.12 | 0 |
| y39 | 0.34 | 0.44 | 0.22 | 0 |
| y40 | 0.32 | 0.53 | 0.15 | 0 |
| y41 | 0.41 | 0.47 | 0.12 | 0 |
| y42 | 0.27 | 0.53 | 0.19 | 0 |
| y43 | 0.23 | 0.61 | 0.16 | 0 |
| y44 | 0.40 | 0.44 | 0.17 | 0 |
| y45 | 0.56 | 0.35 | 0.09 | 0 |
| y46 | 0.70 | 0.26 | 0.05 | 0 |
| y47 | 0.33 | 0.50 | 0.16 | 0 |
| y48 | 0.49 | 0.44 | 0.08 | 0 |
| y49 | 0.23 | 0.57 | 0.19 | 0 |
| y50 | 0.40 | 0.44 | 0.16 | 0 |
| y51 | 0.18 | 0.58 | 0.24 | 0 |
| y52 | 0.35 | 0.48 | 0.18 | 0 |
| y53 | 0.43 | 0.48 | 0.08 | 0 |
| y54 | 0.34 | 0.43 | 0.23 | 0 |
| y55 | 0.49 | 0.41 | 0.11 | 0 |
| y56 | 0.53 | 0.34 | 0.13 | 0 |
| y57 | 0.45 | 0.38 | 0.17 | 0 |
| y58 | 0.28 | 0.45 | 0.26 | 0 |
| y59 | 0.32 | 0.51 | 0.17 | 0 |
| y60 | 0.47 | 0.31 | 0.22 | 0 |
| y61 | 0.48 | 0.34 | 0.18 | 0 |
| y62 | 0.42 | 0.47 | 0.12 | 0 |
| y63 | 0.66 | 0.28 | 0.06 | 0 |
| y64 | 0.24 | 0.54 | 0.22 | 0 |
| y65 | 0.33 | 0.52 | 0.14 | 0 |
Isto posto, da mesma forma que foi feito durante a PCA, é necessário verificar o Índice de Bartlett e o KMO. Bartlett signficativo e KMO ≥ 0.6 trazem evidências de que as análises podem continuar para etapa exploratória e, em seguida, confirmatória.
bartlett.test(ife_65_c)
##
## Bartlett test of homogeneity of variances
##
## data: ife_65_c
## Bartlett's K-squared = 3381.3, df = 64, p-value < 2.2e-16
KMO(ife_65_c)
## Kaiser-Meyer-Olkin factor adequacy
## Call: KMO(r = ife_65_c)
## Overall MSA = 0.97
## MSA for each item =
## y1 y2 y3 y4 y5 y6 y7 y8 y9 y10 y11 y12 y13 y14 y15
## 0.96 0.97 0.97 0.97 0.97 0.95 0.98 0.97 0.97 0.97 0.96 0.96 0.98 0.97 0.98
## y16 y17 y18 y19 y20 y21 y22 y23 y24 y25 y26 y27 y28 y29 y30
## 0.98 0.97 0.98 0.97 0.96 0.97 0.95 0.97 0.98 0.97 0.95 0.98 0.98 0.87 0.83
## y31 y32 y33 y34 y35 y36 y37 y38 y39 y40 y41 y42 y43 y44 y45
## 0.97 0.97 0.94 0.97 0.97 0.97 0.98 0.96 0.94 0.96 0.95 0.98 0.96 0.98 0.98
## y46 y47 y48 y49 y50 y51 y52 y53 y54 y55 y56 y57 y58 y59 y60
## 0.95 0.98 0.96 0.96 0.97 0.70 0.97 0.98 0.97 0.96 0.96 0.97 0.96 0.98 0.97
## y61 y62 y63 y64 y65
## 0.98 0.97 0.98 0.87 0.96
É importante atentar que existem diferentes críticas e sugestões sobre a adequação de ambos os procedimentos nos mesmos dados e, se possível, qual o melhor formato dos dados para realizar os procedimentos. Há pesquisadores que argumentam que realizar uma EFA e uma CFA no mesmo conjunto de dados é aderente à uma lógica circular, há aqueles que defendem que isso é plenamente possível (e muito realizado) bem como há aqueles que julgam que é necessário dividir os dados de maneira aleatória em partes específicas para que um possa ser analizados pela EFA e outro pela CFA. Tenho por hábito seguir a última recomendação e fazer o particionamento dos dados; no entanto, por isso não ser uma regra (mas tão somente uma recomendação), aceitaria tranquilamente outras análises, desde que justificadas.
Esclarecido isso, a decisão de quantos fatores/dimensões devem ser mantidos no modelo é uma das mais dificeis e não há consenso, apenas recomendações que - eventualmente - convergem. É necessário conseguir equilibrar um modelo que seja acurado (e, portanto, com pouco erro), mas que preserve a simplicidade (portanto, seja parcimonioso). Existem muitas regras de decisão e aqui será possível comentar sobre o i. autovalor > 1, ii cotovelo (ou inflexão), iii Análise Paralela, iv o método de Hull (não abordado aqui), v proporção da variância explicada por fator, vi distância entre autovalores e vii critérios de ajustes (obtidos a posteriori).
Necessariamente, o modelo deve atender tanto a aspectos estatísticos, como teóricos. Particularmente, vejo com muita crítica (e ceticismo) decisões calcadas puramente em critérios estatísticos, mas entendo também que a manutenção de uma teoria é condicionada a critérios estatísticos. Do contrário, todo o rigor matemático seria puramente dispensável.
Posto isso, pela teoria original da escala na qual este instrumento foi baseado, se visava chegar a um índice global do funcionamento executivo e a 2 índices específicos a partir da investigação de 9 dimensões latentes: inibição, flexibilidade e controle emocional (que somados geravam o índice de regulação do comportamento) e iniciativa, memória operacional, planejamento/organização, organização do material, monitoramento relacionado a tarefas e monitoramento relacionados a comportamentos pessoais (que somados geravam o índice de metacognição). O índice global era composto pelos dois específicos.
Não obstante, neste instrumento que está sendo desenvolvido, apesar desta ligação teórica, não há um modelo específico que se deseja testar. Dessa forma, a análise fatorial exploratória pode ser conduzida com segurança, uma vez que os indicadores iniciais (Bartlett e kMO) já foram satisfatórios.
Uma primeira forma de verificar quantos fatores devem ser retidos é a partir do scree-plot, que pode ser traduzido como gráfico de sedimentação (ou gráfico de escarpas) e foi introduzido pelo Raymond Cattell (atenção, não é o James M. Cattell). O termo “scree” é bastante utilizado na geologia para indicar uma coleção de fragmentos de rochas quebradas na base de penhascos, montanhas, vulcões ou encostas de vales que se acumularam através da queda periódica de rochas nas faces adjacentes dos penhascos.
Esse gráfico sempre mostrará os autovalores em y e o número de fatores possíveis em x. Por definição, o máximo de fatores que podem ser retidos é igual ao máximo de itens que um instrumento possui. Nesse caso, 65. Já o autovalor tem a ver com o quanto da variância é explicado pelo fator. Por definição, é uma curva negativamente acelerada (convexa).
A observação do scree-plot oferece duas formas de tomar uma decisão. Primeiro, todos os fatores que estão acima ao autovalor 1 devem (podem!) ser mantido. Essa regra é chamada de Guttman-Kaiser. Repare que neste caso, teríamos 3 fatores.
scree(ife_65_c,pc = F, hline=TRUE)
Já o segundo critério é bem visual e é chamado de cotovelo. Este critério é baseado no ponto de inflexão, que é o local onde a linha dos pontos tem um formato platô. Neste exemplo ainda, do quarto fator em diante, a linha é quase que inteiramente plana (flat), indicando que devemos parar, de fato, no terceiro fator. Ou seja, se retem os fatores acima da linha plana.
Ainda de maneira próxima ao scree-plot, é possível tomar uma decisão com base na Análise Paralela de Horn. Esta análise compara os próprios autovalores (da amostra) com autovalores obtidos a partir de simulação levando em consideração o tamanho da amostra e o número de itens. Quando o valor observado é maior ao resultado da Análise paralela, isso corrobora a retenção do fator.
Por este método, mais de 14 fatores deveriam ser retidos, o que tem pouca adequação teórica e, além disso, passaria por problemas em uma etapa posterior de verificação de itens.
library(factorAnalysis)
ife_65_c %>%
screePlot(., method = "ml", n.iter=1)
##
## Note: parallel analysis suggests 14 factors.
Um método mais recente é o de Hull e ele não será abordado aqui nesta seção. Entretanto, o programa “Factor” tem esta opção disponível e é gratuito.
É também possível fazer a retenção fatorial por quantidade de variância explicada por fator (es). Isso seria feito realizando diferentes análises fatoriais, apenas divergindo na quantidade de fatores extraídos e, em seguida, comparando as soluções neste critério. Por exemplo, neste conjunto de dados que agora está sendo trabalhado, com um fator, a proporção explicada é de 22%; já com 2 fatores, a proporção é de 26%. Por construção, a cada novo fator adicionado ao modelo, a proporção de variância explicada será maior, mas sob o custo de aumentar a complexidade interpretativa. Não há um ponto de corte bem definido em relação a quando parar.
fa(ife_65_c, 1)$Vaccounted
## MR1
## SS loadings 14.9037047
## Proportion Var 0.2292878
fa(ife_65_c, 2)$Vaccounted
## Loading required namespace: GPArotation
## MR2 MR1
## SS loadings 8.7279873 8.4670423
## Proportion Var 0.1342767 0.1302622
## Cumulative Var 0.1342767 0.2645389
## Proportion Explained 0.5075878 0.4924122
## Cumulative Proportion 0.5075878 1.0000000
No entanto, por similaridade, essa estratégia guarda relação com as distâncias dos autovalores e, nesse sentido, a retenção tecnicamente pode parar quando a distância dos autovalores entre as duas primeiras dimensões é três vezes maior do que entre a segunda e a terceira.
Finalmente, pelo avanço computacional, associado à diminuiçào do cuso, é simplesmente possível criar todas as soluções exploratórias possíveis, computar índices de ajustes que são mais relacionados com análises confirmatórias e, em seguida, escolher a melhor soluçào fatorial possível. Tecnicamente, esse procedimento é muito parecido com o descrito ainda pouco (variância explicada por fatores), mas tem a vantagem de abranger também outros indicadores. O drawback de se fazer isso ainda recai em algumas críticas pontuando que essa estratégia tem uma lógica circular (afinal, se testa e confirma ao memsmo tempo) e que existe uma dificuldade de separar o que seria análise exploratória e análise confirmatória. Entretanto, essas críticas tem pouca ressonância na área.
Esta última estrategia é melhor implementada no Mplus, que será utilizado em seguida. Até o momento, não há pacote no R que faça a AFE que consiga esta mesma automação dos procedimentos. Um ponto inconveniente que ocorre é que, apesar da aproximação numérica entre ambos os resultados, ainda não é possível ter convergência total nos valores, limitando um pouco a reprodutibilidade das análises (e seus achados).
fa(ife_65_c,
cor = "poly",
nfactors = 3,
fm = "ols",
rotate = "geominQ")
print(efa_pais, cut = .3, sort = T)
Posto isso, uma vez definido que a solução com 3 fatores é adequada, é possível testa-la. Ao fazer isso, automaticamente estaremos migrando de um ambiente exploratório (EFA - data driven) para um ambiente confirmatório (CFA - theory driven). A divisão da base de dados em uma partição menor será feita para que a solução seja testada. Teoricamente, esta partição é “cega” aos ajustes e parâmetros previamente encontrados.
Entre as análises que costumeiramente são feitas no ambiente da CFA, temos algumas mais associadas à estrutura interna e outras mais associadas às consequências da testagem. Em relação à estrutura interna, temos os indicadores de ajuste / aderência, indices de modificação e aspectos de fidedignidade. Já em relação às consequências da testagem, vê-se a análise de invariância e de DIF, além da criação de escores fatoriais. É fundamental notar que essas características são puramente didáticas e não necessariamente compartilhada por outros docentes do tema. Isso dito, é possível continuar.
set.seed(123)
ife_65_650 <- ife_65_c %>% sample_n(., 650)
O pacote lavaan é a melhor escola para análise confirmatória e, por isso, será utilizado. Existem três etapas de codificação necessárias: (i) criar o modelo, (ii) rodar o modelo, (iii) testar o modelo (etapa diagnóstica) e (iv) ajustar o modelo, que pode ser feita a partir de índices de modificação ou, basicamente, do zero.
Pelos resultados previamente obtidos e com a decisão de manter aqueles itens com cargasa cruzadas em seus fatores principais, a codificação abaixo pode ser realizada.
library(lavaan)
## This is lavaan 0.6-5
## lavaan is BETA software! Please report any bugs.
##
## Attaching package: 'lavaan'
## The following object is masked from 'package:psych':
##
## cor2cov
mod_cfa_pais <- 'metacog1 =~ y12 + y26 + y8 + y1 + y17 + y20 + y10 + y47 + y48 + y60 + y55 + y6 + y7 + y57
regulacao =~ y21 + y23 + y19 + y52 + y28 + y3 + y4 + y50 + y45 + y24 + y25 + y22 + y18 + y54 + y59 + y14 + y42 + y16 + y11 + y53 + y58 + y32
metacog2 =~ y30 + y41 + y31 + y29 + y35 + y38 + y37 + y2 + y40 + y13 + y46 + y43 + y62 + y44 + y9 + y27 + y33 + y39 + y65 + y34 + y36 + y56 + y5'
Agora, rodar o modelo deve ser feito.
cfa_pais <- cfa(mod_cfa_pais, #model name
data=ife_65_650, #dataset
estimator = 'WLSMV', #method for extracting factors
orthogonal=FALSE,
ordered=names(ife_65_650))
Após isso, é possível testar o modelo. É importante lembrar que as análises psicométricas e os eventuais modelos derivados dela são fundamentais tanto para descrever o conjunto de dados em questão, como para fazer previsões. É também importante atentar para uma questão de nomeação dos fenômenos. A palavra “dados” tanto se refere aos valores observados na base, como valores resultantes de sumários estatísticos ou estatísticas de testes. Nesse sentido, os dados vem do modelo e, isto posto, fica claro perceber que o diagnóstico do modelo seja uma das etapas mais importantes da modelagem psicométrica.
Em sentido psicométrico/estatístico, testar o modelo envolve tanto verificar sua adequação ou aderência aos dados tanto a partir de critérios de ajustes (em ingles Goodness of fit) do modelo como um todo, como inspecionar os resultados item a item.
Em relação aos critérios de ajuste Os ajustes gerais podem ser quebrados em índices absolutos e relativos e parte do texto de agora será exportado de um trabalho meu (Anunciação, 2018), bem como dos livros “The SAGE Encyclopedia of Educational Research, Measurement, and Evaluation”.
Índices absolutos determina o grau que o modelo hipotetizado prediz ou se ajusta aos dados observados. Esses indices não utilizam um modelo de base a priori para comparação. Eles provem uma medida derivada do ajuste do modelo aos dados e da matriz de covariância hipotética. Eles respondem à questão: “Será que o modelo proposto/hipotetizado provê um ajuste geral aos dados observados” ou “No geral, quão bem o modelo proposto/hipotetizado reproduz os dados observados?”
Entre os índices absolutos, há o Qui-quadrado (X2), o Goodness of Fit Index (GFI), o Root Mean Square of Approximation (RMSEA), o Standardized Root Mean Square Residual (SRMR) e os critérios de informação (AIC e BIC). Entre os índices relativos, os principais são o CFI e o TLI, que eventualmente são chamados de incrementais.
Já os índices relativos comparam a performance do modelo proposto/hipotetizado com um modelo nulo (modelo de base), que é estipulado que não existe correlação entre as varia’veis observadas. Os principais índices deste grupo são o NFI, CFI e o TLI.
Com isto explicitado, agora é possível fazer o diagnóstico do modelo. O output do lavaan pode ser bastante extenso, mas as descrições serão feitas pontualmente. Os ajustes serão analisados pragmáticamente de maneira similar àquela utilizada para publicação.
summary(cfa_pais, standardized=TRUE, fit.measures=TRUE, modindices=FALSE)
## lavaan 0.6-5 ended normally after 70 iterations
##
## Estimator DWLS
## Optimization method NLMINB
## Number of free parameters 180
##
## Number of observations 650
##
## Model Test User Model:
## Standard Robust
## Test Statistic 4607.852 3716.879
## Degrees of freedom 1649 1649
## P-value (Chi-square) 0.000 0.000
## Scaling correction factor 1.679
## Shift parameter 971.802
## for the simple second-order correction
##
## Model Test Baseline Model:
##
## Test statistic 85749.268 22817.662
## Degrees of freedom 1711 1711
## P-value 0.000 0.000
## Scaling correction factor 3.982
##
## User Model versus Baseline Model:
##
## Comparative Fit Index (CFI) 0.965 0.902
## Tucker-Lewis Index (TLI) 0.963 0.898
##
## Robust Comparative Fit Index (CFI) NA
## Robust Tucker-Lewis Index (TLI) NA
##
## Root Mean Square Error of Approximation:
##
## RMSEA 0.053 0.044
## 90 Percent confidence interval - lower 0.051 0.042
## 90 Percent confidence interval - upper 0.054 0.046
## P-value RMSEA <= 0.05 0.009 1.000
##
## Robust RMSEA NA
## 90 Percent confidence interval - lower NA
## 90 Percent confidence interval - upper NA
##
## Standardized Root Mean Square Residual:
##
## SRMR 0.069 0.069
##
## Parameter Estimates:
##
## Information Expected
## Information saturated (h1) model Unstructured
## Standard errors Robust.sem
##
## Latent Variables:
## Estimate Std.Err z-value P(>|z|) Std.lv Std.all
## metacog1 =~
## y12 1.000 0.660 0.660
## y26 0.994 0.048 20.628 0.000 0.656 0.656
## y8 1.082 0.062 17.322 0.000 0.715 0.715
## y1 0.957 0.065 14.832 0.000 0.632 0.632
## y17 1.011 0.062 16.321 0.000 0.667 0.667
## y20 1.058 0.071 14.913 0.000 0.699 0.699
## y10 0.880 0.065 13.489 0.000 0.581 0.581
## y47 0.935 0.061 15.245 0.000 0.617 0.617
## y48 0.993 0.066 14.950 0.000 0.655 0.655
## y60 0.860 0.064 13.418 0.000 0.568 0.568
## y55 0.868 0.063 13.860 0.000 0.573 0.573
## y6 0.752 0.080 9.349 0.000 0.497 0.497
## y7 0.964 0.071 13.652 0.000 0.637 0.637
## y57 0.802 0.069 11.685 0.000 0.529 0.529
## regulacao =~
## y21 1.000 0.705 0.705
## y23 0.978 0.044 22.380 0.000 0.690 0.690
## y19 0.989 0.043 23.012 0.000 0.697 0.697
## y52 0.916 0.043 21.229 0.000 0.646 0.646
## y28 0.934 0.049 19.191 0.000 0.658 0.658
## y3 0.959 0.047 20.243 0.000 0.676 0.676
## y4 1.016 0.048 21.356 0.000 0.716 0.716
## y50 0.860 0.048 17.879 0.000 0.606 0.606
## y45 0.997 0.047 21.320 0.000 0.703 0.703
## y24 0.878 0.046 19.047 0.000 0.619 0.619
## y25 0.929 0.051 18.108 0.000 0.655 0.655
## y22 0.802 0.051 15.802 0.000 0.565 0.565
## y18 0.873 0.051 16.998 0.000 0.615 0.615
## y54 0.753 0.053 14.254 0.000 0.530 0.530
## y59 0.928 0.047 19.738 0.000 0.654 0.654
## y14 0.911 0.049 18.743 0.000 0.642 0.642
## y42 0.806 0.049 16.379 0.000 0.568 0.568
## y16 1.114 0.049 22.936 0.000 0.785 0.785
## y11 0.766 0.058 13.157 0.000 0.540 0.540
## y53 0.855 0.055 15.677 0.000 0.603 0.603
## y58 0.630 0.056 11.221 0.000 0.444 0.444
## y32 0.773 0.055 14.036 0.000 0.545 0.545
## metacog2 =~
## y30 1.000 0.369 0.369
## y41 1.225 0.182 6.727 0.000 0.452 0.452
## y31 1.645 0.216 7.631 0.000 0.607 0.607
## y29 1.017 0.121 8.433 0.000 0.376 0.376
## y35 1.631 0.213 7.641 0.000 0.602 0.602
## y38 1.525 0.215 7.092 0.000 0.563 0.563
## y37 1.838 0.240 7.668 0.000 0.679 0.679
## y2 1.641 0.226 7.256 0.000 0.606 0.606
## y40 1.399 0.199 7.038 0.000 0.517 0.517
## y13 1.569 0.226 6.939 0.000 0.579 0.579
## y46 1.988 0.262 7.584 0.000 0.734 0.734
## y43 1.455 0.202 7.207 0.000 0.537 0.537
## y62 1.662 0.225 7.385 0.000 0.613 0.613
## y44 1.829 0.243 7.529 0.000 0.675 0.675
## y9 1.352 0.194 6.963 0.000 0.499 0.499
## y27 1.928 0.251 7.671 0.000 0.712 0.712
## y33 0.959 0.153 6.270 0.000 0.354 0.354
## y39 1.125 0.175 6.415 0.000 0.415 0.415
## y65 1.183 0.181 6.530 0.000 0.437 0.437
## y34 1.481 0.200 7.418 0.000 0.547 0.547
## y36 1.355 0.184 7.374 0.000 0.500 0.500
## y56 1.241 0.189 6.565 0.000 0.458 0.458
## y5 1.715 0.219 7.831 0.000 0.633 0.633
##
## Covariances:
## Estimate Std.Err z-value P(>|z|) Std.lv Std.all
## metacog1 ~~
## regulacao 0.339 0.023 14.622 0.000 0.730 0.730
## metacog2 0.196 0.026 7.521 0.000 0.804 0.804
## regulacao ~~
## metacog2 0.183 0.025 7.323 0.000 0.704 0.704
##
## Intercepts:
## Estimate Std.Err z-value P(>|z|) Std.lv Std.all
## .y12 0.000 0.000 0.000
## .y26 0.000 0.000 0.000
## .y8 0.000 0.000 0.000
## .y1 0.000 0.000 0.000
## .y17 0.000 0.000 0.000
## .y20 0.000 0.000 0.000
## .y10 0.000 0.000 0.000
## .y47 0.000 0.000 0.000
## .y48 0.000 0.000 0.000
## .y60 0.000 0.000 0.000
## .y55 0.000 0.000 0.000
## .y6 0.000 0.000 0.000
## .y7 0.000 0.000 0.000
## .y57 0.000 0.000 0.000
## .y21 0.000 0.000 0.000
## .y23 0.000 0.000 0.000
## .y19 0.000 0.000 0.000
## .y52 0.000 0.000 0.000
## .y28 0.000 0.000 0.000
## .y3 0.000 0.000 0.000
## .y4 0.000 0.000 0.000
## .y50 0.000 0.000 0.000
## .y45 0.000 0.000 0.000
## .y24 0.000 0.000 0.000
## .y25 0.000 0.000 0.000
## .y22 0.000 0.000 0.000
## .y18 0.000 0.000 0.000
## .y54 0.000 0.000 0.000
## .y59 0.000 0.000 0.000
## .y14 0.000 0.000 0.000
## .y42 0.000 0.000 0.000
## .y16 0.000 0.000 0.000
## .y11 0.000 0.000 0.000
## .y53 0.000 0.000 0.000
## .y58 0.000 0.000 0.000
## .y32 0.000 0.000 0.000
## .y30 0.000 0.000 0.000
## .y41 0.000 0.000 0.000
## .y31 0.000 0.000 0.000
## .y29 0.000 0.000 0.000
## .y35 0.000 0.000 0.000
## .y38 0.000 0.000 0.000
## .y37 0.000 0.000 0.000
## .y2 0.000 0.000 0.000
## .y40 0.000 0.000 0.000
## .y13 0.000 0.000 0.000
## .y46 0.000 0.000 0.000
## .y43 0.000 0.000 0.000
## .y62 0.000 0.000 0.000
## .y44 0.000 0.000 0.000
## .y9 0.000 0.000 0.000
## .y27 0.000 0.000 0.000
## .y33 0.000 0.000 0.000
## .y39 0.000 0.000 0.000
## .y65 0.000 0.000 0.000
## .y34 0.000 0.000 0.000
## .y36 0.000 0.000 0.000
## .y56 0.000 0.000 0.000
## .y5 0.000 0.000 0.000
## metacog1 0.000 0.000 0.000
## regulacao 0.000 0.000 0.000
## metacog2 0.000 0.000 0.000
##
## Thresholds:
## Estimate Std.Err z-value P(>|z|) Std.lv Std.all
## y12|t1 -0.498 0.051 -9.674 0.000 -0.498 -0.498
## y12|t2 0.731 0.054 13.470 0.000 0.731 0.731
## y26|t1 -0.639 0.053 -12.044 0.000 -0.639 -0.639
## y26|t2 0.597 0.053 11.361 0.000 0.597 0.597
## y8|t1 -0.767 0.055 -13.988 0.000 -0.767 -0.767
## y8|t2 0.560 0.052 10.750 0.000 0.560 0.560
## y1|t1 -0.066 0.049 -1.332 0.183 -0.066 -0.066
## y1|t2 1.206 0.065 18.646 0.000 1.206 1.206
## y17|t1 -0.533 0.052 -10.290 0.000 -0.533 -0.533
## y17|t2 1.033 0.060 17.209 0.000 1.033 1.033
## y20|t1 0.502 0.052 9.751 0.000 0.502 0.502
## y20|t2 1.751 0.089 19.613 0.000 1.751 1.751
## y10|t1 -0.524 0.052 -10.136 0.000 -0.524 -0.524
## y10|t2 0.672 0.053 12.573 0.000 0.672 0.672
## y47|t1 -0.489 0.051 -9.520 0.000 -0.489 -0.489
## y47|t2 0.988 0.059 16.747 0.000 0.988 0.988
## y48|t1 -0.042 0.049 -0.862 0.389 -0.042 -0.042
## y48|t2 1.437 0.073 19.703 0.000 1.437 1.437
## y60|t1 -0.163 0.049 -3.291 0.001 -0.163 -0.163
## y60|t2 0.767 0.055 13.988 0.000 0.767 0.767
## y55|t1 -0.019 0.049 -0.392 0.695 -0.019 -0.019
## y55|t2 1.264 0.067 19.004 0.000 1.264 1.264
## y6|t1 0.667 0.053 12.497 0.000 0.667 0.667
## y6|t2 2.023 0.111 18.302 0.000 2.023 2.023
## y7|t1 -0.752 0.055 -13.766 0.000 -0.752 -0.752
## y7|t2 1.517 0.076 19.842 0.000 1.517 1.517
## y57|t1 -0.155 0.049 -3.134 0.002 -0.155 -0.155
## y57|t2 0.915 0.057 15.927 0.000 0.915 0.915
## y21|t1 -0.485 0.051 -9.443 0.000 -0.485 -0.485
## y21|t2 0.904 0.057 15.787 0.000 0.904 0.904
## y23|t1 -0.502 0.052 -9.751 0.000 -0.502 -0.502
## y23|t2 0.915 0.057 15.927 0.000 0.915 0.915
## y19|t1 -0.367 0.050 -7.273 0.000 -0.367 -0.367
## y19|t2 0.963 0.058 16.478 0.000 0.963 0.963
## y52|t1 -0.451 0.051 -8.825 0.000 -0.451 -0.451
## y52|t2 0.951 0.058 16.341 0.000 0.951 0.951
## y28|t1 -0.206 0.050 -4.152 0.000 -0.206 -0.206
## y28|t2 1.299 0.068 19.190 0.000 1.299 1.299
## y3|t1 -0.281 0.050 -5.637 0.000 -0.281 -0.281
## y3|t2 1.256 0.066 18.955 0.000 1.256 1.256
## y4|t1 0.116 0.049 2.351 0.019 0.116 0.116
## y4|t2 1.365 0.070 19.478 0.000 1.365 1.365
## y50|t1 -0.281 0.050 -5.637 0.000 -0.281 -0.281
## y50|t2 1.020 0.060 17.078 0.000 1.020 1.020
## y45|t1 0.143 0.049 2.899 0.004 0.143 0.143
## y45|t2 1.317 0.068 19.278 0.000 1.317 1.317
## y24|t1 -0.273 0.050 -5.480 0.000 -0.273 -0.273
## y24|t2 1.167 0.064 18.370 0.000 1.167 1.167
## y25|t1 -0.516 0.052 -9.982 0.000 -0.516 -0.516
## y25|t2 0.825 0.056 14.790 0.000 0.825 0.825
## y22|t1 -1.020 0.060 -17.078 0.000 -1.020 -1.020
## y22|t2 0.379 0.051 7.506 0.000 0.379 0.379
## y18|t1 -0.396 0.051 -7.817 0.000 -0.396 -0.396
## y18|t2 0.869 0.057 15.364 0.000 0.869 0.869
## y54|t1 -0.417 0.051 -8.205 0.000 -0.417 -0.417
## y54|t2 0.793 0.055 14.354 0.000 0.793 0.793
## y59|t1 -0.472 0.051 -9.211 0.000 -0.472 -0.472
## y59|t2 0.945 0.058 16.273 0.000 0.945 0.945
## y14|t1 -0.253 0.050 -5.090 0.000 -0.253 -0.253
## y14|t2 0.945 0.058 16.273 0.000 0.945 0.945
## y42|t1 -0.658 0.053 -12.346 0.000 -0.658 -0.658
## y42|t2 0.898 0.057 15.717 0.000 0.898 0.898
## y16|t1 -0.798 0.055 -14.427 0.000 -0.798 -0.798
## y16|t2 0.485 0.051 9.443 0.000 0.485 0.485
## y11|t1 0.446 0.051 8.748 0.000 0.446 0.446
## y11|t2 1.529 0.077 19.853 0.000 1.529 1.529
## y53|t1 -0.233 0.050 -4.699 0.000 -0.233 -0.233
## y53|t2 1.395 0.071 19.583 0.000 1.395 1.395
## y58|t1 -0.556 0.052 -10.673 0.000 -0.556 -0.556
## y58|t2 0.667 0.053 12.497 0.000 0.667 0.667
## y32|t1 -0.301 0.050 -6.027 0.000 -0.301 -0.301
## y32|t2 0.736 0.054 13.544 0.000 0.736 0.736
## y30|t1 0.629 0.053 11.893 0.000 0.629 0.629
## y30|t2 1.426 0.072 19.675 0.000 1.426 1.426
## y41|t1 -0.194 0.050 -3.917 0.000 -0.194 -0.194
## y41|t2 1.247 0.066 18.905 0.000 1.247 1.247
## y31|t1 -0.350 0.050 -6.962 0.000 -0.350 -0.350
## y31|t2 1.385 0.071 19.549 0.000 1.385 1.385
## y29|t1 0.489 0.051 9.520 0.000 0.489 0.489
## y29|t2 1.327 0.069 19.320 0.000 1.327 1.327
## y35|t1 -0.027 0.049 -0.549 0.583 -0.027 -0.027
## y35|t2 1.395 0.071 19.583 0.000 1.395 1.395
## y38|t1 -0.476 0.051 -9.289 0.000 -0.476 -0.476
## y38|t2 1.222 0.065 18.752 0.000 1.222 1.222
## y37|t1 -0.174 0.049 -3.526 0.000 -0.174 -0.174
## y37|t2 1.256 0.066 18.955 0.000 1.256 1.256
## y2|t1 -0.112 0.049 -2.273 0.023 -0.112 -0.112
## y2|t2 1.437 0.073 19.703 0.000 1.437 1.437
## y40|t1 -0.429 0.051 -8.438 0.000 -0.429 -0.429
## y40|t2 1.027 0.060 17.144 0.000 1.027 1.027
## y13|t1 -0.330 0.050 -6.572 0.000 -0.330 -0.330
## y13|t2 1.437 0.073 19.703 0.000 1.437 1.437
## y46|t1 0.524 0.052 10.136 0.000 0.524 0.524
## y46|t2 1.623 0.082 19.852 0.000 1.623 1.623
## y43|t1 -0.741 0.054 -13.618 0.000 -0.741 -0.741
## y43|t2 1.014 0.060 17.013 0.000 1.014 1.014
## y62|t1 -0.143 0.049 -2.899 0.004 -0.143 -0.143
## y62|t2 1.214 0.065 18.699 0.000 1.214 1.214
## y44|t1 -0.249 0.050 -5.012 0.000 -0.249 -0.249
## y44|t2 1.067 0.061 17.528 0.000 1.067 1.067
## y9|t1 -0.023 0.049 -0.470 0.638 -0.023 -0.023
## y9|t2 1.542 0.078 19.862 0.000 1.542 1.542
## y27|t1 -0.421 0.051 -8.283 0.000 -0.421 -0.421
## y27|t2 1.327 0.069 19.320 0.000 1.327 1.327
## y33|t1 -0.396 0.051 -7.817 0.000 -0.396 -0.396
## y33|t2 0.963 0.058 16.478 0.000 0.963 0.963
## y39|t1 -0.425 0.051 -8.360 0.000 -0.425 -0.425
## y39|t2 0.788 0.055 14.281 0.000 0.788 0.788
## y65|t1 -0.476 0.051 -9.289 0.000 -0.476 -0.476
## y65|t2 1.067 0.061 17.528 0.000 1.067 1.067
## y34|t1 -0.587 0.052 -11.208 0.000 -0.587 -0.587
## y34|t2 1.014 0.060 17.013 0.000 1.014 1.014
## y36|t1 -0.392 0.051 -7.739 0.000 -0.392 -0.392
## y36|t2 1.020 0.060 17.078 0.000 1.020 1.020
## y56|t1 0.046 0.049 0.941 0.347 0.046 0.046
## y56|t2 1.152 0.063 18.256 0.000 1.152 1.152
## y5|t1 0.314 0.050 6.261 0.000 0.314 0.314
## y5|t2 1.542 0.078 19.862 0.000 1.542 1.542
##
## Variances:
## Estimate Std.Err z-value P(>|z|) Std.lv Std.all
## .y12 0.564 0.564 0.564
## .y26 0.569 0.569 0.569
## .y8 0.489 0.489 0.489
## .y1 0.601 0.601 0.601
## .y17 0.555 0.555 0.555
## .y20 0.512 0.512 0.512
## .y10 0.662 0.662 0.662
## .y47 0.619 0.619 0.619
## .y48 0.570 0.570 0.570
## .y60 0.678 0.678 0.678
## .y55 0.672 0.672 0.672
## .y6 0.753 0.753 0.753
## .y7 0.595 0.595 0.595
## .y57 0.720 0.720 0.720
## .y21 0.503 0.503 0.503
## .y23 0.525 0.525 0.525
## .y19 0.514 0.514 0.514
## .y52 0.583 0.583 0.583
## .y28 0.567 0.567 0.567
## .y3 0.543 0.543 0.543
## .y4 0.488 0.488 0.488
## .y50 0.633 0.633 0.633
## .y45 0.506 0.506 0.506
## .y24 0.617 0.617 0.617
## .y25 0.571 0.571 0.571
## .y22 0.681 0.681 0.681
## .y18 0.622 0.622 0.622
## .y54 0.719 0.719 0.719
## .y59 0.572 0.572 0.572
## .y14 0.588 0.588 0.588
## .y42 0.677 0.677 0.677
## .y16 0.383 0.383 0.383
## .y11 0.709 0.709 0.709
## .y53 0.637 0.637 0.637
## .y58 0.803 0.803 0.803
## .y32 0.703 0.703 0.703
## .y30 0.864 0.864 0.864
## .y41 0.796 0.796 0.796
## .y31 0.631 0.631 0.631
## .y29 0.859 0.859 0.859
## .y35 0.637 0.637 0.637
## .y38 0.683 0.683 0.683
## .y37 0.539 0.539 0.539
## .y2 0.633 0.633 0.633
## .y40 0.733 0.733 0.733
## .y13 0.664 0.664 0.664
## .y46 0.461 0.461 0.461
## .y43 0.712 0.712 0.712
## .y62 0.624 0.624 0.624
## .y44 0.544 0.544 0.544
## .y9 0.751 0.751 0.751
## .y27 0.493 0.493 0.493
## .y33 0.875 0.875 0.875
## .y39 0.828 0.828 0.828
## .y65 0.809 0.809 0.809
## .y34 0.701 0.701 0.701
## .y36 0.750 0.750 0.750
## .y56 0.790 0.790 0.790
## .y5 0.599 0.599 0.599
## metacog1 0.436 0.041 10.744 0.000 1.000 1.000
## regulacao 0.497 0.033 14.864 0.000 1.000 1.000
## metacog2 0.136 0.033 4.072 0.000 1.000 1.000
##
## Scales y*:
## Estimate Std.Err z-value P(>|z|) Std.lv Std.all
## y12 1.000 1.000 1.000
## y26 1.000 1.000 1.000
## y8 1.000 1.000 1.000
## y1 1.000 1.000 1.000
## y17 1.000 1.000 1.000
## y20 1.000 1.000 1.000
## y10 1.000 1.000 1.000
## y47 1.000 1.000 1.000
## y48 1.000 1.000 1.000
## y60 1.000 1.000 1.000
## y55 1.000 1.000 1.000
## y6 1.000 1.000 1.000
## y7 1.000 1.000 1.000
## y57 1.000 1.000 1.000
## y21 1.000 1.000 1.000
## y23 1.000 1.000 1.000
## y19 1.000 1.000 1.000
## y52 1.000 1.000 1.000
## y28 1.000 1.000 1.000
## y3 1.000 1.000 1.000
## y4 1.000 1.000 1.000
## y50 1.000 1.000 1.000
## y45 1.000 1.000 1.000
## y24 1.000 1.000 1.000
## y25 1.000 1.000 1.000
## y22 1.000 1.000 1.000
## y18 1.000 1.000 1.000
## y54 1.000 1.000 1.000
## y59 1.000 1.000 1.000
## y14 1.000 1.000 1.000
## y42 1.000 1.000 1.000
## y16 1.000 1.000 1.000
## y11 1.000 1.000 1.000
## y53 1.000 1.000 1.000
## y58 1.000 1.000 1.000
## y32 1.000 1.000 1.000
## y30 1.000 1.000 1.000
## y41 1.000 1.000 1.000
## y31 1.000 1.000 1.000
## y29 1.000 1.000 1.000
## y35 1.000 1.000 1.000
## y38 1.000 1.000 1.000
## y37 1.000 1.000 1.000
## y2 1.000 1.000 1.000
## y40 1.000 1.000 1.000
## y13 1.000 1.000 1.000
## y46 1.000 1.000 1.000
## y43 1.000 1.000 1.000
## y62 1.000 1.000 1.000
## y44 1.000 1.000 1.000
## y9 1.000 1.000 1.000
## y27 1.000 1.000 1.000
## y33 1.000 1.000 1.000
## y39 1.000 1.000 1.000
## y65 1.000 1.000 1.000
## y34 1.000 1.000 1.000
## y36 1.000 1.000 1.000
## y56 1.000 1.000 1.000
## y5 1.000 1.000 1.000
Inicialmente, o X2 foi de 3716.879, com 1649 de graus de liberdade e p valor significativo. O ideal é que o P-valor não seja significativo. No entanto, é bastante consolidado na literatura que o X2 é influenciado pelo tamanho da amostra. Quão maior a amostra, menor é o valor de P.
Em seguida, o CFI foi de 0.908 e o TLI de 0.898. Até o momento, estes resultados evidenciam marginalmente a adequação do modelo. Já o RMSEA foi de 0.044, com intervalo de confiança entre 0.042 e 0.046. A hipótese nula de que o P-valor é menor ou igual a 0.05 não foi rejeitada (repare que o P-valor foi de 1). Em conjunto, o diagnóstico até aqui apresenta que o modelo encontra-se aceitável.
Para verificar todos os índices, é necessário um comando suplementar:
fitmeasures(cfa_pais, fit.measures = "all")
## npar fmin
## 180.000 3.545
## chisq df
## 4607.852 1649.000
## pvalue chisq.scaled
## 0.000 3716.879
## df.scaled pvalue.scaled
## 1649.000 0.000
## chisq.scaling.factor baseline.chisq
## 1.679 85749.268
## baseline.df baseline.pvalue
## 1711.000 0.000
## baseline.chisq.scaled baseline.df.scaled
## 22817.662 1711.000
## baseline.pvalue.scaled baseline.chisq.scaling.factor
## 0.000 3.982
## cfi tli
## 0.965 0.963
## nnfi rfi
## 0.963 0.944
## nfi pnfi
## 0.946 0.912
## ifi rni
## 0.965 0.965
## cfi.scaled tli.scaled
## 0.902 0.898
## cfi.robust tli.robust
## NA NA
## nnfi.scaled nnfi.robust
## 0.898 NA
## rfi.scaled nfi.scaled
## 0.831 0.837
## ifi.scaled rni.scaled
## 0.902 0.902
## rni.robust rmsea
## NA 0.053
## rmsea.ci.lower rmsea.ci.upper
## 0.051 0.054
## rmsea.pvalue rmsea.scaled
## 0.009 0.044
## rmsea.ci.lower.scaled rmsea.ci.upper.scaled
## 0.042 0.046
## rmsea.pvalue.scaled rmsea.robust
## 1.000 NA
## rmsea.ci.lower.robust rmsea.ci.upper.robust
## NA NA
## rmsea.pvalue.robust rmr
## NA 0.068
## rmr_nomean srmr
## 0.069 0.069
## srmr_bentler srmr_bentler_nomean
## 0.068 0.069
## crmr crmr_nomean
## 0.069 0.070
## srmr_mplus srmr_mplus_nomean
## 0.068 0.069
## cn_05 cn_01
## 246.719 252.486
## gfi agfi
## 0.957 0.952
## pgfi mfi
## 0.863 0.102
Uma vez que tais resultados foram alcançados, é fundamental interpretar os itens e sua relação com fator proposto. Apesar da interpretação ter uma ambiente mais teórico, evidentemente, esta etapa também tem seus critérios. Comumente, vê-se a literatura indicando que apenas os itens com carga fatorial (λ) igual ou acima de 0.3 devem ser interpretados. Tecnicamente, esse valor de corte também serve para verificar a adequação do modelo. Isto posto, agora a carga fatorial dos itens será visualizada.
parameterEstimates(cfa_pais, standardized=TRUE) %>%
filter(op == "=~") %>% #pegar os itens e seus valores
select('Dimensao'=lhs, item=rhs, B=est, SE=se, Z=z, 'p-valor'=pvalue, Beta=std.all) %>% #organizar o dado e renomear
mutate(conteudo = case_when(
item =="y1"~"Leave everything until the last minute.",
item =="y2"~"It takes time to understand things.",
item =="y3"~"Overreacts excessively to little problems.",
item =="y4"~"Acts without thinking, has difficulty controlling his/her behavior and reactions.",
item =="y5"~"When speaking, he/she doesn’t finish one subject and moves on to another.",
item =="y6"~"Always arrives late to appointments or commitments.",
item =="y7"~"Makes careless mistakes",
item =="y8"~"Leaves the light on, door open or wet towels on top of the bed, even after being told several times.",
item =="y9"~"It takes time to understand jokes.",
item =="y10"~"It takes too long to do tasks such as bathing, changing clothes, and eating.",
item =="y11"~"Reckless/fearless, gets involved in risky situations.",
item =="y12"~"Messy, not able to keep his/her room, closet, or desk organized.",
item =="y13"~"Not able to evaluate if a problem has been solved well.",
item =="y14"~"Excessively restless, never stops.",
item =="y16"~"Instructions need to be repeated many times to be obeyed.",
item =="y17"~"Is lazy.",
item =="y18"~"Is repetitive, speaks or asks the same things repeatedly.",
item =="y19"~"Stubborn, everything has to be his/her way, inflexible.",
item =="y20"~"Forgets to bring homework to school, even if they had done it.",
item =="y21"~"“Explodes”/gets angry when he/she is contradicted.",
item =="y22"~"Talks too much.",
item =="y23"~"Gets angry for no reason.",
item =="y24"~"He/She becomes upset with changes in plans or new situations to them.",
item =="y25"~"Interrupts others, doesn’t know how to wait for his/her turn to talk.",
item =="y26"~"Leaves his/her clothes spread around the house.",
item =="y27"~"Even when knowing the answer, makes mistakes due to being careless, impulsive, or from a lack of attention.",
item =="y28"~"Mood changes for no reason.",
item =="y29"~"Not able to pay attention to movies or cartoons for prolonged periods.",
item =="y30"~"Can’t pay attention to video games or computer games for a long time.",
item =="y31"~"Not good at solving problems without help from another person.",
item =="y32"~"Not able to wait for rewards, prefers to get 5 Reais today (5 Dollars) than wait a week to get 10 Reais (10 Dollars).",
item =="y33"~"Doesn’t do a final check on his/her tasks or activities to look for possible mistakes.",
item =="y34"~"Doesn’t think before speaking or acting.",
item =="y35"~"Doesn’t perceive their own performance very well, leaves an exam thinking it went well, when in fact it didn’t.",
item =="y36"~"Doesn’t notice that his/her behavior is bothering other people.",
item =="y37"~"Doesn’t finish what they start and quits soon after encountering any difficulty.",
item =="y38"~"Doesn’t know how to act/overcome new situations or when confronting a problem.",
item =="y39"~"Doesn’t know how to keep a secret.",
item =="y40"~"Doesn’t have a good notion of the time necessary to perform a determined task.",
item =="y41"~"Doesn’t have creativity to solve day-to-day problems.",
item =="y42"~"Doesn’t tolerate frustrations, doesn’t accept when something he/she wants goes wrong or doesn’t work.",
item =="y43"~"Needs help from an adult to finish an activity.",
item =="y44"~"Needs a “push” to start an activity, someone to take initiative for him/her.",
item =="y45"~"Loses his/her control easier than others.",
item =="y46"~"Misses deadlines to deliver homework or meet other commitments.",
item =="y47"~"Loses their belongings or forgets where they put them.",
item =="y48"~"When asked to go do something, he/she forgets what to do.",
item =="y50"~"Wants to have fun and get attention from others at all times.",
item =="y52"~"Resists accepting an alternative way to solve a problem, isn’t flexible.",
item =="y53"~"Focuses on unimportant details and does not perceive “the big picture.”",
item =="y54"~"Gets frustrated and cries easily.",
item =="y55"~"If you ask him/her to get three things from someplace, they will forget to bring one of them.",
item =="y56"~"If you make plans to pick them up at a certain time, they are never ready at the scheduled time.",
item =="y57"~"Their notebooks, agendas and binders are always disorganized.",
item =="y58"~"His/her moments of anger and crying are intense but end quickly.",
item =="y59"~"He/she has difficulty waiting their turn.",
item =="y60"~"Has difficulty getting ready for school on time and ends up being late if someone isn’t pushing them to get ready.",
item =="y62"~"Has difficulty staying focused on homework and in the classroom.",
item =="y65"~"Understands things very literally, has difficulty understanding expressions with double/idiomatic meanings.")) %>%
arrange(Dimensao,desc(Beta)) %>% #organizar do maior pro menor
kable(.,digits = 3, format="html") %>% #apresentar
kable_styling(position = "center", full_width = F, bootstrap_options = "striped")
| Dimensao | item | B | SE | Z | p-valor | Beta | conteudo |
|---|---|---|---|---|---|---|---|
| metacog1 | y8 | 1.082 | 0.062 | 17.322 | 0 | 0.715 | Leaves the light on, door open or wet towels on top of the bed, even after being told several times. |
| metacog1 | y20 | 1.058 | 0.071 | 14.913 | 0 | 0.699 | Forgets to bring homework to school, even if they had done it. |
| metacog1 | y17 | 1.011 | 0.062 | 16.321 | 0 | 0.667 | Is lazy. |
| metacog1 | y12 | 1.000 | 0.000 | NA | NA | 0.660 | Messy, not able to keep his/her room, closet, or desk organized. |
| metacog1 | y26 | 0.994 | 0.048 | 20.628 | 0 | 0.656 | Leaves his/her clothes spread around the house. |
| metacog1 | y48 | 0.993 | 0.066 | 14.950 | 0 | 0.655 | When asked to go do something, he/she forgets what to do. |
| metacog1 | y7 | 0.964 | 0.071 | 13.652 | 0 | 0.637 | Makes careless mistakes |
| metacog1 | y1 | 0.957 | 0.065 | 14.832 | 0 | 0.632 | Leave everything until the last minute. |
| metacog1 | y47 | 0.935 | 0.061 | 15.245 | 0 | 0.617 | Loses their belongings or forgets where they put them. |
| metacog1 | y10 | 0.880 | 0.065 | 13.489 | 0 | 0.581 | It takes too long to do tasks such as bathing, changing clothes, and eating. |
| metacog1 | y55 | 0.868 | 0.063 | 13.860 | 0 | 0.573 | If you ask him/her to get three things from someplace, they will forget to bring one of them. |
| metacog1 | y60 | 0.860 | 0.064 | 13.418 | 0 | 0.568 | Has difficulty getting ready for school on time and ends up being late if someone isn’t pushing them to get ready. |
| metacog1 | y57 | 0.802 | 0.069 | 11.685 | 0 | 0.529 | Their notebooks, agendas and binders are always disorganized. |
| metacog1 | y6 | 0.752 | 0.080 | 9.349 | 0 | 0.497 | Always arrives late to appointments or commitments. |
| metacog2 | y46 | 1.988 | 0.262 | 7.584 | 0 | 0.734 | Misses deadlines to deliver homework or meet other commitments. |
| metacog2 | y27 | 1.928 | 0.251 | 7.671 | 0 | 0.712 | Even when knowing the answer, makes mistakes due to being careless, impulsive, or from a lack of attention. |
| metacog2 | y37 | 1.838 | 0.240 | 7.668 | 0 | 0.679 | Doesn’t finish what they start and quits soon after encountering any difficulty. |
| metacog2 | y44 | 1.829 | 0.243 | 7.529 | 0 | 0.675 | Needs a “push” to start an activity, someone to take initiative for him/her. |
| metacog2 | y5 | 1.715 | 0.219 | 7.831 | 0 | 0.633 | When speaking, he/she doesn’t finish one subject and moves on to another. |
| metacog2 | y62 | 1.662 | 0.225 | 7.385 | 0 | 0.613 | Has difficulty staying focused on homework and in the classroom. |
| metacog2 | y31 | 1.645 | 0.216 | 7.631 | 0 | 0.607 | Not good at solving problems without help from another person. |
| metacog2 | y2 | 1.641 | 0.226 | 7.256 | 0 | 0.606 | It takes time to understand things. |
| metacog2 | y35 | 1.631 | 0.213 | 7.641 | 0 | 0.602 | Doesn’t perceive their own performance very well, leaves an exam thinking it went well, when in fact it didn’t. |
| metacog2 | y13 | 1.569 | 0.226 | 6.939 | 0 | 0.579 | Not able to evaluate if a problem has been solved well. |
| metacog2 | y38 | 1.525 | 0.215 | 7.092 | 0 | 0.563 | Doesn’t know how to act/overcome new situations or when confronting a problem. |
| metacog2 | y34 | 1.481 | 0.200 | 7.418 | 0 | 0.547 | Doesn’t think before speaking or acting. |
| metacog2 | y43 | 1.455 | 0.202 | 7.207 | 0 | 0.537 | Needs help from an adult to finish an activity. |
| metacog2 | y40 | 1.399 | 0.199 | 7.038 | 0 | 0.517 | Doesn’t have a good notion of the time necessary to perform a determined task. |
| metacog2 | y36 | 1.355 | 0.184 | 7.374 | 0 | 0.500 | Doesn’t notice that his/her behavior is bothering other people. |
| metacog2 | y9 | 1.352 | 0.194 | 6.963 | 0 | 0.499 | It takes time to understand jokes. |
| metacog2 | y56 | 1.241 | 0.189 | 6.565 | 0 | 0.458 | If you make plans to pick them up at a certain time, they are never ready at the scheduled time. |
| metacog2 | y41 | 1.225 | 0.182 | 6.727 | 0 | 0.452 | Doesn’t have creativity to solve day-to-day problems. |
| metacog2 | y65 | 1.183 | 0.181 | 6.530 | 0 | 0.437 | Understands things very literally, has difficulty understanding expressions with double/idiomatic meanings. |
| metacog2 | y39 | 1.125 | 0.175 | 6.415 | 0 | 0.415 | Doesn’t know how to keep a secret. |
| metacog2 | y29 | 1.017 | 0.121 | 8.433 | 0 | 0.376 | Not able to pay attention to movies or cartoons for prolonged periods. |
| metacog2 | y30 | 1.000 | 0.000 | NA | NA | 0.369 | Can’t pay attention to video games or computer games for a long time. |
| metacog2 | y33 | 0.959 | 0.153 | 6.270 | 0 | 0.354 | Doesn’t do a final check on his/her tasks or activities to look for possible mistakes. |
| regulacao | y16 | 1.114 | 0.049 | 22.936 | 0 | 0.785 | Instructions need to be repeated many times to be obeyed. |
| regulacao | y4 | 1.016 | 0.048 | 21.356 | 0 | 0.716 | Acts without thinking, has difficulty controlling his/her behavior and reactions. |
| regulacao | y21 | 1.000 | 0.000 | NA | NA | 0.705 | “Explodes”/gets angry when he/she is contradicted. |
| regulacao | y45 | 0.997 | 0.047 | 21.320 | 0 | 0.703 | Loses his/her control easier than others. |
| regulacao | y19 | 0.989 | 0.043 | 23.012 | 0 | 0.697 | Stubborn, everything has to be his/her way, inflexible. |
| regulacao | y23 | 0.978 | 0.044 | 22.380 | 0 | 0.690 | Gets angry for no reason. |
| regulacao | y3 | 0.959 | 0.047 | 20.243 | 0 | 0.676 | Overreacts excessively to little problems. |
| regulacao | y28 | 0.934 | 0.049 | 19.191 | 0 | 0.658 | Mood changes for no reason. |
| regulacao | y25 | 0.929 | 0.051 | 18.108 | 0 | 0.655 | Interrupts others, doesn’t know how to wait for his/her turn to talk. |
| regulacao | y59 | 0.928 | 0.047 | 19.738 | 0 | 0.654 | He/she has difficulty waiting their turn. |
| regulacao | y52 | 0.916 | 0.043 | 21.229 | 0 | 0.646 | Resists accepting an alternative way to solve a problem, isn’t flexible. |
| regulacao | y14 | 0.911 | 0.049 | 18.743 | 0 | 0.642 | Excessively restless, never stops. |
| regulacao | y24 | 0.878 | 0.046 | 19.047 | 0 | 0.619 | He/She becomes upset with changes in plans or new situations to them. |
| regulacao | y18 | 0.873 | 0.051 | 16.998 | 0 | 0.615 | Is repetitive, speaks or asks the same things repeatedly. |
| regulacao | y50 | 0.860 | 0.048 | 17.879 | 0 | 0.606 | Wants to have fun and get attention from others at all times. |
| regulacao | y53 | 0.855 | 0.055 | 15.677 | 0 | 0.603 | Focuses on unimportant details and does not perceive “the big picture.” |
| regulacao | y42 | 0.806 | 0.049 | 16.379 | 0 | 0.568 | Doesn’t tolerate frustrations, doesn’t accept when something he/she wants goes wrong or doesn’t work. |
| regulacao | y22 | 0.802 | 0.051 | 15.802 | 0 | 0.565 | Talks too much. |
| regulacao | y32 | 0.773 | 0.055 | 14.036 | 0 | 0.545 | Not able to wait for rewards, prefers to get 5 Reais today (5 Dollars) than wait a week to get 10 Reais (10 Dollars). |
| regulacao | y11 | 0.766 | 0.058 | 13.157 | 0 | 0.540 | Reckless/fearless, gets involved in risky situations. |
| regulacao | y54 | 0.753 | 0.053 | 14.254 | 0 | 0.530 | Gets frustrated and cries easily. |
| regulacao | y58 | 0.630 | 0.056 | 11.221 | 0 | 0.444 | His/her moments of anger and crying are intense but end quickly. |
Apesar de tabelas serem informativas, análises fatoriais se benefiam bastante da apresentação gráfica dos resultados. O pacote semplot é bastante versatil para esta finalidade e permite uma grande customização. Em outras palavras, o gráfico abaixo poderá ser alterado para que ele se torne mais facilmente compreendido à apresentação dos resultados.
library(semPlot)
## Registered S3 methods overwritten by 'BDgraph':
## method from
## plot.sim lava
## print.sim lava
## Registered S3 methods overwritten by 'huge':
## method from
## plot.sim BDgraph
## print.sim BDgraph
semPaths(cfa_pais, title = FALSE,
label.cex = 2, #font - variables
sizeLat = 7, #font latent
sizeMan = 4, #font - variables
edge.label.cex = 1.2, #lambda font
minimum = 0.1,
sizeInt = 0.8,
mar = c(1, 1, 1, 1), residuals = FALSE,
intercepts = FALSE, thresholds = FALSE,
layout = "circle2",
"std",
cut = 0.3,
"hide", #hide latent estimates
posCol = c("black", "dimgray"), #color of paths
color = list(lat = rgb(173, 216, 230, maxColorValue = 255),
man = rgb(240, 248, 255, maxColorValue = 255)))
Nesse caso, com adequação das evidências sobre a estrutura interna do instrumento, é possível também retornar aos indicadores previamente descritos sobre a fidedignidade (precisão, consistência). No momento anterior, foi visto que o estimador mais utilizado (Coeficiente Alfa) havia sido utilizado considerando que as variáveis eram contínuas e utilizando todo banco de dados. Uma vez que assumimos que as variáveis (os itens do instrumento) são categóricas e também derivamos fatores específicos a cada um dos itens, é importante recalcular os estimadores de fidedignidade de maneira a contemplar estas soluções alcançadas. Existem maneiras diversas de se fazer isso. No entanto, o pacote semtools tem uma função já pré-pronta com esta finalidade.
library(semTools)
##
## ###############################################################################
## This is semTools 0.5-2.907
## All users of R (or SEM) are invited to submit functions or ideas for functions.
## ###############################################################################
##
## Attaching package: 'semTools'
## The following object is masked from 'package:psych':
##
## skew
## The following object is masked from 'package:readr':
##
## clipboard
reliability(cfa_pais)
## The alpha and the average variance extracted are calculated from polychoric (polyserial) correlations, not from Pearson correlations.
## metacog1 regulacao metacog2 total
## alpha 0.8910086 0.9323082 0.9021495 0.9588834
## omega 0.7251088 0.8324708 0.7623360 0.8977993
## omega2 0.7251088 0.8324708 0.7623360 0.8977993
## omega3 0.7230065 0.8375541 0.7737475 0.8825007
## avevar 0.3886851 0.4026068 0.3052974 0.3613692
Pragmaticamente, esta etapa encerraria uma parte das análises psicométricas relacionadas à modelagem deste instrumento. A solução encontrada passa tanto pelos principais critérios estatísticos como tem sentido teórico (um fator de funções executivas quentes e dois fatores reunindo itens específicos associados às funções executivas frias, sendo um mais sofisticado do que o outro).
Eventualmente, existem mais análises psicométricas que podem (e, as vezes, devem ser feitas) antes de falar sobre evidências de validade de um instrumento. Por exemplo, um possível interesse do pesquisador pode ser a utilização dos resultados obtidos pelo processo de resposta ao instrumento para comparação de grupos a partir da criação de resultados / escores derivados dos resultados fatoriais (fscores). Se esta é a necessidade, torna-se fundamental investigar aspectos da invariância do instrumento, bem como se existe um funcionamento diferencial dos items (DIF). O DIF investiga se a função de resposta ao item é diferente para sujeitos de diferentes grupos que apresentam o mesmo nível da variável latente. Caso um instrumento apresente DIF, a comparação entre participantes/grupos torna-se mais difícil e é necessário ou excluir os itens com DIF ou realizar equiparação de escores. Posto isso, após tais análises feitas, a utilização do instrumento e a tomada de decisão com base nos resultados obtidos é mais segura.
Além disso, a realidade obtida neste instrumento não é necessariamente a mais frequente em Psicometria. É importante atentar que nem todos os instrumentos apresentam indicares iniciais bem comportados. Com bastante frequência, valores do qui-quadrado, RMSEA, CFI e TLI indicam que a estrutura testada tem pouca adequação empírica. Uma vez que isso ocorra, é necessário realizar ajustes. Frequentemente, isso é implementado pela análise dos ‘índices de modificação’ e, em alguns casos, pelo retorno à etapa exploratória (EFA) do instrumento, conforme recomendado pela Linda Muthen (aqui)[http://www.statmodel.com/discussion/messages/9/2605.html?1335209700] ou por um trabalh nosso publicado em 2019, que pode ser acessado em (DOI: 10.1590/1413-82712019240304). Em relação aos índices de modificação, é prudente atentar que a literatura é bastante conflitante em relação à aceitação de ajustes post-hoc de modelos psicométricos e eu me incluo nesta crítica.
No entanto, uma vez que o propósito deste handout é ser pedagógico, é necessário saber solicitar os índices de modificação do instrumento. Isso também é feito pelo ‘summary’ do lavaan, abaixo exposto.
modificationIndices(cfa_pais) %>%
select(lhs, op, rhs, mi) %>%
arrange(lhs,desc(mi)) %>% #organizar do maior pro menor
head(10) %>% # <- apresentar apenas 10 resultados, pode ser mudado!
kable(.,digits = 3, format="html") %>% #apresentar
kable_styling(position = "center", full_width = F, bootstrap_options = "striped")
| lhs | op | rhs | mi |
|---|---|---|---|
| metacog1 | =~ | y16 | 148.985 |
| metacog1 | =~ | y46 | 105.903 |
| metacog1 | =~ | y21 | 58.139 |
| metacog1 | =~ | y41 | 53.268 |
| metacog1 | =~ | y23 | 33.183 |
| metacog1 | =~ | y31 | 27.737 |
| metacog1 | =~ | y38 | 27.529 |
| metacog1 | =~ | y30 | 27.382 |
| metacog1 | =~ | y27 | 26.396 |
| metacog1 | =~ | y52 | 22.903 |
Repare que todas as sugestões vem acompanhadas de uma métrica. Quando os autores decidem implementar as sugestões, é sugerido que apenas os MI > 11 sejam feitos, o que infica p < 0.001. Por sua vez, MI > 4 indicam p < 0.05 e é um critério mais leniente. A métrica do MI é relacionada ao Qui-quadrado do modelo. Por exemplo, especificamente em relação às sugestões do conjunto de dados que está sob análise, repare que o item 16 (“É preciso repetir várias vezes para obedecer a ordens”) pode também ser adicionao ao fator “Metacognição” e se fizer isso, o qui-quadrado cairá 148.985 (Sairá de 4607.852 para cerca de 4458.867). Essa sugestão já havia já aparecido na etapa de análise exploratória mas, como previamente exposto, não será feita.
Isto posto, as principais etapas da análise fatorial (exploratória e confirmatória) foram abordadas.