REGRESYON ANALİZİ- TIMSS VERİLERİ

Verilerin Birleştirilmesi ve Düzenlenmesi

Bu çalışmada veri kaynağı olarak TIMSS 2019 sekizinci sınıf öğrenci verisini kullanıyorum. IEA’nın TIMSS 2019 uluslararası veri tabanından, ülke bazında öğrenci dosyalarını SPSS formatında indirip Türkiye ve Japonya’ya ait sekizinci sınıf öğrencilerinin dosyalarını bilgisayarıma kaydettim. TIMSS sitesinde sadece SPSS ve SAS türünde dosyalar bulunuyor, R’da read_sav kullanarak SPSS dosyalarımı açabileceğimi bildiğim için SPSS olarak indirdim. TIMSS’te bsgile başlayan dosyalar öğrenci dosyaları olduğu için bsgturm7ve bsgjpnm7dosyalarını kullanacağım.

İlk adımda haven paketinde bulunan read_sav() fonksiyonunu kullanarak Türkiye ve Japonya öğrenci verilerini R’a aktardım.

library(haven)

japonya <- read_sav("bsgjpnm7.sav")
turkiye <- read_sav("bsgturm7.sav") 

TIMMS’te bulunan dört değişkeni kullanacağım bunlar:

  • BSMMAT01 -> Öğrencinin matematik başarısı -> Bağımlı değişken

  • BSDGICM -> Matematik derslerinde öğretimsel açıklık indeksi -> Bağımsız değişken

  • BSDGSLM -> Matematik dersini sevme indeksi -> Aracı değişken

  • ITSEX -> Cinsiyet -> Düzenleyici değişken

İkinci adımda iki dosyayı birleştirip sütun isimlerini türkçeleştirdim ve IDCNTRY kodlu ülke kodu sütunundaki kodları Japonya ve Türkiyeolarak değiştirdim.

library(tidyr)
library(dplyr)
## 
## 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
timss <- bind_rows(japonya, turkiye) %>%
  mutate(
    ulke_kodu = IDCNTRY,
    ulke = case_when(
      IDCNTRY == 792 ~ "Türkiye",
      IDCNTRY == 392 ~ "Japonya",
    ) %>%
      factor(),
    cinsiyet = factor(ITSEX,
                      levels = c(1, 2),
                      labels = c("Erkek", "Kız")),
    mat_basarisi = BSMMAT01,
    ogretimsel_aciklik = BSDGICM,
    matematigi_sevme = BSDGSLM
  ) %>%
  select(ulke_kodu, ulke, cinsiyet,
         mat_basarisi, ogretimsel_aciklik, matematigi_sevme)

Analizlere geçmeden önce, matematik başarısı (BSMMAT01), öğretimsel açıklık indeksi (BSDGICM), matematik dersini sevme indeksi (BSDGSLM) ve cinsiyet (ITSEX) değişkenlerinde eksik verileri veri setinden çıkarmak için drop_na() fonksiyonunu kullandım. Sonrasında kaç veri kaldığını kontrol ettim.

library(tidyr)

timss_temiz <- timss %>%
  drop_na(mat_basarisi, ogretimsel_aciklik, matematigi_sevme, cinsiyet)

nrow(timss_temiz)
## [1] 8409
table(timss_temiz$ulke)
## 
## Japonya Türkiye 
##    4439    3970

Verilerin Betimsel Analizleri ve Korelasyon

Daha sonra veri setinin yapısını incelemek için betimsel istatistiklerine ve korelasyonlara baktım.

library(dplyr)

timss_temiz %>%
group_by(ulke) %>%
summarise(
n = n(),
ort_matbas = mean(mat_basarisi),
sd_matbas  = sd(mat_basarisi),
ort_ogrtsaciklik = mean(ogretimsel_aciklik),
sd_ogrtsaciklik  = sd(ogretimsel_aciklik),
ort_matsev  = mean(matematigi_sevme),
sd_matsev   = sd(matematigi_sevme)
)
timss_temiz %>%
select(mat_basarisi, ogretimsel_aciklik, matematigi_sevme) %>%
cor(use = "complete.obs")
##                    mat_basarisi ogretimsel_aciklik matematigi_sevme
## mat_basarisi         1.00000000         0.07088107       -0.1102946
## ogretimsel_aciklik   0.07088107         1.00000000        0.4517313
## matematigi_sevme    -0.11029462         0.45173125        1.0000000

Regresyon Analizleri: 1. Model

Öğretimsel açıklığın matematik başarısını tek başına ne kadar açıkladığını görmek için basit doğrusal regresyon modeli kurdum. Bu modelde bağımlı değişken matematik başarısı, bağımsız değişken ise öğretimsel açıklık indeksidir.

library(broom)

model_basarixaciklik <- lm(mat_basarisi ~ ogretimsel_aciklik,
data = timss_temiz)

glance(model_basarixaciklik)
tidy(model_basarixaciklik)

Bu modelde R² ve düzeltilmiş R² değerleri yaklaşık 0.005 bulunmuştur. Bu sonuç, matematik başarısındaki varyansın yalnızca yaklaşık %0.5’inin öğretimsel açıklık tarafından açıklandığını gösteriyor. p < .001 olduğu için modelin genel olarak istatistiksel olarak anlamlı olduğu görülüyor.

Regresyon katsayılarına baktığımda, öğretimsel açıklık değişkenine ait eğim katsayısı 10.996 (SE = 1.688, p < .001) olarak hesaplanmıştır. Bu değer, öğretimsel açıklık puanındaki 1 birimlik artışın, öğrencilerin TIMSS matematik puanında ortalama yaklaşık 11 puanlık bir artışla ilişkili olduğunu göstermektedir. Yani öğretmenin dersi daha açık, anlaşılır ve adım adım anlattığını bildiren öğrenciler, ortalamada biraz daha yüksek matematik başarısına sahiptir. Ancak R² değerinin çok düşük olması, matematik başarısını açıklamada öğretimsel açıklığın tek başına güçlü bir yordayıcı olmadığını ve başarıyı etkileyen pek çok başka değişkenin de olduğunu düşündürmektedir.

Regresyon Analizleri: 2. Model

Daha sonra öğretimsel açıklık indeksinin (ogretimsel_aciklik), matematik dersini sevme indeksini (matematigi_sevme) ne kadar açıkladığını görmek için basit regresyon modeli kurdum.

library(broom)

model_sevmexaciklik <- lm(matematigi_sevme ~ ogretimsel_aciklik,
               data = timss_temiz)

glance(model_sevmexaciklik)
tidy(model_sevmexaciklik)

Bu modelde R² ve düzeltilmiş R² değerleri 0.20 civarındadır. Yani matematiği sevme puanlarındaki varyansın yaklaşık %20’si öğretimsel açıklık değişkeni ile açıklanabilmektedir. F istatistiği de oldukça yüksek (F(1, 8407) ≈ 2155, p < .001) olduğu için, modelin genel olarak istatistiksel olarak anlamlı olduğu söylenebilir.

Regresyon katsayılarına baktığımda, öğretimsel açıklık için eğim katsayısı 0.49 (SE ≈ 0.01, p < .001) olarak hesaplanmıştır. Bu değer, öğretimsel açıklık puanındaki 1 birimlik artışın, matematiği sevme indeksinde ortalama yaklaşık 0.49 birim artışla ilişkili olduğunu gösteriyor. Yani öğrenciler öğretmenin dersi daha açık, anlaşılır ve düzenli anlattığını bildirdikçe, matematik dersini sevme düzeyleri de anlamlı biçimde artıyor. Bu sonuç, kurmak istediğim aracılık modelinde öğretimsel açıklık -> matematiği sevme yolunun güçlü ve anlamlı bir yol olduğunu destekliyor.

Regresyon Analizleri: 3. Model

Sonraki adımda bu aracı değişkeni ana modele ekleyip öğretimsel açıklık ve matematiği sevmenin birlikte matematik başarısını ne kadar açıkladığına baktım.

model_basarixaciklik_sevme <- lm(
  mat_basarisi ~ ogretimsel_aciklik + matematigi_sevme,
  data = timss_temiz
)

glance(model_basarixaciklik_sevme)
tidy(model_basarixaciklik_sevme)

Bu modelde R² değeri yaklaşık 0.03, düzeltilmiş R² ise yine yaklaşık 0.03 çıktı. Yani öğretimsel açıklık ve matematiği sevme birlikte, matematik başarısındaki varyansın yaklaşık %3’ünü açıklıyor. F istatistiği 132.09 ve p değeri < .001 olduğu için, model genel olarak istatistiksel açıdan anlamlı diyebiliriz. Katsayılara baktığımda ise:

  • Öğretimsel açıklık için eğim katsayısı yaklaşık 23.53 (SE ≈ 1.87, p < .001). Matematiği sevme düzeyi sabit tutulduğunda, öğretimsel açıklık indeksindeki 1 birimlik artışın TIMSS matematik puanında ortalama 23.5 puanlık artışla ilişkili olduğunu gösteriyor. Yani öğretmenin dersi daha açık ve yapılandırılmış anlattığını bildiren öğrenciler daha yüksek başarı puanlarına sahip.

  • Matematiği sevme için eğim katsayısı ise yaklaşık -25.58 (SE ≈ 1.72, p < .001). Yani öğretimsel açıklık sabit tutulduğunda, matematiği sevme indeksindeki 1 birimlik artış, matematik puanında ortalama 25.6 puanlık azalışla ilişkili görünüyor. Yöne bakınca bu ilişki ilk bakışta beklediğim yönün tersi çıktı :((((. 2. modelde öğretimsel açıklık arttıkça matematiği sevme puanının arttığını görmüştüm burada ise iki değişken aynı anda modele girince, matematiği sevme katsayısı negatif çıktı.

Açıklanan varyansa baktığımda, yalnızca öğretimsel açıklık ile kurduğum modelde R² yaklaşık 0.005 iken, matematiği sevme değişkenini de eklediğim bu modelde R²’nin yaklaşık 0.03’e yükseldiğini gördüm. Yani aracı değişkeni eklemek, modelin matematik başarısını açıklama gücünü biraz artırmış. Katsayıların yönü ve büyüklüğü değiştiği için, burada klasik “öğretimsel açıklık -> matematiği sevme -> başarı” şeklinde bir aracılık yapısından çok, biraz daha karmaşık bir ilişki olabilir. Belki TIMSS verilerinde ters kodlanmış maddeler vardır bilmiyorum buna bakmamıştım, ayrıca bakacağım.

Regresyon Analizleri: 4. Model

Öğrencilerin matematiği sevme düzeyi ile matematik başarısı arasındaki ilişkinin cinsiyete göre değişip değişmediğine baktım.

library(dplyr)

timss_mod <- timss_temiz %>%
  mutate(
    cinsiyet_say = ifelse(cinsiyet == "Kız", 1, 0),
    matematigi_sevme_z = as.numeric(scale(matematigi_sevme)),
    sevme_cinsiyet = matematigi_sevme_z * cinsiyet_say
  )

model_mod <- lm(mat_basarisi ~ ogretimsel_aciklik + matematigi_sevme_z +
                  cinsiyet_say + sevme_cinsiyet,
                data = timss_mod)

glance(model_mod)
tidy(model_mod)

Bu modelde önce timss_temiz veri setinden yeni bir timss_mod nesnesi oluşturarak cinsiyeti sayısal hale getirdim, matematiği sevme değişkenini karşılaştırmayı z-puana çevirdim ve matematiği sevme–başarı ilişkisinin cinsiyete göre değişip değişmediğini test edebilmek için etkileşim terimini (sevme_cinsiyet = matematigi_sevme_z * cinsiyet_say) ürettim. Ardından matematik başarısını aynı anda öğretimsel açıklık, matematiği sevme (z), cinsiyet ve etkileşim ile yordayan çoklu doğrusal regresyonu kurdum. Çıktıya göre modelin açıklayıcılığı düşük ama anlamlı (R² ≈ 0.034; yani başarı varyansının yaklaşık %3.4’ü açıklanıyor); öğretimsel açıklık arttıkça matematik başarısı artıyor (b ≈ 23.51, p < .001), fakat matematiği sevme z-puanı yükseldikçe başarı düşüyor (b ≈ -14.07, p < .001). Cinsiyetin ana etkisi de negatif (b ≈ -7.29, p = .0017) olduğu için, matematiği sevme ortalamadayken (z=0) ve diğer değişkenler sabitken kızların puanı erkeklerden ortalama yaklaşık 7 puan daha düşük görünüyor. sevme_cinsiyet katsayısı da negatif ve anlamlı (b ≈ -11.18, p < .001), yani matematiği sevme ile başarı arasındaki negatif ilişki kızlarda daha da artıyor. Erkeklerde matematiği sevmenin eğimi yaklaşık -14.07, kızlarda ise eğim yaklaşık -25.25’e düşüyor.

Lavaan Paketi ile Ülkelerin Karşılaştırmalı Modelini Kurma

Bu aşamada öğretimsel açıklığın, matematiği sevme üzerinden matematik başarısına giden dolaylı etkisini kurup, bu aracılık yolunun cinsiyete göre değişip değişmediğini aynı modelin içinde test ettim ve ülke bazında ayrı ayrı görünecek şekilde yaptım. Bunun için önce veriyi ülkeye göre gruplayıp her ülkenin kendi içinde değişkenleri z-puana çevirdim, cinsiyeti 0/1 olarak sayısallaştırdım ve “matematiği sevme × cinsiyet” etkileşim terimini oluşturdum. Sonra iki ülkeyi “group = ulke” ile çok gruplu model olarak çalıştırıp, modeldeki yolların katsayılarını Türkiye ve Japonya için ayrı ayrı inceledim (o yüzden modelde c(…, …) şeklinde iki ülkeye iki ayrı katsayı tanımladım). En sonda da erkek ve kız için dolaylı etkiyi ayrı hesaplayacak şekilde indirect_erkek, indirect_kiz ve bu ikisi arasındaki farkı özetleyen “moderated mediation indeksi”ni (index_modmed) tanımladım; standart hataları daha güvenilir almak için bootstrap kullandım.

library(dplyr)
library(lavaan)
## This is lavaan 0.6-20
## lavaan is FREE software! Please report any bugs.
timss_mg <- timss_temiz %>%
  group_by(ulke) %>% 
  mutate(
    cinsiyet_say = ifelse(cinsiyet == "Kız", 1, 0),
    ogretimsel_aciklik_z = as.numeric(scale(ogretimsel_aciklik)),
    matematigi_sevme_z   = as.numeric(scale(matematigi_sevme)),
    mat_basarisi_z       = as.numeric(scale(mat_basarisi)),
    svm_cns = matematigi_sevme_z * cinsiyet_say
  ) %>% 
  ungroup()

model_mg_free <- '
  matematigi_sevme_z ~ c(a_JPN, a_TUR)*ogretimsel_aciklik_z
  mat_basarisi_z ~ c(c_JPN, c_TUR)*ogretimsel_aciklik_z +
                   c(b1_JPN,b1_TUR)*matematigi_sevme_z +
                   c(b2_JPN,b2_TUR)*cinsiyet_say +
                   c(b3_JPN,b3_TUR)*svm_cns

  indirect_erkek_JPN := a_JPN*b1_JPN
  indirect_kiz_JPN   := a_JPN*(b1_JPN + b3_JPN)
  index_modmed_JPN   := a_JPN*b3_JPN

  indirect_erkek_TUR := a_TUR*b1_TUR
  indirect_kiz_TUR   := a_TUR*(b1_TUR + b3_TUR)
  index_modmed_TUR   := a_TUR*b3_TUR
'

fit_mg <- sem(model_mg_free, data = timss_mg, group = "ulke",
              se = "bootstrap", bootstrap = 5000)

summary(fit_mg, standardized = TRUE, rsquare = TRUE)
## lavaan 0.6-20 ended normally after 1 iteration
## 
##   Estimator                                         ML
##   Optimization method                           NLMINB
##   Number of model parameters                        18
## 
##   Number of observations per group:                   
##     Japonya                                       4439
##     Türkiye                                       3970
## 
## Model Test User Model:
##                                                       
##   Test statistic                              5652.574
##   Degrees of freedom                                 4
##   P-value (Chi-square)                           0.000
##   Test statistic for each group:
##     Japonya                                   3248.878
##     Türkiye                                   2403.697
## 
## Parameter Estimates:
## 
##   Standard errors                            Bootstrap
##   Number of requested bootstrap draws             5000
##   Number of successful bootstrap draws            5000
## 
## 
## Group 1 [Japonya]:
## 
## Regressions:
##                        Estimate  Std.Err  z-value  P(>|z|)   Std.lv  Std.all
##   matematigi_sevme_z ~                                                      
##     ogrtm__ (a_JP)        0.360    0.014   25.224    0.000    0.360    0.360
##   mat_basarisi_z ~                                                          
##     ogrtm__ (c_JP)       -0.048    0.015   -3.193    0.001   -0.048   -0.048
##     mtmtg__ (b1_J)       -0.347    0.020  -17.319    0.000   -0.347   -0.348
##     cnsyt_s (b2_J)       -0.070    0.029   -2.439    0.015   -0.070   -0.035
##     svm_cns (b3_J)       -0.027    0.028   -0.960    0.337   -0.027   -0.020
## 
## Intercepts:
##                    Estimate  Std.Err  z-value  P(>|z|)   Std.lv  Std.all
##    .matematg_svm_z    0.000    0.014    0.000    1.000    0.000    0.000
##    .mat_basarisi_z    0.032    0.019    1.688    0.091    0.032    0.032
## 
## Variances:
##                    Estimate  Std.Err  z-value  P(>|z|)   Std.lv  Std.all
##    .matematg_svm_z    0.870    0.017   51.132    0.000    0.870    0.870
##    .mat_basarisi_z    0.857    0.019   44.887    0.000    0.857    0.862
## 
## R-Square:
##                    Estimate
##     matematg_svm_z    0.130
##     mat_basarisi_z    0.138
## 
## 
## Group 2 [Türkiye]:
## 
## Regressions:
##                        Estimate  Std.Err  z-value  P(>|z|)   Std.lv  Std.all
##   matematigi_sevme_z ~                                                      
##     ogrtm__ (a_TU)        0.379    0.013   29.101    0.000    0.379    0.379
##   mat_basarisi_z ~                                                          
##     ogrtm__ (c_TU)       -0.118    0.017   -6.968    0.000   -0.118   -0.118
##     mtmtg__ (b1_T)       -0.191    0.021   -9.004    0.000   -0.191   -0.191
##     cnsyt_s (b2_T)       -0.081    0.031   -2.635    0.008   -0.081   -0.040
##     svm_cns (b3_T)       -0.028    0.030   -0.954    0.340   -0.028   -0.020
## 
## Intercepts:
##                    Estimate  Std.Err  z-value  P(>|z|)   Std.lv  Std.all
##    .matematg_svm_z   -0.000    0.015   -0.000    1.000   -0.000   -0.000
##    .mat_basarisi_z    0.041    0.021    1.926    0.054    0.041    0.041
## 
## Variances:
##                    Estimate  Std.Err  z-value  P(>|z|)   Std.lv  Std.all
##    .matematg_svm_z    0.856    0.014   61.378    0.000    0.856    0.857
##    .mat_basarisi_z    0.923    0.020   45.331    0.000    0.923    0.927
## 
## R-Square:
##                    Estimate
##     matematg_svm_z    0.143
##     mat_basarisi_z    0.073
## 
## Defined Parameters:
##                    Estimate  Std.Err  z-value  P(>|z|)   Std.lv  Std.all
##     indrct_rkk_JPN   -0.125    0.009  -14.573    0.000   -0.125   -0.125
##     indirct_kz_JPN   -0.135    0.009  -14.977    0.000   -0.135   -0.132
##     index_mdmd_JPN   -0.010    0.010   -0.958    0.338   -0.010   -0.007
##     indrct_rkk_TUR   -0.072    0.008   -8.630    0.000   -0.072   -0.072
##     indirct_kz_TUR   -0.083    0.009   -9.244    0.000   -0.083   -0.080
##     index_mdmd_TUR   -0.011    0.011   -0.953    0.341   -0.011   -0.008

Sonuçlar iki ülkede de benzer bir yapıda, öğretimsel açıklık arttıkça matematiği sevme artıyor (Japonya: a = 0.360, Türkiye: a = 0.379; ikisi de p < .001). Ancak aynı model içinde (diğer değişkenleri kontrol edince) matematiği sevmenin başarıyla ilişkisi negatif çıkıyor (Japonya: b1 = -0.347, Türkiye: b1 = -0.191; ikisi de p < .001). Bu yüzden dolaylı etki de iki ülkede negatif görünüyor. Japonya’da dolaylı etki erkeklerde -0.125, kızlarda -0.135; Türkiye’de erkeklerde -0.072, kızlarda -0.083 (hepsi p < .001). Yani teknik olarak “aracılık” var ama yönü beklediğim gibi pozitif değil. Bu, verideki indekslerin yapısı, ters kodlama ihtimali ya da sevmenin başarıyla aynı yönde gitmediği bir bağlam etkisi gibi yorumlanabilir ve benim ayrıca kontrol etmem gereken bir nokta. Buna ek olarak öğretimsel açıklığın başarıya doğrudan etkisi de negatif çıkmış (Japonya: c = -0.048, Türkiye: c = -0.118; ikisi de anlamlı), yani modelde öğretimsel açıklık “başarıyı artırıyor” şeklinde değil, ters yönde ilişki veriyor. Türkiye’de bu negatif doğrudan etki Japonya’ya göre daha güçlü.

Türkiye–Japonya karşılaştırması kısmında benim çıkarımlarım; öğretimsel açıklığın matematiği sevmeyi artırma gücü iki ülkede de var ve birbirine yakın (Türkiye çok az daha yüksek). Matematiği sevme-başarı ilişkisindeki negatif yön Japonya’da daha güçlü (|-0.347| > |-0.191|), bu yüzden Japonya’da dolaylı etkinin büyüklüğü Türkiye’den daha fazla. Cinsiyetin ana etkisi her iki ülkede de küçük ama anlamlı ve negatif (Japonya: -0.070, Türkiye: -0.081), yani bu kodlamaya göre (kız=1 varsayımıyla) kızların başarı z puanı erkeklere göre biraz daha düşük görünüyor. Cinsiyetin düzenleyici rolü yokmuş; çünkü etkileşim terimi her iki ülkede de anlamsız (b3: Japonya p = .328; Türkiye p = .327) ve modere edilmiş aracılık indeksi de anlamsız (Japonya: -0.010, p = .329; Türkiye: -0.011, p = .327). Son olarak açıklanan varyansa baktığımda model, başarıyı Japonya’da daha iyi açıklıyor (R² = 0.138) ama Türkiye’de daha düşük açıklıyor (R² = 0.073). Matematiği sevme için açıklanan varyans ise iki ülkede de benzer düzeyde (Japonya R² = 0.130; Türkiye R² = 0.143)