library(knitr)
library(semPlot)
library(tidyverse)
library(psych)
library(lavaan)
# abra o arquivo direto da internet
con<-url("http://www.labape.com.br/rprimi/SEM/exerc18/ex3b.RData")
load(con)
# explorando a base
names(pscm_acq1$recoded_data_c)
## [1] "p.2.1" "p.2.6" "p.2.11" "p.2.20" "p.2.16" "p.2.25" "p.3.1"
## [8] "p.3.6" "p.3.11" "p.3.16" "p.3.21" "p.2.2" "p.2.7" "p.2.17"
## [15] "p.2.12" "p.2.26" "p.2.21" "p.3.2" "p.3.7" "p.3.12" "p.3.17"
## [22] "p.3.23" "p.2.3" "p.2.8" "p.2.22" "p.2.27" "p.2.13" "p.2.30"
## [29] "p.3.3" "p.3.8" "p.3.13" "p.3.18" "p.3.24" "p.2.9" "p.2.14"
## [36] "p.2.4" "p.2.29" "p.2.18" "p.2.23" "p.2.32" "p.3.4" "p.3.9"
## [43] "p.3.14" "p.3.19" "p.3.25" "p.2.5" "p.2.19" "p.2.24" "p.2.10"
## [50] "p.2.15" "p.2.31" "p.2.33" "p.3.5" "p.3.10" "p.3.15" "p.3.20"
## [57] "p.3.26" "p.4.4" "p.4.11" "p.4.16" "p.4.24" "p.5.4" "p.5.11"
## [64] "p.5.16" "p.5.24" "p.5.2" "p.5.8" "p.5.14" "p.5.19" "p.5.22"
## [71] "p.4.3" "p.4.13" "p.4.19" "p.4.23" "p.4.27" "p.4.7" "p.4.12"
## [78] "p.4.20" "p.4.28" "p.4.9" "p.4.17" "p.4.21" "p.4.25" "p.4.6"
## [85] "p.4.14" "p.4.22" "p.5.1" "p.5.10" "p.5.21" "p.5.6" "p.5.13"
## [92] "p.5.17" "p.4.1" "p.4.5" "p.4.10" "p.4.15" "p.5.3" "p.5.7"
## [99] "p.5.20" "p.5.12" "p.5.15" "p.5.18" "p.5.5" "p.5.9" "p.5.23"
## [106] "p.4.2" "p.4.8" "p.4.18" "p.4.26" "means" "sd"
class(pscm_acq1$recoded_data_c)
## [1] "data.frame"
names(dic)
## [1] "X__1" "test_ord" "teste" "coditem" "factor"
## [6] "factor0" "factor2" "factor3" "pole" "order"
## [11] "coditem2" "P_S" "domain" "facet" "pole2"
## [16] "seman_pairs" "ord_esc" "item_text" "CodItem3" "port_text1"
## [21] "engl_text1" "engl_text2" "Pairs" "carol_eng"
itens_senna <- names(dic)[c(3:5, 9, 14, 18) ]
# Seleciona itens do senna
dic_senna <- dic %>% filter(teste=="senna" & factor != "chk_0") %>%
select(itens_senna) %>% arrange(factor, pole, facet)
# seleciona itens da base
data <- pscm_acq1$recoded_data_c %>%
select(dic_senna$coditem)
# renomeia itens no dicionario e na base para incluir o dominio no nome
dic_senna$coditem <- paste(dic_senna$factor, dic_senna$coditem, sep="_")
dic_senna$key <- ifelse(dic_senna$pole ==1, 1, -1)
names(data) <-paste(dic_senna$factor, names(data), sep="_")
# Mostra dicionário
kable(dic_senna)
teste | coditem | factor | pole | facet | item_text | key |
---|---|---|---|---|---|---|
senna | A_0_p.2.11 | A_0 | 0 | Mod | Eu nunca estou satisfeito(a) com os outros. | -1 |
senna | A_0_p.2.20 | A_0 | 0 | Resp | Não me importo se tiver que magoar alguém para conseguir o que eu quero. | -1 |
senna | A_0_p.2.1 | A_0 | 1 | Cmp | Eu me preocupo com o que acontece com os outros. | 1 |
senna | A_0_p.2.6 | A_0 | 1 | Cmp | Não sou egoísta e gosto de ajudar os outros. | 1 |
senna | A_0_p.2.16 | A_0 | 1 | Resp | Respeito autoridades (professores, diretores, etc.). | 1 |
senna | A_0_p.2.25 | A_0 | 1 | Tru | Acredito no melhor das pessoas. | 1 |
senna | A_1_p.3.1 | A_1 | 1 | Cmp | Ser legal com os outros. | 1 |
senna | A_1_p.3.6 | A_1 | 1 | Cmp | Saber quando seus amigos precisam de ajuda mesmo que eles não falem nada. | 1 |
senna | A_1_p.3.11 | A_1 | 1 | Cmp | Perceber o que as outras pessoas estão sentindo. | 1 |
senna | A_1_p.3.16 | A_1 | 1 | Resp | Ouvir respeitosamente a opinião dos outros? | 1 |
senna | A_1_p.3.21 | A_1 | 1 | Resp | Tratar bem e respeitosamente as pessoas de que você não gosta. | 1 |
senna | C_0_p.2.17 | C_0 | 0 | Ord | Sou bagunceiro com minhas coisas. | -1 |
senna | C_0_p.2.26 | C_0 | 0 | SD | Deixo tudo para última hora. | -1 |
senna | C_0_p.2.2 | C_0 | 1 | Achv | Sou um aluno dedicado e trabalhador. | 1 |
senna | C_0_p.2.7 | C_0 | 1 | Achv | Sempre faço as tarefas da escola da melhor forma possível. | 1 |
senna | C_0_p.2.12 | C_0 | 1 | Ord | Gosto de manter o meu material escolar muito bem organizado. | 1 |
senna | C_0_p.2.21 | C_0 | 1 | SD | Termino minhas tarefas no prazo planejado. | 1 |
senna | C_1_p.3.2 | C_1 | 1 | Achv | Colocar o esforço e tempo necessário nas suas tarefas para obter bons resultados. | 1 |
senna | C_1_p.3.7 | C_1 | 1 | Achv | Se desafiar para melhorar seus resultados. | 1 |
senna | C_1_p.3.12 | C_1 | 1 | Conc | Concentrar-se nas tarefas que está fazendo. | 1 |
senna | C_1_p.3.17 | C_1 | 1 | Conc | Prestar atenção nas aulas. | 1 |
senna | C_1_p.3.23 | C_1 | 1 | SD | Terminar todo seu dever de casa. | 1 |
senna | E_0_p.2.8 | E_0 | 0 | Assr | Tenho vergonha de fazer perguntas durante a aula. | -1 |
senna | E_0_p.2.22 | E_0 | 0 | Soc | Sou tímido(a), inibido(a). | -1 |
senna | E_0_p.2.27 | E_0 | 0 | Soc | Falo pouco com os outros colegas da escola. | -1 |
senna | E_0_p.2.3 | E_0 | 1 | Act | Sou muito alegre e animado(a). | 1 |
senna | E_0_p.2.13 | E_0 | 1 | Soc | Gosto de estar na companhia dos outros. | 1 |
senna | E_0_p.2.30 | E_0 | 1 | Soc | Sou desinibido(a) e me dou bem com os outros. | 1 |
senna | E_1_p.3.3 | E_1 | 1 | Act | Fazer coisas engraçadas para os amigos darem risadas. | 1 |
senna | E_1_p.3.8 | E_1 | 1 | Assr | Ser líder em uma atividade. | 1 |
senna | E_1_p.3.13 | E_1 | 1 | Assr | Fazer perguntas ao professor durante as aulas. | 1 |
senna | E_1_p.3.18 | E_1 | 1 | Assr | Expressar suas opiniões em uma discussão. | 1 |
senna | E_1_p.3.24 | E_1 | 1 | Soc | Dar o primeiro passo para mostrar que você gosta de alguém. | 1 |
senna | N_0_p.2.9 | N_0 | 0 | LAngrVol | Eu me descontrolo facilmente quando não consigo o que quero. | -1 |
senna | N_0_p.2.14 | N_0 | 0 | LAngrVol | Eu me irrito com facilidade. | -1 |
senna | N_0_p.2.29 | N_0 | 0 | LAnx | Fico nervoso(a) com facilidade. | -1 |
senna | N_0_p.2.32 | N_0 | 0 | LDep | Fico triste de uma hora para a outra. | -1 |
senna | N_0_p.2.4 | N_0 | 1 | LAngrVol | Sou calmo(a) e controlo bem meu estresse. | 1 |
senna | N_0_p.2.18 | N_0 | 1 | LAnx | Sou relaxado e não fico estressado à toa. | 1 |
senna | N_0_p.2.23 | N_0 | 1 | LAnx | Após um susto, eu me acalmo facilmente. | 1 |
senna | N_1_p.3.4 | N_1 | 1 | LAngrVol | Manter-se calmo, sem estourar, quando provocado(a). | 1 |
senna | N_1_p.3.9 | N_1 | 1 | LAnx | Lidar com tranquilidade com uma situação difícil ou estressante. | 1 |
senna | N_1_p.3.14 | N_1 | 1 | LAnx | Lidar com estresse sem se preocupar muito. | 1 |
senna | N_1_p.3.19 | N_1 | 1 | LAnx | Manter a calma quando alguma coisa dá errado ao invés de ficar nervoso | 1 |
senna | N_1_p.3.25 | N_1 | 1 | LDep | Manter-se bem mesmo quando alguma coisa ruim acontece com você. | 1 |
senna | O_0_p.2.19 | O_0 | 0 | CrImg | Não tenho muita imaginação. | -1 |
senna | O_0_p.2.24 | O_0 | 0 | CrImg | Dificilmente tenho ideias originais. | -1 |
senna | O_0_p.2.5 | O_0 | 1 | Aes | Me interesso por vários tipos de obras de arte, de música e ou de literatura. | 1 |
senna | O_0_p.2.10 | O_0 | 1 | CrImg | Sou original, tenho ideias novas. | 1 |
senna | O_0_p.2.15 | O_0 | 1 | CrImg | Sou criativo, gosto de encontrar maneiras diferentes de fazer as coisas. | 1 |
senna | O_0_p.2.31 | O_0 | 1 | IntCur | Gosto de refletir e brincar com minhas ideias. | 1 |
senna | O_0_p.2.33 | O_0 | 1 | IntCur | Muitos assuntos despertam minha curiosidade. | 1 |
senna | O_1_p.3.5 | O_1 | 1 | Aes | Criar coisas artísticas, como um poema. | 1 |
senna | O_1_p.3.10 | O_1 | 1 | CrImg | Criar coisas novas. | 1 |
senna | O_1_p.3.15 | O_1 | 1 | CrImg | Inventar jogos ou brincadeiras facilmente. | 1 |
senna | O_1_p.3.20 | O_1 | 1 | IntCur | Aprender sobre novas culturas. | 1 |
senna | O_1_p.3.26 | O_1 | 1 | IntCur | Descobrir como algo funciona. | 1 |
library(d3heatmap)
data %>%
cor(use="pair") %>%
d3heatmap(
symn= TRUE,
symm = TRUE,
k_row = 5,
k_col = 5
)
data %>% fa.parallel(fa = "fa" )
## Parallel analysis suggests that the number of factors = 6 and the number of components = NA
data %>% fa(nfactors = 5) %>% print.psych(cut =.28, sort = TRUE)
## Factor Analysis using method = minres
## Call: fa(r = ., nfactors = 5)
## Standardized loadings (pattern matrix) based upon correlation matrix
## item MR1 MR2 MR3 MR4 MR5 h2 u2 com
## C_0_p.2.12 16 0.69 0.413 0.59 1.2
## C_0_p.2.17 12 -0.65 0.434 0.57 1.2
## C_1_p.3.23 22 0.63 0.507 0.49 1.3
## C_0_p.2.2 14 0.61 0.503 0.50 1.4
## A_0_p.2.16 5 0.60 0.418 0.58 1.2
## C_1_p.3.17 21 0.60 0.456 0.54 1.1
## C_0_p.2.7 15 0.59 0.398 0.60 1.2
## C_0_p.2.26 13 -0.53 0.374 0.63 1.3
## C_1_p.3.2 18 0.53 0.30 0.540 0.46 2.0
## C_0_p.2.21 17 0.42 0.222 0.78 1.3
## C_1_p.3.12 20 0.41 0.351 0.65 1.9
## E_0_p.2.30 28 0.35 0.273 0.73 3.2
## E_0_p.2.27 25 -0.30 0.172 0.83 2.3
## A_0_p.2.20 2 0.150 0.85 2.6
## E_0_p.2.3 26 0.105 0.90 3.6
## N_0_p.2.14 35 -0.78 0.598 0.40 1.1
## N_0_p.2.29 36 -0.57 0.406 0.59 1.2
## N_1_p.3.9 42 0.54 0.371 0.63 1.3
## N_1_p.3.4 41 0.50 0.339 0.66 1.7
## N_0_p.2.32 37 -0.48 0.223 0.78 1.2
## N_0_p.2.4 38 0.48 0.319 0.68 1.3
## N_1_p.3.25 45 0.42 0.29 0.327 0.67 1.9
## N_1_p.3.19 44 0.36 0.241 0.76 1.8
## N_0_p.2.23 40 0.35 0.296 0.70 3.0
## A_1_p.3.1 7 0.34 0.337 0.66 2.8
## A_1_p.3.21 11 0.31 0.170 0.83 1.7
## N_0_p.2.9 34 -0.31 0.195 0.80 1.7
## N_1_p.3.14 43 0.217 0.78 2.4
## O_1_p.3.10 54 0.63 0.482 0.52 1.1
## O_0_p.2.31 51 0.54 0.350 0.65 1.2
## O_0_p.2.15 50 0.45 0.278 0.72 1.3
## O_1_p.3.20 56 0.41 0.363 0.64 2.2
## O_0_p.2.10 49 0.39 0.308 0.69 2.3
## O_1_p.3.5 53 0.38 0.225 0.77 1.8
## E_1_p.3.18 32 -0.30 0.38 0.180 0.82 1.9
## E_1_p.3.24 33 0.34 0.228 0.77 1.8
## O_0_p.2.5 48 0.32 0.216 0.78 2.0
## O_0_p.2.19 46 -0.31 0.197 0.80 2.0
## O_1_p.3.15 55 0.201 0.80 3.4
## E_0_p.2.8 23 0.159 0.84 2.9
## O_1_p.3.26 57 0.276 0.72 4.2
## A_1_p.3.6 8 0.72 0.495 0.51 1.1
## A_1_p.3.11 9 0.51 0.320 0.68 1.5
## A_0_p.2.6 4 0.30 0.45 0.448 0.55 2.7
## A_0_p.2.1 3 0.29 0.44 0.375 0.62 2.0
## C_1_p.3.7 19 0.39 0.333 0.67 2.1
## E_0_p.2.13 27 0.33 0.197 0.80 2.6
## A_0_p.2.25 6 0.33 0.187 0.81 2.3
## O_0_p.2.24 47 0.104 0.90 1.8
## A_1_p.3.16 10 0.245 0.75 3.8
## E_1_p.3.3 29 0.080 0.92 1.9
## E_1_p.3.8 30 0.105 0.89 3.7
## A_0_p.2.11 1 0.082 0.92 2.2
## E_0_p.2.22 24 -0.68 0.478 0.52 1.0
## E_1_p.3.13 31 0.41 0.258 0.74 2.0
## O_0_p.2.33 52 0.34 0.178 0.82 2.2
## N_0_p.2.18 39 0.28 0.187 0.81 3.4
##
## MR1 MR2 MR3 MR4 MR5
## SS loadings 5.23 3.92 3.12 2.87 1.76
## Proportion Var 0.09 0.07 0.05 0.05 0.03
## Cumulative Var 0.09 0.16 0.22 0.27 0.30
## Proportion Explained 0.31 0.23 0.18 0.17 0.10
## Cumulative Proportion 0.31 0.54 0.73 0.90 1.00
##
## With factor correlations of
## MR1 MR2 MR3 MR4 MR5
## MR1 1.00 0.28 0.25 0.27 0.09
## MR2 0.28 1.00 0.24 0.20 0.17
## MR3 0.25 0.24 1.00 0.19 0.22
## MR4 0.27 0.20 0.19 1.00 0.11
## MR5 0.09 0.17 0.22 0.11 1.00
##
## Mean item complexity = 2
## Test of the hypothesis that 5 factors are sufficient.
##
## The degrees of freedom for the null model are 1596 and the objective function was 26.52 with Chi Square of 3902.75
## The degrees of freedom for the model are 1321 and the objective function was 13.75
##
## The root mean square of the residuals (RMSR) is 0.06
## The df corrected root mean square of the residuals is 0.06
##
## The harmonic number of observations is 166 with the empirical chi square 1743.97 with prob < 3.2e-14
## The total number of observations was 168 with Likelihood Chi Square = 1977.3 with prob < 4.7e-29
##
## Tucker Lewis Index of factoring reliability = 0.643
## RMSEA index = 0.066 and the 90 % confidence intervals are 0.05 NA
## BIC = -4791.45
## Fit based upon off diagonal values = 0.9
## Measures of factor score adequacy
## MR1 MR2 MR3 MR4 MR5
## Correlation of (regression) scores with factors 0.94 0.93 0.90 0.90 0.85
## Multiple R square of scores with factors 0.89 0.87 0.81 0.81 0.72
## Minimum correlation of possible factor scores 0.78 0.73 0.61 0.62 0.44
# Roda análise e salva em um objeto
efa5 <- fa(data, nfactors = 5)
# Abre função que dados dos objectos psych em excel
source("http://www.labape.com.br/rprimi/R/save_loadings4.R")
# Precisa disso para rodar o java (procure no seu comp o arquivo libjvm.dylib e carregue-o explicitamente)
dyn.load('/Applications/Mplus/jre/Contents/Home/lib/server/libjvm.dylib')
# usa a função para salvar as cargas com o dicionário
save_loadings4(efa5, item_dic = dic_senna, filename = "efa5.xlsx", digits = 2)
dic_A <- dic_senna %>% filter(factor == "A_1" | factor == "A_0")
data %>% select(dic_A$coditem) %>% fa.parallel()
## Parallel analysis suggests that the number of factors = 3 and the number of components = 2
data %>% select(dic_A$coditem) %>% omega(nfactors = 3, key = dic_A$key)
## Omega
## Call: omega(m = ., nfactors = 3, key = dic_A$key)
## Alpha: 0.73
## G.6: 0.75
## Omega Hierarchical: 0.52
## Omega H asymptotic: 0.67
## Omega Total 0.78
##
## Schmid Leiman Factor loadings greater than 0.2
## g F1* F2* F3* h2 u2 p2
## A_0_p.2.11- 0.23 0.09 0.91 0.30
## A_0_p.2.20- 0.35 0.33 0.26 0.74 0.49
## A_0_p.2.1 0.61 0.39 0.54 0.46 0.69
## A_0_p.2.6 0.50 0.23 0.35 0.65 0.71
## A_0_p.2.16 0.41 0.26 0.22 0.32 0.68 0.53
## A_0_p.2.25 0.29 0.13 0.87 0.67
## A_1_p.3.1 0.47 0.66 0.65 0.35 0.33
## A_1_p.3.6 0.36 0.77 0.73 0.27 0.18
## A_1_p.3.11 0.25 0.50 0.31 0.69 0.21
## A_1_p.3.16 0.37 0.36 0.30 0.70 0.47
## A_1_p.3.21 0.34 0.20 -0.26 0.22 0.27 0.73 0.43
##
## With eigenvalues of:
## g F1* F2* F3*
## 1.69 0.76 1.06 0.43
##
## general/max 1.6 max/min = 2.49
## mean percent general = 0.46 with sd = 0.19 and cv of 0.41
## Explained Common Variance of the general factor = 0.43
##
## The degrees of freedom are 25 and the fit is 0.12
## The number of observations was 168 with Chi Square = 19.49 with prob < 0.77
## The root mean square of the residuals is 0.03
## The df corrected root mean square of the residuals is 0.05
## RMSEA index = 0 and the 10 % confidence intervals are 0 0.043
## BIC = -108.6
##
## Compare this with the adequacy of just a general factor and no group factors
## The degrees of freedom for just the general factor are 44 and the fit is 0.7
## The number of observations was 168 with Chi Square = 113.39 with prob < 4.9e-08
## The root mean square of the residuals is 0.11
## The df corrected root mean square of the residuals is 0.12
##
## RMSEA index = 0.1 and the 10 % confidence intervals are 0.075 0.119
## BIC = -112.06
##
## Measures of factor score adequacy
## g F1* F2* F3*
## Correlation of scores with factors 0.75 0.72 0.83 0.50
## Multiple R square of scores with factors 0.57 0.52 0.69 0.25
## Minimum correlation of factor score estimates 0.14 0.03 0.38 -0.49
##
## Total, General and Subset omega for each subset
## g F1* F2* F3*
## Omega total for total scores and subscales 0.78 0.63 0.50 0.61
## Omega general for total scores and subscales 0.52 0.34 0.22 0.43
## Omega group for total scores and subscales 0.14 0.29 0.27 0.18
# Roda análise e salva em um objeto
omegaA <- data %>% select(dic_A$coditem) %>% omega(nfactors = 3, key = dic_A$key)
# usa a função para salvar as cargas com o dicionário
save_loadings4(obj = omegaA, item_dic = dic_A, filename = "omegaA.xlsx", digits=2)