Bibliotecas

  library(knitr)
  library(semPlot)
  library(tidyverse)
  library(psych)
  library(lavaan)

Dados

# 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
Correlação entre as variáveis
  library(d3heatmap)
   data %>% 
      cor(use="pair") %>%
      d3heatmap( 
        symn= TRUE, 
        symm = TRUE, 
        k_row = 5, 
        k_col = 5
        )
Análise paralela e EFA
  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
Salva resultados em excel
# 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)

Análise bifatorial exploratória por domínios

 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

Salva cargas fatoriais

# 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)

Exercício