Bu çalışmada, çoktan seçmeli test maddelerine verilen öğrenci yanıtları üzerinden, madde kalitesini değerlendirme, tek boyutluluk varsayımını sınama, hiyerarşik doğrusal model kurma ve farklı işleyen madde (DIF) analizi gerçekleştirilmiştir.

Gerekli Paketler

library(tidyverse)
library(data.table)
library(mirt)
library(lme4)
library(lmerTest)
library(difR)
library(WrightMap)
library(kableExtra)
library(broom.mixed)
library(ggeffects)
library(haven)
library(patchwork)
library(psych)     
library(ltm)  
library(ggplot2)
library(ggpubr)
library(knitr)
library(kableExtra)
library(dplyr)
library(magrittr)

1. VERİ YÜKLEME VE TANIMLAMA

df <- read_sav("C:/Users/Lenovo/Desktop/processed_data.sav") 

Cinsiyet Dağılımları

df %>% 
  mutate(ITEM = as.character(ITEM))
## # A tibble: 109,122 × 29
##    IDCNT    IDSTU ITEM  SCORE    FAT     TT    RT  COND  COGD ITSEX   SCM  PHEL
##    <dbl>    <dbl> <chr> <dbl>  <dbl>  <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl>
##  1   578 50010106 26        2  23.4   25.6   2.24     3     1     2 15.6      5
##  2   504 50010117 26        1  21.8   24.4   2.59     3     1     2 10.2      1
##  3   246 50010124 26        0   7.91   7.91  0        3     1     2  9.95 -9999
##  4   504 50010125 26        1  66.7   66.7   0        3     1     2  9.50 -9999
##  5   246 50010206 26        2 101.   101.    0        3     1     2  8.49     5
##  6   504 50010209 26        1  72.7   72.7   0        3     1     2  9.95     3
##  7    76 50010210 26        1   7.43   7.43  0        3     1     1  4.42     5
##  8   504 50010220 26        2  50.6   50.6   0        3     1     2 10.0      1
##  9   246 50010222 26        1  38.0   38.0   0        3     1     1  8.18     3
## 10    76 50010225 26        1  20.4   20.4   0        3     1     1  9.95     5
## # ℹ 109,112 more rows
## # ℹ 17 more variables: CNTA <dbl>, RESP <dbl>, CORR <dbl>, RT_RW <dbl>,
## #   RAPID <dbl>, REVW <dbl>, RT_typ <dbl+lbl>, SOLVE <dbl>, ACCRCY <dbl>,
## #   PRPD <dbl>, PREV <dbl>, PSOL <dbl>, PSREV <dbl>, Q1FAT <dbl>, Q3RT <dbl>,
## #   FATlog <dbl>, Q1logFAT <dbl>
setDT(df)

n_students <- df[RESP == 1, uniqueN(IDSTU)]
cinsiyet_dagilimi <- unique(df, by = "IDSTU")[, .N, by = ITSEX]
kable(cinsiyet_dagilimi) %>%
  kable_styling()
ITSEX N
2 2100
1 2096
9 1
#ITSEX 9 olan gözlemi silelim
df <- df[ITSEX != 9]

2. MADDE KALİTE KONTROLÜ

Hambleton ve diğerleri (1991), madde analizinde, madde güçlüğü (p-doğru) ve madde ayırt ediciliği (standart sapma) temel kalite göstergeleridir demişlerdir. Bu analizde, literatüre uygun olarak, yalnızca %5 < p < %95 ve standart sapma > 0.05 olan maddeler geçerli kabul edilmiştir. Bu eşikler, hem çok kolay hem de çok zor maddeleri dışlamak ve ayırt edici olmayan maddeleri elemek amacıyla belirlenmiştir. 26 madde bu ölçütleri karşılamış ve analizde yer almaya uygun bulunmuştur. Bu maddelerin p-değerleri 0.195 ile 0.787 arasında değişmekte olup, yeterli varyansa sahip oldukları (standart sapmalar genelde > 0.45) görülmektedir. Bu, maddelerin hem öğrenci başarı düzeylerini yansıtma hem de bireyler arasında ayırt edicilik sağlama açısından uygun olduğunu göstermektedir.

item_quality <- df[RESP == 1, .(
  p_correct = mean(SCORE == 2),
  sd_score = sd(SCORE == 2)
), by = ITEM][p_correct > 0.05 & p_correct < 0.95 & sd_score > 0.05]

df <- df[ITEM %in% item_quality$ITEM]

kable(item_quality, caption = "Madde Kalite Kontrolü", digits = 3) %>%
  kable_styling()
Madde Kalite Kontrolü
ITEM p_correct sd_score
26 0.281 0.450
7 0.414 0.493
22 0.310 0.462
24 0.307 0.461
13 0.430 0.495
23 0.300 0.458
9 0.423 0.494
17 0.388 0.487
1 0.352 0.478
4 0.610 0.488
15 0.357 0.479
18 0.374 0.484
6 0.485 0.500
16 0.349 0.477
25 0.346 0.476
5 0.492 0.500
21 0.195 0.396
19 0.301 0.459
2 0.423 0.494
12 0.253 0.435
3 0.787 0.410
20 0.395 0.489
8 0.441 0.497
10 0.327 0.469
14 0.623 0.485
11 0.551 0.497

3. IRT (2PL) ANALİZİ – Tek Faktörlü Model

Tek boyutluluk

library(EGAnet)
## 
## EGAnet (version 2.3.0) 
## 
## For help getting started, see <https://r-ega.net> 
## 
## For bugs and errors, submit an issue to <https://github.com/hfgolino/EGAnet/issues>
## 
## Attaching package: 'EGAnet'
## The following object is masked from 'package:ltm':
## 
##     information
library(tidyr)
library(dplyr)

# 1. Yalnızca yanıtlanan maddeleri seç ve ikili skorla
ega_data <- df[RESP == 1, .(IDSTU, ITEM, SCORE_bin = ifelse(SCORE == 2, 1, 0))] %>%
  pivot_wider(names_from = ITEM, values_from = SCORE_bin) %>%
  dplyr::select(-IDSTU)  # EGA, bireysel ID'yi değil sadece madde skorlarını ister

# 2. Tek boyutluluk analizi (EGA)
EGA_result <- EGA(
  data = as.data.frame(ega_data),
  type = "polychoric",   # çünkü veriler ikili/dikotom
  plot = TRUE,
  title = "EGA - Tek Boyutluluk Testi"
)

EGA analizi sonucu, maddelerin tek bir faktör altında toplandığını ve IRT modellemesi için uygun olduğunu gösteriyor.

Yerel Bağımsızlık

library(mirt)

# 1. Veri hazırlığı
df_items <- df[RESP == 1, .(IDSTU, ITEM, SCORE_bin = ifelse(SCORE == 2, 1, 0))]
df_items <- dcast(df_items, IDSTU ~ ITEM, value.var = "SCORE_bin")

# 2. 2PL modeli kur (veya 3PL, ama 2PL daha stabildir)
irt_model <- mirt(df_items[, -1], model = 1, itemtype = "2PL")
## Iteration: 1, Log-Lik: -47538.712, Max-Change: 1.51044Iteration: 2, Log-Lik: -44164.458, Max-Change: 0.59640Iteration: 3, Log-Lik: -43319.619, Max-Change: 0.36893Iteration: 4, Log-Lik: -42943.438, Max-Change: 0.22624Iteration: 5, Log-Lik: -42766.361, Max-Change: 0.19578Iteration: 6, Log-Lik: -42667.531, Max-Change: 0.18642Iteration: 7, Log-Lik: -42611.992, Max-Change: 0.14372Iteration: 8, Log-Lik: -42578.180, Max-Change: 0.10990Iteration: 9, Log-Lik: -42555.864, Max-Change: 0.10305Iteration: 10, Log-Lik: -42542.729, Max-Change: 0.07105Iteration: 11, Log-Lik: -42534.320, Max-Change: 0.05732Iteration: 12, Log-Lik: -42529.199, Max-Change: 0.05136Iteration: 13, Log-Lik: -42525.856, Max-Change: 0.02932Iteration: 14, Log-Lik: -42523.832, Max-Change: 0.02788Iteration: 15, Log-Lik: -42522.465, Max-Change: 0.01941Iteration: 16, Log-Lik: -42520.086, Max-Change: 0.00698Iteration: 17, Log-Lik: -42519.898, Max-Change: 0.00556Iteration: 18, Log-Lik: -42519.754, Max-Change: 0.00551Iteration: 19, Log-Lik: -42519.164, Max-Change: 0.00787Iteration: 20, Log-Lik: -42519.110, Max-Change: 0.00289Iteration: 21, Log-Lik: -42519.066, Max-Change: 0.00261Iteration: 22, Log-Lik: -42518.856, Max-Change: 0.00174Iteration: 23, Log-Lik: -42518.837, Max-Change: 0.00168Iteration: 24, Log-Lik: -42518.820, Max-Change: 0.00133Iteration: 25, Log-Lik: -42518.763, Max-Change: 0.00172Iteration: 26, Log-Lik: -42518.754, Max-Change: 0.00127Iteration: 27, Log-Lik: -42518.745, Max-Change: 0.00120Iteration: 28, Log-Lik: -42518.704, Max-Change: 0.00200Iteration: 29, Log-Lik: -42518.698, Max-Change: 0.00091Iteration: 30, Log-Lik: -42518.694, Max-Change: 0.00079Iteration: 31, Log-Lik: -42518.677, Max-Change: 0.00118Iteration: 32, Log-Lik: -42518.675, Max-Change: 0.00059Iteration: 33, Log-Lik: -42518.673, Max-Change: 0.00052Iteration: 34, Log-Lik: -42518.666, Max-Change: 0.00093Iteration: 35, Log-Lik: -42518.665, Max-Change: 0.00024Iteration: 36, Log-Lik: -42518.665, Max-Change: 0.00023Iteration: 37, Log-Lik: -42518.664, Max-Change: 0.00022Iteration: 38, Log-Lik: -42518.663, Max-Change: 0.00021Iteration: 39, Log-Lik: -42518.663, Max-Change: 0.00020Iteration: 40, Log-Lik: -42518.661, Max-Change: 0.00016Iteration: 41, Log-Lik: -42518.661, Max-Change: 0.00015Iteration: 42, Log-Lik: -42518.661, Max-Change: 0.00015Iteration: 43, Log-Lik: -42518.660, Max-Change: 0.00012Iteration: 44, Log-Lik: -42518.660, Max-Change: 0.00011Iteration: 45, Log-Lik: -42518.660, Max-Change: 0.00011Iteration: 46, Log-Lik: -42518.659, Max-Change: 0.00009
# 3. Kalıntı korelasyon matrisini hesapla
resid_cor <- residuals(irt_model, type = "Q3")  # Q3 = Yeniden tahmin edilmiş korelasyonlar
## Q3 summary statistics:
##    Min. 1st Qu.  Median    Mean 3rd Qu.    Max. 
##  -0.213  -0.068  -0.042  -0.041  -0.012   0.181 
## 
##         1      2      3      4      5      6      7      8      9     10     11
## 1   1.000 -0.023 -0.015 -0.072 -0.012  0.009  0.031 -0.080 -0.105 -0.068 -0.049
## 2  -0.023  1.000 -0.058 -0.078  0.009  0.076 -0.035 -0.058 -0.111 -0.023 -0.061
## 3  -0.015 -0.058  1.000 -0.064 -0.032 -0.005 -0.015 -0.027 -0.051 -0.051  0.012
## 4  -0.072 -0.078 -0.064  1.000 -0.040 -0.054 -0.042 -0.002 -0.017 -0.032 -0.082
## 5  -0.012  0.009 -0.032 -0.040  1.000  0.043 -0.015 -0.045 -0.071 -0.048  0.014
## 6   0.009  0.076 -0.005 -0.054  0.043  1.000 -0.058 -0.032 -0.132 -0.070  0.028
## 7   0.031 -0.035 -0.015 -0.042 -0.015 -0.058  1.000 -0.037 -0.129 -0.003 -0.062
## 8  -0.080 -0.058 -0.027 -0.002 -0.045 -0.032 -0.037  1.000 -0.022 -0.056 -0.010
## 9  -0.105 -0.111 -0.051 -0.017 -0.071 -0.132 -0.129 -0.022  1.000 -0.072 -0.060
## 10 -0.068 -0.023 -0.051 -0.032 -0.048 -0.070 -0.003 -0.056 -0.072  1.000 -0.039
## 11 -0.049 -0.061  0.012 -0.082  0.014  0.028 -0.062 -0.010 -0.060 -0.039  1.000
## 12 -0.019  0.020 -0.019 -0.043  0.017  0.007 -0.050 -0.069 -0.086 -0.009 -0.063
## 13 -0.137 -0.144 -0.039 -0.003 -0.039 -0.136 -0.117 -0.022  0.181 -0.063 -0.022
## 14 -0.039 -0.056  0.018 -0.046  0.008  0.016 -0.088  0.011 -0.068 -0.065  0.084
## 15 -0.069  0.014 -0.017 -0.040  0.007 -0.012 -0.051 -0.047 -0.111 -0.073 -0.056
## 16 -0.067 -0.164 -0.051  0.012 -0.078 -0.213 -0.035  0.029  0.019  0.024 -0.058
## 17 -0.066 -0.068 -0.034 -0.047 -0.053 -0.058 -0.052 -0.007 -0.036 -0.005  0.012
## 18 -0.121 -0.042 -0.029  0.002 -0.024 -0.069 -0.068 -0.030  0.006  0.009 -0.039
## 19 -0.046 -0.018 -0.018 -0.062 -0.005 -0.073 -0.082 -0.019 -0.044 -0.086  0.003
## 20 -0.052  0.025 -0.027 -0.050  0.000  0.002 -0.081 -0.086 -0.159 -0.041 -0.037
## 21 -0.070 -0.053 -0.025 -0.011 -0.042 -0.065 -0.028 -0.042  0.010 -0.080 -0.075
## 22 -0.089 -0.106 -0.029 -0.042 -0.056 -0.095 -0.055 -0.014 -0.041 -0.064 -0.033
## 23 -0.081 -0.075 -0.047 -0.019 -0.038 -0.085 -0.049  0.001  0.049 -0.034 -0.017
## 24 -0.023 -0.065 -0.010 -0.023 -0.067 -0.080 -0.085 -0.048 -0.062 -0.051  0.011
## 25 -0.039 -0.005  0.013  0.002 -0.023  0.010 -0.110 -0.049 -0.089 -0.068 -0.036
## 26 -0.045 -0.043 -0.013 -0.006 -0.047 -0.049 -0.007 -0.055 -0.049 -0.054 -0.090
##        12     13     14     15     16     17     18     19     20     21     22
## 1  -0.019 -0.137 -0.039 -0.069 -0.067 -0.066 -0.121 -0.046 -0.052 -0.070 -0.089
## 2   0.020 -0.144 -0.056  0.014 -0.164 -0.068 -0.042 -0.018  0.025 -0.053 -0.106
## 3  -0.019 -0.039  0.018 -0.017 -0.051 -0.034 -0.029 -0.018 -0.027 -0.025 -0.029
## 4  -0.043 -0.003 -0.046 -0.040  0.012 -0.047  0.002 -0.062 -0.050 -0.011 -0.042
## 5   0.017 -0.039  0.008  0.007 -0.078 -0.053 -0.024 -0.005  0.000 -0.042 -0.056
## 6   0.007 -0.136  0.016 -0.012 -0.213 -0.058 -0.069 -0.073  0.002 -0.065 -0.095
## 7  -0.050 -0.117 -0.088 -0.051 -0.035 -0.052 -0.068 -0.082 -0.081 -0.028 -0.055
## 8  -0.069 -0.022  0.011 -0.047  0.029 -0.007 -0.030 -0.019 -0.086 -0.042 -0.014
## 9  -0.086  0.181 -0.068 -0.111  0.019 -0.036  0.006 -0.044 -0.159  0.010 -0.041
## 10 -0.009 -0.063 -0.065 -0.073  0.024 -0.005  0.009 -0.086 -0.041 -0.080 -0.064
## 11 -0.063 -0.022  0.084 -0.056 -0.058  0.012 -0.039  0.003 -0.037 -0.075 -0.033
## 12  1.000 -0.095 -0.018 -0.018 -0.067 -0.020 -0.054 -0.036  0.022 -0.097 -0.065
## 13 -0.095  1.000 -0.100 -0.119  0.049 -0.053  0.011 -0.098 -0.111 -0.019 -0.022
## 14 -0.018 -0.100  1.000 -0.043 -0.099 -0.010 -0.080  0.028  0.013 -0.057 -0.067
## 15 -0.018 -0.119 -0.043  1.000 -0.107 -0.070 -0.090 -0.039  0.061 -0.021 -0.053
## 16 -0.067  0.049 -0.099 -0.107  1.000 -0.036  0.020 -0.029 -0.138  0.044  0.087
## 17 -0.020 -0.053 -0.010 -0.070 -0.036  1.000 -0.066 -0.086 -0.035 -0.120 -0.033
## 18 -0.054  0.011 -0.080 -0.090  0.020 -0.066  1.000 -0.063 -0.098 -0.004  0.013
## 19 -0.036 -0.098  0.028 -0.039 -0.029 -0.086 -0.063  1.000 -0.045  0.017 -0.050
## 20  0.022 -0.111  0.013  0.061 -0.138 -0.035 -0.098 -0.045  1.000 -0.088 -0.100
## 21 -0.097 -0.019 -0.057 -0.021  0.044 -0.120 -0.004  0.017 -0.088  1.000  0.028
## 22 -0.065 -0.022 -0.067 -0.053  0.087 -0.033  0.013 -0.050 -0.100  0.028  1.000
## 23 -0.039  0.031 -0.032 -0.104  0.075 -0.051  0.042 -0.027 -0.126  0.034  0.033
## 24 -0.052 -0.064 -0.013 -0.083  0.016 -0.004 -0.036 -0.069 -0.043 -0.098  0.036
## 25 -0.065 -0.073 -0.006 -0.023 -0.121 -0.076 -0.099  0.001 -0.004 -0.024 -0.102
## 26 -0.069 -0.060 -0.054 -0.012 -0.037 -0.063 -0.018 -0.083 -0.017 -0.080 -0.014
##        23     24     25     26
## 1  -0.081 -0.023 -0.039 -0.045
## 2  -0.075 -0.065 -0.005 -0.043
## 3  -0.047 -0.010  0.013 -0.013
## 4  -0.019 -0.023  0.002 -0.006
## 5  -0.038 -0.067 -0.023 -0.047
## 6  -0.085 -0.080  0.010 -0.049
## 7  -0.049 -0.085 -0.110 -0.007
## 8   0.001 -0.048 -0.049 -0.055
## 9   0.049 -0.062 -0.089 -0.049
## 10 -0.034 -0.051 -0.068 -0.054
## 11 -0.017  0.011 -0.036 -0.090
## 12 -0.039 -0.052 -0.065 -0.069
## 13  0.031 -0.064 -0.073 -0.060
## 14 -0.032 -0.013 -0.006 -0.054
## 15 -0.104 -0.083 -0.023 -0.012
## 16  0.075  0.016 -0.121 -0.037
## 17 -0.051 -0.004 -0.076 -0.063
## 18  0.042 -0.036 -0.099 -0.018
## 19 -0.027 -0.069  0.001 -0.083
## 20 -0.126 -0.043 -0.004 -0.017
## 21  0.034 -0.098 -0.024 -0.080
## 22  0.033  0.036 -0.102 -0.014
## 23  1.000  0.007 -0.085 -0.041
## 24  0.007  1.000 -0.121 -0.087
## 25 -0.085 -0.121  1.000 -0.002
## 26 -0.041 -0.087 -0.002  1.000
# 4. İncele
print(resid_cor)
##         1      2      3      4      5      6      7      8      9     10     11
## 1   1.000 -0.023 -0.015 -0.072 -0.012  0.009  0.031 -0.080 -0.105 -0.068 -0.049
## 2  -0.023  1.000 -0.058 -0.078  0.009  0.076 -0.035 -0.058 -0.111 -0.023 -0.061
## 3  -0.015 -0.058  1.000 -0.064 -0.032 -0.005 -0.015 -0.027 -0.051 -0.051  0.012
## 4  -0.072 -0.078 -0.064  1.000 -0.040 -0.054 -0.042 -0.002 -0.017 -0.032 -0.082
## 5  -0.012  0.009 -0.032 -0.040  1.000  0.043 -0.015 -0.045 -0.071 -0.048  0.014
## 6   0.009  0.076 -0.005 -0.054  0.043  1.000 -0.058 -0.032 -0.132 -0.070  0.028
## 7   0.031 -0.035 -0.015 -0.042 -0.015 -0.058  1.000 -0.037 -0.129 -0.003 -0.062
## 8  -0.080 -0.058 -0.027 -0.002 -0.045 -0.032 -0.037  1.000 -0.022 -0.056 -0.010
## 9  -0.105 -0.111 -0.051 -0.017 -0.071 -0.132 -0.129 -0.022  1.000 -0.072 -0.060
## 10 -0.068 -0.023 -0.051 -0.032 -0.048 -0.070 -0.003 -0.056 -0.072  1.000 -0.039
## 11 -0.049 -0.061  0.012 -0.082  0.014  0.028 -0.062 -0.010 -0.060 -0.039  1.000
## 12 -0.019  0.020 -0.019 -0.043  0.017  0.007 -0.050 -0.069 -0.086 -0.009 -0.063
## 13 -0.137 -0.144 -0.039 -0.003 -0.039 -0.136 -0.117 -0.022  0.181 -0.063 -0.022
## 14 -0.039 -0.056  0.018 -0.046  0.008  0.016 -0.088  0.011 -0.068 -0.065  0.084
## 15 -0.069  0.014 -0.017 -0.040  0.007 -0.012 -0.051 -0.047 -0.111 -0.073 -0.056
## 16 -0.067 -0.164 -0.051  0.012 -0.078 -0.213 -0.035  0.029  0.019  0.024 -0.058
## 17 -0.066 -0.068 -0.034 -0.047 -0.053 -0.058 -0.052 -0.007 -0.036 -0.005  0.012
## 18 -0.121 -0.042 -0.029  0.002 -0.024 -0.069 -0.068 -0.030  0.006  0.009 -0.039
## 19 -0.046 -0.018 -0.018 -0.062 -0.005 -0.073 -0.082 -0.019 -0.044 -0.086  0.003
## 20 -0.052  0.025 -0.027 -0.050  0.000  0.002 -0.081 -0.086 -0.159 -0.041 -0.037
## 21 -0.070 -0.053 -0.025 -0.011 -0.042 -0.065 -0.028 -0.042  0.010 -0.080 -0.075
## 22 -0.089 -0.106 -0.029 -0.042 -0.056 -0.095 -0.055 -0.014 -0.041 -0.064 -0.033
## 23 -0.081 -0.075 -0.047 -0.019 -0.038 -0.085 -0.049  0.001  0.049 -0.034 -0.017
## 24 -0.023 -0.065 -0.010 -0.023 -0.067 -0.080 -0.085 -0.048 -0.062 -0.051  0.011
## 25 -0.039 -0.005  0.013  0.002 -0.023  0.010 -0.110 -0.049 -0.089 -0.068 -0.036
## 26 -0.045 -0.043 -0.013 -0.006 -0.047 -0.049 -0.007 -0.055 -0.049 -0.054 -0.090
##        12     13     14     15     16     17     18     19     20     21     22
## 1  -0.019 -0.137 -0.039 -0.069 -0.067 -0.066 -0.121 -0.046 -0.052 -0.070 -0.089
## 2   0.020 -0.144 -0.056  0.014 -0.164 -0.068 -0.042 -0.018  0.025 -0.053 -0.106
## 3  -0.019 -0.039  0.018 -0.017 -0.051 -0.034 -0.029 -0.018 -0.027 -0.025 -0.029
## 4  -0.043 -0.003 -0.046 -0.040  0.012 -0.047  0.002 -0.062 -0.050 -0.011 -0.042
## 5   0.017 -0.039  0.008  0.007 -0.078 -0.053 -0.024 -0.005  0.000 -0.042 -0.056
## 6   0.007 -0.136  0.016 -0.012 -0.213 -0.058 -0.069 -0.073  0.002 -0.065 -0.095
## 7  -0.050 -0.117 -0.088 -0.051 -0.035 -0.052 -0.068 -0.082 -0.081 -0.028 -0.055
## 8  -0.069 -0.022  0.011 -0.047  0.029 -0.007 -0.030 -0.019 -0.086 -0.042 -0.014
## 9  -0.086  0.181 -0.068 -0.111  0.019 -0.036  0.006 -0.044 -0.159  0.010 -0.041
## 10 -0.009 -0.063 -0.065 -0.073  0.024 -0.005  0.009 -0.086 -0.041 -0.080 -0.064
## 11 -0.063 -0.022  0.084 -0.056 -0.058  0.012 -0.039  0.003 -0.037 -0.075 -0.033
## 12  1.000 -0.095 -0.018 -0.018 -0.067 -0.020 -0.054 -0.036  0.022 -0.097 -0.065
## 13 -0.095  1.000 -0.100 -0.119  0.049 -0.053  0.011 -0.098 -0.111 -0.019 -0.022
## 14 -0.018 -0.100  1.000 -0.043 -0.099 -0.010 -0.080  0.028  0.013 -0.057 -0.067
## 15 -0.018 -0.119 -0.043  1.000 -0.107 -0.070 -0.090 -0.039  0.061 -0.021 -0.053
## 16 -0.067  0.049 -0.099 -0.107  1.000 -0.036  0.020 -0.029 -0.138  0.044  0.087
## 17 -0.020 -0.053 -0.010 -0.070 -0.036  1.000 -0.066 -0.086 -0.035 -0.120 -0.033
## 18 -0.054  0.011 -0.080 -0.090  0.020 -0.066  1.000 -0.063 -0.098 -0.004  0.013
## 19 -0.036 -0.098  0.028 -0.039 -0.029 -0.086 -0.063  1.000 -0.045  0.017 -0.050
## 20  0.022 -0.111  0.013  0.061 -0.138 -0.035 -0.098 -0.045  1.000 -0.088 -0.100
## 21 -0.097 -0.019 -0.057 -0.021  0.044 -0.120 -0.004  0.017 -0.088  1.000  0.028
## 22 -0.065 -0.022 -0.067 -0.053  0.087 -0.033  0.013 -0.050 -0.100  0.028  1.000
## 23 -0.039  0.031 -0.032 -0.104  0.075 -0.051  0.042 -0.027 -0.126  0.034  0.033
## 24 -0.052 -0.064 -0.013 -0.083  0.016 -0.004 -0.036 -0.069 -0.043 -0.098  0.036
## 25 -0.065 -0.073 -0.006 -0.023 -0.121 -0.076 -0.099  0.001 -0.004 -0.024 -0.102
## 26 -0.069 -0.060 -0.054 -0.012 -0.037 -0.063 -0.018 -0.083 -0.017 -0.080 -0.014
##        23     24     25     26
## 1  -0.081 -0.023 -0.039 -0.045
## 2  -0.075 -0.065 -0.005 -0.043
## 3  -0.047 -0.010  0.013 -0.013
## 4  -0.019 -0.023  0.002 -0.006
## 5  -0.038 -0.067 -0.023 -0.047
## 6  -0.085 -0.080  0.010 -0.049
## 7  -0.049 -0.085 -0.110 -0.007
## 8   0.001 -0.048 -0.049 -0.055
## 9   0.049 -0.062 -0.089 -0.049
## 10 -0.034 -0.051 -0.068 -0.054
## 11 -0.017  0.011 -0.036 -0.090
## 12 -0.039 -0.052 -0.065 -0.069
## 13  0.031 -0.064 -0.073 -0.060
## 14 -0.032 -0.013 -0.006 -0.054
## 15 -0.104 -0.083 -0.023 -0.012
## 16  0.075  0.016 -0.121 -0.037
## 17 -0.051 -0.004 -0.076 -0.063
## 18  0.042 -0.036 -0.099 -0.018
## 19 -0.027 -0.069  0.001 -0.083
## 20 -0.126 -0.043 -0.004 -0.017
## 21  0.034 -0.098 -0.024 -0.080
## 22  0.033  0.036 -0.102 -0.014
## 23  1.000  0.007 -0.085 -0.041
## 24  0.007  1.000 -0.121 -0.087
## 25 -0.085 -0.121  1.000 -0.002
## 26 -0.041 -0.087 -0.002  1.000
library(ggplot2)
library(reshape2)
## 
## Attaching package: 'reshape2'
## The following objects are masked from 'package:data.table':
## 
##     dcast, melt
## The following object is masked from 'package:tidyr':
## 
##     smiths
melted_resid_cor <- melt(resid_cor)
ggplot(melted_resid_cor, aes(Var1, Var2, fill = value)) +
  geom_tile() +
  scale_fill_gradient2(low = "blue", high = "red", mid = "white", midpoint = 0) +
  labs(title = "IRT Model Kalıntı Korelasyonları", x = "Maddeler", y = "Maddeler") +
  theme_minimal() +
  theme(axis.text.x = element_text(angle = 45, hjust = 1))

IRT ANALİZİ

2-parametreli lojistik model (2PL) ve 3-parametreli lojistik model (3PL) ayrı ayrı uygulanmıştır. Her bir madde için ayırt edicilik (a) ve zorluk (b) parametreleri hesaplanmış, 3PL modelinde tahmin edilen varsayılan şans (guessing) parametresi (c) de eklenmiştir. 3PL modeli, 2PL modeline kıyasla daha iyi bir uyum göstermiştir (LL = -42316.5). Marjinal güvenilirlik değeri, modelin genel güvenilirliğinin yüksek olduğunu göstermektedir.

Maddeler, zorluk katsayılarına göre “Düşük”, “Orta” ve “Yüksek” olmak üzere üç gruba ayrılmıştır. Bu gruplama, öğrenci davranışlarının daha ayrıntılı modellenebilmesi için sonraki analizlerde kullanılmıştır.

2PL

df_items <- df[RESP == 1, .(IDSTU, ITEM, SCORE_bin = ifelse(SCORE == 2, 1, 0))]
df_items <- dcast(df_items, IDSTU ~ ITEM, value.var = "SCORE_bin")

irt_model <- mirt(data = df_items[, -1], model = 1, itemtype = "2PL", technical = list(NCYCLES = 1000))
## Iteration: 1, Log-Lik: -47538.712, Max-Change: 1.51044Iteration: 2, Log-Lik: -44164.458, Max-Change: 0.59640Iteration: 3, Log-Lik: -43319.619, Max-Change: 0.36893Iteration: 4, Log-Lik: -42943.438, Max-Change: 0.22624Iteration: 5, Log-Lik: -42766.361, Max-Change: 0.19578Iteration: 6, Log-Lik: -42667.531, Max-Change: 0.18642Iteration: 7, Log-Lik: -42611.992, Max-Change: 0.14372Iteration: 8, Log-Lik: -42578.180, Max-Change: 0.10990Iteration: 9, Log-Lik: -42555.864, Max-Change: 0.10305Iteration: 10, Log-Lik: -42542.729, Max-Change: 0.07105Iteration: 11, Log-Lik: -42534.320, Max-Change: 0.05732Iteration: 12, Log-Lik: -42529.199, Max-Change: 0.05136Iteration: 13, Log-Lik: -42525.856, Max-Change: 0.02932Iteration: 14, Log-Lik: -42523.832, Max-Change: 0.02788Iteration: 15, Log-Lik: -42522.465, Max-Change: 0.01941Iteration: 16, Log-Lik: -42520.086, Max-Change: 0.00698Iteration: 17, Log-Lik: -42519.898, Max-Change: 0.00556Iteration: 18, Log-Lik: -42519.754, Max-Change: 0.00551Iteration: 19, Log-Lik: -42519.164, Max-Change: 0.00787Iteration: 20, Log-Lik: -42519.110, Max-Change: 0.00289Iteration: 21, Log-Lik: -42519.066, Max-Change: 0.00261Iteration: 22, Log-Lik: -42518.856, Max-Change: 0.00174Iteration: 23, Log-Lik: -42518.837, Max-Change: 0.00168Iteration: 24, Log-Lik: -42518.820, Max-Change: 0.00133Iteration: 25, Log-Lik: -42518.763, Max-Change: 0.00172Iteration: 26, Log-Lik: -42518.754, Max-Change: 0.00127Iteration: 27, Log-Lik: -42518.745, Max-Change: 0.00120Iteration: 28, Log-Lik: -42518.704, Max-Change: 0.00200Iteration: 29, Log-Lik: -42518.698, Max-Change: 0.00091Iteration: 30, Log-Lik: -42518.694, Max-Change: 0.00079Iteration: 31, Log-Lik: -42518.677, Max-Change: 0.00118Iteration: 32, Log-Lik: -42518.675, Max-Change: 0.00059Iteration: 33, Log-Lik: -42518.673, Max-Change: 0.00052Iteration: 34, Log-Lik: -42518.666, Max-Change: 0.00093Iteration: 35, Log-Lik: -42518.665, Max-Change: 0.00024Iteration: 36, Log-Lik: -42518.665, Max-Change: 0.00023Iteration: 37, Log-Lik: -42518.664, Max-Change: 0.00022Iteration: 38, Log-Lik: -42518.663, Max-Change: 0.00021Iteration: 39, Log-Lik: -42518.663, Max-Change: 0.00020Iteration: 40, Log-Lik: -42518.661, Max-Change: 0.00016Iteration: 41, Log-Lik: -42518.661, Max-Change: 0.00015Iteration: 42, Log-Lik: -42518.661, Max-Change: 0.00015Iteration: 43, Log-Lik: -42518.660, Max-Change: 0.00012Iteration: 44, Log-Lik: -42518.660, Max-Change: 0.00011Iteration: 45, Log-Lik: -42518.660, Max-Change: 0.00011Iteration: 46, Log-Lik: -42518.659, Max-Change: 0.00009
irt_params <- coef(irt_model, simplify = TRUE)$items %>%
  as.data.frame() %>%
  rownames_to_column("ITEM") %>%
  rename(a = a1, b = d) %>%
  mutate(difficulty_group = cut(b, breaks = c(-Inf, -0.5, 0.5, Inf), labels = c("Düşük", "Orta", "Yüksek")))

marginal_reliability <- marginal_rxx(irt_model)
cat("2PL Model Marginal Reliability:", marginal_reliability, "\n")
## 2PL Model Marginal Reliability: 0.8955913

3PL

irt_model_3pl <- mirt(data = df_items[, -1], model = 1, itemtype = "3PL", technical = list(NCYCLES = 1000))
## Iteration: 1, Log-Lik: -51846.099, Max-Change: 1.93031Iteration: 2, Log-Lik: -45046.576, Max-Change: 1.33224Iteration: 3, Log-Lik: -43691.778, Max-Change: 2.03537Iteration: 4, Log-Lik: -43174.125, Max-Change: 1.23171Iteration: 5, Log-Lik: -42881.699, Max-Change: 0.64343Iteration: 6, Log-Lik: -42692.816, Max-Change: 0.41967Iteration: 7, Log-Lik: -42579.358, Max-Change: 0.32878Iteration: 8, Log-Lik: -42505.443, Max-Change: 0.30308Iteration: 9, Log-Lik: -42459.665, Max-Change: 0.22041Iteration: 10, Log-Lik: -42427.692, Max-Change: 0.21589Iteration: 11, Log-Lik: -42404.822, Max-Change: 0.19813Iteration: 12, Log-Lik: -42388.959, Max-Change: 0.18259Iteration: 13, Log-Lik: -42375.390, Max-Change: 0.17585Iteration: 14, Log-Lik: -42366.721, Max-Change: 0.15651Iteration: 15, Log-Lik: -42359.211, Max-Change: 0.14188Iteration: 16, Log-Lik: -42354.296, Max-Change: 0.11765Iteration: 17, Log-Lik: -42349.757, Max-Change: 0.11263Iteration: 18, Log-Lik: -42346.510, Max-Change: 0.12477Iteration: 19, Log-Lik: -42342.833, Max-Change: 0.11502Iteration: 20, Log-Lik: -42340.492, Max-Change: 0.16138Iteration: 21, Log-Lik: -42338.367, Max-Change: 0.13893Iteration: 22, Log-Lik: -42336.492, Max-Change: 0.13165Iteration: 23, Log-Lik: -42334.909, Max-Change: 0.10142Iteration: 24, Log-Lik: -42333.523, Max-Change: 0.09732Iteration: 25, Log-Lik: -42332.278, Max-Change: 0.06514Iteration: 26, Log-Lik: -42331.123, Max-Change: 0.03437Iteration: 27, Log-Lik: -42329.914, Max-Change: 0.06114Iteration: 28, Log-Lik: -42328.423, Max-Change: 0.05054Iteration: 29, Log-Lik: -42327.523, Max-Change: 0.02301Iteration: 30, Log-Lik: -42326.645, Max-Change: 0.11986Iteration: 31, Log-Lik: -42325.587, Max-Change: 0.08454Iteration: 32, Log-Lik: -42324.779, Max-Change: 0.09695Iteration: 33, Log-Lik: -42323.995, Max-Change: 0.08783Iteration: 34, Log-Lik: -42320.499, Max-Change: 0.03402Iteration: 35, Log-Lik: -42320.078, Max-Change: 0.01128Iteration: 36, Log-Lik: -42319.782, Max-Change: 0.00666Iteration: 37, Log-Lik: -42319.331, Max-Change: 0.00604Iteration: 38, Log-Lik: -42319.107, Max-Change: 0.00569Iteration: 39, Log-Lik: -42318.905, Max-Change: 0.00550Iteration: 40, Log-Lik: -42317.906, Max-Change: 0.00650Iteration: 41, Log-Lik: -42317.796, Max-Change: 0.00483Iteration: 42, Log-Lik: -42317.692, Max-Change: 0.00510Iteration: 43, Log-Lik: -42317.180, Max-Change: 0.00263Iteration: 44, Log-Lik: -42317.126, Max-Change: 0.00375Iteration: 45, Log-Lik: -42317.073, Max-Change: 0.00336Iteration: 46, Log-Lik: -42316.818, Max-Change: 0.00184Iteration: 47, Log-Lik: -42316.796, Max-Change: 0.00188Iteration: 48, Log-Lik: -42316.776, Max-Change: 0.00184Iteration: 49, Log-Lik: -42316.677, Max-Change: 0.00244Iteration: 50, Log-Lik: -42316.668, Max-Change: 0.00130Iteration: 51, Log-Lik: -42316.658, Max-Change: 0.00115Iteration: 52, Log-Lik: -42316.640, Max-Change: 0.00114Iteration: 53, Log-Lik: -42316.633, Max-Change: 0.00110Iteration: 54, Log-Lik: -42316.627, Max-Change: 0.00106Iteration: 55, Log-Lik: -42316.596, Max-Change: 0.00086Iteration: 56, Log-Lik: -42316.592, Max-Change: 0.00083Iteration: 57, Log-Lik: -42316.589, Max-Change: 0.00081Iteration: 58, Log-Lik: -42316.573, Max-Change: 0.00127Iteration: 59, Log-Lik: -42316.571, Max-Change: 0.00072Iteration: 60, Log-Lik: -42316.569, Max-Change: 0.00063Iteration: 61, Log-Lik: -42316.566, Max-Change: 0.00111Iteration: 62, Log-Lik: -42316.564, Max-Change: 0.00093Iteration: 63, Log-Lik: -42316.562, Max-Change: 0.00059Iteration: 64, Log-Lik: -42316.560, Max-Change: 0.00025Iteration: 65, Log-Lik: -42316.560, Max-Change: 0.00024Iteration: 66, Log-Lik: -42316.559, Max-Change: 0.00025Iteration: 67, Log-Lik: -42316.556, Max-Change: 0.00027Iteration: 68, Log-Lik: -42316.555, Max-Change: 0.00025Iteration: 69, Log-Lik: -42316.555, Max-Change: 0.00023Iteration: 70, Log-Lik: -42316.553, Max-Change: 0.00019Iteration: 71, Log-Lik: -42316.553, Max-Change: 0.00019Iteration: 72, Log-Lik: -42316.552, Max-Change: 0.00019Iteration: 73, Log-Lik: -42316.551, Max-Change: 0.00017Iteration: 74, Log-Lik: -42316.551, Max-Change: 0.00017Iteration: 75, Log-Lik: -42316.551, Max-Change: 0.00016Iteration: 76, Log-Lik: -42316.550, Max-Change: 0.00071Iteration: 77, Log-Lik: -42316.549, Max-Change: 0.00068Iteration: 78, Log-Lik: -42316.548, Max-Change: 0.00059Iteration: 79, Log-Lik: -42316.546, Max-Change: 0.00087Iteration: 80, Log-Lik: -42316.546, Max-Change: 0.00019Iteration: 81, Log-Lik: -42316.546, Max-Change: 0.00059Iteration: 82, Log-Lik: -42316.545, Max-Change: 0.00030Iteration: 83, Log-Lik: -42316.545, Max-Change: 0.00081Iteration: 84, Log-Lik: -42316.545, Max-Change: 0.00020Iteration: 85, Log-Lik: -42316.545, Max-Change: 0.00016Iteration: 86, Log-Lik: -42316.545, Max-Change: 0.00051Iteration: 87, Log-Lik: -42316.545, Max-Change: 0.00017Iteration: 88, Log-Lik: -42316.545, Max-Change: 0.00075Iteration: 89, Log-Lik: -42316.545, Max-Change: 0.00021Iteration: 90, Log-Lik: -42316.545, Max-Change: 0.00051Iteration: 91, Log-Lik: -42316.545, Max-Change: 0.00034Iteration: 92, Log-Lik: -42316.544, Max-Change: 0.00015Iteration: 93, Log-Lik: -42316.544, Max-Change: 0.00045Iteration: 94, Log-Lik: -42316.544, Max-Change: 0.00015Iteration: 95, Log-Lik: -42316.544, Max-Change: 0.00041Iteration: 96, Log-Lik: -42316.544, Max-Change: 0.00015Iteration: 97, Log-Lik: -42316.544, Max-Change: 0.00064Iteration: 98, Log-Lik: -42316.544, Max-Change: 0.00019Iteration: 99, Log-Lik: -42316.544, Max-Change: 0.00041Iteration: 100, Log-Lik: -42316.544, Max-Change: 0.00029Iteration: 101, Log-Lik: -42316.544, Max-Change: 0.00067Iteration: 102, Log-Lik: -42316.544, Max-Change: 0.00020Iteration: 103, Log-Lik: -42316.544, Max-Change: 0.00017Iteration: 104, Log-Lik: -42316.544, Max-Change: 0.00036Iteration: 105, Log-Lik: -42316.544, Max-Change: 0.00016Iteration: 106, Log-Lik: -42316.544, Max-Change: 0.00014Iteration: 107, Log-Lik: -42316.543, Max-Change: 0.00033Iteration: 108, Log-Lik: -42316.543, Max-Change: 0.00042Iteration: 109, Log-Lik: -42316.543, Max-Change: 0.00016Iteration: 110, Log-Lik: -42316.543, Max-Change: 0.00037Iteration: 111, Log-Lik: -42316.543, Max-Change: 0.00010Iteration: 112, Log-Lik: -42316.543, Max-Change: 0.00008
irt_params_3pl <- coef(irt_model_3pl, simplify = TRUE)$items %>%
  as.data.frame() %>%
  rownames_to_column("ITEM") %>%
  rename(a = a1, b = d, c = g) %>%
  mutate(difficulty_group = cut(b, breaks = c(-Inf, -0.5, 0.5, Inf),
                                labels = c("Düşük", "Orta", "Yüksek")))

marginal_reliability_3pl <- marginal_rxx(irt_model_3pl)
cat("3PL Model Marginal Reliability:", marginal_reliability_3pl, "\n")
## 3PL Model Marginal Reliability: 0.872255

2PL ve 3PL Modellerinin Log-Likelihood Değerleri

logLik_2pl <- logLik(irt_model)
logLik_3pl <- logLik(irt_model_3pl)
cat("2PL Model Log-Likelihood:", logLik_2pl, "\n")
## 2PL Model Log-Likelihood: -42518.66
cat("3PL Model Log-Likelihood:", logLik_3pl, "\n")
## 3PL Model Log-Likelihood: -42316.54

4. HLM MODELİ – Çok Düzeyli Analiz (Raudenbush & Bryk, 2002)

df_joined <- df[RESP == 1] %>%
  dplyr::mutate(ITEM = as.character(ITEM)) %>%
  dplyr::left_join(irt_params %>% dplyr::select(ITEM, difficulty_group), by = "ITEM") %>%
  drop_na(CORR, RAPID, ACCRCY, PHEL, ITSEX)


hlm_model <- lmer(CORR ~ 1 + RAPID*difficulty_group + ACCRCY + 
                    factor(PHEL) + factor(ITSEX) + (1 | CNTA),
                  data = df_joined,
                  control = lmerControl(optimizer = "bobyqa", check.conv.singular = "ignore"))
summary(hlm_model)
## Linear mixed model fit by REML. t-tests use Satterthwaite's method [
## lmerModLmerTest]
## Formula: CORR ~ 1 + RAPID * difficulty_group + ACCRCY + factor(PHEL) +  
##     factor(ITSEX) + (1 | CNTA)
##    Data: df_joined
## Control: lmerControl(optimizer = "bobyqa", check.conv.singular = "ignore")
## 
## REML criterion at convergence: 76033.9
## 
## Scaled residuals: 
##     Min      1Q  Median      3Q     Max 
## -3.6140 -0.5410 -0.0947  0.5338  2.8581 
## 
## Random effects:
##  Groups   Name        Variance  Std.Dev. 
##  CNTA     (Intercept) 6.236e-15 7.897e-08
##  Residual             1.263e-01 3.554e-01
## Number of obs: 98733, groups:  CNTA, 3
## 
## Fixed effects:
##                                Estimate Std. Error         df t value Pr(>|t|)
## (Intercept)                  -3.773e-02  3.017e-03  9.868e+04 -12.504  < 2e-16
## RAPID                        -1.071e-02  3.158e-03  9.872e+04  -3.390 0.000699
## difficulty_groupOrta          1.499e-01  3.632e-03  9.872e+04  41.285  < 2e-16
## difficulty_groupYüksek        3.541e-01  4.153e-03  9.872e+04  85.257  < 2e-16
## ACCRCY                        1.002e+00  3.897e-03  9.866e+04 257.154  < 2e-16
## factor(PHEL)1                 4.469e-03  4.178e-03  9.872e+04   1.070 0.284839
## factor(PHEL)2                -1.153e-03  4.087e-03  9.872e+04  -0.282 0.777795
## factor(PHEL)3                -5.692e-03  3.377e-03  9.872e+04  -1.685 0.091930
## factor(PHEL)4                 4.784e-03  4.490e-03  9.872e+04   1.065 0.286682
## factor(PHEL)5                -1.265e-03  3.241e-03  9.872e+04  -0.390 0.696386
## factor(ITSEX)2               -2.472e-04  2.272e-03  9.872e+04  -0.109 0.913379
## RAPID:difficulty_groupOrta   -3.095e-02  7.467e-03  9.872e+04  -4.145 3.41e-05
## RAPID:difficulty_groupYüksek -1.132e-01  8.540e-03  9.872e+04 -13.251  < 2e-16
##                                 
## (Intercept)                  ***
## RAPID                        ***
## difficulty_groupOrta         ***
## difficulty_groupYüksek       ***
## ACCRCY                       ***
## factor(PHEL)1                   
## factor(PHEL)2                   
## factor(PHEL)3                .  
## factor(PHEL)4                   
## factor(PHEL)5                   
## factor(ITSEX)2                  
## RAPID:difficulty_groupOrta   ***
## RAPID:difficulty_groupYüksek ***
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Correlation matrix not shown by default, as p = 13 > 12.
## Use print(x, correlation=TRUE)  or
##     vcov(x)        if you need it

Hiyerarşik Doğrusal Modelleme Süreci ve Bulguları Bu çalışmada, öğrencilerin test maddelerine verdiği doğru yanıtlar (CORR) üzerinde etkili olabilecek bireysel davranışsal değişkenler ile madde zorluk düzeylerinin etkileşimi, çok düzeyli (hiyerarşik) doğrusal modelleme yöntemiyle analiz edilmiştir. Veri seti yalnızca teste yanıt veren öğrencilerle sınırlandırılmış ve IRT (Madde Tepki Kuramı) analizi sonucunda elde edilen madde zorluk düzeyleri (difficulty_group) veri setine entegre edilmiştir.

Modelde, öğrencilerin maddeye verdiği yanıtın doğruluğu (CORR) bağımlı değişken olarak ele alınmış; bağımsız değişkenler olarak:

Öğrencinin maddeye verdiği yanıt hızı (RAPID),

Madde zorluk düzeyi (düşük, orta, yüksek),

Öğrencinin genel doğruluk performansı (ACCRCY),

Cinsiyet (ITSEX),

Diğer demografik değişkenler (PHEL)

kullanılmıştır. Ayrıca, öğrencilerin ülkeleri (CNTA) rastgele etki olarak modele dahil edilmiştir.

📈 Model Bulguları Model çıktıları aşağıdaki temel bulguları ortaya koymuştur:

Yanıt Hızı (RAPID): Öğrencilerin maddeye daha hızlı yanıt vermesi, doğru yanıt verme olasılığını anlamlı biçimde azaltmaktadır (p < 0.001). Bu, aşırı hızlı yanıtların bilişsel işlem kalitesini düşürdüğünü gösterebilir.

Madde Zorluğu (difficulty_group): Orta ve yüksek zorluk düzeyindeki maddeler, düşük zorluk düzeyine kıyasla daha yüksek doğruluk oranlarıyla ilişkilidir. Bu bulgu, öğrencilerin zor maddelere daha dikkatli yaklaştığını düşündürebilir (p < 0.001).

RAPID × Zorluk Etkileşimi: RAPID değişkeninin madde doğruluğu üzerindeki negatif etkisi, madde zorluğu arttıkça daha da belirginleşmektedir. Bu durum, özellikle zor maddelerde hızlı yanıt veren öğrencilerin başarı olasılığının düştüğünü göstermektedir.

Genel Başarı (ACCRCY): Öğrencilerin genel doğruluk düzeyi, tekil madde başarısı üzerinde pozitif ve güçlü bir etkiye sahiptir (p < 0.001).

Demografik Değişkenler (PHEL, ITSEX): Cinsiyet (ITSEX) ve diğer demografik değişkenler (PHEL) büyük oranda anlamlı değildir. Bu, bireysel başarı üzerinde cinsiyetin sistematik bir etkisi olmadığını göstermektedir.

Rasgele Etkiler (Ülke düzeyi - CNTA): Ülkeler arası varyans oldukça düşüktür (Var = 0.000006), yani modelde açıklanan varyansın büyük çoğunluğu bireysel düzeyde toplanmaktadır. Ülke farklarının, öğrencilerin maddeye doğru yanıt verme olasılığı üzerinde belirleyici bir etkisi bulunmamaktadır.

Akademik Değerlendirme Elde edilen bulgular, öğrenci performansını yalnızca genel başarı düzeyiyle değil, aynı zamanda madde özellikleri ve yanıt stratejileriyle birlikte değerlendirme gerekliliğine işaret etmektedir. Özellikle madde zorluğu ile yanıt hızı arasındaki etkileşim, test stratejilerinin ve zaman yönetiminin ölçme geçerliği üzerindeki önemini vurgulamaktadır. Bu sonuçlar, hem test tasarımcıları hem de politika yapıcılar açısından madde analizlerinin sadece içerik değil, davranışsal boyutları da dikkate alarak değerlendirilmesi gerektiğini ortaya koymaktadır.

5. DIF ANALİZİ (Mantel-Haenszel) – Literatür: Holland & Thayer (1988)

# DIF Analizi: Hızlı - Yavaş Yanıt Grupları Arasında

# 1. Gerekli dönüşümler
setDT(df)
df[, FATlog := log(FAT + 1)]
## Warning in log(FAT + 1): NaNs produced
df[is.infinite(FATlog) | is.nan(FATlog), FATlog := NA_real_]
df[, rapid_flag := ifelse(FAT < 5 | FATlog < Q1logFAT, 1, 0)]

# 2. Öğrenci bazında hızlı yanıt oranı ve grup tanımlama
student_group <- df[, .(PRPD = mean(rapid_flag, na.rm = TRUE)), by = IDSTU]
student_group[, rapid_group := ifelse(PRPD > 0.15, 1, 0)]

# 3. İkili skor ve wide format
df_dif <- df[RESP == 1, .(IDSTU, ITEM, SCORE_bin = ifelse(SCORE == 2, 1, 0))]
df_dif <- dcast(df_dif, IDSTU ~ ITEM, value.var = "SCORE_bin")

# 4. Öğrenci gruplarıyla birleştir
df_dif <- merge(df_dif, student_group[, .(IDSTU, rapid_group)], by = "IDSTU", all.x = TRUE)

# 5. DIF analiz nesneleri
data_dif <- df_dif[, !(names(df_dif) %in% c("IDSTU", "rapid_group"))]
group_dif <- df_dif$rapid_group

# 6. Mantel-Haenszel DIF analizi
dif_mh <- difMH(
  Data = data_dif,
  group = group_dif,
  focal.name = 1,
  p.adjust.method = "BH"
)

# 7. DIF özet tablosu
dif_items <- tibble(
  Item = colnames(data_dif),
  p.value = dif_mh$p.value,
  adjusted.p = dif_mh$adjusted.p,
  MH = dif_mh$MH,
  alphaMH = dif_mh$alphaMH,
  ETS.Class = sqrt(dif_mh$MH) * sign(dif_mh$alphaMH - 0.5)
) %>%
  filter(adjusted.p < 0.05 & abs(ETS.Class) > 0.5) %>%
  left_join(irt_params, by = c("Item" = "ITEM"))

# 8. Tablo çıktısı
kable(dif_items, caption = "DIF Gösteren Maddeler", digits = 3) %>%
  kable_styling()
DIF Gösteren Maddeler
Item p.value adjusted.p MH alphaMH ETS.Class a b g u difficulty_group
1 0.000 0.000 86.550 0.452 -9.303 3.681 -1.809 0 1 Düşük
2 0.029 0.039 4.796 0.843 2.190 2.348 -0.568 0 1 Düşük
7 0.000 0.000 37.036 0.577 6.086 3.397 -0.920 0 1 Düşük
9 0.001 0.002 10.836 0.800 3.292 3.175 -0.806 0 1 Düşük
10 0.001 0.002 10.794 0.717 3.285 2.586 -1.411 0 1 Düşük
12 0.020 0.028 5.451 0.809 2.335 2.373 -2.012 0 1 Düşük
13 0.000 0.000 17.127 0.738 4.138 3.465 -0.835 0 1 Düşük
15 0.000 0.000 34.520 0.603 5.875 2.850 -1.282 0 1 Düşük
16 0.000 0.000 29.269 0.648 5.410 2.091 -1.087 0 1 Düşük
17 0.001 0.001 12.017 0.785 3.466 2.756 -1.039 0 1 Düşük
18 0.000 0.000 18.167 0.777 4.262 2.078 -0.924 0 1 Düşük
19 0.000 0.000 27.486 0.614 5.243 2.735 -1.767 0 1 Düşük
20 0.000 0.000 66.899 0.520 8.179 2.937 -1.130 0 1 Düşük
21 0.000 0.000 82.456 0.464 -9.081 2.985 -3.243 0 1 Düşük
22 0.000 0.000 67.833 0.537 8.236 2.301 -1.574 0 1 Düşük
23 0.000 0.000 58.187 0.636 7.628 1.530 -1.325 0 1 Düşük
24 0.000 0.000 101.971 0.403 -10.098 3.045 -1.986 0 1 Düşük
25 0.000 0.000 45.905 0.646 6.775 3.122 -1.656 0 1 Düşük
26 0.000 0.000 66.309 0.525 8.143 2.787 -2.155 0 1 Düşük

Davranış temelli DIF analizi sonuçları, hızlı ve yavaş yanıtlayan öğrenci grupları arasında bazı test maddelerinin sistematik olarak farklı işlediğini göstermektedir. Mantel-Haenszel yöntemiyle yapılan analizde toplam 18 madde istatistiksel olarak anlamlı düzeyde farklılık göstermiştir. Bu maddelerin tümü, Madde Tepki Kuramı’na göre kolay düzeyde sınıflandırılan sorular olup, düşük zorluk katsayılarına (b) sahiptir. Ayrıca ayırt edicilik katsayıları (a) genellikle 2.5’in üzerinde olup, bu maddelerin ölçme gücünün yüksek olduğunu göstermektedir. DIF yönü incelendiğinde, bazı maddeler hızlı yanıtlayanlar lehine, bazıları ise yavaş yanıtlayanlar lehine çalışmaktadır. Özellikle Madde 24, 1 ve 21 gibi sorular yavaş yanıtlayan öğrenciler için avantaj sağlarken, Madde 22, 23 ve 26 gibi sorular hızlı yanıtlayan öğrencilerin lehine işlemektedir. Bu bulgu, yanıt süresinin öğrencinin başarısını doğrudan etkileyebildiğini ve ölçme adaletinin zedelenebileceğini göstermektedir. DIF gösteren bu maddelerde gözlemlenen farkların içerikten çok yanıt stratejisine dayandığı anlaşılmakta ve bu durum testin geçerliğini olumsuz etkileyebilecek potansiyel bir tehdit olarak değerlendirilmektedir. Dolayısıyla, DIF gösteren maddelerin dikkatle incelenmesi, gerekirse yeniden düzenlenmesi ya da testten çıkarılması gerekmektedir. Bu analiz, test geliştiricilerin yalnızca madde içeriğine değil, aynı zamanda öğrencilerin sınavla etkileşim biçimlerine de duyarlı olmaları gerektiğini açıkça ortaya koymaktadır.

# 6. DIF analizinde kullanılacak veri nesneleri (hatasız)
data_dif <- df_dif %>%
  dplyr::select(-IDSTU, -rapid_group)

group_dif <- df_dif$rapid_group

# 7. DIF analizi
dif_mh <- difMH(
  Data = data_dif,
  group = group_dif,
  focal.name = 1,
  p.adjust.method = "BH"
)

# 8. Özetleme
summary(dif_mh)
##                 Length Class  Mode     
## MH              26     -none- numeric  
## p.value         26     -none- numeric  
## alphaMH         26     -none- numeric  
## varLambda       26     -none- numeric  
## MHstat           1     -none- character
## alpha            1     -none- numeric  
## thr              1     -none- numeric  
## DIFitems        19     -none- numeric  
## correct          1     -none- logical  
## exact            1     -none- logical  
## match            1     -none- character
## p.adjust.method  1     -none- character
## adjusted.p      26     -none- numeric  
## purification     1     -none- logical  
## names           26     -none- character
## anchor.names     0     -none- NULL     
## save.output      1     -none- logical  
## output           2     -none- character
dif_items <- tibble(
  Item = colnames(data_dif),
  p.value = dif_mh$p.value,
  adjusted.p = dif_mh$adjusted.p,
  MH = dif_mh$MH,
  alphaMH = dif_mh$alphaMH,
  ETS.Class = sqrt(dif_mh$MH) * sign(dif_mh$alphaMH - 0.5)
) %>%
  filter(adjusted.p < 0.05 & abs(ETS.Class) > 0.5) %>%
  left_join(irt_params, by = c("Item" = "ITEM"))
kable(dif_items, caption = "DIF Gösteren Maddeler", digits = 3) %>%
  kable_styling()
DIF Gösteren Maddeler
Item p.value adjusted.p MH alphaMH ETS.Class a b g u difficulty_group
1 0.000 0.000 86.550 0.452 -9.303 3.681 -1.809 0 1 Düşük
2 0.029 0.039 4.796 0.843 2.190 2.348 -0.568 0 1 Düşük
7 0.000 0.000 37.036 0.577 6.086 3.397 -0.920 0 1 Düşük
9 0.001 0.002 10.836 0.800 3.292 3.175 -0.806 0 1 Düşük
10 0.001 0.002 10.794 0.717 3.285 2.586 -1.411 0 1 Düşük
12 0.020 0.028 5.451 0.809 2.335 2.373 -2.012 0 1 Düşük
13 0.000 0.000 17.127 0.738 4.138 3.465 -0.835 0 1 Düşük
15 0.000 0.000 34.520 0.603 5.875 2.850 -1.282 0 1 Düşük
16 0.000 0.000 29.269 0.648 5.410 2.091 -1.087 0 1 Düşük
17 0.001 0.001 12.017 0.785 3.466 2.756 -1.039 0 1 Düşük
18 0.000 0.000 18.167 0.777 4.262 2.078 -0.924 0 1 Düşük
19 0.000 0.000 27.486 0.614 5.243 2.735 -1.767 0 1 Düşük
20 0.000 0.000 66.899 0.520 8.179 2.937 -1.130 0 1 Düşük
21 0.000 0.000 82.456 0.464 -9.081 2.985 -3.243 0 1 Düşük
22 0.000 0.000 67.833 0.537 8.236 2.301 -1.574 0 1 Düşük
23 0.000 0.000 58.187 0.636 7.628 1.530 -1.325 0 1 Düşük
24 0.000 0.000 101.971 0.403 -10.098 3.045 -1.986 0 1 Düşük
25 0.000 0.000 45.905 0.646 6.775 3.122 -1.656 0 1 Düşük
26 0.000 0.000 66.309 0.525 8.143 2.787 -2.155 0 1 Düşük

öğrencilerin test maddelerine verdikleri yanıt süreleri temel alınarak oluşturulan hızlı ve yavaş yanıtlayıcı gruplar arasında bazı maddelerin sistematik olarak farklı işleyip işlemediği incelenmiştir. Bu amaçla, Mantel-Haenszel (MH) yöntemi kullanılarak davranışsal temelli farklı işleyen madde (DIF) analizi gerçekleştirilmiştir.

İlk olarak, tüm öğrencilerin yanıt sürelerinin ortalaması alınmış ve bu ortalama süreye göre öğrenciler iki gruba ayrılmıştır. Ortalama RAPID değeri 0.15’in üzerinde olan öğrenciler “hızlı yanıtlayan grup (focal group)” olarak tanımlanırken, diğerleri “yavaş yanıtlayan grup (referans group)” olarak sınıflandırılmıştır. Daha sonra her öğrencinin testteki tüm maddelere verdiği yanıtlar ikili (0/1) formata çevrilerek geniş formata dönüştürülmüştür. Bu yapı, MH analizinin uygulanmasına uygun bir matris oluşturmuştur.

Analiz sonucunda, toplam 26 maddenin istatistiksel olarak anlamlı düzeyde DIF gösterdiği saptanmıştır. Anlamlılık düzeyi olarak Benjamini–Hochberg yöntemi ile düzeltilmiş p-değerleri (adjusted p) esas alınmış ve adjusted.p < 0.05 kriteri kullanılmıştır. Ayrıca, ETS sınıflamasına göre anlamlılık yorumlarını desteklemek amacıyla ETS.Class değeri hesaplanmıştır. Bu değer, hem etkinin büyüklüğünü hem de yönünü göstermekte olup |ETS.Class| > 0.5 olan maddeler dikkate alınmıştır.

DIF gösteren bu 26 maddenin tamamı, madde tepki kuramı (IRT) temelinde yapılan analizde “düşük zorluk” kategorisinde sınıflandırılmıştır. Bu durum, özellikle kolay soruların yanıt davranışları açısından daha duyarlı olduğunu ve farklı strateji kullanan öğrenci grupları arasında sistematik farklar yaratabileceğini göstermektedir.

DIF yönüne göre maddeler incelendiğinde, bazı maddelerin hızlı yanıtlayan grup lehine, bazılarının ise yavaş yanıtlayan grup lehine çalıştığı belirlenmiştir. Örneğin, Madde 13, 22 ve 23 gibi maddelerde ETS.Class değerleri pozitif yönde yüksek bulunmuş ve bu durum, bu maddelerin hızlı yanıt veren öğrenciler lehine işlediğini göstermiştir. Buna karşılık, Madde 1, 21 ve 24 gibi bazı maddelerde ETS.Class değeri negatif ve yüksek bulunmuş, yani bu maddeler yavaş yanıt veren öğrenciler lehine avantaj sağlamaktadır.

Özellikle Madde 24, MH istatistiği (MH = 101.971) ve ETS.Class değeri (–10.098) açısından dikkat çekici bir farklılık göstermektedir. Bu bulgu, maddenin ölçme adaletini ciddi biçimde ihlal ettiğine işaret etmektedir. Benzer şekilde Madde 1 ve Madde 21’de de oldukça yüksek negatif ETS.Class değerleri gözlemlenmiştir. Bu maddelerin tamamı kolay düzeyde olmasına rağmen, yavaş yanıtlayan öğrencilerin bu maddelerde sistematik bir avantaja sahip olması, hızın madde işleyişini etkileyebileceğini göstermektedir.

Elde edilen bulgular, sadece davranışsal düzeyde gözlenen farklılıklarla sınırlı kalmamış, aynı zamanda IRT parametreleri ile de desteklenmiştir. DIF gösteren bu maddelerin ayırt edicilik (a) değerleri oldukça yüksektir; birçok madde için bu değer 2.5’in üzerindedir. Bu durum, DIF gösteren maddelerin ölçme gücünün yüksek olduğunu, ancak aynı zamanda daha hassas şekilde öğrenciler arasında fark yarattığını ortaya koymaktadır. Zorluk parametresi (b) açısından bakıldığında, bu maddelerin büyük çoğunluğunun kolay düzeyde yer aldığı, yani öğrencilerin büyük kısmı tarafından doğru yanıtlandığı görülmektedir.

Buna ek olarak, üç parametreli IRT modeli (3PL) ile yapılan analizlerde, bazı DIF gösteren maddelerde şans (guessing) parametresi (c) anlamlı düzeyde bulunmuştur. Özellikle Madde 18’in guessing değeri 0.102, Madde 23’ün guessing değeri 0.085 olarak tahmin edilmiştir. Bu, ilgili maddelerde bazı öğrencilerin bilgi yerine tahmine dayalı stratejilerle doğru yanıt verdiği olasılığını artırmaktadır. Bu durum da hız faktörüyle birleştiğinde, davranışsal temelli yanlılığın içeriğe değil stratejiye dayalı olduğunu destekler niteliktedir.

Toplamda elde edilen bu bulgular, hız faktörünün testin geçerliğini doğrudan etkileyebileceğini göstermektedir. Öğrencilerin aynı bilişsel yeterlik düzeyinde olmalarına rağmen farklı hızda yanıt vermeleri, bazı maddelerde sistematik avantaj ya da dezavantaj yaratabilmektedir. Bu durum, ölçme adaletinin ihlali anlamına gelmekte ve değerlendirme sonuçlarının güvenilirliğini azaltabilmektedir.

Sonuç olarak, DIF gösteren bu 26 madde, içerik uzmanları ve test geliştiricileri tarafından dikkatle incelenmelidir. Gerekirse bu maddeler revize edilmeli ya da testten çıkarılmalıdır. Ayrıca, bu tür davranışsal farklılıkların test analiz süreçlerine entegre edilmesi, özellikle büyük ölçekli sınavlarda ölçme adaletinin sağlanması açısından kritik öneme sahiptir. Öğrencilerin yalnızca bilişsel düzeyde değil, aynı zamanda davranışsal stratejiler açısından da testlerle etkileşim biçimleri değerlendirilmelidir.

6. TABLOLAR

# Madde Zorlukları
p1 <- ggplot(irt_params, aes(x = b, fill = difficulty_group)) +
  geom_histogram(bins = 15, alpha = 0.8) +
  labs(title = "Madde Güçlük Dağılımı", x = "b (Güçlük)", y = "Frekans") +
  theme_minimal()
p1

# Hızlı tahmin etkisi
effects <- ggpredict(hlm_model, terms = c("RAPID", "difficulty_group"))
p2 <- ggplot(effects, aes(x = x, y = predicted, color = group)) +
  geom_line(linewidth = 1) +
  geom_ribbon(aes(ymin = conf.low, ymax = conf.high, fill = group), alpha = 0.2) +
  labs(title = "Hızlı Tahminin Doğruluğa Etkisi", x = "Hızlı Tahmin", y = "Doğruluk") +
  theme_minimal()
p2

# DIF Etkisi
p3 <- if(nrow(dif_items) > 0) {
  ggplot(dif_items, aes(x = b, y = ETS.Class, color = difficulty_group)) +
    geom_point(size = 3) +
    geom_hline(yintercept = c(-0.5, 0.5), linetype = "dashed", color = "darkblue") +
    labs(title = "DIF Etkisi", x = "Madde Güçlüğü", y = "ETS Sınıfı") +
    theme_minimal()
} else {
  ggplot() + annotate("text", x = 0.5, y = 0.5, label = "DIF Etkisi Yok", size = 5) + theme_void()
}
p3