library(psych)
library(tidyverse)
library(haven)
library(nFactors)
library(EGAnet)
library(psychTools)
library(haven)
library(dplyr)
library(tidyr)
library(ggcorrplot)
library(knitr)
library(lavaan)
#Bu kod baya işlevsel oldu
setwd(dirname(rstudioapi::getActiveDocumentContext()$path))

1 Giriş

Bu derste DFA ve ÇGDFA’nın adımlarına değinildi. Öğrenme günlüğünde DFA ve ÇGDFA’nın örnek bir uygulamasına yer verilmiştir.

1.1 Veri Setinin Yüklenmesi

Veri seti LISS veri paneli 2024 yılı, kişilik araştırmaları 16. döngüden alınmıştır. PANAS (Positive and Negative Affect Scale) için DFA ve ÇGDFA uygulamaları yapılmıştır. PANAS veri seti 1-7 arasında puanlanmaktadır. İki boyutlu ve bifaktör modelin daha iyi model-veri uyumu sağladığı bilinmektedir. ÇGDFA için veri seti toplam puan bazında 2 gruba ayrılmıştır (veri setinde demografik bilgi bulunmamaktadır).

data <- read_sav("cp24p_EN_1.0p.sav")
data <- data %>%
  select("cp24p146":"cp24p165") %>% expss::drop_var_labs() %>% na.omit()
head(data)
## # A tibble: 6 × 20
##   cp24p146 cp24p147 cp24p148 cp24p149 cp24p150 cp24p151 cp24p152 cp24p153
##      <dbl>    <dbl>    <dbl>    <dbl>    <dbl>    <dbl>    <dbl>    <dbl>
## 1        6        5        3        1        4        3        3        1
## 2        5        1        1        1        3        1        1        1
## 3        1        5        1        1        1        1        1        1
## 4        6        4        4        2        5        2        1        1
## 5        4        7        1        5        1        4        6        5
## 6        6        1        4        1        6        1        1        1
## # ℹ 12 more variables: cp24p154 <dbl>, cp24p155 <dbl>, cp24p156 <dbl>,
## #   cp24p157 <dbl>, cp24p158 <dbl>, cp24p159 <dbl>, cp24p160 <dbl>,
## #   cp24p161 <dbl>, cp24p162 <dbl>, cp24p163 <dbl>, cp24p164 <dbl>,
## #   cp24p165 <dbl>

1.2 Veri Setine İlişkin Betimsel İstatistikler

data %>% 
  psych::describe() %>% 
  select(mean, sd, skew, kurtosis) %>% 
  kable(digits = 2)
mean sd skew kurtosis
cp24p146 5.17 1.28 -0.88 0.94
cp24p147 3.13 1.67 0.40 -0.83
cp24p148 3.07 1.53 0.26 -0.78
cp24p149 2.14 1.38 1.22 0.86
cp24p150 4.66 1.31 -0.53 0.22
cp24p151 2.04 1.38 1.38 1.22
cp24p152 1.97 1.38 1.52 1.62
cp24p153 1.76 1.19 1.87 3.36
cp24p154 4.49 1.40 -0.49 0.02
cp24p155 4.61 1.51 -0.54 -0.15
cp24p156 2.67 1.60 0.75 -0.38
cp24p157 4.52 1.49 -0.52 -0.14
cp24p158 2.07 1.36 1.33 1.20
cp24p159 3.97 1.54 -0.26 -0.52
cp24p160 2.35 1.54 1.07 0.25
cp24p161 4.41 1.52 -0.51 -0.20
cp24p162 4.74 1.43 -0.65 0.19
cp24p163 2.36 1.53 1.07 0.29
cp24p164 4.42 1.52 -0.39 -0.41
cp24p165 2.05 1.39 1.46 1.55

Çarpıklık ve basıklık katsayıları için [-2,2] aralığı kabul edilebilir sınır olarak alınmaktadır. Bu durumda veri setinde yer alan değişkenlerin çarpıklık ve basıklık değerlerinin uygun olduğu (m8 - basıklık hariç) yorumu yapılabilir.

2 Ölçek Yapısı ve Faktörler

PANAS ölçeği 2 boyuttan oluşmaktadır.

Positive affect: 1, 3, 5, 9, 10, 12, 14, 16, 17, 19 Negative affect: 2, 4, 6, 7, 8, 11, 13, 15, 18, 20

Maddeler 1-7 arası puanlanmaktadır. 1: Not at all, 7: Extremely ile etiketlenmiştir. Yüksek puanlar daha yüksek duygusal etkiyi temsil etmektedir.

3 DFA Modeli

Aşağıdaki model 2 boyutlu PANAS ölçeğinin yapısını içermektedir.

colnames(data) <- c(paste0("m",1:20))
model_1 <- 
"
POS =~ m1 + m3 + m5 + m9 + m10 + m12 + m14 + m16 + m17 + m19
NEG =~ m2 + m4 + m6 + m7 + m8 + m11 + m13 + m15 + m18 + m20
"

4 Modelin Test Edilmesi

DFA modelinin test edilmesi için veri 7 kategorili olması ve normallik varsayımının değişkenler özelinde sağlanamadığı için MLR yöntemi kullanılmıştır.

model_1_fit <- cfa(model_1, data = data, estimator = "MLR", ordered = F)
summary(model_1_fit, fit.measures = TRUE, standardized = TRUE)
## lavaan 0.6-19 ended normally after 35 iterations
## 
##   Estimator                                         ML
##   Optimization method                           NLMINB
##   Number of model parameters                        41
## 
##   Number of observations                          5421
## 
## Model Test User Model:
##                                               Standard      Scaled
##   Test Statistic                              8741.604    6010.328
##   Degrees of freedom                               169         169
##   P-value (Chi-square)                           0.000       0.000
##   Scaling correction factor                                  1.454
##     Yuan-Bentler correction (Mplus variant)                       
## 
## Model Test Baseline Model:
## 
##   Test statistic                             67054.725   43280.846
##   Degrees of freedom                               190         190
##   P-value                                        0.000       0.000
##   Scaling correction factor                                  1.549
## 
## User Model versus Baseline Model:
## 
##   Comparative Fit Index (CFI)                    0.872       0.864
##   Tucker-Lewis Index (TLI)                       0.856       0.848
##                                                                   
##   Robust Comparative Fit Index (CFI)                         0.873
##   Robust Tucker-Lewis Index (TLI)                            0.857
## 
## Loglikelihood and Information Criteria:
## 
##   Loglikelihood user model (H0)            -164453.776 -164453.776
##   Scaling correction factor                                  1.774
##       for the MLR correction                                      
##   Loglikelihood unrestricted model (H1)    -160082.973 -160082.973
##   Scaling correction factor                                  1.517
##       for the MLR correction                                      
##                                                                   
##   Akaike (AIC)                              328989.551  328989.551
##   Bayesian (BIC)                            329260.070  329260.070
##   Sample-size adjusted Bayesian (SABIC)     329129.785  329129.785
## 
## Root Mean Square Error of Approximation:
## 
##   RMSEA                                          0.097       0.080
##   90 Percent confidence interval - lower         0.095       0.078
##   90 Percent confidence interval - upper         0.098       0.081
##   P-value H_0: RMSEA <= 0.050                    0.000       0.000
##   P-value H_0: RMSEA >= 0.080                    1.000       0.434
##                                                                   
##   Robust RMSEA                                               0.096
##   90 Percent confidence interval - lower                     0.094
##   90 Percent confidence interval - upper                     0.098
##   P-value H_0: Robust RMSEA <= 0.050                         0.000
##   P-value H_0: Robust RMSEA >= 0.080                         1.000
## 
## Standardized Root Mean Square Residual:
## 
##   SRMR                                           0.098       0.098
## 
## Parameter Estimates:
## 
##   Standard errors                             Sandwich
##   Information bread                           Observed
##   Observed information based on                Hessian
## 
## Latent Variables:
##                    Estimate  Std.Err  z-value  P(>|z|)   Std.lv  Std.all
##   POS =~                                                                
##     m1                1.000                               0.695    0.542
##     m3                0.764    0.038   20.170    0.000    0.531    0.347
##     m5                1.304    0.038   34.177    0.000    0.907    0.690
##     m9                1.587    0.045   35.396    0.000    1.103    0.788
##     m10               1.558    0.048   32.689    0.000    1.083    0.719
##     m12               1.290    0.046   28.323    0.000    0.897    0.601
##     m14               1.581    0.046   34.181    0.000    1.099    0.714
##     m16               1.610    0.049   33.042    0.000    1.119    0.736
##     m17               1.383    0.046   29.880    0.000    0.961    0.674
##     m19               1.606    0.047   34.511    0.000    1.117    0.733
##   NEG =~                                                                
##     m2                1.000                               1.049    0.629
##     m4                1.088    0.021   52.758    0.000    1.141    0.827
##     m6                0.991    0.024   41.240    0.000    1.040    0.755
##     m7                1.155    0.023   49.662    0.000    1.211    0.875
##     m8                0.817    0.023   35.127    0.000    0.856    0.718
##     m11               1.119    0.022   50.546    0.000    1.173    0.735
##     m13               0.951    0.024   39.799    0.000    0.998    0.735
##     m15               1.251    0.023   55.029    0.000    1.312    0.851
##     m18               1.227    0.023   54.328    0.000    1.287    0.844
##     m20               1.082    0.021   50.697    0.000    1.135    0.814
## 
## Covariances:
##                    Estimate  Std.Err  z-value  P(>|z|)   Std.lv  Std.all
##   POS ~~                                                                
##     NEG              -0.020    0.013   -1.599    0.110   -0.028   -0.028
## 
## Variances:
##                    Estimate  Std.Err  z-value  P(>|z|)   Std.lv  Std.all
##    .m1                1.164    0.032   35.847    0.000    1.164    0.707
##    .m3                2.060    0.034   59.988    0.000    2.060    0.879
##    .m5                0.904    0.025   36.045    0.000    0.904    0.523
##    .m9                0.741    0.026   28.723    0.000    0.741    0.378
##    .m10               1.100    0.033   33.385    0.000    1.100    0.484
##    .m12               1.422    0.040   35.393    0.000    1.422    0.639
##    .m14               1.159    0.032   35.914    0.000    1.159    0.490
##    .m16               1.058    0.033   31.854    0.000    1.058    0.458
##    .m17               1.111    0.035   31.371    0.000    1.111    0.546
##    .m19               1.074    0.031   34.222    0.000    1.074    0.463
##    .m2                1.676    0.039   43.178    0.000    1.676    0.604
##    .m4                0.602    0.023   25.741    0.000    0.602    0.317
##    .m6                0.815    0.030   26.779    0.000    0.815    0.430
##    .m7                0.447    0.020   22.347    0.000    0.447    0.234
##    .m8                0.691    0.027   25.723    0.000    0.691    0.485
##    .m11               1.175    0.034   35.041    0.000    1.175    0.460
##    .m13               0.849    0.034   25.186    0.000    0.849    0.460
##    .m15               0.653    0.026   24.798    0.000    0.653    0.275
##    .m18               0.668    0.029   22.986    0.000    0.668    0.287
##    .m20               0.656    0.028   23.650    0.000    0.656    0.337
##     POS               0.484    0.027   17.937    0.000    1.000    1.000
##     NEG               1.100    0.039   27.915    0.000    1.000    1.000

5 Model - Veri Uyumu

library(semoutput)
sem_sig(model_1_fit)
Model Significance
N χ2 df p
5421  8741.604 169  0.000
library(semoutput)
fitmeasures(model_1_fit,fit.measures = c("chisq" ,"df" , "pvalue","cfi","tli","rmsea","rmsea.ci.lower",   
"rmsea.ci.upper","srmr"))
##          chisq             df         pvalue            cfi            tli 
##       8741.604        169.000          0.000          0.872          0.856 
##          rmsea rmsea.ci.lower rmsea.ci.upper           srmr 
##          0.097          0.095          0.098          0.098

Modelin genel uyumu incelendiğinde \(\chi^2\) istatistiği anlamlı bulunmuştur (\(\chi^2\) = 8741.604, df = 169, p < 0.001), ancak örneklem büyüklüğüne duyarlılığı nedeniyle model-veri uyumu indeksleri değerlendirilmiştir. Bu bağlamda CFI = 0.872, TLI = 0.856, RMSEA = 0.097[0.095-0.098] ve SRMR = 0.098 elde edilmiş olup Hu & Bentler (1999) tarafından belirlenen kesme noktalarına göre modelin kötü uyum gösterdiği söylenebilir.

6 Esnek Kesme Noktalarının Değerlendirilmesi

library(FCO)
fits.esnek <- gen_fit(mod1 = model_1, x = data, rep = 100,seed = 59)
flex_co(fits = fits.esnek, index = c("RMSEA","TLI","CFI", "SRMR"))$cutoff #RMSEA ve TLI için de çıktı veriyormuş hocam. 
##       RMSEA         TLI         CFI        SRMR 
## 0.006825448 0.998012577 0.998232240 0.011439065

Esnek kesme noktaları da incelendiğinde model-veri uyumu indekslerinin esnek kesme noktalarından uzaklaştığı ve modelin kötü uyum sağladığı söylenebilir.

Flex-cutoffs gibi bir diğer simülasyon tabanlı kesme noktaları belirlemek için kullanılan fonksiyon, dynamic paketindeki cfaOne ve cfaHB fonksiyonlarıdır.

library(dynamic)
dynamic::cfaHB(model = model_1_fit,reps = 100) # çok boyutlu bir model girilirse cfaHB tercih edilebilir.
## Your DFI cutoffs: 
##                SRMR RMSEA CFI Magnitude
## Level 1: 95/5  .055  .026 .99      .347
## Level 1: 90/10   --    --  --          
## 
## Empirical fit indices: 
##  Chi-Square  df p-value   SRMR   RMSEA    CFI
##    8741.604 169       0  0.098   0.097  0.872

dynamic paketinden elde edilen model-veri uyumu indeksleri için kesme noktaları incelendiğinde modelin kötü uyum gösterdiği söylenebilir. (çıktıları FCO’dan farklı neden bilmiyorum.)

7 Faktör Yüklerinin İncelenmesi

sem_factorloadings(model_1_fit,standardized = T)
Factor Loadings
Latent Factor Indicator
Standardized
Loading 95% CI sig SE z p
NEG m11 0.735 0.718 — 0.751 *** 0.008  88.901 0.000
NEG m13 0.735 0.714 — 0.756 *** 0.011  68.649 0.000
NEG m15 0.851 0.839 — 0.864 *** 0.006 136.590 0.000
NEG m18 0.844 0.830 — 0.858 *** 0.007 119.535 0.000
NEG m2 0.629 0.611 — 0.648 *** 0.010  65.232 0.000
NEG m20 0.814 0.798 — 0.830 *** 0.008 102.516 0.000
NEG m4 0.827 0.813 — 0.841 *** 0.007 115.557 0.000
NEG m6 0.755 0.736 — 0.774 *** 0.010  77.566 0.000
NEG m7 0.875 0.864 — 0.887 *** 0.006 153.457 0.000
NEG m8 0.718 0.696 — 0.739 *** 0.011  64.575 0.000
POS m1 0.542 0.517 — 0.567 *** 0.013  42.492 0.000
POS m10 0.719 0.699 — 0.738 *** 0.010  72.965 0.000
POS m12 0.601 0.576 — 0.626 *** 0.013  46.574 0.000
POS m14 0.714 0.697 — 0.732 *** 0.009  79.070 0.000
POS m16 0.736 0.718 — 0.754 *** 0.009  79.668 0.000
POS m17 0.674 0.650 — 0.697 *** 0.012  55.838 0.000
POS m19 0.733 0.716 — 0.750 *** 0.009  83.918 0.000
POS m3 0.347 0.319 — 0.376 *** 0.014  23.961 0.000
POS m5 0.690 0.671 — 0.710 *** 0.010  70.286 0.000
POS m9 0.788 0.772 — 0.805 *** 0.008  94.682 0.000
* p < .05; ** p < .01; *** p < .001

Her bir madde incelendiğinde faktör yüklerinni istatistiksel olarak anlamlı olduğu belirlenmiştir (p<0.001). Faktör yükleri NEG boyutu için 0.718-0.851, POS boyutu için 0.347 - 0.788 arasında değişmektedir.

Faktör yükleri 0.30’un üzerinde olmasına rağmen model-veri uyumu indeksleri teorik modeli doğrulamadığı için modelin yeniden gözden geçirilmesi önerilmektedir.

8 Faktörler Arası Korelasyon

sem_factorcor(model_1_fit)
Latent Factor Correlations
Factor Factor r 95% CI sig SE p
POS NEG −0.028 −0.061 — 0.006 0.017 0.110
* p < .05; ** p < .01; *** p < .001

Faktörler arası korelasyon istatistiksel olarak anlamlı değildir (p>0.05).

9 Artıkların İncelenmesi ve Modifikasyon Önerileri

#KRİTİK DEĞER 1.96 ALACAĞIZ
resid(model_1_fit, type = "normalized")
## $type
## [1] "normalized"
## 
## $cov
##         m1     m3     m5     m9    m10    m12    m14    m16    m17    m19
## m1   0.000                                                               
## m3  -1.378  0.000                                                        
## m5   1.513 -1.396  0.000                                                 
## m9   0.887  4.964  1.247  0.000                                          
## m10 -1.181  2.507  4.495  6.013  0.000                                   
## m12 -0.574 -2.118 -2.845 -5.259 -3.032  0.000                            
## m14 -0.218  4.054 -2.466  2.125 -1.653 -0.793  0.000                     
## m16 -1.627 -3.067 -0.362 -2.608 -0.955  0.729  1.094  0.000              
## m17  0.199 -4.645 -3.371 -5.665 -5.918 14.229 -1.764  6.167  0.000       
## m19  0.823 -2.371  0.313 -0.269 -3.576  1.347  0.751 -0.344  3.014  0.000
## m2   3.254 26.444 -6.726 -1.172 -0.738  7.280  3.300  0.192  4.317 -0.760
## m4  -4.660 29.877 -5.951  0.191 -1.169  5.519  5.292 -0.119  1.285 -1.457
## m6  -6.226 23.381 -5.841  0.094 -2.877  4.048  5.049 -1.144 -0.072 -2.178
## m7  -7.461 24.134 -9.107 -1.752 -3.758  5.070  4.281 -2.002  0.400 -2.810
## m8  -7.049 22.655 -3.048  3.323  2.018  6.807  7.494  4.266  2.890  1.836
## m11 -9.169 23.473 -9.074 -2.460 -1.038  5.464  1.557 -2.091  0.740 -4.679
## m13 -4.776 24.509 -3.488  3.335  0.733  8.137  9.834  3.200  4.189  2.451
## m15 -7.233 24.125 -9.562 -2.931 -4.091  6.468  3.671 -0.922  3.183 -3.005
## m18 -6.925 24.184 -9.830 -2.499 -3.128  5.759  3.197 -0.817  3.485 -1.777
## m20 -5.290 20.904 -8.988 -3.170 -3.710  5.932  3.458  0.202  3.398 -1.563
##         m2     m4     m6     m7     m8    m11    m13    m15    m18    m20
## m1                                                                       
## m3                                                                       
## m5                                                                       
## m9                                                                       
## m10                                                                      
## m12                                                                      
## m14                                                                      
## m16                                                                      
## m17                                                                      
## m19                                                                      
## m2   0.000                                                               
## m4   4.433  0.000                                                        
## m6  -1.533  0.825  0.000                                                 
## m7  -2.174  0.855  2.311  0.000                                          
## m8  -2.762  1.390  3.278  2.040  0.000                                   
## m11  1.645 -0.211 -0.587 -0.706  0.597  0.000                            
## m13 -2.475 -0.585  6.074 -0.361  3.148 -0.207  0.000                     
## m15  0.294 -1.486 -3.605 -0.951 -3.495  1.202 -1.788  0.000              
## m18  0.057 -1.597 -3.841 -1.229 -4.091  1.260 -2.322  6.165  0.000       
## m20  1.443 -0.322 -1.714 -0.098 -0.420 -1.992  0.236  0.579  1.498  0.000

Hatalar arası kovaryanslar incelendiğinde 1.96 kesme noktasını alan birçok ikili kombinasyon bulunmaktadır. Bu durum modelin yeniden gözden geçirilmesi gerektiğini göstermektedir.

10 Modelin İyileştirilmesi

Modelin iyileştirilmesi için hatalar arası kovaryansların tanımlanması için çeşitli öneriler bulunmaktadır, ancak bu öneriler kuramsal çerçevede değerlendirilmelidir.

modindices <- modificationIndices(model_1_fit, sort = TRUE, minimum.value = 10)
kable(modindices)
lhs op rhs mi epc sepc.lv sepc.all sepc.nox
251 m15 ~~ m18 1422.10218 0.4138044 0.4138044 0.6263419 0.6263419
55 NEG =~ m3 1243.36714 0.6790352 0.7121629 0.4652787 0.4652787
151 m12 ~~ m17 1102.16471 0.6220720 0.6220720 0.4948296 0.4948296
118 m9 ~~ m10 492.28369 0.3375462 0.3375462 0.3739297 0.3739297
229 m6 ~~ m13 483.56103 0.2694615 0.2694615 0.3241214 0.3241214
122 m9 ~~ m17 340.08680 -0.2745000 -0.2745000 -0.3024690 -0.3024690
176 m16 ~~ m17 333.28808 0.3111684 0.3111684 0.2869417 0.2869417
242 m8 ~~ m18 294.42490 -0.1788981 -0.1788981 -0.2633377 -0.2633377
231 m6 ~~ m18 271.71776 -0.1889969 -0.1889969 -0.2561842 -0.2561842
230 m6 ~~ m15 257.00010 -0.1829609 -0.1829609 -0.2508162 -0.2508162
137 m10 ~~ m17 245.19969 -0.2692845 -0.2692845 -0.2435682 -0.2435682
241 m8 ~~ m15 239.33301 -0.1604973 -0.1604973 -0.2389323 -0.2389323
56 NEG =~ m5 232.98409 -0.2038139 -0.2137572 -0.1626799 -0.1626799
119 m9 ~~ m12 226.45550 -0.2460097 -0.2460097 -0.2396706 -0.2396706
92 m3 ~~ m4 223.34659 0.2419621 0.2419621 0.2171647 0.2171647
226 m6 ~~ m7 180.41427 0.1304998 0.1304998 0.2161822 0.2161822
209 m2 ~~ m4 166.34877 0.1929212 0.1929212 0.1919897 0.1919897
102 m5 ~~ m10 159.25834 0.1971408 0.1971408 0.1977462 0.1977462
227 m6 ~~ m8 149.98509 0.1348230 0.1348230 0.1797431 0.1797431
233 m7 ~~ m8 145.29604 0.1063041 0.1063041 0.1912360 0.1912360
73 m1 ~~ m2 143.41176 0.2362265 0.2362265 0.1691121 0.1691121
91 m3 ~~ m2 133.56407 0.2989472 0.2989472 0.1608734 0.1608734
240 m8 ~~ m13 124.23832 0.1245288 0.1245288 0.1626636 0.1626636
84 m3 ~~ m9 115.65873 0.2024349 0.2024349 0.1638307 0.1638307
138 m10 ~~ m19 107.48842 -0.1808479 -0.1808479 -0.1664161 -0.1664161
54 NEG =~ m1 94.95347 -0.1433356 -0.1503285 -0.1171096 -0.1171096
121 m9 ~~ m16 94.78823 -0.1473063 -0.1473063 -0.1663670 -0.1663670
249 m13 ~~ m18 90.39760 -0.1104466 -0.1104466 -0.1466839 -0.1466839
59 NEG =~ m12 87.75117 0.1536338 0.1611291 0.1079919 0.1079919
237 m7 ~~ m18 76.91234 -0.0824743 -0.0824743 -0.1508508 -0.1508508
60 NEG =~ m14 76.05437 0.1329450 0.1394309 0.0906325 0.0906325
224 m4 ~~ m18 75.57716 -0.0893512 -0.0893512 -0.1408263 -0.1408263
106 m5 ~~ m17 75.34243 -0.1334793 -0.1334793 -0.1331764 -0.1331764
188 m17 ~~ m19 70.33441 0.1437171 0.1437171 0.1315443 0.1315443
223 m4 ~~ m15 70.33074 -0.0858951 -0.0858951 -0.1369151 -0.1369151
253 m18 ~~ m20 67.55843 0.0872599 0.0872599 0.1318214 0.1318214
77 m1 ~~ m8 62.53364 -0.1012741 -0.1012741 -0.1129329 -0.1129329
50 POS =~ m13 60.47728 0.1526754 0.1061618 0.0781793 0.0781793
89 m3 ~~ m17 60.14726 -0.1691077 -0.1691077 -0.1117444 -0.1117444
211 m2 ~~ m7 59.27148 -0.1035270 -0.1035270 -0.1195631 -0.1195631
248 m13 ~~ m15 59.01246 -0.0888086 -0.0888086 -0.1192848 -0.1192848
232 m6 ~~ m20 53.20216 -0.0810848 -0.0810848 -0.1109409 -0.1109409
87 m3 ~~ m14 53.05978 0.1644370 0.1644370 0.1064262 0.1064262
120 m9 ~~ m14 52.87504 0.1132234 0.1132234 0.1221973 0.1221973
247 m11 ~~ m20 52.20272 -0.0958124 -0.0958124 -0.1091536 -0.1091536
134 m10 ~~ m12 51.43300 -0.1361582 -0.1361582 -0.1088872 -0.1088872
236 m7 ~~ m15 49.75003 -0.0662081 -0.0662081 -0.1224729 -0.1224729
104 m5 ~~ m14 42.72923 -0.1045812 -0.1045812 -0.1022006 -0.1022006
172 m14 ~~ m13 42.68166 0.0960092 0.0960092 0.0968315 0.0968315
48 POS =~ m8 42.40372 0.1149636 0.0799391 0.0669826 0.0669826
103 m5 ~~ m12 42.04288 -0.1102276 -0.1102276 -0.0972361 -0.0972361
220 m4 ~~ m8 40.48558 0.0621926 0.0621926 0.0964080 0.0964080
212 m2 ~~ m8 38.22535 -0.0952866 -0.0952866 -0.0885632 -0.0885632
219 m4 ~~ m7 37.58231 0.0537091 0.0537091 0.1034531 0.1034531
144 m10 ~~ m11 34.14663 0.0985790 0.0985790 0.0867264 0.0867264
88 m3 ~~ m16 33.47145 -0.1260010 -0.1260010 -0.0853382 -0.0853382
78 m1 ~~ m11 31.65136 -0.0942594 -0.0942594 -0.0805937 -0.0805937
197 m17 ~~ m18 31.61618 0.0737559 0.0737559 0.0855856 0.0855856
196 m17 ~~ m15 30.38847 0.0718403 0.0718403 0.0843086 0.0843086
214 m2 ~~ m13 29.91838 -0.0937856 -0.0937856 -0.0786467 -0.0786467
133 m9 ~~ m20 26.09454 -0.0559127 -0.0559127 -0.0802077 -0.0802077
100 m3 ~~ m20 25.40681 -0.0846492 -0.0846492 -0.0728203 -0.0728203
116 m5 ~~ m18 23.53796 -0.0576350 -0.0576350 -0.0741673 -0.0741673
246 m11 ~~ m18 22.93632 0.0654603 0.0654603 0.0738822 0.0738822
198 m17 ~~ m20 22.58601 0.0608107 0.0608107 0.0712260 0.0712260
245 m11 ~~ m15 22.13286 0.0639946 0.0639946 0.0730474 0.0730474
164 m14 ~~ m17 21.68394 -0.0820190 -0.0820190 -0.0722756 -0.0722756
135 m10 ~~ m14 21.47054 -0.0829957 -0.0829957 -0.0735278 -0.0735278
58 NEG =~ m10 21.22284 -0.0685255 -0.0718686 -0.0476662 -0.0476662
204 m19 ~~ m11 21.20522 -0.0771758 -0.0771758 -0.0687072 -0.0687072
108 m5 ~~ m2 20.36764 -0.0805531 -0.0805531 -0.0654520 -0.0654520
190 m17 ~~ m4 20.22948 -0.0554835 -0.0554835 -0.0678008 -0.0678008
85 m3 ~~ m10 20.21628 0.0990485 0.0990485 0.0658004 0.0658004
191 m17 ~~ m6 19.86969 -0.0624045 -0.0624045 -0.0655844 -0.0655844
90 m3 ~~ m19 19.16684 -0.0959109 -0.0959109 -0.0644767 -0.0644767
96 m3 ~~ m11 18.69049 0.0949841 0.0949841 0.0610480 0.0610480
101 m5 ~~ m9 18.41603 0.0581182 0.0581182 0.0710188 0.0710188
124 m9 ~~ m2 17.07426 -0.0696608 -0.0696608 -0.0625107 -0.0625107
217 m2 ~~ m20 16.89346 0.0636901 0.0636901 0.0607516 0.0607516
62 NEG =~ m17 15.49486 0.0580061 0.0608360 0.0426366 0.0426366
97 m3 ~~ m13 15.18364 0.0727572 0.0727572 0.0550256 0.0550256
70 m1 ~~ m16 14.71218 -0.0643539 -0.0643539 -0.0579830 -0.0579830
95 m3 ~~ m8 14.44522 0.0638287 0.0638287 0.0535035 0.0535035
193 m17 ~~ m8 14.18317 -0.0481889 -0.0481889 -0.0549974 -0.0549974
126 m9 ~~ m6 14.15620 0.0450571 0.0450571 0.0579956 0.0579956
160 m12 ~~ m15 14.09937 0.0545563 0.0545563 0.0566073 0.0566073
153 m12 ~~ m2 14.06066 0.0823935 0.0823935 0.0533747 0.0533747
47 POS =~ m7 13.91203 -0.0568716 -0.0395452 -0.0285763 -0.0285763
79 m1 ~~ m13 13.49450 -0.0523063 -0.0523063 -0.0526258 -0.0526258
158 m12 ~~ m11 13.40173 0.0683225 0.0683225 0.0528612 0.0528612
218 m4 ~~ m6 13.39653 0.0393156 0.0393156 0.0561214 0.0561214
210 m2 ~~ m6 12.82254 -0.0604739 -0.0604739 -0.0517583 -0.0517583
117 m5 ~~ m20 12.67868 -0.0412626 -0.0412626 -0.0535966 -0.0535966
213 m2 ~~ m11 12.63221 0.0717061 0.0717061 0.0511014 0.0511014
65 m1 ~~ m5 11.94596 0.0525078 0.0525078 0.0511876 0.0511876
63 NEG =~ m19 11.57381 -0.0503073 -0.0527616 -0.0346346 -0.0346346
234 m7 ~~ m11 11.52926 -0.0392861 -0.0392861 -0.0541893 -0.0541893
128 m9 ~~ m8 11.47511 0.0370771 0.0370771 0.0518261 0.0518261
110 m5 ~~ m6 11.31393 0.0426467 0.0426467 0.0497042 0.0497042
49 POS =~ m11 11.26528 -0.0775346 -0.0539132 -0.0337503 -0.0337503
187 m16 ~~ m20 11.18404 0.0425801 0.0425801 0.0511178 0.0511178
182 m16 ~~ m8 11.06850 0.0423593 0.0423593 0.0495508 0.0495508
131 m9 ~~ m15 10.71148 -0.0364855 -0.0364855 -0.0524411 -0.0524411
163 m14 ~~ m16 10.68063 0.0580682 0.0580682 0.0524473 0.0524473
115 m5 ~~ m15 10.59155 -0.0384108 -0.0384108 -0.0499895 -0.0499895
252 m15 ~~ m20 10.55149 0.0343560 0.0343560 0.0524896 0.0524896
86 m3 ~~ m12 10.41548 -0.0782495 -0.0782495 -0.0457160 -0.0457160
152 m12 ~~ m19 10.37620 0.0608920 0.0608920 0.0492774 0.0492774
189 m17 ~~ m2 10.27726 0.0631819 0.0631819 0.0462925 0.0462925

Bu yapıya ilişkin detaylı bilgim olmadığı için ki-kareyi en çok düşürecek modifikasyonları tamamlayarak modeli yeniden gözden geçireceğim.

11 Yapısal Güvenirlik

Modelden elde edilen güvenirlik katsayıları 0.70’in üzerinde olup yüksek güvenirliğe işaret etmektedir (\(\alpha\) = 0.88, \(\omega\) = 0.88). Açıklanan varyans oranı POS boyutu için 0.44, nEG boyutu için 0.61 olarak hesaplanmıştır.

semTools::reliability(model_1_fit)
##              POS       NEG
## alpha  0.8806419 0.9370960
## omega  0.8847214 0.9384465
## omega2 0.8847214 0.9384465
## omega3 0.8851710 0.9379849
## avevar 0.4439495 0.6071642

12 Modelin Yeniden Tanımlanması

model_1_mod <- "
POS =~ m1 + m3 + m5 + m9 + m10 + m12 + m14 + m16 + m17 + m19
NEG =~ m2 + m3 + m4 + m6 + m7 + m8 + m11 + m13 + m15 + m18 + m20
m15 ~~ m18
m2 ~~ m17
"
model_1mod_fit <- cfa(model_1_mod, data = data, estimator = "MLR", ordered = F)
summary(model_1mod_fit, fit.measures = TRUE, standardized = TRUE)
## lavaan 0.6-19 ended normally after 34 iterations
## 
##   Estimator                                         ML
##   Optimization method                           NLMINB
##   Number of model parameters                        44
## 
##   Number of observations                          5421
## 
## Model Test User Model:
##                                               Standard      Scaled
##   Test Statistic                              5899.420    4079.115
##   Degrees of freedom                               166         166
##   P-value (Chi-square)                           0.000       0.000
##   Scaling correction factor                                  1.446
##     Yuan-Bentler correction (Mplus variant)                       
## 
## Model Test Baseline Model:
## 
##   Test statistic                             67054.725   43280.846
##   Degrees of freedom                               190         190
##   P-value                                        0.000       0.000
##   Scaling correction factor                                  1.549
## 
## User Model versus Baseline Model:
## 
##   Comparative Fit Index (CFI)                    0.914       0.909
##   Tucker-Lewis Index (TLI)                       0.902       0.896
##                                                                   
##   Robust Comparative Fit Index (CFI)                         0.915
##   Robust Tucker-Lewis Index (TLI)                            0.903
## 
## Loglikelihood and Information Criteria:
## 
##   Loglikelihood user model (H0)            -163032.684 -163032.684
##   Scaling correction factor                                  1.783
##       for the MLR correction                                      
##   Loglikelihood unrestricted model (H1)    -160082.973 -160082.973
##   Scaling correction factor                                  1.517
##       for the MLR correction                                      
##                                                                   
##   Akaike (AIC)                              326153.367  326153.367
##   Bayesian (BIC)                            326443.681  326443.681
##   Sample-size adjusted Bayesian (SABIC)     326303.863  326303.863
## 
## Root Mean Square Error of Approximation:
## 
##   RMSEA                                          0.080       0.066
##   90 Percent confidence interval - lower         0.078       0.064
##   90 Percent confidence interval - upper         0.082       0.067
##   P-value H_0: RMSEA <= 0.050                    0.000       0.000
##   P-value H_0: RMSEA >= 0.080                    0.435       0.000
##                                                                   
##   Robust RMSEA                                               0.079
##   90 Percent confidence interval - lower                     0.077
##   90 Percent confidence interval - upper                     0.081
##   P-value H_0: Robust RMSEA <= 0.050                         0.000
##   P-value H_0: Robust RMSEA >= 0.080                         0.296
## 
## Standardized Root Mean Square Residual:
## 
##   SRMR                                           0.055       0.055
## 
## Parameter Estimates:
## 
##   Standard errors                             Sandwich
##   Information bread                           Observed
##   Observed information based on                Hessian
## 
## Latent Variables:
##                    Estimate  Std.Err  z-value  P(>|z|)   Std.lv  Std.all
##   POS =~                                                                
##     m1                1.000                               0.698    0.544
##     m3                0.811    0.034   23.829    0.000    0.566    0.370
##     m5                1.309    0.038   34.407    0.000    0.914    0.695
##     m9                1.587    0.044   35.700    0.000    1.108    0.792
##     m10               1.559    0.047   32.916    0.000    1.088    0.722
##     m12               1.272    0.045   28.204    0.000    0.888    0.595
##     m14               1.570    0.046   34.385    0.000    1.096    0.712
##     m16               1.599    0.048   33.157    0.000    1.116    0.734
##     m17               1.365    0.046   29.695    0.000    0.953    0.668
##     m19               1.598    0.046   34.651    0.000    1.115    0.732
##   NEG =~                                                                
##     m2                1.000                               1.051    0.631
##     m3                0.689    0.018   38.143    0.000    0.724    0.473
##     m4                1.103    0.021   53.327    0.000    1.158    0.840
##     m6                1.012    0.024   42.040    0.000    1.063    0.772
##     m7                1.161    0.023   49.869    0.000    1.220    0.882
##     m8                0.836    0.023   35.819    0.000    0.878    0.736
##     m11               1.112    0.022   50.350    0.000    1.168    0.731
##     m13               0.962    0.024   40.449    0.000    1.011    0.745
##     m15               1.196    0.022   54.107    0.000    1.256    0.815
##     m18               1.170    0.022   54.007    0.000    1.229    0.806
##     m20               1.068    0.021   50.035    0.000    1.122    0.805
## 
## Covariances:
##                    Estimate  Std.Err  z-value  P(>|z|)   Std.lv  Std.all
##  .m15 ~~                                                                
##    .m18               0.422    0.024   17.326    0.000    0.422    0.524
##  .m17 ~~                                                                
##    .m2                0.079    0.022    3.607    0.000    0.079    0.057
##   POS ~~                                                                
##     NEG              -0.033    0.012   -2.706    0.007   -0.045   -0.045
## 
## Variances:
##                    Estimate  Std.Err  z-value  P(>|z|)   Std.lv  Std.all
##    .m1                1.161    0.032   35.760    0.000    1.161    0.704
##    .m3                1.536    0.030   50.555    0.000    1.536    0.656
##    .m5                0.892    0.025   35.824    0.000    0.892    0.516
##    .m9                0.730    0.026   28.624    0.000    0.730    0.373
##    .m10               1.089    0.033   33.260    0.000    1.089    0.479
##    .m12               1.438    0.041   35.484    0.000    1.438    0.646
##    .m14               1.166    0.032   36.145    0.000    1.166    0.493
##    .m16               1.066    0.033   31.887    0.000    1.066    0.461
##    .m17               1.126    0.036   31.421    0.000    1.126    0.554
##    .m19               1.076    0.031   34.178    0.000    1.076    0.464
##    .m2                1.664    0.039   42.780    0.000    1.664    0.601
##    .m4                0.562    0.022   25.209    0.000    0.562    0.295
##    .m6                0.764    0.029   26.226    0.000    0.764    0.403
##    .m7                0.427    0.019   22.214    0.000    0.427    0.223
##    .m8                0.653    0.026   25.048    0.000    0.653    0.459
##    .m11               1.188    0.034   35.312    0.000    1.188    0.466
##    .m13               0.822    0.033   24.588    0.000    0.822    0.446
##    .m15               0.798    0.029   27.474    0.000    0.798    0.336
##    .m18               0.815    0.031   26.108    0.000    0.815    0.350
##    .m20               0.684    0.029   23.741    0.000    0.684    0.352
##     POS               0.487    0.027   18.070    0.000    1.000    1.000
##     NEG               1.104    0.039   28.029    0.000    1.000    1.000

Modifikasyonlar sonrasında modelin uyum indekslerinin iyileştiği görülmektedir. \(\chi^2\) = 4079.115, df = 166, p < 0.001, CFI = 0.909, TLI = 0.896, RMSEA = 0.066[0.064-0.067] ve SRMR = 0.055 elde edilmiştir.

13 Yol Şeması

library(semPlot)
semPaths(model_1mod_fit, what="std",style="lisrel",layout="tree",residuals = TRUE,rotation = 2)

Not: Süre 25 dk.

14 Ölçme Değişmezliği

DFA modelinin ölçme değişmezliğinin test edilmesi için CFA modelinin 2 grup için test edilmesi gerekmektedir. Bu bağlamda veri seti rastgele 2 alt gruba ayrılmıştır.

data$ID <- 1:nrow(data)
sample1 <- data %>% sample_frac(0.5)
sample2 <- data[!data$ID %in% sample1$ID,]

sample1$group <- 1
sample2$group <- 2


data <- rbind(sample1, sample2)
data$ID <- NULL

14.1 Çok Değişkenli Normallik

library(MVN)
## Warning: package 'MVN' was built under R version 4.4.3
MVN::mvn(data[,-21],mvnTest = "mardia")$multivariateNormality
##              Test        Statistic p value Result
## 1 Mardia Skewness 32730.7591297429       0     NO
## 2 Mardia Kurtosis 269.394992667509       0     NO
## 3             MVN             <NA>    <NA>     NO

Veri setinin çok değişkenli normallik varsayımını sağlamadığı görülmektedir.

14.2 Korelasyon Matrisi

library(ggcorrplot)
ggcorrplot(cor(data[,-21]), sig.level = 0.05, insig = "blank", lab = TRUE, lab_size = 3, title = "Correlation Matrix", colors = c("red", "white", "blue"), tl.srt = 45)

15 Biçimsel Değişmezlik (Configural)

configural <- cfa(model_1_mod, data = data, group = "group", estimator = "MLR", ordered = F, group.equal = NULL)
fit.configural <- fitmeasures(configural, fit.measures = c("chisq", "df", "pvalue", "cfi", "tli", "rmsea", "rmsea.ci.lower", "rmsea.ci.upper", "srmr"))
fit.configural <- round(fit.configural, 3)

16 Metrik Değişmezlik

metric <- cfa(model_1_mod, data = data, group = "group", estimator = "MLR", ordered = F, group.equal = c("loadings"))
fit.metric <- fitmeasures(metric, fit.measures = c("chisq", "df", "pvalue", "cfi", "tli", "rmsea", "rmsea.ci.lower", "rmsea.ci.upper", "srmr"))
fit.metric <- round(fit.metric, 3)

17 Skalar Değişmezlik (Ölçek)

scalar <- cfa(model_1_mod, data = data, group = "group", estimator = "MLR", ordered = F, group.equal = c("loadings", "intercepts"))
fit.scalar <- fitmeasures(scalar, fit.measures = c("chisq", "df", "pvalue", "cfi", "tli", "rmsea", "rmsea.ci.lower", "rmsea.ci.upper", "srmr"))

18 Katı Değişmezlik

strict <- cfa(model_1_mod, data = data, group = "group", estimator = "MLR", ordered = F, group.equal = c("loadings", "intercepts", "residuals"))
fit.strict <- fitmeasures(strict, fit.measures = c("chisq", "df", "pvalue", "cfi", "tli", "rmsea", "rmsea.ci.lower", "rmsea.ci.upper", "srmr"))

19 Sonuçların Karşılaştırılması

library(semTools)
## Warning: package 'semTools' was built under R version 4.4.3
## 
## ###############################################################################
## This is semTools 0.5-7
## 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:readr':
## 
##     clipboard
## The following objects are masked from 'package:psych':
## 
##     reliability, skew
compare <- semTools::compareFit(configural, metric, scalar, strict)
kable(compare@nested,digits = 3, captions = "Testing Chi-squared Differences")
Df AIC BIC Chisq Chisq diff Df diff Pr(>Chisq)
configural 332 326206.2 327050.8 6205.617 NA NA NA
metric 351 326192.7 326911.8 6230.045 19.594 19 0.419
scalar 369 326173.7 326774.1 6247.041 16.990 18 0.524
strict 389 326190.3 326658.7 6303.659 25.022 20 0.201
kable(compare@fit.diff,digits = 3, captions = "Differences between Model Fit Indices")
npar fmin df df.scaled baseline.df baseline.df.scaled cfi tli cfi.scaled tli.scaled cfi.robust tli.robust nnfi rfi nfi pnfi ifi rni nnfi.scaled rfi.scaled nfi.scaled pnfi.scaled ifi.scaled rni.scaled nnfi.robust rni.robust logl unrestricted.logl aic bic bic2 scaling.factor.h1 scaling.factor.h0 rmsea rmsea.ci.lower rmsea.ci.upper rmsea.ci.level rmsea.close.h0 rmsea.notclose.h0 rmsea.scaled rmsea.ci.lower.scaled rmsea.ci.upper.scaled rmsea.robust rmsea.ci.lower.robust rmsea.ci.upper.robust rmr rmr_nomean srmr srmr_bentler srmr_bentler_nomean crmr crmr_nomean srmr_mplus srmr_mplus_nomean cn_05 cn_01 gfi agfi pgfi mfi ecvi
metric - configural -19 0.002 19 19 0 0 0.000 0.005 -0.001 0.005 0 0.005 0.005 0.005 0 0.045 0.000 0.000 0.005 0.005 -0.001 0.044 -0.001 -0.001 0.005 0 -12.214 0 -13.572 -138.935 -78.559 0 -0.185 -0.002 -0.002 -0.002 0 0 0 -0.002 -0.002 -0.002 -0.002 -0.002 -0.002 0.001 0.001 0.001 0.001 0.001 0 0 0.001 0 16.288 16.652 0 0.002 0.040 0.000 -0.003
scalar - metric -18 0.002 18 18 0 0 0.000 0.005 -0.001 0.004 0 0.005 0.005 0.005 0 0.043 0.000 0.000 0.004 0.003 -0.002 0.041 -0.001 -0.001 0.005 0 -8.498 0 -19.004 -137.768 -80.570 0 -0.159 -0.002 -0.002 -0.002 0 0 0 -0.001 -0.001 -0.001 -0.002 -0.002 -0.002 0.000 0.000 0.000 0.000 0.000 0 0 0.000 0 15.641 15.991 0 0.002 0.038 0.000 -0.004
strict - scalar -20 0.005 20 20 0 0 -0.001 0.004 0.003 0.008 0 0.004 0.004 NA NA 0.047 -0.001 -0.001 0.008 NA NA 0.050 0.003 0.003 0.004 0 -28.309 0 16.618 -115.343 -51.789 0 -0.348 -0.002 -0.002 -0.002 0 0 0 -0.003 -0.003 -0.003 -0.002 -0.002 -0.002 0.000 0.000 0.000 0.000 0.000 0 0 0.000 0 14.995 15.262 0 0.002 0.042 -0.002 0.003

Tablolar incelendiğinde rastgele oluşturulmuş iki grup arasında \(\chi^2\) testlerinin anlamlı olmadığı yani modellerin birbirinde farklılaşmadığı, aynı zamanda AIC ve BIC değerleri incelendiğinde manidar bir model değişimi görülmediği söylenebilir. Model-veri uyumu indeksileri arasındaki farklar incelendiğinde katı değişmezliğe kadar tüm aşamaların sağlandığı, rastgele oluşturulmuş iki grubun karşılaştırılabileceği söylenebilir.