/* Genel yazı tipi ve sayfa ayarları */
body {
  font-family: 'Merriweather', 'Georgia', serif; /* Serif yazı tipi */
  font-size: 18px;
  background-color: #f1fcfd; /* Daha açık mavi arka plan */
  color: #1b5e20; /* Koyu yeşil metin */
}
/* Başlıklar */
h1, h2, h3 {
  color: #00796b; /* Mavi-yeşil (teal) başlıklar */
  font-weight: bold;
  text-transform: uppercase;
  font-family: 'Open Sans', sans-serif;
}
/* İçindekiler tablosu */
.tocify {
  background-color: #b2dfdb; /* Açık deniz yeşili */
  border-radius: 5px;
  padding: 10px;
  font-family: 'Open Sans', sans-serif;
}
/* Kod bloklarının (chunk) arka planı */
pre {
  background-color: #d0f0c0 !important; /* Açık yeşil arka plan */
  color: #004d40 !important; /* Koyu mavi-yeşil kod yazısı */
  padding: 12px;
  border-radius: 8px;
  font-family: 'Fira Code', 'Courier New', Courier, monospace;
}
/* Inline kodlar */
code {
  background-color: #b2ebf2; /* Açık mavi arka plan */
  color: #00796b; /* Teal metin */
  padding: 3px 6px;
  border-radius: 4px;
}
/* Grafik ve görseller */
img, .figure {
  border: 2px solid #00796b; /* Teal çerçeve */
  border-radius: 10px;
  padding: 5px;
}

0.1 R KODLAR

library(dplyr)
library(psych)
library(ggplot2)
library(tidyr)
library(tidyverse)
library(QuantPsyc)
library(EFAtools)
library(EFA.MRFA)
library(EFA.dimensions)
library(knitr)
library(data.table)
library(lavaan)
library(lavaanPlot)
library(devtools)
library(DT)
library(tibble)
library(EFAfactors)
library(outliers)
library(foreign)
library(haven)
library(highr)
library(corrplot)
library(semptools)
library(semTools)
library(sur)
library(gtools)
library(irtoys)
library(kableExtra)
library(lattice)
library(ggfortify)
library(latticeExtra)
library(plotly)
library(semptools)
library(semTools)
library(flextable)
library(purrr)
library(rgl)
library(olsrr)
library(scatterplot3d)
library(broom)
library(GGally)
library(lavaan)
library(stargazer)
library(effectsize)
library(rockchalk)
library(quartets)
library(broom)
library(flextable)
library(apaTables)
library(officer)
USA <- read_sav("C:/Users/User/Desktop/PISA_USA_2019.sav")
USA <- expss::drop_var_labs(USA)
PISA <- as.data.frame(lapply(USA, function(x) {
  if (is.numeric(x)) {
    x[is.na(x)] <- mean(x, na.rm = TRUE)}
  return(x)}))
pv_vars <- paste0("PV", 1:10, "MATH")
PISA$PVMATH_MEAN <- rowMeans(PISA[, pv_vars], na.rm = TRUE)
pv_vars_2 <- paste0("PV", 1:10, "READ")
PISA$PVREAD_MEAN <- rowMeans(PISA[, pv_vars_2], na.rm = TRUE)
pv_vars_3 <- paste0("PV", 1:10, "SCIE")
PISA$PVSCIE_MEAN <- rowMeans(PISA[, pv_vars_3], na.rm = TRUE)
variable_names <- data.frame(Index = seq_along(names(PISA)), Variable_Name = names(PISA))
datatable(variable_names, caption = "PISA Veri Setindeki Degiskenler")
describe_df <- psych::describe(PISA)
describe_df[] <- lapply(describe_df, function(x) {
  if (is.numeric(x)) round(x, 3) else x})
DT::datatable(describe_df, caption = "PISA Veri Seti Icin Tanimlayici Istatistikler")

1 YOL ANALİZİ

  • Herbir yapını n sadece tek bir gözlenen ölçümünün (göstergesinin) oldugu durumlar bulunabilir ve bu durumlarda da tek gösterge tekniği olan → yol analizi kullanılabilir.

    • Bu analizde ele alınan ölçülen değişkenlerin → mükemmel derecede güvenilir olduğu varsayılır.
  • Yol analizinde → sadece gözlenen değişkenler modellenir.

    • Bu model → gözlenen değişkenler için → bir yapısal eşitlik modelidir.

    • Yol analizinde amaç → ölçülen değişkenler arasındaki ilişkileri açıklamaktır.

    • Yol analizi → gözlenen değişkenler arasındaki → doğrudan ve doğrudan olmayan etkileri gösteren yapısal modellerin tanımlanmasına ve test edilmesine izin verir.


1.1 Yol Şemasının Öğeleri

  • GÖZLENEN DEĞİŞKEN:

    • Dışsal (Exogenous) Değişken: Nedenleri bilinmeyen ve modelde gösterilmeyen değişkendir. Dışsal değişken → değişkenlik göstermekte serbesttir.

    • İçsel (Endogenous) Değişken: Varsayılan nedenleri modelde açıkça gösterilen değişkendir. İçsel değişken → değişkenlik göstermekte serbest DEĞİLdir.

    • Her içsel değişkenin bozukluğu (disturbance) vardır ve bozukluk (disturbance) modelde → “D” sembolü ile gösterilir.

    • Bozukluk model için hata (artık) terimidir ve içsel değişkende gözlenen varyansın açıklanmayan kısmını temsil eder.

      • Bozukluk ilgili içsel değişkenin ölçülemeyen bütün nedenlerini temsil eden bileşik bir değişkendir.

      • Model ele alındığında bu nedenlerin doğası ve sayısı bilinmediğinden bozukluklar gizil değişkenler olarak düşünülebilir ve çember sembolü ile temsil edilirler.

  • Gizil Değişkenler

    • doğrudan ölçülmezler.

    • bir değer alamayabilirler.

    • daha doğrudan ölçülebilen değişkenleri etkilediklerine inanılır.

  • Yapısal eşitlik modelinde iki tür gizil değişken vardır:

    • faktör veya yapı

    • artık veya bozukluk

  • Bir değişkenin diğer bir değişken üzerindeki doğrudan etkisi(direct effect) olup → okun kuyruğundaki değişkenin → okun başındaki değişkeni etkilediği varsayılır.!!

    • Doğrudan etkiyol olarak da adlandırılır.
  • Doğrudan etkilerin istatistiksel kestirimi yol katsayıları (path coefficients) olup → çoklu regresyondaki regresyon katsayıları gibi yorumlanır.

    • D → Y yolunda gözüken “1” sayısı ölçekleme sabitidir (scaling constant), → standartlaştırılmamış artık yol katsayısı (unstandardized residual path coefficient) olarak da adlandırılır ve bozukluğa bir ölçek atandığını gösterir.

    • Bozukluklar → gizil olduğu ve gizil değişkenler de → program onlarla ilgili herhangi bir kestirimde bulunmadan önce → ölçeğe ihtiyaç duyduklarından böyle bir sabit atanır.


1.1.1 Dolaylı veya Arabulucu Etki

  • Bazı içsel değişkenlerin → yol modelinde → hem bağımsız hem de bağımlı değişken olarak → ikili rolü vardır.

    • Bu değişkenlere → ARABULUCU DEĞİŞKENLER adı verilir.
  • Arabulucu değişkenler kendilerinden önceki değişkenlerin → nedensel etkilerinin bir kısmını → kendilerinden sonraki değişkenlere iletirler, böyle etkilere → DOLAYLI ETKİLER adı verilir.


1.2 YOL ANALİZİ MODELİ

  • Veri modellemedeki düşünce gözlenen kovaryans matrisinin bir grup değişken arasındaki → varsayılan ilişki tarafından üretilip üretilemeyeceğini → test etmektir.

  • Varsayılan model → belli bir varyans ve kovaryans deseni gerektirir ki bu varyans ve kovaryans deseni → üretilmiş varyans ve kovaryans matrisi (reproduced variance and covariance matrix) olarak adlandırılır.

    • Bu matris çoğunlukla → üretilmiş kovaryans matrisi (reproduced covariance matrix) olarak kısaltılır.
  • Gözlenen kovaryans matrisi ve üretilmiş kovaryans matrisi arasındaki fark → artık kovaryans matrisini (residual covariance matrix) oluşturur.

  • Eğer artık kovaryans matrisinin bütün elemanları SIFIR ise → varsayılan model veriyle TAMAMEN EŞLEŞMİŞ demektir → (mükemmel model veri uyumu)

  • Eğer artık kovaryans matrisinin bütün elemanları SIFIR DEĞİL İSE → varsayılan model ve veri arasında bir takım UYUŞMAZLIKLAR vardır.

  • Yol analizi modelinde SIFIR HİPOTEZİ → model tarafından üretilen kovaryans matrisinin gerçek veriyle (örneğin, gözlenen kovaryans matrisiyle) TAMAMEN eşleştiğidir.

\(\sum = \widehat{\sum}\)

  • Yol analizi modelinde → sıfır hipotezinin RED EDİLMESİ İSTENMEZ!!

  • Bu nedenle, genel model uyumunu test etmek için kullanılan → olabilirlik oranı (ki-kare) testinin → p-değerinin YÜKSEK olması istenir.

  • Artık kovaryans matrisimodel tarafından açıklanmayan varyans ve kovaryansları içeren matristir. Aşağıdaki eşitlikle hesaplanır:

\(\mathcal{S} - \widehat{\sum}\)

  • S → örneklemden elde edilen gözlenen kovaryans matrisidir.

  • Gözlenen değişkenler arasındaki bütün varyans ve kovaryanslar model tarafından açıklandığı zaman → artık kovaryans matrisinin BÜTÜN öğeleri → sıfır olacaktır.

  • Aksi halde, artık kovaryans matrisinin sıfırdan FARKLI olacaktır.


1.3 MODEL GÖZLEMLERİ

  • Model gözlemleri:

    • bir yol modelindeki → gözlenen değişkenler arasındaki → varyans ve kovaryanslardır.

    • Model gözlemlerinin sayısı v → gözlenen değişkenlerin sayısı olmak üzere → \(v(v + 1)/2\)’ye eşittir.


1.4 MODEL PARAMETRELERİ

  • Modelden kestirilen parametre sayısı

    • ya gözlenen ya da gözlenmeyen dışsal değişkenlerin varyanslarının ve kovaryanslarının sayısı ve

    • gözlenen değişkenlerin içsel değişkenlere olan doğrudan etkilerin sayısı

  • TOPLAMIdır.

  • Not 1: İçsel değişkenlerin varyansları ve kovaryansları model parametreleri olarak ele alınmaz.

  • Not 2: Bozukluk, modelde nedeni bilinmediğinden, gözlenmeyen dışsal değişken olarak ele alınır.


1.5 MODEL PARAMETRELERİ VE SERBESTLİK DERECESİ

  • Model parametresi araştırmacının tanımlamasına bağlı olarak → SERBEST (free), SABİT (fixed) veya SINIRLANDIRILMIŞ (constrained) olabilir.

  • Serbest parametre (free parameter) → örneklem verisinden bilgisayar yazılımı tarafından kestirilen parametredir.

  • Sabit parametre (fixed parameter)→ bir sabite eşit olarak belirlenen parametredir; yazılım bu sabiti veriye bağlı olmaksızın parametrenin kestirimi olarak kabul eder.

  • Sınırlandırılmış parametre (constrained parameter) → yazılım tarafından belli sınırlılıklar içerisinde kestirilir ancak bir sabite eşit olmak üzere sabitlenmez.

  • Model serbestlik derecesi (sd) → model gözlemlerinin sayısı ve modelden kestirilecek parametre sayısı arasındaki FARKA EŞİTtir.


1.6 Model Tanımlanması (Model Identification) İlkeleri

  • Bir yol modelinin değerlendirilmesi sırasında karşılaşılacak olası problemlerden biri → modelin tanımlanmasıdır.

  • Modeldeki her bir parametre için → kuramsal olarak tek bir kestirim üretilebiliyor ise → model tanımlanır denir. Aksi halde, model TANIMLANAMAZ.

  • “Kuramsal olarak” ifadesi tanımlanmanın verinin değil, → modelin bir özelliği olduğunu vurgulamak için kullanılmıştır.

    • Örneğin, eğer bir model tanımlanmazsa, örneklem büyüklüğüne (100, 1000, vb.) bağlı olmaksızın TANIMLANAMAZ olarak kalır.

    • Bu nedenle, tanımlanmayan modellerin yeniden tanımlanması gerekir. Aksi halde, analizler çözüm ÜRETMEZ

  • Herhangi bir yapısal eşitlik modeli için tanımlanmanın gerektirdiği iki koşul vardır:

    • Her gözlenmeyen (gizil) değişken bir ölçeğe atanmalıdır, bozukluk yol analizindeki tek gizil değişkendir.

    • En az serbest model parametreleri kadar gözlem olmalıdır (sd ≥ 0)


1.7 Model Tanımlanması: Gizil Değişkenlere Ölçek Atanması

  • Gizil değişkenler → YAPAY bir ölçektedirler.

    • Yazılımın gizil değişkenleri içeren etkilerin kestirimlerini hesaplayabilmesi için → bu değişkenlere bir ölçek atanması gerekir.

    • Unit Loading Identification (ULI) constraint: Artık yol katsayısı (bozukluğun doğrudan etkisini ifade eden yol katsayısı) 1.0’e sabitlenir → böylece bozukluk ilgili içsel değişkenin açıklanmayan varyansıyla ilişkili bir ölçeğe → atanmış olur.

      • Regresyon ve yol analizi modellerinde → ölçekler bozukluklara genellikle ULI aracılığıyla atanırlar.
  • Unit Variance Identification (UVI) constraint: Gizil içsel değişkenlerin (yol modelinde bozuklukların) varyansı 1.0’e eşitlenir → böylece → gizil değişkenin varyansı standartlaştırılmış ölçekte olur.


1.8 Model Tanımlanması: Yetersiz Tanımlanma (Underidentification)

  • Yetersiz tanımlanan bir modelde serbest model parametrelerinin sayısı gözlem sayısından büyüktür → diğer bir ifadeyle modelin serbestlik derecesi sıfırdan KÜÇÜKtür (sd < 0).

    • Bu durumda → en az bir parametrenin çözümü YOKtur
  • Yetersiz tanımlanan bir model → test EDİLEMEZ ve YENİDEN tanımlanması gerekir.

  • Gözlem eksikliğinin tanımlanmamaya nasıl yol açtığının bir örneği aşağıda verilmiştir:

\(a + b = 6\)

  • Verilen eşitlik bir model olarak ele alınırsa, “6” gözlem, a ve b de parametrelerdir.

  • Eşitlikte parametre sayısı (2), gözlem sayısından (1) daha fazla olduğundan,her bir parametre için tek bir çözüm bulmak imkansızdır.

  • a ve b parametreleri için eşitliği sağlayacak sonsuz sayıda çözüm vardır:

    • Örneğin, (a = 4, b = 2), a = 8, b = 2) vb.
  • Yetersiz tanımlanan bir yol modeli için program her bir parametreye ait tek bir kestirim üretmeye çalışırken de benzer bir durum söz konusudur.


1.9 Model Tanımlanması: Ancak Tanımlanma (Just Identification)

  • Ancak tanımlanan bir modelde parametre sayısı ve gözlem sayısı birbirine eşittir → diğer bir ifadeyle modelin serbestlik derecesi SIFIR EŞİTtir (sd = 0) ve model tanımlanır; → kuramsal olarak her parametrenin → TEK bir çözümü vardır.

  • Ancak tanımlanmanın bir örneği aşağıda verilmiştir:

\(a + b = 6\)

\(2a + b = 10\)

  • Verilen eşitlikler bir model olarak ele alınırsa, “6” ve “10” gözlemler, a ve b de parametrelerdir.

  • Eşitlikte parametre sayısı (2), gözlem sayısına (2) eşit olduğundan, her bir parametre için tek bir çözümü bulunmaktadır.

    • (a = 4, b = 2)

    • Parametre kestirimleri verildiğinde gözlemler mükemmel bir şekilde üretilir.

  • Ancak tanımlanan bir yol modeli için program her bir parametreye ait tek bir kestirim üretmekle kalmayıp model veriye mükemmel uyum sağlayacaktır.


1.10 Model Tanımlanması: Aşırı Tanımlanma (Overidentification)

  • Aşırı tanımlanan bir modelde parametre sayısı, → gözlem sayısından küçüktür, → diğer bir ifadeyle modelin serbestlik derecesi sıfırdan büyüktür (sd > 0), kuramsal olarak → her parametrenin olası bir çok çözümü vardır.

  • Aşırı tanımlanan bir model için, üretilen kovaryans matrisi örneklem kovaryans matrisini mükemmel bir şekilde üretMEyecektir.

  • Aşırı tanımlanmanın bir örneği aşağıda verilmiştir:

\(a + b = 6\)

\(2a + b = 10\)

\(3a + b = 12\)

  • Verilen eşitlikler bir model olarak ele alınırsa, “6”, “10” ve “12” gözlemler, a ve b de parametrelerdir.

  • Üç eşitliği sağlayacak a ve b değerleri bulunmayabilir.

    • Örneğin, (a = 4, b = 2) değerleri sadece ilk iki eşitliği
  • Bu durumda, her bir parametre için tekbir çözüm aşağıdaki şekilde üretilir:

    • Gözlemler ve üretilen gözlemler arasındaki farkın karesinin toplamının mümkün olduğunca küçük olacağı pozitif parametre değerleri bulunur.

      • Örneğin, (a = 3, b = 3,3) sadece en küçük toplam kareler farkını sağlamakla kalmaz tek bir çözüm üretir.

1.11 Model-Veri Uyumunun Değerlendirilmesi

  • YEM uygulamalarına ve simülasyon çalışmalarına göre YEM analizinin sonuçlarını rapor ederken sunulacak ve yorumlanacak uyum indeksleri aşağıdaki gibidir:

    • Model Ki Kare Değeri

    • Steiger Lind Root Mean Square Error of Approximation (RMSEA) (Steiger, 1990) (%90 güven aralığı ile

    • Bentler Comparative Fit Index (CFI) (Bentler, 1990)

    • Standardized Root Mean Square Residual (SRMR)

  • Uyum indekslerinin değerleri bir modelin sadece ortalama veya genel uyumunu belirtir. Bu nedenle belli bir indeksin değeri uygun bile görünse, modelin belli kısımları veriye zayıf uyum sağlayabilir.

  • Uyum indeksleri sonuçların kuramsal olarak anlamlı olup olmadığını belirtmezler.

    • Örneğin,bazı yol katsayılarının işaretleri beklenenin aksi yönde olabilir. Uyum indekslerinin değerleri uygun bile görünse beklenmeyen sonuçlar açıklama gerektirir.
  • Yeterli uyumu öneren uyum indekslerinin değerleri yordayıcıların yordama güçlerinin de yüksek olduğunu belirtmezler.

    • Örneğin, veriye mükemmel uyum sağlayan modellerin bozukluklarının varyansı halen yüksek olabilir.
  • Tek bir indeks modelin sadece belli bir yönünü yansıttığından,modelin iyi uyum sağladığını belirtmek için tek başına yeterli olmaz. Bu nedenle, model uyumu birden fazla indeksin değerine dayanarak değerlendirilir.

  • Uyum hem modelin belli kısımlarında bölgesel olarak hem de genel model ve veri uyuşmasının ne kadar iyi olduğu yönünde global olarak değerlendirilmelidir.

  • Genel olarak YEM analizinde model uyumu değerlendirilirken, odak tek bir istatistiksel anlamlılık testinde değildir. Çeşitli indeksleri incelerken bütüncül bir yaklaşım kullanılmalıdır.

  • Çoklu indekslerin kullanılması bir modelin uyumu ile ilgili en doğru yaklaşımı verecektir.


1.12 Ki-Kare Testi (Chi Square Test)

  • Ki kare testi → gözlenen kovaryans matrisinin tanımlanan modelle → tutarlı olup olmadığını → değerlendirir.

\[ H_0 : \sum = \widehat{\sum} \]

\[ H_A : \sum \neq \widehat{\sum} \]

\[ \begin{align*} H_0 &: \sum_{\text{RES}} = 0 \\ H_A &: \sum_{\text{RES}} \neq 0 \end{align*} \]

  • MLE yöntemi için → sıfır hipotezini değerlendirmek üzere → T istatistiği (model chi square, likelihood ratio chi square veya generalized likelihood ratio olarak da adlandırılır) hesaplanır:

\[ T = (n - 1) F_{ML} \]

  • Burada n → örneklem büyüklüğüdür.

    • n → büyük ise ve ölçülen değişkenler evrende çok değişkenli normal dağılımlara sahip ise ve doğru model tanımlanmışsa; → T istatistiği yaklaşık olarak tanımlanan modelin serbestlik derecesi ile ki kare dağılımı gösterir.
  • Ancak tanımlanan (just identified) bir model için ki kare değeri genellikle sıfıra eşittir ve serbestlik derecesi yoktur (sd = 0).

    • Eğer model ki kare değeri sıfıra eşitse model veriye mükemmel bir şekilde uyar (kestirilen korelasyon ve kovaryans değerleri gözlenenlere eşittir).
  • Model ki kare değeri arttıkça, aşırı tanımlanan (overidentified) bir modelin uyumu giderek kötüleşir.

    • Örneğin, sd = 1 ile 12,30’a eşit model ki kare değeri.
  • Model ki kare değeri arttıkça,modelin veriye uyumu kötüleştiği için model ki kare aslında bir “kötülük uyum” indeksidir.

  • Geleneksel hipotez testinin aksine, ki kare testinin sıfır hipotezinin reddedilmemesi tercih edilir. Sıfır hipotezinin reddedilmemesi modelin veriye uyduğunu önerir.

    • Diğer yandan sıfır hipotezinin reddedilmesi model veri uyumunun iyi olmadığını önerir.
  • Model için ki kare değeri → output dosyasında → “MODEL FIT INFORMATION” bölümünün → başlangıç kısmında yer alır.


1.13 Ki-Kare Testi ve Örneklem Büyüklüğü

  • Ki kare testi örneklem büyüklüğünden doğrudan etkilenir. Eğer n büyükse ki bu durum YEM için genellikle istenen bir durumdur, → ki kare testine dayanarak modeli zayıf uyumlu gerekçesiyle reddetmek daha olasıdır (gözlenen ve kestirilen kovaryans değerleri arasındaki fark çok minimal düzeyde olsa bile).

  • Eğer ki kare testine dayalı sıfır hipotezi reddedilirse, → modelin yeterliğini incelemek için diğer indeksler düşünülmelidir.

  • Eğer n küçükse ve güç eksikliğinden dolayı sıfır hipotezi reddedilmediyse, → diğer uyum indeksleri modelin desteklenip desteklenmemesinde yardımcı olacaktır.


1.14 RMSEA

  • Root Mean Square Error of Approximation (RMSEA) serbestlik derecesinin bir fonksiyonu olarak → uyumu değerlendiren bir indekstir:

\[ \text{RMSEA} = \sqrt{\frac{\hat{\delta}}{df (n - 1)}} \]

  • RMSEA indeksi de “kötülük uyum” indeksidir. RMSEA indeksinin → daha yüksek değerleri → daha kötü uyumu belirtir.

  • RMSEA = 0 değeri → EN İYİ UYUMU belirtir. Ancak → RMSEA = 0 değeri → mükemmel bir uyumu ifade ETMEZ!!

  • RMSEA uyumu doğrudan serbestlik derecesinin bir fonksiyonu olarak ele alır; modelin tutumunu hesaba katar (ölçülen değişkenlerin sayısına karşılık kestirilen model parametrelerinin sayısı).

  • RMSEA için önerilen kesme noktaları (Hu & Bentler, 1999):

    • RMSEA ≤ 0,05 iyi uyumu belirtir.

    • 0,05 < RMSEA < 0,08 kabul edilebilir uyumu belirtir.

    • RMSEA ≥ 0,08 zayıf uyumu belirtir.

  • RMSEA tarafından kestirilen evren parametresi (ε) için %90 güven aralığı genellikle YEM yazılımlarının outputunda verilir.

    • ε için güven aralığı kestirilen merkezi olmayan δ parametresine dayanır ve RMSEA örneklem değeri etrafında simetrik olmayabilir.

    • Bu güven aralığı nokta kestirimi olarak RMSEA değeri ile ilişkili belirsizlik derecesini yansıtır.

    • Eğer ε için %90 güven aralığının alt sınırının değeri 0,05’ten küçükse, modelinin evrende tahmini yaklaşık uyuma sahip olduğu hipotezi (H0 : ε0 ≤ 0,05) reddedilmeyecektir.


1.15 RMR ve SRMR

  • Root Mean Square Residual (RMR): Bu indeksi hesaplamak için her bir artık öğenin karesi alınır, karelerin toplanmasıyla elde edilen toplam artık sayısına bölünür ve bu ortalama kare artıkların kare kökü alınır.

    • Sıfır değeri mükemmel bir uyum belirtir ancak sıfırdan büyük değerlerin yorumlanması zordur.
  • Standardized Root Mean Square Residual (SRMR): Bu indeks RMR indeksinin hesaplandığı şekilde hesaplanır ancak standartlaştırılmış artıklar kullanılır.

    • 0,08’den küçük değerler uygun olarak düşünülür (Hu & Bentler, 1999).
  • Mplus yazılımının çıktısında RMR indeksinin değeri değil ancak SRMR indeksinin değeri verilir.

  • Kestirilen SRMR değeri 0,038’dir. 0,038 değeri 0,08 değerinden küçük olduğundan SRMR indeksi model için kabul edilebilir uyum belirtir.


1.16 Karşılaştırmalı Uyum İndeksleri (Comparative Fit Indices)

  • Bir çok indeks araştırmacının modelinin veriye nasıl uyduğunu, modelin uyumunu daha sınırlandırılmış bir modelle karşılaştırarak değerlendirir.

    • Araştırmacının modeli ile karşılaştırılan model taban modeli (baseline model) olarak adlandırılır. Bu model tipik olarak bağımsız modeldir (independence model) ve sıfır modeli (null model) olarak da adlandırılır.
  • Mplus yazılımında sıfır yol modeli gözlenen değişkenler arasındaki evren kovaryanslarının (dışsal gözlenen değişkenler arasındaki kovaryanslar ve bütün gözlenen değişkenlerin varyansları hariç) sıfır olduğunu varsayar.

  • Sıfır yol modelinin tanımı diğer YEM yazılımlarında farklı olabilir.

    • Örneğin, Proc calis yazılımında, bütün gözlenen değişkenler arasındaki evren kovaryansının sıfır olduğu varsayılır. Bu nedenle sadece gözlenen değişkenlerin varyansları parametreler olarak ele alınır.
  • Sıfır modeli değişkenlerin ilişkili olmadığını varsaydığından genellikle araştırmacının modelinden daha yüksek ki kare değerine sahiptir.

    • Bu nedenle karşılaştırmalı uyum indeksleri artımlı uyum indeksleri (incremental fit indices) olarak da bilinir: daha sınırlandırılmış model (örneğin, sıfır modeli) uyumundan daha esnek model (örneğin, araştırmacının modeli) uyumuna artırım.
  • Karşılaştırmalı uyum indekslerinden YEM analizlerinde sık kullanılan iki tanesi CFI ve NNFI (TLI) indeksleridir. Ancak iki indeks de örneklem dayanaklı indekslerdir.


1.17 Karşılaştırmalı Uyum İndeksleri (Comparative Fit Indices): CFI

  • CFI indeksi Bentler (1990) tarafından geliştirilmiştir ve aşağıdaki şekilde hesaplanır:

\[ \text{CFI} = \frac{\hat{\delta}_{\text{null}} - \hat{\delta}_{\text{researcher}}}{\hat{\delta}_{\text{null}}} = 1 - \frac{\hat{\delta}_{\text{researcher}}}{\hat{\delta}_{\text{null}}} \]

  • Araştırmacının modeli sıfır modelinden daha iyi uyum sağlarsa, araştırmacının modelinin ki kare değeri sıfır modelinin ki kare değerinden daha küçük olacaktır.

  • İki model arasındaki fark arttıkça, CFI değeri 1’e daha çok yaklaşacaktır.

    • CFI = 0 değeri araştırmacının modelinin sıfır modeline göre gelişmediğini belirtir.

    • CFI değerinin 0,90 veya 0,95’ten daha büyük olması kabul edilebilir uyum için önerilir (Hu & Bentler, 1999).

    • CFI = 1 değeri mükemmel uyumu belirtmez.


1.18 Karşılaştırmalı Uyum İndeksleri (Comparative Fit Indices): NNFI

  • Non Normed Fit Index (NNFI veya Tucker Lewis Index, TLI) sıfır modeli ve araştırmacının modelinin serbestlik derecesini hesaba katarak negatif yanlılığı düzeltmeye çalışır:

\[ \text{NNFI} = \frac{\frac{T_{\text{null}}}{df_{\text{null}}} - \frac{T_{\text{researcher}}}{df_{\text{researcher}}}}{\frac{T_{\text{null}}}{df_{\text{null}}} - 1} \]

  • NNFI değerleri 0 ile 1 aralığında değer alır ancak bu aralığın dışında bir değer de alabilir.

    • NNFI değerinin 0,90 veya 0,95’ten daha büyük olması kabul edilebilir uyum için önerilir (Hu & Bentler, 1999).
  • NNFI örneklemlerin aynı evrenden alındığı küçük ve orta büyüklükteki verilerin kullanıldığı çalışmalarda kararlı değildir.


1.19 Bireysel İstatistiksel testler: t-değeri

  • Bireysel istatistiksel test belli parametre kestirimlerine dayalı hesaplanır. Hatalı tanımlamanın değerlendirilmesinde kullanışlıdır.

  • t değeri = parametre kestirimi / standart hata

  • Normal olarak dağılır.

  • z istatistiği gibi kullanılır.

  • Parametrelerin beklenen yönde olup olmadığını ve istatistiksel olarak sıfırdan farklı olup olmadığını değerlendirir.

  • Anlamlı olmayan parametreler 0’a sabitlenebilir ancak test n ile ilişkilidir.

    • Ancak bir parametrenin sabitlenmesi diğer bütün kestirimleri değiştirecektir. Bu da hatalı tanımlamadan dolayı hatalara sebep olabilir.

1.20 Bireysel Artık ve Standartlaştırılmış Artık

  • İdeal olarak artık değerleri küçük ve tek biçimli olmalıdır.

  • Artık kovaryans matrisini yorumlamak standartlaştırılmış artık kovaryans matrisinden daha zordur.

  • Standartlaştırılmış artık:

    • z puanları gibidir.

    • Hangi değerin büyük olduğunu belirlemek kolaydır (0,05 alfa düzeyinde 1,96 istatistiksel anlamlılık)

    • Köşegen dışındaki standartlaştırılmış artıkların mutlak değerlerinin ortalaması tipik bir artığı temsil eden bir indeks sağlar.


1.21 Ki-Kare Fark Testi

  • Hem revised model 1 hem de revised model 2 veriye iyi uyum sağlamaktadır.

  • Bu durumda hangi model seçilmelidir?

    • Mükemmel uyum sağlayan ancak daha karmaşık model mi?

    • İyi uyum sağlayan ancak daha basit model mi?

  • Ki kare fark testi hiyerarşik olarak kümelenmiş iki modelin karşılaştırılmasında oldukça kullanışlıdır.

    • Eğer modellerden birisi diğerinin alt kümesiyse iki model kümelenmiştir (daha basit model daha karmaşık modelin içinde kümelenmiştir).

      • Bu durumda revised model 2 (daha basit model) revised model 1 (daha karmaşık model) içinde kümelenmiştir.
  • Ki kare fark testi modellerin bağıl uyumlarını değerlendirmek için kullanılabilir.

  • İki model de veriye iyi uyum sağladığında, ki kare değerleri arasındaki fark serbestlik derecesi iki model arasındaki parametre sayısındaki farka eşit olan ki kare dağılımı gösterir:

\[ \chi^2_{\text{dif}} = \chi^2_{\text{simple}} - \chi^2_{\text{complex}} \]

\[ df_{\text{dif}} = df_{\text{simple}} - df_{\text{complex}} \]

  • Anlamlı olmayan ki kare farkı daha basit modelin daha karmaşık modelden istatistiksel olarak veriye daha kötü uymadığını önerir.

    • Bu nedenle, daha basit model daha tutumlu olduğundan dolayı seçilmelidir. Aksi halde karmaşık model seçilmelidir.

1.22 AIC ve BIC

  • Akaike Information Criterion (AIC) ve Bayesian Information Criterion (BIC) evren dayanaklı yordayıcı uyum indeksleri olarak bilinir.

  • Farklı YEM yazılımları AIC ve BIC değerlerini farklı şekilde hesaplayabilir.

  • AIC ve BIC değerleri çoğunlukla aynı veriden kestirilen hiyerarşik olmayan modellerin arasından seçim yapmak için kullanılır.

    • Bağıl olarak daha küçük değerler uygundur.

2 Bir Araştırma Senaryosu

2.0.1 VERİ SETİ

data <- PISA %>%
  mutate(PVREAD_MEAN = rowMeans(select(., PV1READ:PV10READ), na.rm = TRUE)) %>%
  select(JOYREAD, BELONG, ESCS, GFOFAIL, PVREAD_MEAN)
head(data)
  • ESCS: Sosyoekonomik durum endeksi (z-puanı, sürekli) → Bağımsız değişken (exogenous) → Öğrencinin ailesel ve sosyal koşullarını yansıtır. Başarı, motivasyon ve aidiyet üzerinde etkili olabilir.

  • GFOFAIL: Başarısızlık korkusu (Likert tipi sürekli) → Bağımsız değişken → Başarısızlık korkusu hem ESCS hem aidiyet ve okuma sevgisinden etkilenebilir. Başarıyı da etkileyebilir.

  • JOYREAD: Okuma sevgisi endeksi (Likert tipi sürekli değişken) → Ara değişken (mediator) → Okuma sevgisi, hem sosyoekonomik durumdan etkilenebilir hem de okuma başarısını etkileyebilir.

  • BELONG: Okula aidiyet hissi skoru → Ara değişken (mediator) → Psikososyal bir değişken olarak aidiyet, hem sosyal kökenlerden hem de akademik sonuçlardan etkilenebilir.

  • PVREAD_MEAN: Okuma başarısının 10 olası değerden (PV) ortalaması → Bağımlı değişken (outcome) → Nihai sonuç değişkeni olarak değerlendirilir. Tüm yapısal yollar buraya bağlanabilir.


2.1 PISA YOL MODELİ

library(lavaan)
yol_model <-  'JOYREAD ~ ESCS + GFOFAIL
               BELONG  ~ ESCS + GFOFAIL + PVREAD_MEAN + JOYREAD
               PVREAD_MEAN  ~ ESCS + GFOFAIL
ESCS ~~ GFOFAIL'

yol_fit <- sem(yol_model, data)
yol_fit
## lavaan 0.6-19 ended normally after 14 iterations
## 
##   Estimator                                         ML
##   Optimization method                           NLMINB
##   Number of model parameters                        14
## 
##   Number of observations                          4838
## 
## Model Test User Model:
##                                                       
##   Test statistic                               363.533
##   Degrees of freedom                                 1
##   P-value (Chi-square)                           0.000
library(semPlot)
semPaths(yol_fit, rotation = 2, curvePivot = TRUE, sizeMan = 12, sizeInt = 1, sizeLat = 4, edge.label.cex = 1.8, pastel = TRUE, nCharNodes = 0, nCharEdges = 0)

semPaths(
  object = yol_fit, layout = "tree", what = "std", whatLabels = "std", edge.label.cex = 1.0, edge.label.position = 0.5, edge.color = "black", color = list(
    lat = "white", man = "#ADD8E6"),
  sizeMan = 9, sizeLat = 5, sizeInt = 0.8, pastel = TRUE, mar = c(5, 5, 5, 5), rotation = 2, curvePivot = TRUE, nCharNodes = 0, nCharEdges = 0, title = FALSE)

node_order <- c("ESCS", "GFOFAIL", "JOYREAD", "BELONG", "PVREAD_MEAN")
node_positions <- matrix(c(
  -3,  0.5,   # ESCS (solda üstte)
  -3, -0.5,   # GFOFAIL (solda altta)
   0,  0.5,   # JOYREAD (ortada üstte)
   0, -0.5,   # BELONG (ortada altta)
   3,  0      # PVREAD_MEAN (sağda ortada)
), byrow = TRUE, ncol = 2)
library(semPlot)
semPaths(
  object = yol_fit,
  what = "std", whatLabels = "std", layout = node_positions, nodeLabels = c("ESCS", "GFOFAIL", "JOYREAD", "BELONG", "PVREAD_MEAN"),
  edge.label.cex = 1.2, edge.label.position = 0.5, edge.color = "gray30", edge.width = 0.5, edge.label.bg = "white", color = list(lat = "white", man = "#ADD8E6"), sizeMan = 10, sizeLat = 5, sizeInt = 1, pastel = TRUE, mar = c(5, 5, 5, 5), rotation = 1, curvePivot = TRUE, nCharNodes = 0, nCharEdges = 0, title = FALSE)

  • Dışsal (Exogenous) Değişken: Nedenleri bilinmeyen ve modelde gösterilmeyen değişkendir. Dışsal değişken değişkenlik göstermekte serbesttir.

    • Örneğin, ESCS ve GFOFAIL
  • İçsel (Endogenous) Değişken: Varsayılan nedenleri modelde açıkça gösterilen değişkendir. İçsel değişken değişkenlik göstermekte serbest değildir.

    • Örneğin, JOYREAD, BELONG ve PVREAD_MEAN
  • Her içsel değişkenin bozukluğu (disturbance) vardır ve bozukluk (disturbance) modelde D sembolü ile gösterilir.

  • Bozukluk model için → hata (artık) terimidir ve içsel değişkende → gözlenen varyansın açıklanmayan kısmını temsil eder.

  • Bozukluk ilgili içsel değişkenin ölçülemeyen bütün nedenlerini temsil eden bileşik bir değişkendir.

  • Model ele alındığında bu nedenlerin doğası ve sayısı bilinmediğinden bozukluklar gizil değişkenler olarak düşünülebilir ve çember sembolü ile temsil edilirler.

  • Gizil Değişkenler:

    • doğrudan ölçülmezler.

    • bir değer alamayabilirler.

    • daha doğrudan ölçülebilen değişkenleri etkilediklerine inanılır.

  • Yapısal eşitlik modelinde iki tür gizil değişken vardır:

    • faktör veya yapı

    • artık veya bozukluk

library(png)      
library(grid)  
img <- readPNG("C:/Users/User/Desktop/Yol_gosterge.png")
grid::grid.raster(img)

  • Bir değişkenin diğer bir değişken üzerindeki doğrudan etkisi (direct effect) olup okun kuyruğundaki değişkenin okun başındaki değişkeni etkilediği varsayılır. Doğrudan etki yol olarak da adlandırılır.

    • Örneğin, ESCS’nin PVREAD_MEAN üzerindeki doğrudan etkisi

    • Örneğin, GFOFAIL’nin PVREAD_MEAN üzerindeki doğrudan etkisi (ölçülmeyen bütün nedenlerin PVREAD_MEAN üzerindeki doğrudan etkisi)

  • Doğrudan etkilerin istatistiksel kestirimi → yol katsayıları (path coefficients) olup çoklu regresyondaki regresyon katsayıları gibi yorumlanır.

  • Bozukluk ve y1 yolunda gözüken 1 sayısı ölçekleme sabitidir (scaling constant), standartlaştırılmamış artık yol katsayısı (unstandardized residual path coefficient) olarak da adlandırılır ve bozukluğa bir ölçek atandığını gösterir.

  • Bozukluklar gizil olduğu ve gizil değişkenler de program onlarla ilgili herhangi bir kestirimde bulunmadan önce ölçeğe ihtiyaç duyduklarından böyle bir sabit atanır.

  • İki dışsal değişken arasındaki analiz edilmeyen ilişki

    • Örneğin, ESCS degişkeni ve GFOFAIL değişkeni arasındaki kovaryans
  • Bir dışsal değişkenin varyansı

    • Örneğin, GFOFAIL değişkeninin varyansı
  • Bir bozuklugun varyansı

    • Örneğin, D’nin varyansı

2.2 Doğrudan Etki

  • Bir dışsal veya içsel bir değişken diğer bir içsel değişkenin doğrudan nedeni olabilir.

    • ESCS → BELONG

    • GFOFAIL → BELONG

    • ESCS → JOYREAD

    • GFOFAIL → JOYREAD

    • BELONG → PVREAD_MEAN

    • JOYREAD → PVREAD_MEAN

    • ESCS → PVREAD_MEAN

    • GFOFAIL → PVREAD_MEAN


2.3 Dolaylı veya Arabulucu Etki

  • Bazı içsel değişkenlerin yol modelinde hem bağımsız hem de bağımlı değişken olarak → ikili rolü vardır. Bu değişkenlere arabulucu değişkenler adı verilir.

    • JOYREAD

    • BELONG

  • Arabulucu değişkenler kendilerinden önceki değişkenlerin nedensel etkilerinin bir kısmını kendilerinden sonraki değişkenlere iletirler, böyle etkilere dolaylı etkiler adı verilir.

    • ESCS → JOYREAD → PVREAD_MEAN

    • GFOFAIL→ JOYREAD → PVREAD_MEAN

    • ESCS → BELONG → PVREAD_MEAN

    • GFOFAIL → BELONG → PVREAD_MEAN


2.4 Ki-Kare Testi (Chi-Square Test)

  • Ki-kare testi → gözlenen kovaryans matrisinin tanımlanan modelle tutarlı olup olmadığını değerlendirir.
chisq_values <- fitMeasures(yol_fit, fit.measures = c("chisq", "df", "pvalue"))
chisq_table <- data.frame(
  "Gostergeler" = c(
    "Ki-kare (χ²)",
    "Serbestlik Derecesi (df)",
    "p-degeri"),
  "Deger" = round(as.numeric(chisq_values), 3))

chisq_table %>%
  kable("html", caption = "Tablo 1. Ki-Kare Uyum Testi Gostergeleri", align = "lc") %>%
  kable_styling(full_width = FALSE, bootstrap_options = c("striped", "hover", "condensed"), font_size = 16) %>%
  row_spec(0, bold = TRUE) %>%      
  column_spec(1, bold = TRUE)       
Tablo 1. Ki-Kare Uyum Testi Gostergeleri
Gostergeler Deger
Ki-kare (χ²) 363.533
Serbestlik Derecesi (df) 1.000
p-degeri 0.000
  • sd = 1 için ki-karenin 0.05 alfa düzeyindeki kritik değeri 3.84’tür. 363.533 değeri 3.84 değerinden büyük olduğundan gözlenen kikare değeri (363.533)

    • 0.05 alfa düzeyinde istatistiksel olarak anlamlıdır.

    • 363.533 değerini elde etme olasılığını da verir. Örnekte bu olasılık 0.0005’tir. Bu değer 0.05 alfa düzeyinden küçüktür.

  • Ki-kare testi örneklem büyüklüğünden doğrudan etkilenir. Eğer n büyükse ki bu durum YEM için genellikle istenen bir durumdur, ki-kare testine dayanarak modeli zayıf uyumlu gerekçesiyle reddetmek daha olasıdır (gözlenen ve kestirilen kovaryans değerleri arasındaki fark çok minimal düzeyde olsa bile).

  • Eğer ki-kare testine dayalı sıfır hipotezi reddedilirse, modelin yeterliğini incelemek için diğer indeksler düşünülmelidir.

  • Eğer n küçükse ve güç eksikliğinden dolayı sıfır hipotezi reddedilmediyse, diğer uyum indeksleri modelin desteklenip desteklenmemesinde yardımcı olacaktır.

  • Ki-kare testi örneklem büyüklüğüne bağlılığından dolayı iyilik uyumunun değerlendirilmesi için çok ideal DEĞİLdir.

    • Ancak geleneksel olarak rapor edilir ve diğer uyum indeksleriyle desteklenir.
  • Model ki-kare değerinin örneklem büyüklüğüne hassasiyetini azaltmak için bazı araştırmacılar bu değeri ilgili serbestlik derecesine bölerler.

    • Elde edilen değer → normed chi-square (NC) değeri olarak adlandırılır.
  • Ancak bu değerin yorumlanması için → minimum kabul edilebilirlik düzeyini temsil edecek net bir kesim değeri YOKtur.


2.5 RMSEA

  • Root Mean Square Error of Approximation (RMSEA)serbestlik derecesinin bir fonksiyonu olarak → uyumu değerlendiren bir indekstir.

  • RMSEA için önerilen kesme noktaları (Hu & Bentler, 1999):

    • RMSEA ≤ 0.05 → İYİ uyumu belirtir.

    • 0.05 < RMSEA < 0.08 → KABUL EDİLEBİLİR uyumu belirtir.

    • RMSEA ≥ 0.08 → ZAYIF uyumu belirtir.

  • RMSEA tarafından kestirilen evren parametresi ϵ için → %90 güven aralığı genellikle YEM yazılımlarının çıktısında verilir.

  • ϵ için güven aralığı kestirilen merkezi olmayan → δ parametresine dayanır ve RMSEA örneklem değeri etrafında simetrik OLMAYABİLİR.

  • Bu güven aralığı → nokta kestirimi olarak RMSEA değeri ile ilişkili → belirsizlik derecesini yansıtır.

  • Eğer ϵ için %90 güven aralığının alt sınırının değeri 0,05’ten KÜÇÜK ise, → modelinin evrende tahmini yaklaşık uyuma sahip olduğu hipotezi H0 : ϵ0 ≤ 0.05 reddedilmeyecektir.

  • Çıktıda kestirilen RMSEA değeri ve ilgili → %90 güven aralığı (90% C.I.) verilir.

rmsea_values <- fitMeasures(yol_fit, c("rmsea", "rmsea.ci.lower", "rmsea.ci.upper", "rmsea.pvalue"))
rmsea_table <- data.frame(
  "Gostergeler" = c(
    "RMSEA",
    "RMSEA Alt Guven Siniri (90%)",
    "RMSEA Ust Guven Siniri (90%)",
    "RMSEA p-degeri (H0: RMSEA <= 0.05)"),
  "Deger" = round(as.numeric(rmsea_values), 3))
rmsea_table %>%
  kable("html", caption = "Tablo 2. RMSEA Uyum Iyiligi Gostergeleri", align = "lc") %>%
  kable_styling(full_width = FALSE, bootstrap_options = c("striped", "hover", "condensed"), font_size = 16) %>%
  row_spec(0, bold = TRUE) %>% 
  column_spec(1, bold = TRUE)   
Tablo 2. RMSEA Uyum Iyiligi Gostergeleri
Gostergeler Deger
RMSEA 0.274
RMSEA Alt Guven Siniri (90%) 0.250
RMSEA Ust Guven Siniri (90%) 0.298
RMSEA p-degeri (H0: RMSEA <= 0.05) 0.000
  • Modelin RMSEA değeri → 0.274 olarak bulunmuştur ve bu değer → 0.08’lik kabul edilebilir sınırın oldukça üzerindedir.

    • RMSEA’nın %90 güven aralığı [0.250, 0.298] olup → TAMAMI KÖTÜ uyum aralığında yer almaktadır.

    • Ayrıca, RMSEA için hesaplanan p-değeri 0.000’dır (H0: RMSEA ≤ 0.05) → bu da modelin veriyle iyi uyum GÖSTERMEDİĞİNİ istatistiksel olarak ortaya koymaktadır.


2.6 SRMR

  • Standardized Root Mean Square Residual (SRMR): Bu indeks RMR indeksinin hesaplandığı şekilde hesaplanır ancak standartlaştırılmış artıklar kullanılır.

    • 0.08’den KÜÇÜK değerler → uygun olarak düşünülür (Hu & Bentler, 1999).
srmr_value <- fitMeasures(yol_fit, "srmr")
srmr_table <- data.frame(
  "Gostergeler" = "SRMR (Standartlastirilmis Ortalama Karekok Artik)",
  "Deger" = round(as.numeric(srmr_value), 3))
srmr_table %>%
  kable("html", caption = "Tablo 3. SRMR Uyum Iyiliği Gostergesi", align = "lc") %>%
  kable_styling(full_width = FALSE, bootstrap_options = c("striped", "hover", "condensed"), font_size = 16) %>%
  row_spec(0, bold = TRUE) %>%
  column_spec(1, bold = TRUE)
Tablo 3. SRMR Uyum Iyiliği Gostergesi
Gostergeler Deger
SRMR (Standartlastirilmis Ortalama Karekok Artik) 0.064
  • Modelin SRMR değeri → 0.064’tür.

    • Bu değer 0.08’in ALTINDA kalarak → modelin KABUL EDİLEBİLİR düzeyde uyum sağladığını göstermektedir.

    • SRMR → gözlemlenen ve model tarafından tahmin edilen kovaryanslar arasındaki farkların küçük olduğunu ve modelin veriye genel olarak uygun olduğunu işaret eder.

  • SRMR açısından model uygun → KABUL EDİLEBİLİR sınırlar içerisindedir.

    • Ancak daha önce belirttiğin RMSEA değeri oldukça yüksek olduğu için bu çelişki → modelde bazı yapısal sorunlar olabileceğini düşündürür.

    • Birden fazla uyum ölçütü birlikte değerlendirilmelidir.


2.7 Karşılaştırmalı Uyum İndeksleri (Comparative Fit Indices)

  • Bir çok indeks araştırmacının modelinin veriye nasıl uyduğunu, modelin uyumunu daha sınırlandırılmış bir modelle karşılaştırarak değerlendirir.

    • Araştırmacının modeli ile karşılaştırılan model → taban modeli (baseline model) olarak adlandırılır. Bu model tipik olarak bağımsız modeldir (independence model) ve sıfır modeli (null model) olarak da adlandırılır.
  • Sıfır yol modeli → gözlenen değişkenler arasındaki evren kovaryanslarının (dışsal gözlenen değişkenler arasındaki kovaryanslar ve bütün gözlenen değişkenlerin varyansları hariç) SIFIR olduğunu varsayar.

  • Sıfır modeli → değişkenlerin ilişkili olmadığını varsaydığından genellikle araştırmacının modelinden → daha yüksek ki-kare değerine sahiptir.

    • Bu nedenle karşılaştırmalı uyum indeksleri → artımlı uyum indeksleri (incremental fit indices) olarak da bilinir: → daha sınırlandırılmış model (örneğin, sıfır modeli) uyumundan daha esnek model (örneğin, araştırmacının modeli) uyumuna artırım.
  • Karşılaştırmalı uyum indekslerinden YEM analizlerinde sık kullanılan iki → tanesi CFI ve NNFI (TLI) indeksleridir.

    • Ancak iki indeks de → örneklem dayanaklı indekslerdir.
cfi_values <- fitMeasures(yol_fit, fit.measures = c("cfi", "tli", "nnfi"))

cfi_table <- data.frame(
  "Gostergeler" = c(
    "CFI (Karsilastirmali Uyum Indeksi)",
    "TLI (Tucker-Lewis Indeksi)",
    "NNFI (Non-Normed Fit Index)"),
  "Deger" = round(as.numeric(cfi_values), 3))

cfi_table %>%
  kable("html", caption = "Tablo 4. CFI, TLI ve NNFI Uyum Iyiliği Gostergeleri", align = "lc") %>%
  kable_styling(full_width = FALSE, bootstrap_options = c("striped", "hover", "condensed"), font_size = 16) %>%
  row_spec(0, bold = TRUE) %>%
  column_spec(1, bold = TRUE)
Tablo 4. CFI, TLI ve NNFI Uyum Iyiliği Gostergeleri
Gostergeler Deger
CFI (Karsilastirmali Uyum Indeksi) 0.780
TLI (Tucker-Lewis Indeksi) -1.201
NNFI (Non-Normed Fit Index) -1.201
  • CFI (Karşılaştırmalı Uyum İndeksi): 0.780 → Zayıf uyum – Kabul edilebilir eşik olan 0.90’ın oldukça altında

  • TLI (Tucker-Lewis İndeksi): -1.201 → Geçersiz ve ÇOK KÖTÜ uyum – Negatif değer modelin kötü yapılandırıldığını gösterir

  • NNFI (Non-Normed Fit Index = TLI): -1.201 → TLI ile aynıdır – Negatif olması modelin KÖTÜ uyumunu işaret eder

  • Modelin CFI değeri 0.780 olarak bulunmuştur → bu değer 0.90 sınırının altında kalarak modelin ZAYIF uyum sağladığını göstermektedir.

  • TLI ve NNFI değerleri ise → -1.201 gibi NEGATİF ve istatistiksel olarak GEÇERSİZ sonuçlar vermiştir.

  • Bu durum, modelin veriyle ÇOK KÖTÜ uyum sağladığını → hatta bazı yapısal hataların bulunduğunu göstermektedir.

  • Modelin istatistiksel olarak manidar düzeyde UYUMSUZ olduğunu ve yeniden yapılandırılması gerektiğini gösterir. :( :(


2.8 Uyum İndekslerini Raporlarken Öneriler

  • Tek bir indeks model uyumunun sadece belli bir yönünü yansıtır.

  • Model ki-kare değeri: anlamlı olmayan sonuç

img <- readPNG("C:/Users/User/Desktop/uyum.png")
grid::grid.raster(img)

full_fit <- fitMeasures(yol_fit, fit.measures = c(
  "chisq", "df", "pvalue",
  "cfi", "tli",
  "rmsea", "rmsea.ci.lower", "rmsea.ci.upper",
  "srmr"))

fit_table <- data.frame(
  "Gostergeler" = c(
    "Ki-kare (χ²)",
    "Serbestlik Derecesi (df)",
    "p-degeri",
    "CFI (Karsilastirmali Uyum Indeksi)",
    "TLI (Tucker-Lewis Indeksi)",
    "RMSEA",
    "RMSEA Alt Guven Siniri (90%)",
    "RMSEA Ust Guven Siniri (90%)",
    "SRMR (Standartlastirilmis Ortalama Karekok Artik)"),
  "Deger" = round(as.numeric(full_fit), 3))

fit_table %>%
  kable("html", caption = "Tablo 5. Modelin Uyum Iyiliği Gostergeleri", align = "lc") %>%
  kable_styling(full_width = FALSE, bootstrap_options = c("striped", "hover", "condensed"), font_size = 16) %>%
  row_spec(0, bold = TRUE) %>%
  column_spec(1, bold = TRUE)
Tablo 5. Modelin Uyum Iyiliği Gostergeleri
Gostergeler Deger
Ki-kare (χ²) 363.533
Serbestlik Derecesi (df) 1.000
p-degeri 0.000
CFI (Karsilastirmali Uyum Indeksi) 0.780
TLI (Tucker-Lewis Indeksi) -1.201
RMSEA 0.274
RMSEA Alt Guven Siniri (90%) 0.250
RMSEA Ust Guven Siniri (90%) 0.298
SRMR (Standartlastirilmis Ortalama Karekok Artik) 0.064
  • Modelin uyum istatistikleri incelendiğinde → χ²(1) = 363.533, p < 0.001 sonucu → modelin veriye mükemmel uyum SAĞLAMADIĞIBI göstermektedir.

  • CFI (0.780) ve TLI (-1.201) değerleri → kabul edilebilir eşiklerin oldukça ALTINDAdır.

  • Özellikle negatif TLI değeri → modelin ciddi biçimde HATALI tanımlandığını göstermektedir.

  • RMSEA = 0.274 olup güven aralığı [0.250, 0.298] arasında yer almaktadır → bu değerler modelin ÇOK KÖTÜ uyum sağladığını göstermektedir.

  • Sadece SRMR = 0.064 ile → KABUL edilebilir düzeyde kalmıştır.

  • Ancak genel olarak model → uyum açısından → YETERSİZ ve YENİDEN yapılandırılmalıdır.


2.9 Bireysel İstatistiksel Testler

2.9.1 t-değeri

  • Bireysel istatistiksel test belli parametre kestirimlerine dayalı hesaplanır. Hatalı tanımlamanın değerlendirilmesinde kullanışlıdır.

  • t-değeri = parametre kestirimi / standart hata

    • Normal dağılır.

    • z-istatistiği gibi kullanılır.

    • Parametrelerin beklenen yönde olup olmadığını ve istatistiksel olarak sıfırdan farklı olup olmadığını değerlendirir.

    • Anlamlı OLMAYAN parametreler 0’a SABİTlenir ancak test n ile ilişkilidir.

    • Ancak bir parametrenin sabitlenmesi → diğer bütün kestirimleri değiştirecektir. Bu da hatalı tanımlamadan dolayı hatalara sebep olabilir.

2.9.2 Standartlaştırılmış Artık

  • İdeal olarak artık değerleri → KÜÇÜK ve TEK biçimli olmalıdır.

  • Artık kovaryans matrisini → yorumlamak → standartlaştırılmış artık kovaryans matrisinden daha zordur.

  • Standartlaştırılmış artık:

    • z-puanları gibidir.

    • Hangi değerin büyük olduğunu belirlemek kolaydır (0.05 alfa düzeyinde 1.96 istatistiksel anlamlılık)

    • Köşegen dışındaki standartlaştırılmış artıkların mutlak değerlerinin ortalamasıtipik bir artığı temsil eden bir indeks sağlar.

resid(yol_fit, type='normalized')
## $type
## [1] "normalized"
## 
## $cov
##             JOYREA BELONG PVREAD   ESCS GFOFAI
## JOYREAD      0.000                            
## BELONG       0.453 -0.053                     
## PVREAD_MEAN 16.360 -1.404  0.000              
## ESCS         0.000  0.000  0.000  0.000       
## GFOFAIL      0.000  0.000  0.000  0.000  0.000
resid_matrix <- resid(yol_fit, type = "normalized")$cov

resid_df <- as.data.frame(resid_matrix)
resid_df <- round(resid_df, 3)

resid_df <- cbind(Variable = rownames(resid_df), resid_df)

kable(resid_df, format = "html",
      caption = "Table 6. Normalized Residual Covariance Matrix", align = "c") %>%
  kable_styling(full_width = FALSE, bootstrap_options = c("striped", "hover", "condensed"), font_size = 16) %>%
  row_spec(0, bold = TRUE) %>%
  column_spec(1, bold = TRUE)
Table 6. Normalized Residual Covariance Matrix
Variable JOYREAD BELONG PVREAD_MEAN ESCS GFOFAIL
JOYREAD JOYREAD 0.000 0.453 16.360 0 0
BELONG BELONG 0.453 -0.053 -1.404 0 0
PVREAD_MEAN PVREAD_MEAN 16.360 -1.404 0.000 0 0
ESCS ESCS 0.000 0.000 0.000 0 0
GFOFAIL GFOFAIL 0.000 0.000 0.000 0 0
  • JOYREAD ↔︎ PVREAD_MEAN: 16.360 → Çok büyük! Model bu ilişkiyi HİÇ açıklayamamış. Modelde bu iki değişken arasında DOĞRUDAN BİR YOL EKLENMESİ gerekebilir.

  • BELONG ↔︎ PVREAD_MEAN: –1.404 → Orta düzey negatif sapma. Henüz 1.96 sınırını geçmemiş ama DİKKAT!

  • JOYREAD ↔︎ BELONG: 0.453 → Düşük düzeyde artık → açıklanabilmiş ilişkidir.

  • Diğer tüm hücreler: 0.000 → Model bu ilişkileri tamamen açıklamış, artık YOK.

  • Normalize edilmiş artık kovaryans matrisi incelendiğinde → JOYREAD ile PVREAD_MEAN değişkenleri arasındaki artık değeri 16.360’tır.

  • Bu değer oldukça yüksek olup → modelin bu iki değişken arasındaki ilişkiyi yetersiz biçimde açıkladığını göstermektedir.

  • Diğer değişken çiftleri arasında → anlamlı artık gözlenMEmiştir.

  • Bu bulgular, modelin yapısında JOYREAD → PVREAD_MEAN yönündedoğrudan bir yolun eksik olabileceğini işaret etmektedir.


2.10 Modifikasyon İndeksleri

  • modindices fonksiyonu ile modifikasyon indeksleri istenebilir.

  • mi sütunu yapılacak modifikasyon sonucunda → ki-karedeki DÜŞÜŞÜ göstermektedir.

mod_index <- modindices(yol_fit, sort = TRUE)

mod_index_filtered <- mod_index %>%
  filter(mi > 3.84) %>%
  arrange(desc(mi)) %>%
  select(lhs, op, rhs, mi, epc) %>%
  mutate(
    mi = round(mi, 4),
    epc = round(epc, 4))

colnames(mod_index_filtered) <- c(
  "Sol Degisken", "Islem", "Sag Degisken",
  "Modifikasyon Indeksi (MI)",
  "Tahmini Parametre Degeri (EPC)")

kable(mod_index_filtered,
      format = "html",
      caption = "Tablo 7. Model Icin Modifikasyon Indeksleri (MI > 3.84)",
      align = "c") %>%
  kable_styling(full_width = FALSE, bootstrap_options = c("striped", "hover", "condensed"), font_size = 14) %>%
  row_spec(0, bold = TRUE) %>%
  column_spec(1:3, bold = TRUE)
Tablo 7. Model Icin Modifikasyon Indeksleri (MI > 3.84)
Sol Degisken Islem Sag Degisken Modifikasyon Indeksi (MI) Tahmini Parametre Degeri (EPC)
PVREAD_MEAN ~ JOYREAD 350.2104 24.9629
JOYREAD ~~ PVREAD_MEAN 350.2104 27.4680
JOYREAD ~ PVREAD_MEAN 350.2104 0.0029
JOYREAD ~ BELONG 350.2104 12.0554
  • PVREAD_MEAN → JOYREAD: Regresyon (~) → 350.2104 → 24.9629 → Çok yüksek etki – mutlaka eklenmeli!!

  • JOYREAD ~~ PVREAD_MEAN: Kovaryans (~~) → 350.2104 → 27.4680 → Aralarında güçlü ilişki var – eklenmeli veya doğrudan yol düşünülmeli!!

  • JOYREAD → PVREAD_MEAN: Regresyon (~) → 350.2104 → 0.0029 → MI yüksek ama EPC çok düşük → istatistiksel MANİDARlık var ama etkisi İHMAL EDİLEBİLİR düzeyde

  • JOYREAD ~~ BELONG: Kovaryans (~~) → 350.2104 → 12.0554 → Orta-yüksek düzeyde ilişki – eklenebilir.

  • Modelin modifikasyon indeksleri incelendiğinde, özellikle JOYREAD ile PVREAD_MEAN arasında hem kovaryans hem de yönlü etkiler açısından çok yüksek MI değerleri (0.350) ve EPC’ler (~25) gözlenmiştir.

  • Bu, modelin bu iki değişken arasındaki ilişkiyi yeterince temsil etmediğini ve bu yolların eklenmesinin modeli ciddi şekilde iyileştireceğini göstermektedir.

  • Ayrıca JOYREAD ile BELONG arasında da MI değeri oldukça yüksektir (MI = 350.21, EPC = 12.06), bu da bu değişkenler arasındaki kovaryansın modele dahil edilmesinin uygun olacağını göstermektedir.


2.11 Modelin Yeniden Tanımlanması

2.11.1 Revised Model 1

  • JOYREAD ~~ PVREAD_MEAN yolu eklendiğinde:
yol_model_v1 <-  'JOYREAD ~ ESCS + GFOFAIL
               BELONG  ~ ESCS + GFOFAIL + PVREAD_MEAN + JOYREAD
               PVREAD_MEAN  ~ ESCS + GFOFAIL
               ESCS ~~ GFOFAIL
JOYREAD ~~ PVREAD_MEAN'

yol_fit_v1 <- sem(yol_model_v1, data)
yol_fit_v1
## lavaan 0.6-19 ended normally after 29 iterations
## 
##   Estimator                                         ML
##   Optimization method                           NLMINB
##   Number of model parameters                        15
## 
##   Number of observations                          4838
## 
## Model Test User Model:
##                                                       
##   Test statistic                                 0.000
##   Degrees of freedom                                 0
semPaths(yol_fit_v1, rotation = 2, curvePivot = TRUE,
sizeMan = 12, sizeInt = 1, sizeLat = 4, edge.label.cex = 1.8, pastel = TRUE, nCharNodes = 0, nCharEdges = 0)

semPaths(
  object = yol_fit_v1,
  what = "std", whatLabels = "std", layout = "tree", edge.label.cex = 1.1, edge.label.bg = "white", edge.label.position = 0.5, edge.color = "black", edge.width = 0.4, curvePivot = TRUE, color = list(
    lat = "white",
    man = "#ADD8E6"),
  sizeMan = 7, sizeLat = 4, sizeInt = 1, pastel = TRUE, mar = c(5, 5, 5, 5), rotation = 1, nCharNodes = 0, nCharEdges = 0, title = FALSE)

  • Yeni tanımlanan model için verilen uyum indeksleri beklendiği gibidir.

  • Kikare = 0 ve sd = 0 olduğunda → p değerini 0.0000 olarak yazdırır. Ancak bu değer ki kare testinin reddedildiği anlamına GELMEZ!

fitmeasures(yol_fit_v1, fit.measures=c("chisq","p","df"))
## chisq    df 
##     0     0
chisq_table_v1 <- data.frame(
  "Gostergeler" = c(
    "Ki-kare (χ²)",
    "Serbestlik Derecesi (df)",
    "p-degeri"),
  "Deger" = round(as.numeric(chisq_values), 3))

chisq_table_v1 %>%
  kable("html", caption = "Tablo A. v1 Ki-Kare Uyum Testi Gostergeleri", align = "lc") %>%
  kable_styling(full_width = FALSE, bootstrap_options = c("striped", "hover", "condensed"), font_size = 16) %>%
  row_spec(0, bold = TRUE) %>%      
  column_spec(1, bold = TRUE)    
Tablo A. v1 Ki-Kare Uyum Testi Gostergeleri
Gostergeler Deger
Ki-kare (χ²) 363.533
Serbestlik Derecesi (df) 1.000
p-degeri 0.000
p_pa <- 
semPaths(yol_fit_v1, whatLabels = "est",
sizeMan = 10,
edge.label.cex = 1.15,
style = "ram",layout = "spring" ,
nCharNodes = 0, nCharEdges = 0)

p_pa <- semPaths(
  object = yol_fit_v1,
  what = "std", whatLabels = "std", style = "ram", layout = "spring", edge.label.cex = 1.2, edge.label.position = 0.5, edge.label.bg = "white", edge.color = "gray30", edge.width = 0.5,                
  color = list(
    lat = "white",
    man = "#D6EAF8"),
  sizeMan = 10, sizeLat = 6, sizeInt = 1, pastel = TRUE,
  mar = c(5, 5, 5, 5),          
  rotation = 1, curvePivot = TRUE, nCharNodes = 0, nCharEdges = 0, title = FALSE)

p_pa_2 <- semptools::mark_sig(p_pa, yol_fit_v1)
plot(p_pa_2)


2.12 Modelin Yeniden Tanımlanması

2.12.1 Revised Model 2

  • Anlamlı olmayan yol katsayıları kaldırıldır.

  • HEPSİ ANLAMLI!!


2.12.1.1 Modelin Yeniden Tanımlanması

2.12.2 Revised Model 3

yol_model_v3 <- '
  JOYREAD ~ ESCS + GFOFAIL
  PVREAD_MEAN ~ ESCS + GFOFAIL + JOYREAD
  BELONG ~ ESCS + GFOFAIL + JOYREAD + PVREAD_MEAN
  ESCS ~~ GFOFAIL
'
yol_fit_v3 <- sem(yol_model_v3, data)
yol_fit_v3
## lavaan 0.6-19 ended normally after 13 iterations
## 
##   Estimator                                         ML
##   Optimization method                           NLMINB
##   Number of model parameters                        15
## 
##   Number of observations                          4838
## 
## Model Test User Model:
##                                                       
##   Test statistic                                 0.000
##   Degrees of freedom                                 0
semPaths(yol_fit_v3, rotation = 2, curvePivot = TRUE,
sizeMan = 12, sizeInt = 1, sizeLat = 4, edge.label.cex = 1.8, pastel = TRUE, nCharNodes = 0, nCharEdges = 0)

semPaths(
  object = yol_fit_v3,
  what = "std", whatLabels = "std", layout = "tree", edge.label.cex = 1.1, edge.label.bg = "white", edge.label.position = 0.5, edge.color = "black", edge.width = 0.4, curvePivot = TRUE, color = list(
    lat = "white",
    man = "#ADD8E6"),
  sizeMan = 7, sizeLat = 4, sizeInt = 1, pastel = TRUE, mar = c(5, 5, 5, 5), rotation = 1, nCharNodes = 0, nCharEdges = 0, title = FALSE)

fitmeasures(yol_fit_v3, fit.measures=c("chisq","p","df"))
## chisq    df 
##     0     0
chisq_table_v3 <- data.frame(
  "Gostergeler" = c(
    "Ki-kare (χ²)",
    "Serbestlik Derecesi (df)",
    "p-degeri"),
  "Deger" = round(as.numeric(chisq_values), 3))

chisq_table_v3 %>%
  kable("html", caption = "Tablo A. v1 Ki-Kare Uyum Testi Gostergeleri", align = "lc") %>%
  kable_styling(full_width = FALSE, bootstrap_options = c("striped", "hover", "condensed"), font_size = 16) %>%
  row_spec(0, bold = TRUE) %>%      
  column_spec(1, bold = TRUE)    
Tablo A. v1 Ki-Kare Uyum Testi Gostergeleri
Gostergeler Deger
Ki-kare (χ²) 363.533
Serbestlik Derecesi (df) 1.000
p-degeri 0.000
p_pa_3 <- 
semPaths(yol_fit_v3, whatLabels = "est",
sizeMan = 10,
edge.label.cex = 1.15,
style = "ram",layout = "spring" ,
nCharNodes = 0, nCharEdges = 0)

p_pa_3 <- semPaths(
  object = yol_fit_v3,
  what = "std", whatLabels = "std", style = "ram", layout = "spring", edge.label.cex = 1.2, edge.label.position = 0.5, edge.label.bg = "white", edge.color = "gray30", edge.width = 0.5,                
  color = list(
    lat = "white",
    man = "#D6EAF8"),
  sizeMan = 10, sizeLat = 6, sizeInt = 1, pastel = TRUE,
  mar = c(5, 5, 5, 5),          
  rotation = 1, curvePivot = TRUE, nCharNodes = 0, nCharEdges = 0, title = FALSE)

p_pa_3_2 <- semptools::mark_sig(p_pa_3, yol_fit_v3)
plot(p_pa_3_2)

lavaan::fitMeasures(yol_fit_v3, fit.measures = c(
  "chisq", "df", "pvalue",
  "cfi", "tli",
  "rmsea", "rmsea.ci.lower", "rmsea.ci.upper",
  "srmr"))
##          chisq             df         pvalue            cfi            tli 
##              0              0             NA              1              1 
##          rmsea rmsea.ci.lower rmsea.ci.upper           srmr 
##              0              0              0              0

2.12.2.1 Modelin Yeniden Tanımlanması

2.12.3 Revised Model 4

yol_model_v4 <- '
  JOYREAD ~ ICTHOME + ESCS
  BELONG ~ ICTHOME + JOYREAD
  PVREAD_MEAN ~ JOYREAD + BELONG + ESCS
  ESCS ~~ ICTHOME
'

yol_fit_v4 <- sem(yol_model_v4, PISA)
yol_fit_v4
## lavaan 0.6-19 ended normally after 14 iterations
## 
##   Estimator                                         ML
##   Optimization method                           NLMINB
##   Number of model parameters                        13
## 
##   Number of observations                          4838
## 
## Model Test User Model:
##                                                       
##   Test statistic                                50.910
##   Degrees of freedom                                 2
##   P-value (Chi-square)                           0.000
semPaths(yol_fit_v4, rotation = 2, curvePivot = TRUE,
sizeMan = 12, sizeInt = 1, sizeLat = 4, edge.label.cex = 1.8, pastel = TRUE, nCharNodes = 0, nCharEdges = 0)

semPaths(
  object = yol_fit_v4,
  what = "std", whatLabels = "std", layout = "tree", edge.label.cex = 1.1, edge.label.bg = "white", edge.label.position = 0.5, edge.color = "black", edge.width = 0.4, curvePivot = TRUE, color = list(
    lat = "white",
    man = "#ADD8E6"),
  sizeMan = 7, sizeLat = 4, sizeInt = 1, pastel = TRUE, mar = c(5, 5, 5, 5), rotation = 1, nCharNodes = 0, nCharEdges = 0, title = FALSE)

fitmeasures(yol_fit_v4, fit.measures=c("chisq","p","df"))
## chisq    df 
## 50.91  2.00
chisq_table_v4 <- data.frame(
  "Gostergeler" = c(
    "Ki-kare (χ²)",
    "Serbestlik Derecesi (df)",
    "p-degeri"),
  "Deger" = round(as.numeric(chisq_values), 3))

chisq_table_v4 %>%
  kable("html", caption = "Tablo E. v4 Ki-Kare Uyum Testi Gostergeleri", align = "lc") %>%
  kable_styling(full_width = FALSE, bootstrap_options = c("striped", "hover", "condensed"), font_size = 16) %>%
  row_spec(0, bold = TRUE) %>%      
  column_spec(1, bold = TRUE)    
Tablo E. v4 Ki-Kare Uyum Testi Gostergeleri
Gostergeler Deger
Ki-kare (χ²) 363.533
Serbestlik Derecesi (df) 1.000
p-degeri 0.000
p_pa_4 <- 
semPaths(yol_fit_v4, whatLabels = "est",
sizeMan = 10,
edge.label.cex = 1.15,
style = "ram",layout = "spring" ,
nCharNodes = 0, nCharEdges = 0)

p_pa_4 <- semPaths(
  object = yol_fit_v4,
  what = "std", whatLabels = "std", style = "ram", layout = "spring", edge.label.cex = 1.2, edge.label.position = 0.5, edge.label.bg = "white", edge.color = "gray30", edge.width = 0.5,                
  color = list(
    lat = "white",
    man = "#D6EAF8"),
  sizeMan = 10, sizeLat = 6, sizeInt = 1, pastel = TRUE,
  mar = c(5, 5, 5, 5),          
  rotation = 1, curvePivot = TRUE, nCharNodes = 0, nCharEdges = 0, title = FALSE)

p_pa_4_2 <- semptools::mark_sig(p_pa_4, yol_fit_v4)
plot(p_pa_4_2)

fit_stats_4 <- fitMeasures(yol_fit_v4, fit.measures = c(
  "chisq", "df", "pvalue",
  "cfi", "tli",
  "rmsea", "rmsea.ci.lower", "rmsea.ci.upper",
  "srmr"))
fit_stats_4
##          chisq             df         pvalue            cfi            tli 
##         50.910          2.000          0.000          0.978          0.891 
##          rmsea rmsea.ci.lower rmsea.ci.upper           srmr 
##          0.071          0.055          0.089          0.023
modindices(yol_fit_v4, sort = TRUE)
yol_model_final <- '
  JOYREAD ~ ICTHOME + ESCS
  PVREAD_MEAN ~ JOYREAD + ESCS
  ESCS ~~ ICTHOME
'
yol_fit_v4_rev <- sem(yol_model_final, data = PISA)
summary(yol_fit_v4_rev, fit.measures = TRUE, standardized = TRUE)
## lavaan 0.6-19 ended normally after 15 iterations
## 
##   Estimator                                         ML
##   Optimization method                           NLMINB
##   Number of model parameters                         9
## 
##   Number of observations                          4838
## 
## Model Test User Model:
##                                                       
##   Test statistic                                18.818
##   Degrees of freedom                                 1
##   P-value (Chi-square)                           0.000
## 
## Model Test Baseline Model:
## 
##   Test statistic                              2142.955
##   Degrees of freedom                                 6
##   P-value                                        0.000
## 
## User Model versus Baseline Model:
## 
##   Comparative Fit Index (CFI)                    0.992
##   Tucker-Lewis Index (TLI)                       0.950
## 
## Loglikelihood and Information Criteria:
## 
##   Loglikelihood user model (H0)             -52850.261
##   Loglikelihood unrestricted model (H1)     -52840.852
##                                                       
##   Akaike (AIC)                              105718.521
##   Bayesian (BIC)                            105776.879
##   Sample-size adjusted Bayesian (SABIC)     105748.281
## 
## Root Mean Square Error of Approximation:
## 
##   RMSEA                                          0.061
##   90 Percent confidence interval - lower         0.039
##   90 Percent confidence interval - upper         0.086
##   P-value H_0: RMSEA <= 0.050                    0.195
##   P-value H_0: RMSEA >= 0.080                    0.110
## 
## Standardized Root Mean Square Residual:
## 
##   SRMR                                           0.016
## 
## Parameter Estimates:
## 
##   Standard errors                             Standard
##   Information                                 Expected
##   Information saturated (h1) model          Structured
## 
## Regressions:
##                    Estimate  Std.Err  z-value  P(>|z|)   Std.lv  Std.all
##   JOYREAD ~                                                             
##     ICTHOME          -0.043    0.008   -5.382    0.000   -0.043   -0.085
##     ESCS              0.181    0.017   10.820    0.000    0.181    0.171
##   PVREAD_MEAN ~                                                         
##     JOYREAD          26.192    1.291   20.291    0.000   26.192    0.265
##     ESCS             32.159    1.367   23.525    0.000   32.159    0.308
## 
## Covariances:
##                    Estimate  Std.Err  z-value  P(>|z|)   Std.lv  Std.all
##   ICTHOME ~~                                                            
##     ESCS              0.920    0.033   27.657    0.000    0.920    0.433
## 
## Variances:
##                    Estimate  Std.Err  z-value  P(>|z|)   Std.lv  Std.all
##    .JOYREAD           1.105    0.022   49.183    0.000    1.105    0.976
##    .PVREAD_MEAN    8957.266  182.120   49.183    0.000 8957.266    0.813
##     ICTHOME           4.464    0.091   49.183    0.000    4.464    1.000
##     ESCS              1.009    0.021   49.183    0.000    1.009    1.000
semPaths(yol_fit_v4_rev, rotation = 2, curvePivot = TRUE,
sizeMan = 12, sizeInt = 1, sizeLat = 4, edge.label.cex = 1.8, pastel = TRUE, nCharNodes = 0, nCharEdges = 0)

semPaths(
  object = yol_fit_v4_rev,
  what = "std", whatLabels = "std", layout = "tree", edge.label.cex = 1.1, edge.label.bg = "white", edge.label.position = 0.5, edge.color = "black", edge.width = 0.4, curvePivot = TRUE, color = list(
    lat = "white",
    man = "#ADD8E6"),
  sizeMan = 7, sizeLat = 4, sizeInt = 1, pastel = TRUE, mar = c(5, 5, 5, 5), rotation = 1, nCharNodes = 0, nCharEdges = 0, title = FALSE)

fitmeasures(yol_fit_v4_rev, fit.measures=c("chisq","p","df"))
##  chisq     df 
## 18.818  1.000
chisq_table_v4_rev <- data.frame(
  "Gostergeler" = c(
    "Ki-kare (χ²)",
    "Serbestlik Derecesi (df)",
    "p-degeri"),
  "Deger" = round(as.numeric(chisq_values), 3))

chisq_table_v4_rev %>%
  kable("html", caption = "Tablo E. v4_rev Ki-Kare Uyum Testi Gostergeleri", align = "lc") %>%
  kable_styling(full_width = FALSE, bootstrap_options = c("striped", "hover", "condensed"), font_size = 16) %>%
  row_spec(0, bold = TRUE) %>%      
  column_spec(1, bold = TRUE)    
Tablo E. v4_rev Ki-Kare Uyum Testi Gostergeleri
Gostergeler Deger
Ki-kare (χ²) 363.533
Serbestlik Derecesi (df) 1.000
p-degeri 0.000
p_pa_4_rev <- 
semPaths(yol_fit_v4_rev, whatLabels = "est",
sizeMan = 10,
edge.label.cex = 1.15,
style = "ram",layout = "spring" ,
nCharNodes = 0, nCharEdges = 0)

p_pa_4_rev <- semPaths(
  object = yol_fit_v4_rev,
  what = "std", whatLabels = "std", style = "ram", layout = "spring", edge.label.cex = 1.2, edge.label.position = 0.5, edge.label.bg = "white", edge.color = "gray30", edge.width = 0.5,                
  color = list(
    lat = "white",
    man = "#D6EAF8"),
  sizeMan = 10, sizeLat = 6, sizeInt = 1, pastel = TRUE,
  mar = c(5, 5, 5, 5),          
  rotation = 1, curvePivot = TRUE, nCharNodes = 0, nCharEdges = 0, title = FALSE)

library(semPlot)

p_pa_4_rev_2 <- semptools::mark_sig(p_pa_4_rev, yol_fit_v4_rev)
plot(p_pa_4_rev_2)

fit_stats_4_rev <- fitMeasures(yol_fit_v4_rev, fit.measures = c(
  "chisq", "df", "pvalue",
  "cfi", "tli",
  "rmsea", "rmsea.ci.lower", "rmsea.ci.upper",
  "srmr"))

fit_stats_4_rev
##          chisq             df         pvalue            cfi            tli 
##         18.818          1.000          0.000          0.992          0.950 
##          rmsea rmsea.ci.lower rmsea.ci.upper           srmr 
##          0.061          0.039          0.086          0.016
library(knitr)
library(kableExtra)

fit_stats_table_v4_rev <- data.frame(
  Göstergeler = c(
    "Ki-kare (χ²)",
    "Serbestlik Derecesi (df)",
    "p-degeri",
    "CFI (Karsilastirmali Uyum Indeksi)",
    "TLI (Tucker-Lewis Indeksi)",
    "RMSEA",
    "RMSEA Alt Guven Siniri (90%)",
    "RMSEA Ust Guven Siniri (90%)",
    "SRMR (Standartlastirilmis Ortalama Karekok Artik)"
  ),
  Deger = round(as.numeric(fit_stats_4_rev), 3)
)

kable(fit_stats_table_v4_rev,
      format = "html",
      caption = "Tablo. Modelin Uyum Iyiligi Gostergeleri (Revize Edilmis Model)",
      align = "lc") %>%
  kable_styling(full_width = FALSE,
                bootstrap_options = c("striped", "hover", "condensed"),
                font_size = 14) %>%
  row_spec(0, bold = TRUE) %>%
  column_spec(1, bold = TRUE)
Tablo. Modelin Uyum Iyiligi Gostergeleri (Revize Edilmis Model)
Göstergeler Deger
Ki-kare (χ²) 18.818
Serbestlik Derecesi (df) 1.000
p-degeri 0.000
CFI (Karsilastirmali Uyum Indeksi) 0.992
TLI (Tucker-Lewis Indeksi) 0.950
RMSEA 0.061
RMSEA Alt Guven Siniri (90%) 0.039
RMSEA Ust Guven Siniri (90%) 0.086
SRMR (Standartlastirilmis Ortalama Karekok Artik) 0.016
  • Ki-kare (χ²): 18.818 → Anlamlı çıkmış (p = 0.000). Bu, model ile veri arasında fark olduğunu gösterir. Ancak, Ki-kare testi df = 1 olduğunda çok hassastır; büyük örneklemlerde anlamlı çıkması yaygındır. Bu yüzden diğer uyum ölçütleriyle birlikte değerlendirilmelidir.

  • Serbestlik Derecesi (df): 1.000 → Model test edilebilir. Uyum ölçütleri geçerli şekilde hesaplanabilir.

  • p-değeri (χ² testi): 0.000 → Ki-kare istatistiğine karşılık gelen anlamlı fark → modelin veriye tam uymadığı gösterilir. Ancak bu tek başına modelin kötü olduğunu göstermez.

  • CFI (Karşılaştırmalı Uyum İndeksi): 0.992 → Mükemmel uyum (> 0.95 kabul edilir). Model, boş modele göre oldukça iyidir.

  • TLI (Tucker-Lewis İndeksi): 0.950 → Sınırda mükemmel uyum. 0.95 ve üzeri genellikle ideal kabul edilir. Bu değer kabul edilebilir-mükemmel aralığındadır.

  • RMSEA: 0.061 → Kabul edilebilir uyum. RMSEA < 0.08 genelde kabul edilebilir; < 0.05 ise mükemmel kabul edilir.

  • RMSEA %90 Alt Güven Sınırı: 0.039 → Mükemmel uyum sınırına giriyor.

  • RMSEA %90 Üst Güven Sınırı: 0.086 → 0.08’in hemen üst sınırında. Bu, RMSEA’nın sınırda olduğunu gösterir. Yani model biraz daha sadeleştirilirse uyum daha iyi olabilir.

  • SRMR (Standartlaştırılmış Ortalama Karekök Artık): 0.016 → Mükemmel uyum. SRMR < 0.05 değerleri güçlü model uyumuna işaret eder.

  • Modelin uyum iyiliği istatistikleri χ²(1) = 18.818, p < 0.001; CFI = 0.992, TLI = 0.950, RMSEA = 0.061 (90% CI [0.039, 0.086]) ve SRMR = 0.016 olarak elde edilmiştir.

    • Bu bulgular → modelin genel olarak iyi düzeyde uyum sağladığını, özellikle CFI ve SRMR açısından mükemmel uyum gösterdiğini ortaya koymaktadır.

    • RMSEA’nın üst güven sınırı sınırda olsa da model → istatistiksel olarak KABUL edilebilir ve raporlanabilir niteliktedir.

2.12.4 NOT: BAYA BİR DENEME SONUCUNDA BİR MODEL ÖYLE YA DA BÖYLE KURDUM!


2.13 Ki-Kare Fark Testi

  • Hem revised model 1 hem de revised model 2 veriye iyi uyum sağladığında:

    • Bu durumda hangi model seçilmelidir?

    • Mükemmel uyum sağlayan ancak daha karmaşık model mi?

    • İyi uyum sağlayan ancak daha BASİT model mi?

    • Ki-kare fark testi hiyerarşik olarak kümelenmiş iki modelin karşılaştırılmasında oldukça kullanışlıdır.

    • Eğer modellerden birisi diğerinin alt kümesiyse iki model kümelenmiştir (daha basit model daha karmaşık modelin içinde kümelenmiştir).

  • Bu durumda revised model 2 (daha basit model) revised model 1 (daha karmaşık model) içinde kümelenmiştir.

    • Ki-kare fark testi modellerin bağıl uyumlarını değerlendirmek için kullanılabilir.
  • İki model de veriye iyi uyum sağladığında → ki-kare değerleri arasındaki fark serbestlik derecesi iki model arasındaki parametre sayısındaki farka eşit olan ki-kare dağılımı gösterir:

\[ \chi^2_{dif} = \chi^2_{\text{simple}} - \chi^2_{\text{complex}} \]

\[ df_{dif} = df_{\text{simple}} - df_{\text{complex}} \]

  • Anlamlı olmayan ki-kare farkı daha basit modelin daha karmaşık modelden istatistiksel olarak veriye daha kötü uymadığını önerir.

    • Bu nedenle, daha BASİT model daha tutumlu olduğundan dolayı seçilmelidir. Aksi halde karmaşık model seçilmelidir.

2.14 AIC ve BIC

  • Akaike Information Criterion (AIC) ve Bayesian Information Criterion (BIC) evren dayanaklı yordayıcı uyum indeksleri olarak bilinir.

  • Farklı YEM yazılımları AIC ve BIC değerlerini farklı şekilde hesaplayabilir.

\(AIC = -2LogL + 2r\)r → modeldeki parametre sayısı

\(BIC = -2LogL + rlnn\)n → örneklem büyüklüğü

\(adjustedBIC = -2LogL + rlnn*\)\(n* = (n + 2) / 24\)

  • AIC ve BIC değerleri çoğunlukla → aynı veriden kestirilen hiyerarşik olmayan modellerin arasından seçim yapmak için kullanılır.

    • BAĞIL olarak daha KÜÇÜK değerler uygundur.
  • MODEL 1 için:

fitmeasures(yol_fit_v1,fit.measures = c("AIC","BIC"))
##      aic      bic 
## 112747.3 112844.5
info_criteria <- data.frame(
  "Bilgi Kriteri" = c("AIC (Akaike Information Criterion)", 
                      "BIC (Bayesian Information Criterion)"),
  "Deger" = c(112747.3, 112844.5))

kable(info_criteria,
      format = "html",
      caption = "Tablo. Model 1 Icin Modelin Bilgi Kriterleri (yol_fit_v1)",
      align = "lc") %>%
  kable_styling(full_width = FALSE, bootstrap_options = c("striped", "hover", "condensed"), font_size = 14) %>%
  row_spec(0, bold = TRUE) %>%
  column_spec(1, bold = TRUE)
Tablo. Model 1 Icin Modelin Bilgi Kriterleri (yol_fit_v1)
Bilgi.Kriteri Deger
AIC (Akaike Information Criterion) 112747.3
BIC (Bayesian Information Criterion) 112844.5
  • AIC ve BIC → modeller arası KARŞILAŞTIRMA için kullanılır.

    • Daha DÜŞÜK değer → daha İYİ model uyumu ve PASRIMONY (SADELİK) demektir.

    • Bu değerleri diğer modellerin AIC/BIC’leriyle karşılaştırarak → hangisinin daha iyi uyum sağladığını belirleyebilirsin.

  • Revize edilmiş model için:

fitmeasures(yol_fit_v4_rev,fit.measures = c("AIC","BIC"))
##      aic      bic 
## 105718.5 105776.9
info_criteria_v4_rev <- data.frame(
  "Bilgi Kriteri" = c("AIC (Akaike Information Criterion)", 
                      "BIC (Bayesian Information Criterion)"),
  "Deger" = c(105718.5, 105776.9))

kable(info_criteria_v4_rev,
      format = "html",
      caption = "Tablo X. Revize Edilmis Modelin Bilgi Kriterleri (yol_fit_v4_rev)",
      align = "lc") %>%
  kable_styling(full_width = FALSE, bootstrap_options = c("striped", "hover", "condensed"), font_size = 14) %>%
  row_spec(0, bold = TRUE) %>%
  column_spec(1, bold = TRUE)
Tablo X. Revize Edilmis Modelin Bilgi Kriterleri (yol_fit_v4_rev)
Bilgi.Kriteri Deger
AIC (Akaike Information Criterion) 105718.5
BIC (Bayesian Information Criterion) 105776.9
  • YORUM: Bu değerler, önceki modele (AIC = 112747.3, BIC = 112844.5) göre DAHA DÜŞÜK çıkmıştır.

    • Bu da REVİZE EDİLMİŞ modelin → daha İYİ parsimony ve uyuma sahip olduğunu gösterir.
  • İki model kümelenmiş modeller olduğundan, iki model arasında AIC ve BIC değerlerinin karşılaştırılmasına gerek yoktur.

  • Eğer model-veri uyumu zayıf İSE → ilk olarak varsayılan model veriye uymaz.

  • Eğer model-veri uyumu iyi İSE → model veri tarafından desteklenir.

    • Alternatif modelleri araştırmak veya daha tutumlu (parsimonious) bir model aramak için ilave analizler yürütülebilir.
  • Mükemmel veya iyi bir model-veri uyumu mutlaka modelin iyi olduğunu önermez.

    • İyi bir model en basit şekilde olan (tutumluluk ilkesi), ama hala veriye iyi uyan modeldir.
  • İyi Uyuma karşı Model Tutumluluğu


2.15 Modeli Tanımlama

  • MODEL bölümü modelin belirlenmesi

  • Yol analizinde → her bir içsel (endogenous) değişkenin → bir veya daha fazla değişken tarafından yordanması ifadesi ile belirtilir.

  • Ham veri kullanıldığı zaman → default modeli değişkenler için ortalamaların/kesişimlerin kestirildiği ortalama yapıları içerecektir.

  • Yol analizi modeli için → kovaryans yapısına odaklanılır. “Means” ve “Intercepts” bölümü altındaki değerler göz ardı edilir.

  • Ortalamalar/kesişimler çıkarılınca → kestirilen parametre sayısı 14 olmalıdır.

summary(yol_fit)
## lavaan 0.6-19 ended normally after 14 iterations
## 
##   Estimator                                         ML
##   Optimization method                           NLMINB
##   Number of model parameters                        14
## 
##   Number of observations                          4838
## 
## Model Test User Model:
##                                                       
##   Test statistic                               363.533
##   Degrees of freedom                                 1
##   P-value (Chi-square)                           0.000
## 
## Parameter Estimates:
## 
##   Standard errors                             Standard
##   Information                                 Expected
##   Information saturated (h1) model          Structured
## 
## Regressions:
##                    Estimate  Std.Err  z-value  P(>|z|)
##   JOYREAD ~                                           
##     ESCS              0.129    0.015    8.537    0.000
##     GFOFAIL           0.099    0.014    6.899    0.000
##   BELONG ~                                            
##     ESCS              0.125    0.014    8.863    0.000
##     GFOFAIL          -0.208    0.013  -16.299    0.000
##     PVREAD_MEAN       0.000    0.000    1.778    0.075
##     JOYREAD          -0.073    0.013   -5.840    0.000
##   PVREAD_MEAN ~                                       
##     ESCS             33.972    1.403   24.208    0.000
##     GFOFAIL          14.959    1.331   11.237    0.000
## 
## Covariances:
##                    Estimate  Std.Err  z-value  P(>|z|)
##   ESCS ~~                                             
##     GFOFAIL           0.128    0.015    8.314    0.000
## 
## Variances:
##                    Estimate  Std.Err  z-value  P(>|z|)
##    .JOYREAD           1.100    0.022   49.183    0.000
##    .BELONG            0.839    0.017   49.183    0.000
##    .PVREAD_MEAN    9472.346  192.593   49.183    0.000
##     ESCS              1.009    0.021   49.183    0.000
##     GFOFAIL           1.121    0.023   49.183    0.000
  • Regressions (Yol Katsayıları) Yorumları:

    • JOYREAD ~ ESCS + GFOFAIL

    • ESCS → JOYREAD: β = 0.129, p < 0.001 → Pozitif ve anlamlı etki → Sosyoekonomik düzey arttıkça okuma zevki artar.

    • GFOFAIL → JOYREAD: β = 0.099, p < 0.001 → Pozitif ve anlamlı etki → Sınav kaygısı azaldıkça okuma sevgisi artar (tutarlı).

  • BELONG ~ ESCS + GFOFAIL + PVREAD_MEAN + JOYREAD

    • ESCS → BELONG: β = 0.125, p < 0.001 → Sosyoekonomik düzey arttıkça aidiyet hissi artar.

    • GFOFAIL → BELONG: β = −0.208, p < 0.001 → Negatif etki → Sınav başarısızlığı korkusu aidiyeti düşürür.

    • PVREAD_MEAN → BELONG: β = 0.006, p = 0.075 → Anlamlı DEĞİL → başarı düzeyi aidiyeti açıklamada yetersiz.

    • JOYREAD → BELONG: β = −0.073, p < 0.001 → Negatif ilişki ilginç: okuma zevki arttıkça aidiyet azalıyor olabilir; bu kurgu kuramsal olarak tekrar düşünülmeli.

  • PVREAD_MEAN ~ ESCS + GFOFAIL

    • ESCS → PVREAD_MEAN: β = 33.972, p < 0.001 → Çok güçlü ve anlamlı → ESCS başarıyı büyük ölçüde açıklar.

    • GFOFAIL → PVREAD_MEAN: β = 14.959, p < 0.001 → Başarısızlık korkusu azaldıkça başarı artıyor → Beklenen yönde ve anlamlı.

  • Kovaryanslar:

  • ESCS ~~ GFOFAIL: r = 0.128, p < 0.001

  • Sosyoekonomik durum ile sınav başarısızlığı korkusu pozitif ilişkilidir. ESCS düşük oldukça GFOFAIL artar.

  • Varyanslar (Kontrol için):

    • Tüm değişkenlerin varyansları anlamlı → Modelin her bileşeni veri tarafından yeterince açıklanıyor.
  • Modelde ESCS’nin JOYREAD (β = 0.129, p < 0.001) ve PVREAD_MEAN (β = 33.97, p < 0.001) üzerindeki etkisi anlamlı ve pozitif bulunmuştur.

    • Benzer şekilde, GFOFAIL değişkeni JOYREAD (β = 0.099, p < 0.001) ve PVREAD_MEAN (β = 14.96, p < 0.001) üzerinde anlamlı pozitif etkilere sahiptir.

    • BELONG değişkeni için PVREAD_MEAN’in etkisi istatistiksel olarak anlamlı bulunmamıştır (p = 0.075), JOYREAD’in etkisi ise beklenmedik şekilde negatif (β = −0.073, p < 0.001) olarak ortaya çıkmıştır.

    • ESCS ile GFOFAIL arasında pozitif ve anlamlı bir kovaryans bulunmaktadır (r = 0.128, p < 0.001).

  • REGRESYON KATSAYILARI (YOL KATSAYILARI)

library(knitr)
library(kableExtra)

regression_table <- data.frame(
  Değişken = c("JOYREAD ~ ESCS", "JOYREAD ~ GFOFAIL",
               "BELONG ~ ESCS", "BELONG ~ GFOFAIL", "BELONG ~ PVREAD_MEAN", "BELONG ~ JOYREAD",
               "PVREAD_MEAN ~ ESCS", "PVREAD_MEAN ~ GFOFAIL"),
  Katsayı = c(0.129, 0.099, 0.125, -0.208, 0.006, -0.073, 33.972, 14.959),
  StdErr = c(0.015, 0.014, 0.014, 0.013, 0.004, 0.013, 1.403, 1.331),
  z = c(8.537, 6.899, 8.863, -16.299, 1.778, -5.840, 24.208, 11.237),
  p = c(0.000, 0.000, 0.000, 0.000, 0.075, 0.000, 0.000, 0.000))

kable(regression_table,
      caption = "Tablo. Yol Katsayıları (Regresyonlar)",
      format = "html",
      align = "lcccc") %>%
  kable_styling(bootstrap_options = c("striped", "hover", "condensed"),
                full_width = FALSE, font_size = 14) %>%
  row_spec(0, bold = TRUE)
Tablo. Yol Katsayıları (Regresyonlar)
Değişken Katsayı StdErr z p
JOYREAD ~ ESCS 0.129 0.015 8.537 0.000
JOYREAD ~ GFOFAIL 0.099 0.014 6.899 0.000
BELONG ~ ESCS 0.125 0.014 8.863 0.000
BELONG ~ GFOFAIL -0.208 0.013 -16.299 0.000
BELONG ~ PVREAD_MEAN 0.006 0.004 1.778 0.075
BELONG ~ JOYREAD -0.073 0.013 -5.840 0.000
PVREAD_MEAN ~ ESCS 33.972 1.403 24.208 0.000
PVREAD_MEAN ~ GFOFAIL 14.959 1.331 11.237 0.000
  • KOVARYANSLAR
cov_table <- data.frame(
  Kovaryans = c("ESCS ~~ GFOFAIL"),
  Katsayı = c(0.128),
  StdErr = c(0.015),
  z = c(8.314),
  p = c(0.000))

kable(cov_table,
      caption = "Tablo. Kovaryanslar",
      format = "html",
      align = "lccc") %>%
  kable_styling(bootstrap_options = c("striped", "hover", "condensed"),
                full_width = FALSE, font_size = 14) %>%
  row_spec(0, bold = TRUE)
Tablo. Kovaryanslar
Kovaryans Katsayı StdErr z p
ESCS ~~ GFOFAIL 0.128 0.015 8.314 0
  • VARYANSLAR
var_table <- data.frame(
  Değişken = c("JOYREAD", "BELONG", "PVREAD_MEAN", "ESCS", "GFOFAIL"),
  Varyans = c(1.100, 0.839, 9472.346, 1.009, 1.121),
  StdErr = c(0.022, 0.017, 192.593, 0.021, 0.023),
  z = c(49.183, 49.183, 49.183, 49.183, 49.183),
  p = c(0.000, 0.000, 0.000, 0.000, 0.000))

kable(var_table,
      caption = "Tablo. Gözlenen Değişkenlerin Varyansları",
      format = "html",
      align = "lcccc") %>%
  kable_styling(bootstrap_options = c("striped", "hover", "condensed"),
                full_width = FALSE, font_size = 14) %>%
  row_spec(0, bold = TRUE)
Tablo. Gözlenen Değişkenlerin Varyansları
Değişken Varyans StdErr z p
JOYREAD 1.100 0.022 49.183 0
BELONG 0.839 0.017 49.183 0
PVREAD_MEAN 9472.346 192.593 49.183 0
ESCS 1.009 0.021 49.183 0
GFOFAIL 1.121 0.023 49.183 0
standardizedsolution(yol_fit)
library(knitr)
library(kableExtra)

std_solution_full <- data.frame(
  Yol = c(
    "JOYREAD ~ ESCS", "JOYREAD ~ GFOFAIL",
    "BELONG ~ ESCS", "BELONG ~ GFOFAIL", "BELONG ~ PVREAD_MEAN", "BELONG ~ JOYREAD",
    "PVREAD_MEAN ~ ESCS", "PVREAD_MEAN ~ GFOFAIL",
    "ESCS ~~ GFOFAIL", "JOYREAD ~~ JOYREAD", "BELONG ~~ BELONG", 
    "PVREAD_MEAN ~~ PVREAD_MEAN", "ESCS ~~ ESCS", "GFOFAIL ~~ GFOFAIL"
  ),
  Std_Katsayı = c(
    0.122, 0.099,
    0.132, -0.231, 0.027, -0.082,
    0.325, 0.151,
    0.120, 0.973, 0.928,
    0.860, 1.000, 1.000),
  Std_Hata = c(
    0.014, 0.014,
    0.015, 0.014, 0.015, 0.014,
    0.013, 0.013,
    0.014, 0.005, 0.007,
    0.009, 0.000, 0.000),
  z = c(
    8.599, 6.932,
    8.926, -16.719, 1.779, -5.858,
    25.537, 11.349,
    8.497, 209.848, 129.419,
    92.865, NA, NA),
  p = c(
    0.000, 0.000,
    0.000, 0.000, 0.075, 0.000,
    0.000, 0.000,
    0.000, 0.000, 0.000,
    0.000, NA, NA),
  CI_Lower = c(
    0.094, 0.071,
    0.103, -0.259, -0.003, -0.109,
    0.300, 0.125,
    0.093, 0.963, 0.914,
    0.842, 1.000, 1.000),
  CI_Upper = c(
    0.150, 0.126,
    0.161, -0.204, 0.056, -0.055,
    0.350, 0.177,
    0.148, 0.982, 0.942,
    0.878, 1.000, 1.000))

kable(std_solution_full,
      caption = "Tablo. Standartlaştırılmış Yol, Kovaryans ve Varyans Tahminleri",
      format = "html",
      align = "lcccccc") %>%
  kable_styling(full_width = FALSE, bootstrap_options = c("striped", "hover", "condensed"), font_size = 14) %>%
  row_spec(0, bold = TRUE) %>%
  column_spec(1, bold = TRUE)
Tablo. Standartlaştırılmış Yol, Kovaryans ve Varyans Tahminleri
Yol Std_Katsayı Std_Hata z p CI_Lower CI_Upper
JOYREAD ~ ESCS 0.122 0.014 8.599 0.000 0.094 0.150
JOYREAD ~ GFOFAIL 0.099 0.014 6.932 0.000 0.071 0.126
BELONG ~ ESCS 0.132 0.015 8.926 0.000 0.103 0.161
BELONG ~ GFOFAIL -0.231 0.014 -16.719 0.000 -0.259 -0.204
BELONG ~ PVREAD_MEAN 0.027 0.015 1.779 0.075 -0.003 0.056
BELONG ~ JOYREAD -0.082 0.014 -5.858 0.000 -0.109 -0.055
PVREAD_MEAN ~ ESCS 0.325 0.013 25.537 0.000 0.300 0.350
PVREAD_MEAN ~ GFOFAIL 0.151 0.013 11.349 0.000 0.125 0.177
ESCS ~~ GFOFAIL 0.120 0.014 8.497 0.000 0.093 0.148
JOYREAD ~~ JOYREAD 0.973 0.005 209.848 0.000 0.963 0.982
BELONG ~~ BELONG 0.928 0.007 129.419 0.000 0.914 0.942
PVREAD_MEAN ~~ PVREAD_MEAN 0.860 0.009 92.865 0.000 0.842 0.878
ESCS ~~ ESCS 1.000 0.000 NA NA 1.000 1.000
GFOFAIL ~~ GFOFAIL 1.000 0.000 NA NA 1.000 1.000

2.16 Standartlaştırılmış Artık

  • Standartlaştırılmamış artık varyans (unstandardized residual variance) → her bir içsel değişkendeki yordayıcılar tarafından açıklanmayan varyans miktarını söyler.

2.16.1 Kestirim

  • Standartlaştırılmamış Sonuçlar:
parameterEstimates(yol_fit,standardized = TRUE)
library(knitr)
library(kableExtra)

param_table <- data.frame(
  Yol = c(
    "JOYREAD ~ ESCS", "JOYREAD ~ GFOFAIL",
    "BELONG ~ ESCS", "BELONG ~ GFOFAIL", "BELONG ~ PVREAD_MEAN", "BELONG ~ JOYREAD",
    "PVREAD_MEAN ~ ESCS", "PVREAD_MEAN ~ GFOFAIL",
    "ESCS ~~ GFOFAIL", "JOYREAD ~~ JOYREAD",
    "BELONG ~~ BELONG", "PVREAD_MEAN ~~ PVREAD_MEAN", "ESCS ~~ ESCS", "GFOFAIL ~~ GFOFAIL"),
  Katsayı = c(0.129, 0.099,
              0.125, -0.208, 0.000, -0.073,
              33.972, 14.959,
              0.128, 1.100,
              0.839, 9472.346, 1.009, 1.121),
  Std_Hata = c(0.015, 0.014,
               0.014, 0.013, 0.000, 0.013,
               1.403, 1.331,
               0.015, 0.022,
               0.017, 192.593, 0.021, 0.023),
  z = c(8.537, 6.899,
        8.863, -16.299, 1.778, -5.840,
        24.208, 11.237,
        8.314, 49.183,
        49.183, 49.183, 49.183, 49.183),
  p = c(0.000, 0.000,
        0.000, 0.000, 0.075, 0.000,
        0.000, 0.000,
        0.000, 0.000,
        0.000, 0.000, 0.000, 0.000),
  CI_Lower = c(0.099, 0.071,
               0.097, -0.233, 0.000, -0.098,
               31.221, 12.350,
               0.098, 1.057,
               0.805, 9094.871, 0.969, 1.076),
  CI_Upper = c(0.159, 0.127,
               0.152, -0.183, 0.001, -0.049,
               36.722, 17.569,
               0.158, 1.144,
               0.872, 9849.820, 1.049, 1.166))

kable(param_table,
      caption = "Tablo. Parametre Tahminleri (Standartlaştırılmamış Katsayılar)",
      format = "html",
      align = "lcccccc") %>%
  kable_styling(bootstrap_options = c("striped", "hover", "condensed"), full_width = FALSE, font_size = 14) %>%
  row_spec(0, bold = TRUE) %>%
  column_spec(1, bold = TRUE)
Tablo. Parametre Tahminleri (Standartlaştırılmamış Katsayılar)
Yol Katsayı Std_Hata z p CI_Lower CI_Upper
JOYREAD ~ ESCS 0.129 0.015 8.537 0.000 0.099 0.159
JOYREAD ~ GFOFAIL 0.099 0.014 6.899 0.000 0.071 0.127
BELONG ~ ESCS 0.125 0.014 8.863 0.000 0.097 0.152
BELONG ~ GFOFAIL -0.208 0.013 -16.299 0.000 -0.233 -0.183
BELONG ~ PVREAD_MEAN 0.000 0.000 1.778 0.075 0.000 0.001
BELONG ~ JOYREAD -0.073 0.013 -5.840 0.000 -0.098 -0.049
PVREAD_MEAN ~ ESCS 33.972 1.403 24.208 0.000 31.221 36.722
PVREAD_MEAN ~ GFOFAIL 14.959 1.331 11.237 0.000 12.350 17.569
ESCS ~~ GFOFAIL 0.128 0.015 8.314 0.000 0.098 0.158
JOYREAD ~~ JOYREAD 1.100 0.022 49.183 0.000 1.057 1.144
BELONG ~~ BELONG 0.839 0.017 49.183 0.000 0.805 0.872
PVREAD_MEAN ~~ PVREAD_MEAN 9472.346 192.593 49.183 0.000 9094.871 9849.820
ESCS ~~ ESCS 1.009 0.021 49.183 0.000 0.969 1.049
GFOFAIL ~~ GFOFAIL 1.121 0.023 49.183 0.000 1.076 1.166

2.17 Model Sonuçlarının Rapor Edilmesi

library(knitr)
standardizedsolution(yol_fit) %>% 
  filter(op == "~") %>% 
  select('Bağımlı Değişkenler'=lhs, Gosterge=rhs,
         B=est.std, SE=se, Z=z, 'p-value'=pvalue) %>% 
  knitr::kable(digits = 3, booktabs=TRUE, format="markdown",
               caption="Factor Loadings")
Factor Loadings
Bağımlı Değişkenler Gosterge B SE Z p-value
JOYREAD ESCS 0.122 0.014 8.599 0.000
JOYREAD GFOFAIL 0.099 0.014 6.932 0.000
BELONG ESCS 0.132 0.015 8.926 0.000
BELONG GFOFAIL -0.231 0.014 -16.719 0.000
BELONG PVREAD_MEAN 0.027 0.015 1.779 0.075
BELONG JOYREAD -0.082 0.014 -5.858 0.000
PVREAD_MEAN ESCS 0.325 0.013 25.537 0.000
PVREAD_MEAN GFOFAIL 0.151 0.013 11.349 0.000
library(dplyr)
library(knitr)
library(kableExtra)
std_regression <- standardizedsolution(yol_fit) %>%
  filter(op == "~") %>%
  select(`Bağımlı Değişken` = lhs,
         Gösterge = rhs,
         `B (est.std)` = est.std,
         `SE` = se,
         `Z` = z,
         `p-değeri` = pvalue)

kable(std_regression,
      format = "html",
      caption = "Tablo X. Standartlaştırılmış Regresyon Katsayıları",
      align = "lcccc") %>%
  kable_styling(bootstrap_options = c("striped", "hover", "condensed"),
                full_width = FALSE, font_size = 14) %>%
  row_spec(0, bold = TRUE) %>%
  column_spec(1, bold = TRUE)
Tablo X. Standartlaştırılmış Regresyon Katsayıları
Bağımlı Değişken Gösterge B (est.std) SE Z p-değeri
JOYREAD ESCS 0.1219200 0.0141781 8.599197 0.0000000
JOYREAD GFOFAIL 0.0985347 0.0142146 6.931955 0.0000000
BELONG ESCS 0.1317914 0.0147642 8.926391 0.0000000
BELONG GFOFAIL -0.2314132 0.0138412 -16.719188 0.0000000
BELONG PVREAD_MEAN 0.0265569 0.0149308 1.778669 0.0752941
BELONG JOYREAD -0.0820061 0.0139995 -5.857788 0.0000000
PVREAD_MEAN ESCS 0.3250706 0.0127292 25.537354 0.0000000
PVREAD_MEAN GFOFAIL 0.1508888 0.0132953 11.349012 0.0000000
library(semoutput)
sem_anova(yol_fit_v4_rev, yol_fit_v1)
Model Comparison
term df AIC BIC statistic Chisq.diff RMSEA Df.diff p.value
1 1 105718.5 105776.9 18.818 18.818 0.061 1 0
2 0 112747.3 112844.5 0.000 NA NA NA NA

2.18 Model Karşılaştırmalarının Rapor Edilmesi

sem_modelcomp(yol_fit_v4_rev, yol_fit_v1)
Model Comparison
Model df AIC BIC BF P(Model|Data) χ2 Δχ2 Δdf p
yol_fit_v4_rev 105718.521 105776.879 Inf
18.818


yol_fit_v1 112747.285 112844.548 0.000 0.000  0.000 18.818 1.000 <0.001

2.19 Doğrudan, Dolaylı ve Toplam Etkiler

  • Toplam etki, bir değişken bir birim değiştiğinde diğer bir değişkenin ne kadar değişeceğini belirtir.

  • Toplam etkinin iki bileşeni olabilir: doğrudan etki ve bazı araya giren değişkenler üzerinden dolaylı etkiler

    • Bir değişkenin diğer bir değişken üzerindeki doğrudan etkisi yol modelindeki ağırlığıyla belirtilir.

    • *Dolaylı etkiler doğrudan etkilerin çarpımları olarak istatistiksel olarak kestirilir.

    • Doğrudan ve dolaylı etkiler ya standartlaştırılmamış ya da standartlaştırılmış çözümlerin sonuçlarına dayanarak hesaplanabilir.

  • Ancak, eğer değişkenlerin birbirlerine göre etkileri karşılaştırılacaksa standartlaştırılmış çözümler kullanılmalıdır.