# 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