Bu haftaki öğrenme günlüğünde, Açımlayıcı Faktör Analizi (AFA) konusunu inceleyeceğim (Doğrulayıcı faktör analizi tamamlanmadığı için onu eklemedim).

AFA, çok değişkenli istatistiksel analizlerde kullanılan bir tekniktir ve veri setindeki değişkenlerin altında yatan faktörleri belirlemeye yardımcı olur.

Elimdeki veri seti Dündar (2014) tarafından geliştirilen Anne-Baba ve Öğretmen Akademik Katılımı Ölçeğini yanıtlayan 849 öğrenciden oluşmaktadır. Bu veri seti, orijinalinde 4 faktörlü bir yapıyı incelemek için kullanılacaktır.

Veri Setinin Yüklenmesi

library(psych)
library(tidyverse)
library(haven)
library(nFactors)
library(EGAnet)
library(psychTools)
library(haven)
veri <- read_sav("C:/Users/Lenovo/Desktop/veri.sav")

AFA için veri setinin hazırlanması:

afa_veri <- veri %>% select(k1:k16)

Maddeler arası korelasyon matrisi

library(knitr)
library(kableExtra)
library(magrittr)
cor(afa_veri) %>% 
  as.data.frame() %>%
  kable("html", digits = 2, caption = "Maddeler Arası Korelasyon Matrisi") %>%
  kable_styling("striped", full_width = F) %>%
  row_spec(0, bold = TRUE) %>%
  column_spec(1, bold = TRUE) %>%
  column_spec(2:17, border_left = TRUE) %>%
  column_spec(2:17, border_right = TRUE) %>%
  column_spec(2:17, background = "#f7f7f7")
Maddeler Arası Korelasyon Matrisi
k1 k2 k3 k4 k5 k6 k7 k8 k9 k10 k11 k12 k13 k14 k15 k16
k1 1.00 0.66 0.57 0.60 0.48 0.43 0.49 0.56 0.44 0.42 0.41 0.40 0.37 0.37 0.37 0.35
k2 0.66 1.00 0.79 0.77 0.63 0.64 0.65 0.55 0.54 0.53 0.51 0.51 0.49 0.49 0.45 0.43
k3 0.57 0.79 1.00 0.85 0.73 0.75 0.74 0.54 0.60 0.56 0.58 0.56 0.54 0.57 0.50 0.43
k4 0.60 0.77 0.85 1.00 0.68 0.71 0.71 0.56 0.58 0.55 0.56 0.54 0.52 0.54 0.49 0.43
k5 0.48 0.63 0.73 0.68 1.00 0.81 0.80 0.57 0.59 0.54 0.56 0.56 0.57 0.56 0.50 0.42
k6 0.43 0.64 0.75 0.71 0.81 1.00 0.77 0.52 0.61 0.55 0.56 0.56 0.56 0.60 0.47 0.40
k7 0.49 0.65 0.74 0.71 0.80 0.77 1.00 0.60 0.57 0.54 0.54 0.54 0.55 0.54 0.53 0.44
k8 0.56 0.55 0.54 0.56 0.57 0.52 0.60 1.00 0.40 0.41 0.44 0.41 0.41 0.40 0.43 0.48
k9 0.44 0.54 0.60 0.58 0.59 0.61 0.57 0.40 1.00 0.71 0.65 0.66 0.63 0.59 0.56 0.49
k10 0.42 0.53 0.56 0.55 0.54 0.55 0.54 0.41 0.71 1.00 0.77 0.77 0.70 0.63 0.64 0.56
k11 0.41 0.51 0.58 0.56 0.56 0.56 0.54 0.44 0.65 0.77 1.00 0.79 0.68 0.62 0.64 0.57
k12 0.40 0.51 0.56 0.54 0.56 0.56 0.54 0.41 0.66 0.77 0.79 1.00 0.72 0.66 0.64 0.57
k13 0.37 0.49 0.54 0.52 0.57 0.56 0.55 0.41 0.63 0.70 0.68 0.72 1.00 0.69 0.71 0.61
k14 0.37 0.49 0.57 0.54 0.56 0.60 0.54 0.40 0.59 0.63 0.62 0.66 0.69 1.00 0.70 0.59
k15 0.37 0.45 0.50 0.49 0.50 0.47 0.53 0.43 0.56 0.64 0.64 0.64 0.71 0.70 1.00 0.69
k16 0.35 0.43 0.43 0.43 0.42 0.40 0.44 0.48 0.49 0.56 0.57 0.57 0.61 0.59 0.69 1.00

KMO ve Bartlett Testi

KMO ve Bartlett testi, veri setinin AFA için uygun olup olmadığını kontrol etmek için kullanılır. KMO testi, değişkenler arasındaki korelasyonların yeterli olup olmadığını değerlendirirken, Bartlett testi ise değişkenler arasındaki korelasyon matrisinin sıfırdan farklı olup olmadığını test eder.

library(knitr)
library(kableExtra)
kmo_result <- KMO(afa_veri)
cat("### KMO (Kaiser-Meyer-Olkin) Ölçüsü\n")
## ### KMO (Kaiser-Meyer-Olkin) Ölçüsü
cat("**Genel MSA (Sampling Adequacy)**: ", round(kmo_result$MSA, 3), "\n\n")
## **Genel MSA (Sampling Adequacy)**:  0.954
cat("**Değişken Bazında KMO Değerleri:**\n\n")
## **Değişken Bazında KMO Değerleri:**
kmo_table <- as.data.frame(kmo_result$MSAi)
kmo_table <- tibble::rownames_to_column(kmo_table, var = "Değişken")
names(kmo_table)[2] <- "KMO Değeri"

kable(kmo_table, align = "c", digits = 3, caption = "Değişken Bazında KMO Değerleri")
Değişken Bazında KMO Değerleri
Değişken KMO Değeri
k1 0.934
k2 0.949
k3 0.942
k4 0.952
k5 0.950
k6 0.948
k7 0.959
k8 0.947
k9 0.976
k10 0.958
k11 0.955
k12 0.955
k13 0.972
k14 0.966
k15 0.943
k16 0.946
bartlett_result <- cortest.bartlett(cor(afa_veri))

cat("### Bartlett’s Test of Sphericity\n")
## ### Bartlett’s Test of Sphericity
cat("**Ki-kare Değeri (χ²)**: ", round(bartlett_result$chisq, 2), "\n")
## **Ki-kare Değeri (χ²)**:  1312.31
cat("**Serbestlik Derecesi (df)**: ", bartlett_result$df, "\n")
## **Serbestlik Derecesi (df)**:  120
cat("**p-değeri**: ", format.pval(bartlett_result$p.value, digits = 3), "\n\n")
## **p-değeri**:  <2e-16
if(bartlett_result$p.value < 0.05) {
  cat(":white_check_mark: **Sonuç:** Sıfır hipotezi reddedilir. AFA yapılabilir.**\n")
} else {
  cat(":x: **Sonuç:** Sıfır hipotezi reddedilemez. AFA için uygun değildir.**\n")
}
## :white_check_mark: **Sonuç:** Sıfır hipotezi reddedilir. AFA yapılabilir.**

Örneklem yeterliliği ve faktör analizine uygunluk için yapılan Kaiser-Meyer-Olkin (KMO) örneklem yeterliliği testi ve Bartlett küresellik testi sonucunda, genel KMO değeri 0.95 olarak elde edilmiştir. Bu değer, Kaiser (1974) tarafından önerilen sınıflandırmaya göre “mükemmel” düzeyde bir örneklem yeterliliğine işaret etmektedir. KMO değerinin 0.90 ve üzerinde olması, verilerin faktör analizine son derece uygun olduğunu göstermektedir. Ayrıca, her bir değişkene ait KMO değerlerinin 0.93 ile 0.98 arasında değiştiği görülmüştür. Bu durum, tüm değişkenlerin ortak faktör yapısına yüksek düzeyde katkı sağladığını ve analiz dışında bırakılması gereken herhangi bir değişken olmadığını göstermektedir. Bartlett küresellik testi sonucunda elde edilen ki-kare değeri χ²(120) = 1312.307, ve bu değere karşılık gelen anlamlılık düzeyi ise p < .001 olarak bulunmuştur. Bu sonuç, değişkenler arasında anlamlı ilişkiler bulunduğunu göstermektedir. Dolayısıyla, faktör analizi uygulanması için gerekli koşulların sağlandığı anlaşılmaktadır.

Özdeğerleri inceleyerek faktör sayısına karar verme

eigenvalues <- fa(afa_veri)$e.values
eigenvalues
##  [1] 9.5817704 1.6057675 0.8236256 0.6846930 0.5148060 0.3950659 0.3711608
##  [8] 0.3158810 0.2853920 0.2811896 0.2309877 0.2075531 0.2022243 0.1860548
## [15] 0.1767107 0.1371178
sum(eigenvalues)
## [1] 16

Toplamda 16 değişken bulunduğu için 16 özdeğer hesaplanmıştır ve bu özdeğerlerin toplamı, değişken sayısıyla uyumlu olarak 16’dır. Bu, analizde kullanılan veri matrisinin toplam varyansının 16 birim olduğu anlamına gelir.

Faktör sayısının belirlenmesinde kullanılan en temel kriterlerden biri K1 Kriteridir. Bu kritere göre, yalnızca özdeğeri 1’in üzerinde olan faktörler anlamlı kabul edilir. Bu kriter doğrultusunda yalnızca ilk iki faktör (9.58 ve 1.61) özdeğerleri 1’in üzerinde olduğu için, iki faktörlü bir yapı önerilmektedir. Bu iki faktör, verideki toplam varyansın önemli bir kısmını açıklamaktadır.

Özdeğerlerin hızlı bir şekilde düşüşe geçtiği ve özellikle üçüncü faktörden itibaren 1’in altına indiği görülmektedir. Bu da verinin daha fazla faktörle anlamlı şekilde temsil edilemeyeceğini ve faktör yapısının muhtemelen iki faktörlü olduğunu göstermektedir.

Scree Plot (Yamaç birikinti grafiği)

scree(cor(afa_veri), factors = FALSE)

İki faktörlü yapı yamaç birikinti grafiği ile de desteklenmektedir.

Paralel analiz

fa.parallel(afa_veri, fa = "fa")

## Parallel analysis suggests that the number of factors =  4  and the number of components =  NA

Paralel analiz 3 faktör önerirken, K1 kriteri ve özdeğer grafiği 2 faktör öneriyor. Bu durumda, K1 kriteri ve özdeğer grafiği dikkate alınarak 2 faktörlü yapı tercih edilecektir.

FAKTÖR ANALİZİ

out <- fa(afa_veri, nfactors = 2, fm = "pa", rotate = "oblimin")
## Loading required namespace: GPArotation
print(out)
## Factor Analysis using method =  pa
## Call: fa(r = afa_veri, nfactors = 2, rotate = "oblimin", fm = "pa")
## Standardized loadings (pattern matrix) based upon correlation matrix
##       PA1   PA2   h2   u2 com
## k1   0.67 -0.03 0.43 0.57 1.0
## k2   0.88 -0.06 0.71 0.29 1.0
## k3   0.92 -0.03 0.81 0.19 1.0
## k4   0.91 -0.04 0.78 0.22 1.0
## k5   0.77  0.09 0.70 0.30 1.0
## k6   0.76  0.09 0.69 0.31 1.0
## k7   0.80  0.06 0.72 0.28 1.0
## k8   0.63  0.05 0.44 0.56 1.0
## k9   0.25  0.57 0.59 0.41 1.4
## k10  0.02  0.84 0.72 0.28 1.0
## k11  0.05  0.81 0.71 0.29 1.0
## k12 -0.02  0.87 0.74 0.26 1.0
## k13 -0.02  0.86 0.71 0.29 1.0
## k14  0.09  0.72 0.63 0.37 1.0
## k15 -0.06  0.86 0.66 0.34 1.0
## k16 -0.04  0.74 0.51 0.49 1.0
## 
##                        PA1  PA2
## SS loadings           5.36 5.17
## Proportion Var        0.34 0.32
## Cumulative Var        0.34 0.66
## Proportion Explained  0.51 0.49
## Cumulative Proportion 0.51 1.00
## 
##  With factor correlations of 
##      PA1  PA2
## PA1 1.00 0.74
## PA2 0.74 1.00
## 
## Mean item complexity =  1
## Test of the hypothesis that 2 factors are sufficient.
## 
## df null model =  120  with the objective function =  14.14 with Chi Square =  11900.29
## df of  the model are 89  and the objective function was  1.3 
## 
## The root mean square of the residuals (RMSR) is  0.04 
## The df corrected root mean square of the residuals is  0.05 
## 
## The harmonic n.obs is  849 with the empirical chi square  329.56  with prob <  2.5e-29 
## The total n.obs was  849  with Likelihood Chi Square =  1094.25  with prob <  8.4e-173 
## 
## Tucker Lewis Index of factoring reliability =  0.885
## RMSEA index =  0.115  and the 90 % confidence intervals are  0.109 0.122
## BIC =  494.03
## Fit based upon off diagonal values = 1
## Measures of factor score adequacy             
##                                                    PA1  PA2
## Correlation of (regression) scores with factors   0.98 0.97
## Multiple R square of scores with factors          0.95 0.94
## Minimum correlation of possible factor scores     0.90 0.89

Principal Axis yöntemi kullanılarak gerçekleştirilen ve Oblimin rotasyonu uygulanan faktör analizi sonucunda, iki faktörlü bir yapı elde edilmiştir. Oblimin rotasyonu, faktörler arasında korelasyonun olabileceğini kabul eder ve bu bağlamda sosyal bilimlerde yaygın olarak tercih edilen bir yöntemdir.

Yapılan analiz sonucunda her bir faktörün açıklamış olduğu varyans miktarı aşağıdaki gibidir

knitr::kable(data.frame(
  Faktör = c("PA1", "PA2"),
  `SS Loadings` = c(5.36, 5.17),
  `Açıklanan Varyans` = c(0.34, 0.32),
  `Kümülatif Varyans` = c(0.34, 0.66),
  `Toplam Varyans Yüzdesi` = c("51%", "49%")
))
Faktör SS.Loadings Açıklanan.Varyans Kümülatif.Varyans Toplam.Varyans.Yüzdesi
PA1 5.36 0.34 0.34 51%
PA2 5.17 0.32 0.66 49%

Elde edilen sonuçlara göre, PA1 ve PA2 faktörleri toplam varyansın sırasıyla** %34 ve %32’sini açıklamaktadır. Bu iki faktör birlikte toplam varyansın %66**’sını açıklamakta olup, sosyal bilimlerde geçerli kabul edilen eşiklerin üzerindedir. Ayrıca, faktörlerin açıklanan toplam varyansa katkısı oldukça dengelidir.

Faktörler arası korelasyon

knitr::kable(data.frame(
  Faktör1 = c("PA1", "PA2"),
  PA1 = c(1.00, 0.74),
  PA2 = c(0.74, 1.00)
))
Faktör1 PA1 PA2
PA1 1.00 0.74
PA2 0.74 1.00

PA1 ve PA2 arasındaki korelasyonun 0.74 olması, bu iki yapının birbirine yüksek düzeyde bağlı olduğunu ve bu nedenle bağımsız rotasyon (örneğin varimax) yerine eğik rotasyon (oblimin) tercih edilmesinin uygun olduğunu göstermektedir.

Maddelerin Faktör Yükleri, Ortak ve Özgül Varyansları

Aşağıda her bir madde için PA1 ve PA2 faktörlerine ait yükler, açıklanan ortak varyanslar, açıklanmayan özgül varyanslar ve madde karmaşıklığı sunulmuştur.

knitr::kable(data.frame(
  Madde = paste0("k", 1:16),
  PA1 = c(0.67, 0.88, 0.92, 0.91, 0.77, 0.76, 0.80, 0.63, 0.25, 0.02, 0.05, -0.02, -0.02, 0.09, -0.06, -0.04),
  PA2 = c(-0.03, -0.06, -0.03, -0.04, 0.09, 0.09, 0.06, 0.05, 0.57, 0.84, 0.81, 0.87, 0.86, 0.72, 0.86, 0.74),
  `` = c(0.43, 0.71, 0.81, 0.78, 0.70, 0.69, 0.72, 0.44, 0.59, 0.72, 0.71, 0.74, 0.71, 0.63, 0.66, 0.51),
  `` = c(0.57, 0.29, 0.19, 0.22, 0.30, 0.31, 0.28, 0.56, 0.41, 0.28, 0.29, 0.26, 0.29, 0.37, 0.34, 0.49),
  `Karmaşıklık` = c(1.00, 1.01, 1.00, 1.00, 1.03, 1.03, 1.01, 1.01, 1.36, 1.00, 1.01, 1.00, 1.00, 1.03, 1.01, 1.00)
))
Madde PA1 PA2 h. u. Karmaşıklık
k1 0.67 -0.03 0.43 0.57 1.00
k2 0.88 -0.06 0.71 0.29 1.01
k3 0.92 -0.03 0.81 0.19 1.00
k4 0.91 -0.04 0.78 0.22 1.00
k5 0.77 0.09 0.70 0.30 1.03
k6 0.76 0.09 0.69 0.31 1.03
k7 0.80 0.06 0.72 0.28 1.01
k8 0.63 0.05 0.44 0.56 1.01
k9 0.25 0.57 0.59 0.41 1.36
k10 0.02 0.84 0.72 0.28 1.00
k11 0.05 0.81 0.71 0.29 1.01
k12 -0.02 0.87 0.74 0.26 1.00
k13 -0.02 0.86 0.71 0.29 1.00
k14 0.09 0.72 0.63 0.37 1.03
k15 -0.06 0.86 0.66 0.34 1.01
k16 -0.04 0.74 0.51 0.49 1.00

Maddelerin büyük çoğunluğu yalnızca bir faktöre anlamlı düzeyde yüklenmekte olup, karmaşıklık değerleri ortalama 1 civarında çıkmıştır. Bu durum, maddelerin faktörler arasında çapraz yüklenme yapmadığını ve faktör yapısının belirgin olduğunu göstermektedir.

Model Uyum İndeksleri

RMSR: 0.04 → Düşük değer, iyi uyum.

RMSEA: 0.115 (90% CI: 0.109–0.122) İdeal sınırların biraz üstünde, ancak kabul edilebilir düzeyde.

Tucker Lewis Index (TLI): 0.885 Kabul edilebilir düzeyde.

BIC: 494.03 Karşılaştırmalı modeller için kullanılabilir.

χ²: 329.56, p < 0.001 Model anlamlıdır.

Faktör Skorlarının Yeterliliği

knitr::kable(data.frame(
  Ölçüt = c(
    "Faktörlerle Korelasyon (regresyon skoru)",
    "Faktör skorlarının R² değeri",
    "Faktör skorlarının minimum korelasyonu"
  ),
  PA1 = c(0.98, 0.95, 0.90),
  PA2 = c(0.97, 0.94, 0.89)
))
Ölçüt PA1 PA2
Faktörlerle Korelasyon (regresyon skoru) 0.98 0.97
Faktör skorlarının R² değeri 0.95 0.94
Faktör skorlarının minimum korelasyonu 0.90 0.89

Bu değerler, özellikle her iki faktörün de güvenilir faktör skorları ürettiğini ve bu skorların analizlerde kullanılabilir olduğunu göstermektedir.

EGA Analizi

bfi_uva <- UVA(data = afa_veri)
bfi_uva$keep_remove
## $keep
## [1] "k1"  "k4"  "k5"  "k12" "k16"
## 
## $remove
## [1] "k2"  "k3"  "k6"  "k7"  "k11" "k15"
EGA(afa_veri)

## Model: GLASSO (EBIC with gamma = 0.5)
## Correlations: auto
## Lambda: 0.0898819622938011 (n = 100, ratio = 0.1)
## 
## Number of nodes: 16
## Number of edges: 66
## Edge density: 0.550
## 
## Non-zero edge weights: 
##      M    SD   Min   Max
##  0.114 0.108 0.001 0.408
## 
## ----
## 
## Algorithm:  Walktrap
## 
## Number of communities:  4
## 
##  k1  k2  k3  k4  k5  k6  k7  k8  k9 k10 k11 k12 k13 k14 k15 k16 
##   1   1   1   1   2   2   2   1   3   3   3   3   4   4   4   4 
## 
## ----
## 
## Unidimensional Method: Louvain
## Unidimensional: No
## 
## ----
## 
## TEFI: -3.341

EGA analizi, faktör yapısının daha iyi anlaşılmasına yardımcı olur. EGA analizi sonucunda, iki faktörlü yapının geçerliliği ve güvenilirliği desteklenmektedir. Ayrıca, EGA analizi ile elde edilen faktörlerin birbirleriyle olan ilişkileri de incelenebilir.

Orijinalinde 4 faktörlü bir yapı önerilen ölçek, yaptığım AFA sonucunda 2 faktörlü bir yapıya indirgenmiştir. Ancak EGA analizi, bu iki faktörün birbirleriyle olan ilişkilerini ve yapılarını daha iyi anlamaya yardımcı olmuş, 4 faktörlü yapının daha uygun olabileceğini göstermiştir. Analizde orijinal ölçekten farklı olarak k8 maddesi 1. faktörde gözüküyor.

Analiz sonucunda;

Maddelerin büyük çoğunluğu birbirleriyle ilişkili çıktı. Yani, birçok madde benzer görünüyor.

Maddeler, analiz sonucunda 4 ayrı gruba ayrıldı. Bu, elimizdeki 16 sorunun 4 farklı özelliği ölçtüğü anlamına geliyor.

Bu grupların ortaya çıkması, verimizde gerçekten de birden fazla yapının ölçüldüğünü gösteriyor. Yani tüm maddeler aynı şeyi ölçmüyor, bazıları birbirine daha çok benziyor ve doğal olarak birlikte gruplanıyorlar.

Analizin sonucu ki, bu veriyle çalışırken sadece tek bir özellik değil, birden fazla farklı özelliği aynı anda değerlendirmemiz gerekiyor. Bu nedenle, EGA analizi sonuçları dikkate alınarak, faktör yapısının yeniden gözden geçirilmesi gerekebilir.