# 1. KÜTÜPHANELER VE İKİ KATEGORİLİ VERİ SEÇİMİ
# ==========================================
library(mirt)
## Warning: package 'mirt' was built under R version 4.5.3
## Zorunlu paket yükleniyor: stats4
## Zorunlu paket yükleniyor: lattice
library(dplyr)
## Warning: package 'dplyr' was built under R version 4.5.3
##
## Attaching package: 'dplyr'
## The following objects are masked from 'package:stats':
##
## filter, lag
## The following objects are masked from 'package:base':
##
## intersect, setdiff, setequal, union
library(haven) # haven paketimizi ekledik
## Warning: package 'haven' was built under R version 4.5.3
load("C:/Users/User/OneDrive/Desktop/OLC_733/PISA_STU_2009.Rda")
veri_aktif <- PISA_STU_2009
# Veri temizleme ve etiket kaldırma adımı:
dikotom_14madde <- veri_aktif %>%
select(ST20Q01, ST20Q02, ST20Q03, ST20Q04, ST20Q05,
ST20Q06, ST20Q07, ST20Q08, ST20Q09, ST20Q10,
ST20Q11, ST20Q12, ST20Q13, ST20Q14) %>%
zap_labels() %>% # SPSS etiketlerini temizledik
mutate(across(everything(), ~as.numeric(as.character(.)))) %>%
mutate(across(everything(), ~ifelse(. == 1, 1, 0))) %>%
na.omit()
# Eksik olan satırları buraya bağladık:
set.seed(456)
dikotom_final_14 <- dikotom_14madde[sample(nrow(dikotom_14madde), 800), ]
#2. MODEL SEÇİMİ VE ANOVA (14 Madde Üzerinden)
# ==========================================
mod_1pl <- mirt(dikotom_final_14, 1, itemtype = 'Rasch')
mod_2pl <- mirt(dikotom_final_14, 1, itemtype = '2PL')
## Warning: EM cycles terminated after 500 iterations.
cat("--- İki Kategorili Modeller İçin Bağıl Uyum (ANOVA) ---\n")
## --- İki Kategorili Modeller İçin Bağıl Uyum (ANOVA) ---
anova_dikotom <- anova(mod_1pl, mod_2pl)
print(anova_dikotom)
## AIC SABIC HQ BIC logLik X2 df p
## mod_1pl 11107.18 11129.82 11134.18 11177.45 -5538.592
## mod_2pl 10905.26 10947.52 10955.65 11036.43 -5424.631 227.922 13 0
# ==========================================
# 3. VARSAYIMLARIN TEST EDİLMESİ (DÜZELTİLMİŞ)
# ==========================================
# ==========================================
# 3. VARSAYIMLARIN TEST EDİLMESİ (DÜZELTİLMİŞ)
# ==========================================
library(psych)
## Warning: package 'psych' was built under R version 4.5.2
library(lavaan) # lavaan kütüphanesini buraya ekliyoruz
## Warning: package 'lavaan' was built under R version 4.5.2
## This is lavaan 0.6-21
## lavaan is FREE software! Please report any bugs.
##
## Attaching package: 'lavaan'
## The following object is masked from 'package:psych':
##
## cor2cov
# 3.1. Tek Boyutluluk Varsayımı (AFA Yaklaşımı)
tetrachoric_matris <- tetrachoric(dikotom_final_14)
## Warning in cor.smooth(mat): Matrix was not positive definite, smoothing was
## done
ozdegerler <- eigen(tetrachoric_matris$rho)$values
cat("--- İlk 5 Özdeğer (Tek Boyutluluk İçin) ---\n")
## --- İlk 5 Özdeğer (Tek Boyutluluk İçin) ---
print(ozdegerler[1:5])
## [1] 6.1948913 1.7745211 1.2769023 0.9515556 0.7603307
# Çizgi Grafiği (Scree Plot):
plot(ozdegerler, type="b", main="Yamaç Grafiği (Scree Plot)",
xlab="Faktör Sayısı", ylab="Özdeğerler")

# 3.1.b. Tek Boyutluluk Varsayımı (DFA Yaklaşımı - GÜNCEL)
# --------------------------------------------------------
cat("\n--- İki Kategorili Veriler İçin Doğrulayıcı Faktör Analizi (WLSMV) ---\n")
##
## --- İki Kategorili Veriler İçin Doğrulayıcı Faktör Analizi (WLSMV) ---
dfa_modeli <- ' Refah =~ ST20Q01 + ST20Q02 + ST20Q03 + ST20Q04 + ST20Q05 +
ST20Q06 + ST20Q07 + ST20Q08 + ST20Q09 + ST20Q10 +
ST20Q11 + ST20Q12 + ST20Q13 + ST20Q14 '
# Veriler dikotom (0-1) olduğu için ordered = TRUE ve estimator = "WLSMV" kullanıyoruz:
dfa_sonuc <- cfa(dfa_modeli, data = dikotom_final_14, ordered = TRUE, estimator = "WLSMV")
## Warning: lavaan->lav_object_post_check():
## some estimated ov variances are negative
# Sadece ihtiyacımız olan uyum indekslerini (Fit Measures) ekrana basıyoruz:
print(fitMeasures(dfa_sonuc, c("cfi", "tli", "rmsea", "wrmr")))
## cfi tli rmsea wrmr
## 0.964 0.958 0.090 2.351
# 3.2. Yerel Bağımsızlık İçin Chen-Thissen LD İstatistikleri
# --------------------------------------------------------
ld_sonuclari <- residuals(mod_2pl, type = 'LD')
## LD matrix (lower triangle) and standardized residual correlations (upper triangle)
##
## Upper triangle summary:
## Min. 1st Qu. Median Mean 3rd Qu. Max.
## -0.120 -0.048 0.017 0.019 0.074 0.335
##
## ST20Q01 ST20Q02 ST20Q03 ST20Q04 ST20Q05 ST20Q06 ST20Q07 ST20Q08 ST20Q09
## ST20Q01 0.162 0.085 -0.048 0.020 -0.120 0.050 0.029 0.038
## ST20Q02 21.029 0.177 -0.056 -0.089 -0.075 0.015 0.014 0.045
## ST20Q03 5.732 25.155 -0.081 -0.043 -0.085 0.060 0.085 0.006
## ST20Q04 1.844 2.510 5.273 0.083 0.108 -0.069 -0.104 -0.062
## ST20Q05 0.322 6.329 1.496 5.555 -0.020 -0.049 0.010 -0.056
## ST20Q06 11.424 4.480 5.762 9.248 0.307 -0.116 -0.120 -0.074
## ST20Q07 1.973 0.184 2.876 3.762 1.918 10.831 0.335 0.120
## ST20Q08 0.689 0.157 5.747 8.640 0.078 11.442 90.044 0.150
## ST20Q09 1.172 1.604 0.031 3.054 2.475 4.390 11.569 18.066
## ST20Q10 6.939 2.857 1.709 5.043 0.005 9.127 19.351 8.852 4.229
## ST20Q11 5.108 2.159 1.599 10.839 0.155 10.469 23.580 21.987 21.637
## ST20Q12 2.618 2.152 8.318 0.960 4.111 2.036 4.198 2.037 4.107
## ST20Q13 0.053 7.017 0.261 0.768 1.116 0.090 0.797 0.176 1.811
## ST20Q14 0.013 0.381 0.242 1.676 3.699 0.571 0.614 2.166 4.417
## ST20Q10 ST20Q11 ST20Q12 ST20Q13 ST20Q14
## ST20Q01 0.093 0.080 0.057 0.008 -0.004
## ST20Q02 0.060 0.052 0.052 0.094 0.022
## ST20Q03 0.046 0.045 0.102 0.018 0.017
## ST20Q04 -0.079 -0.116 -0.035 -0.031 -0.046
## ST20Q05 -0.002 0.014 -0.072 -0.037 -0.068
## ST20Q06 -0.107 -0.114 -0.050 0.011 -0.027
## ST20Q07 0.156 0.172 0.072 -0.032 0.028
## ST20Q08 0.105 0.166 0.050 -0.015 0.052
## ST20Q09 0.073 0.164 -0.072 0.048 0.074
## ST20Q10 0.148 0.117 -0.041 0.026
## ST20Q11 17.566 -0.004 0.018 0.090
## ST20Q12 10.979 0.013 -0.049 -0.008
## ST20Q13 1.342 0.272 1.934 0.117
## ST20Q14 0.559 6.527 0.048 10.982
cat("\n--- Yerel Bagımsızlık (LD) Matris ozeti ---\n")
##
## --- Yerel Bagımsızlık (LD) Matris ozeti ---
print(ld_sonuclari[1:4, 1:4])
## ST20Q01 ST20Q02 ST20Q03 ST20Q04
## ST20Q01 NA 0.1621289 0.08464385 -0.04800716
## ST20Q02 21.028622 NA 0.17732386 -0.05601436
## ST20Q03 5.731665 25.1550001 NA -0.08118785
## ST20Q04 1.843750 2.5100870 5.27317387 NA
# 3. SEÇİLEN 4 MADDE İLE PARAMETRE VE GRAFİK RAPORLAMA
# ==========================================
# Yönerge gereği yine ilk 4 maddeye odaklanıyoruz (Bunlarda sorun yok)
dikotom_final_4 <- dikotom_final_14 %>% select(ST20Q01, ST20Q02, ST20Q03, ST20Q04)
# Model kurulumu ve grafikler aynı kalıyor...
mod_secilen_2pl <- mirt(dikotom_final_4, 1, itemtype = '2PL', SE = TRUE)
cat("\n--- İlk 4 Madde Parametreleri ve Standart Hataları ---\n")
##
## --- İlk 4 Madde Parametreleri ve Standart Hataları ---
param_2pl <- coef(mod_secilen_2pl, IRTpars = TRUE)
print(param_2pl[1:4])
## $ST20Q01
## a b g u
## par 2.757601 -1.299269 0 1
## CI_2.5 1.843037 -1.482127 NA NA
## CI_97.5 3.672165 -1.116410 NA NA
##
## $ST20Q02
## a b g u
## par 2.963922 -0.5861071 0 1
## CI_2.5 1.889170 -0.7053207 NA NA
## CI_97.5 4.038673 -0.4668935 NA NA
##
## $ST20Q03
## a b g u
## par 1.866876 -1.620766 0 1
## CI_2.5 1.350742 -1.885000 NA NA
## CI_97.5 2.383009 -1.356533 NA NA
##
## $ST20Q04
## a b g u
## par 1.524652 -0.4668806 0 1
## CI_2.5 1.143602 -0.6130042 NA NA
## CI_97.5 1.905703 -0.3207570 NA NA
# ==========================================
# 4. GRAFİKLER
# ==========================================
# Madde Karakteristik Eğrileri (İki kategorili olduğu için Trace Lines yerine ICC olur)
plot(mod_secilen_2pl, type = 'trace', which.items = 1:4,
main = "Madde Karakteristik Eğrileri (ICC) - Dikotom 4 Madde")

# Madde Bilgi Fonksiyonları (IIC)
plot(mod_secilen_2pl, type = 'infotrace', which.items = 1:4,
main = "Madde Bilgi Fonksiyonları (IIC)")

# Test Bilgi Fonksiyonu ve SE
plot(mod_secilen_2pl, type = 'infoSE',
main = "Test Bilgi Fonksiyonu ve Standart Hata Eğrisi")

# Test Karakteristik Eğrisi (TCC)
plot(mod_secilen_2pl, type = 'score',
main = "Test Karakteristik Eğrisi (TCC)")

library(lavaan)
dfa_modeli <- ' Refah =~ ST20Q01 + ST20Q02 + ST20Q03 + ST20Q04 + ST20Q05 + ST20Q06 + ST20Q07 + ST20Q08 + ST20Q09 + ST20Q10 + ST20Q11 + ST20Q12 + ST20Q13 + ST20Q14 '
dfa_sonuc <- cfa(dfa_modeli, data = dikotom_final_14, ordered = TRUE, estimator = "WLSMV")
## Warning: lavaan->lav_object_post_check():
## some estimated ov variances are negative
summary(dfa_sonuc, fit.measures = TRUE)
## lavaan 0.6-21 ended normally after 25 iterations
##
## Estimator DWLS
## Optimization method NLMINB
## Number of model parameters 28
##
## Number of observations 800
##
## Model Test User Model:
## Standard Scaled
## Test Statistic 580.479 658.839
## Degrees of freedom 77 77
## P-value (Unknown) NA 0.000
## Scaling correction factor 0.906
## Shift parameter 17.995
## simple second-order correction
##
## Model Test Baseline Model:
##
## Test statistic 14215.872 8986.085
## Degrees of freedom 91 91
## P-value NA 0.000
## Scaling correction factor 1.588
##
## User Model versus Baseline Model:
##
## Comparative Fit Index (CFI) 0.964 0.935
## Tucker-Lewis Index (TLI) 0.958 0.923
##
## Robust Comparative Fit Index (CFI) NA
## Robust Tucker-Lewis Index (TLI) NA
##
## Root Mean Square Error of Approximation:
##
## RMSEA 0.090 0.097
## 90 Percent confidence interval - lower 0.084 0.090
## 90 Percent confidence interval - upper 0.097 0.104
## P-value H_0: RMSEA <= 0.050 0.000 0.000
## P-value H_0: RMSEA >= 0.080 0.994 1.000
##
## Robust RMSEA NA
## 90 Percent confidence interval - lower NA
## 90 Percent confidence interval - upper NA
## P-value H_0: Robust RMSEA <= 0.050 NA
## P-value H_0: Robust RMSEA >= 0.080 NA
##
## Standardized Root Mean Square Residual:
##
## SRMR 0.131 0.131
##
## Parameter Estimates:
##
## Parameterization Delta
## Standard errors Robust.sem
## Information Expected
## Information saturated (h1) model Unstructured
##
## Latent Variables:
## Estimate Std.Err z-value P(>|z|)
## Refah =~
## ST20Q01 1.000
## ST20Q02 0.909 0.058 15.621 0.000
## ST20Q03 0.831 0.071 11.781 0.000
## ST20Q04 1.357 0.067 20.146 0.000
## ST20Q05 1.087 0.058 18.812 0.000
## ST20Q06 1.197 0.060 19.947 0.000
## ST20Q07 0.742 0.060 12.322 0.000
## ST20Q08 0.619 0.062 10.023 0.000
## ST20Q09 0.601 0.062 9.692 0.000
## ST20Q10 0.768 0.067 11.417 0.000
## ST20Q11 0.748 0.059 12.740 0.000
## ST20Q12 0.725 0.109 6.634 0.000
## ST20Q13 0.729 0.060 12.097 0.000
## ST20Q14 0.629 0.061 10.371 0.000
##
## Thresholds:
## Estimate Std.Err z-value P(>|z|)
## ST20Q01|t1 -1.092 0.055 -19.700 0.000
## ST20Q02|t1 -0.503 0.046 -10.830 0.000
## ST20Q03|t1 -1.181 0.058 -20.496 0.000
## ST20Q04|t1 -0.312 0.045 -6.914 0.000
## ST20Q05|t1 0.352 0.045 7.757 0.000
## ST20Q06|t1 -0.104 0.044 -2.332 0.020
## ST20Q07|t1 -0.517 0.047 -11.108 0.000
## ST20Q08|t1 -0.416 0.046 -9.088 0.000
## ST20Q09|t1 0.355 0.045 7.827 0.000
## ST20Q10|t1 -1.181 0.058 -20.496 0.000
## ST20Q11|t1 -0.260 0.045 -5.788 0.000
## ST20Q12|t1 -1.765 0.081 -21.713 0.000
## ST20Q13|t1 -0.205 0.045 -4.590 0.000
## ST20Q14|t1 -0.276 0.045 -6.140 0.000
##
## Variances:
## Estimate Std.Err z-value P(>|z|)
## .ST20Q01 0.435
## .ST20Q02 0.533
## .ST20Q03 0.609
## .ST20Q04 -0.041
## .ST20Q05 0.333
## .ST20Q06 0.189
## .ST20Q07 0.689
## .ST20Q08 0.783
## .ST20Q09 0.796
## .ST20Q10 0.667
## .ST20Q11 0.683
## .ST20Q12 0.703
## .ST20Q13 0.700
## .ST20Q14 0.776
## Refah 0.565 0.054 10.478 0.000
# ==============================================================================
# GÜNCELLENMİŞ 4.3: BİREYSEL YETENEK PARAMETRELERİ VE GÜVENİRLİK KODU
# ==============================================================================
# 1. Bireysel Yetenek Puanlarını (θ) Tahmin Etme (EAP Yöntemi)
yetenek_puanlari <- fscores(mod_secilen_2pl, method = "EAP", full.scores = TRUE)
ort_yetenek <- mean(yetenek_puanlari)
ss_yetenek <- sd(yetenek_puanlari)
# 2. Hataya Düşen Fonksiyon Yerine Doğrudan Ampirik Güvenirliği (EAP Reliability) Hesaplama
ampirik_guvenirlik <- fscores(mod_secilen_2pl, method = "EAP", returnER = TRUE)
# Sonuçları Konsola Yazdırma
cat("--- Bireysel Yetenek Dağılım İstatistikleri ---\n")
## --- Bireysel Yetenek Dağılım İstatistikleri ---
cat("Kestirilen EAP Yetenek Ortalama (X):", round(ort_yetenek, 4), "\n")
## Kestirilen EAP Yetenek Ortalama (X): 0
cat("Kestirilen EAP Standart Sapma (Y):", round(ss_yetenek, 4), "\n")
## Kestirilen EAP Standart Sapma (Y): 0.7737
cat("Ampirik Güvenirlik Katsayısı (EAP Reliability):", round(ampirik_guvenirlik, 4), "\n")
## Ampirik Güvenirlik Katsayısı (EAP Reliability): 0.5981