Hazırlık

PISA_STU_2022 <- readRDS("PISA_STU_2022.RDS")
# names (PISA_STU_2022) #görmek için yaptım ve baktıktan sonra çok uzun olduğu için yorum satırına dönüştürdüm
# paketler
library(expss)   # drop_var_labs() için
## Loading required package: maditr
## 
## Use magrittr pipe '%>%' to chain several operations:
##              mtcars %>%
##                  let(mpg_hp = mpg/hp) %>%
##                  take(mean(mpg_hp), by = am)
## 
## 
## Use 'expss_output_viewer()' to display tables in the RStudio Viewer.
##  To return to the console output, use 'expss_output_default()'.
library(tidyr)
## 
## Attaching package: 'tidyr'
## The following objects are masked from 'package:expss':
## 
##     contains, nest
library(dplyr)
## 
## Attaching package: 'dplyr'
## The following objects are masked from 'package:expss':
## 
##     compute, contains, na_if, recode, vars, where
## The following objects are masked from 'package:maditr':
## 
##     between, coalesce, first, last
## The following objects are masked from 'package:stats':
## 
##     filter, lag
## The following objects are masked from 'package:base':
## 
##     intersect, setdiff, setequal, union
library(ggplot2)
## 
## Attaching package: 'ggplot2'
## The following object is masked from 'package:expss':
## 
##     vars
library(ggpubr)  # korelasyon katsayılarını grafiğe basmak için
## 
## Attaching package: 'ggpubr'
## The following object is masked from 'package:expss':
## 
##     compare_means
# library (lavaan) # aracılık için -bundan vaz geçtim
library(psych) # aracılık için
## 
## Attaching package: 'psych'
## The following objects are masked from 'package:ggplot2':
## 
##     %+%, alpha
# veri okuma
PISA_STU_2022 <- readRDS("PISA_STU_2022.RDS")
PISA_STU_2022$ST004D01T %>% glimpse()
##  hvn_lbll [1:7250] 2, 1, 1, 1, 1, 2, 2, 2, 2, 2, 1, 2, 1, 1, 2, 1, 1, 1, 1,...
##  @ label      : chr "Student (Standardized) Gender"
##  @ format.spss: chr "F1.0"
##  @ labels     : Named num [1:6] 1 2 5 7 8 9
##   ..- attr(*, "names")= chr [1:6] "Female" "Male" "Valid Skip" "Not Applicable" ...
# 1. tüm etiketleri bir nesneye atayalım
tum_etiketler <- attr(PISA_STU_2022$STRATUM, "labels")
# 2. isimleri (TUR ile başlayanları) filtreleyelim
tur_stratum_etiketleri <- tum_etiketler[grep("^TUR", names(tum_etiketler))]
# 3. sonucu görelim
tur_stratum_etiketleri
##                                     TUR - stratum 10: Anatolian High School- C 
##                                                                        "TUR10" 
##                  TUR - stratum 20: Anatolian Imam and Preacher High School - B 
##                                                                        "TUR20" 
##           TUR - stratum 30: Vocational and Technical Anatolian High School - C 
##                                                                        "TUR30" 
##                                       TUR - stratum 01: Lower-Secondary School 
##                                                                        "TUR01" 
##                                     TUR - stratum 11: Anatolian High School- D 
##                                                                        "TUR11" 
##                  TUR - stratum 21: Anatolian Imam and Preacher High School - C 
##                                                                        "TUR21" 
##           TUR - stratum 31: Vocational and Technical Anatolian High School - D 
##                                                                        "TUR31" 
##                                      TUR - stratum 02: Science High School - A 
##                                                                        "TUR02" 
##                                     TUR - stratum 12: Anatolian High School- E 
##                                                                        "TUR12" 
##                  TUR - stratum 22: Anatolian Imam and Preacher High School - D 
##                                                                        "TUR22" 
##           TUR - stratum 32: Vocational and Technical Anatolian High School - E 
##                                                                        "TUR32" 
##                                      TUR - stratum 03: Science High School - B 
##                                                                        "TUR03" 
##                                     TUR - stratum 13: Anatolian High School- F 
##                                                                        "TUR13" 
##                  TUR - stratum 23: Anatolian Imam and Preacher High School - E 
##                                                                        "TUR23" 
##           TUR - stratum 33: Vocational and Technical Anatolian High School - F 
##                                                                        "TUR33" 
##                                      TUR - stratum 04: Science High School - C 
##                                                                        "TUR04" 
##                                     TUR - stratum 14: Anatolian High School- G 
##                                                                        "TUR14" 
##                  TUR - stratum 24: Anatolian Imam and Preacher High School - F 
##                                                                        "TUR24" 
##           TUR - stratum 34: Vocational and Technical Anatolian High School - G 
##                                                                        "TUR34" 
##                              TUR - stratum 05: Social Sciences High School - A 
##                                                                        "TUR05" 
##                                     TUR - stratum 15: Anatolian High School- H 
##                                                                        "TUR15" 
##                  TUR - stratum 25: Anatolian Imam and Preacher High School - G 
##                                                                        "TUR25" 
##           TUR - stratum 35: Vocational and Technical Anatolian High School - H 
##                                                                        "TUR35" 
##                              TUR - stratum 06: Social Sciences High School - B 
##                                                                        "TUR06" 
##                                     TUR - stratum 16: Anatolian High School- I 
##                                                                        "TUR16" 
##                  TUR - stratum 26: Anatolian Imam and Preacher High School - H 
##                                                                        "TUR26" 
##           TUR - stratum 36: Vocational and Technical Anatolian High School - I 
##                                                                        "TUR36" 
##                              TUR - stratum 07: Social Sciences High School - C 
##                                                                        "TUR07" 
##                                     TUR - stratum 17: Anatolian High School- J 
##                                                                        "TUR17" 
## TUR - stratum 27: Anatolian Sport High School/ Anatolian Fine Arts High School 
##                                                                        "TUR27" 
##                                     TUR - stratum 08: Anatolian High School- A 
##                                                                        "TUR08" 
##                                     TUR - stratum 18: Anatolian High School- K 
##                                                                        "TUR18" 
##           TUR - stratum 28: Vocational and Technical Anatolian High School - A 
##                                                                        "TUR28" 
##                                     TUR - stratum 09: Anatolian High School- B 
##                                                                        "TUR09" 
##                  TUR - stratum 19: Anatolian Imam and Preacher High School - A 
##                                                                        "TUR19" 
##           TUR - stratum 29: Vocational and Technical Anatolian High School - B 
##                                                                        "TUR29"
stratum_lookup <- tibble(
  STRATUM = unname(tur_stratum_etiketleri),     # kod
  STRATUM_LAB = names(tur_stratum_etiketleri)   # etiket
)
# etiket temizleme
veri_pisa <- PISA_STU_2022 %>% drop_var_labs()

Soru 1

STRATUM Öğrencileri okul türü ve bölgesel tabakalara göre 36 gruba ayıran bir PISA değişkenidir.

Öncelikle Matematik puanı ve okul türünü seçeceğiz.

Doğruluk için eksik verileri temizleyeceğiz.

Son olarak da her okul grubu için ortalama matematik puanını hesaplayacağız.

# soruya hazırlık niteliğinde;
# - ilgili değişkenleri seç
# - eksik verileri sil (tidyr::drop_na() ile)
# - temizlik öncesi ve sonrasında N'yi raporla

veri_pisa_once <- veri_pisa %>% 
  select(STRATUM, PV1MATH)

N_once <- nrow(veri_pisa_once)

veri_pisa_sonra <- veri_pisa_once %>% 
  drop_na()  

N_sonra <- nrow(veri_pisa_sonra)

N_once
## [1] 7250
N_sonra
## [1] 7250

STRATUM ve PV1MATH değişkenleri seçildikten sonra drop_na() ile eksik gözlemler temizlenmiştir. Bu iki değişkende eksik veri bulunmadığından örneklem büyüklüğü değişmemiştir (N = 7 250).

STRATUM bazında özet istatistikler: n, mean, sd, se, %95 GA

ozet1 <- veri_pisa_sonra %>%
  group_by(STRATUM) %>%
  summarise(
    n = n(),
    mean_math = mean(PV1MATH),
    sd_math   = sd(PV1MATH),
    se_math   = sd_math / sqrt(n),
    
    # Z değeri
    ci_low    = mean_math - 1.96 * se_math,
    ci_high   = mean_math + 1.96 * se_math,
    
    .groups = "drop"
  ) %>%
  left_join(stratum_lookup, by = "STRATUM")

Her bir STRATUM için PV1MATH ortalaması, standart sapma, standart hata ve %95 güven aralıkları t-dağılımı kullanılarak hesaplanmıştır.

Ortalamaya göre büyükten küçüğe sıralama

ozet1 <- ozet1 %>%
  mutate(
    STRATUM_GOSTER = ifelse(is.na(STRATUM_LAB), STRATUM, STRATUM_LAB),
    STRATUM_GOSTER = reorder(STRATUM_GOSTER, -mean_math) # eksi işareti koymadan yaptığımda küçükten büyüğe sıraladığı için düzelttim
  )

# başarı makası
max_grup <- ozet1 %>% slice_max(mean_math, n = 1)
min_grup <- ozet1 %>% slice_min(mean_math, n = 1)

basari_makasi <- max_grup$mean_math - min_grup$mean_math
basari_makasi
## [1] 334.6129
max_grup
## # A tibble: 1 × 9
##   STRATUM     n mean_math sd_math se_math ci_low ci_high STRATUM_LAB            
##   <chr>   <int>     <dbl>   <dbl>   <dbl>  <dbl>   <dbl> <chr>                  
## 1 TUR02      84      635.    52.8    5.76   624.    646. TUR - stratum 02: Scie…
## # ℹ 1 more variable: STRATUM_GOSTER <fct>
min_grup
## # A tibble: 1 × 9
##   STRATUM     n mean_math sd_math se_math ci_low ci_high STRATUM_LAB            
##   <chr>   <int>     <dbl>   <dbl>   <dbl>  <dbl>   <dbl> <chr>                  
## 1 TUR01      16      300.    60.6    15.2   271.    330. TUR - stratum 01: Lowe…
## # ℹ 1 more variable: STRATUM_GOSTER <fct>

Analiz sonuçlarına göre, Türkiye örnekleminde en yüksek ortalamaya sahip grup Fen Lisesi A (TUR02) (\(M \approx 635\)), en düşük ortalamaya sahip grup ise Ortaokul (TUR01) (\(M \approx 300\)) tabakasıdır.

En yüksek ortalama: TUR02 (Fen Lisesi A) — M ≈ 635, %95 GA ≈ [624, 646]

En düşük ortalama: TUR01 (Ortaokul) — M ≈ 300, %95 GA ≈ [268, 333]

TUR01’in n = 16 olması ve bu güven aralığının geniş olması sonucu bu tabakaya ait ortalama daha yüksek belirsizlikle tahmin edilmektedir.

Nokta grafiği

p1 <- ggplot(ozet1, aes(x = STRATUM_GOSTER, y = mean_math)) +
  geom_point(size = 1) +
  geom_errorbar(aes(ymin = ci_low, ymax = ci_high), width = 0.3) +
  coord_flip() +
  labs(
    title = "PISA 2022 Türkiye: STRATUM Gruplarına Göre Matematik Başarısı (PV1MATH)",
    x = "STRATUM (Okul türü)",
    y = "PV1MATH Ortalama"
  ) +
  theme_minimal(base_size = 9) +
  theme(
    axis.text.y = element_text(size = 5),
    plot.title = element_text(face = "bold")
  )
p1

STRATUM etiketlerinin okunabilirliği artırmak ayarlamalar yapılmıştır. Noktalar her tabakanın ortalamasını, hata çubukları ise %95 güven aralığını göstermektedir.

Grafik incelendiğinde yüksek başarı gösteren Fen Liseleri ve üst tabaka Anadolu Liselerinin güven aralıklarının, Mesleki ve Teknik Anadolu Liseleri ile birçok İmam Hatip Lisesi grubunun güven aralıklarıyla hiçbir noktada kesişmediği görülmektedir. Bu durum, bu okul türleri arasındaki başarı farkının istatistiksel olarak anlamlı olduğu ve tesadüfi olmayabileceğine işaret etmektedir. Buna karşın grafik üzerinde orta ve alt-orta sıralarda yer alan birçok Mesleki ve Teknik Anadolu Lisesi (örneğin STRATUM 31, 32, 33) ile bazı Anadolu İmam Hatip Liselerinin güven aralıklarının birbirini büyük ölçüde kestiği görülmektedir. Bu durum, bu okul türlerinin matematik başarısı açısından birbirlerinden istatistiksel olarak anlamlı düzeyde ayrışmayabileceğine ve benzer başarı profilleri sergileyebileceğini göstermektedir. Fen Liseleri homojen ve yüksek bir başarı sergilerken, başarı sıralamasının altına doğru indikçe hem ortalama puanların düştüğü hem de bazı gruplarda (örneğin TUR01) belirsizliğin arttığı gözlemlenmiştir.

Soru 2

Bu soruda öğrencinin gittiği okulun matematikteki cinsiyet farkını etkileyip etkilemediğini inceleyeceğiz. Türkiye’deki tüm okullarda bu durum aynı mı yoksa okulun türü bu denklemi değiştiebilir mi?

Öncelikle 36 STRATUM kodunu 7 okul türünde gruplayıp, eksik verileri temizleyip ardından veriyi analize hazır hale getireceğiz.

# 36 STRATUM'u 7 okul türüne yeniden kodlama
veri_pisa <- veri_pisa %>%
  mutate(
    okul_turu = case_when(
      STRATUM == "TUR01" ~ "Ortaokul",
      STRATUM %in% c("TUR02","TUR03","TUR04") ~ "Fen Lisesi",
      STRATUM %in% c("TUR05","TUR06","TUR07") ~ "Sosyal Bilimler Lisesi",
      STRATUM %in% c("TUR08","TUR09", "TUR10", "TUR11", "TUR12", "TUR13", "TUR14", "TUR15", "TUR16", "TUR17", "TUR18") ~ "Anadolu Lisesi",
      STRATUM %in% c("TUR19", "TUR20", "TUR21", "TUR22", "TUR23", "TUR24", "TUR25", "TUR26") ~ "Anadolu İmam Hatip Lisesi",
      STRATUM == "TUR27" ~ "Anadolu Spor Lisesi",
      STRATUM %in% c("TUR28", "TUR29", "TUR30", "TUR31", "TUR32", "TUR33", "TUR34", "TUR35", "TUR36") ~ "Mesleki ve Teknik Anadolu Lisesi",
      TRUE ~ NA_character_
    ),
    # cinsiyet
    cinsiyet = factor(
      ST004D01T,
      levels = c(1, 2),
      labels = c("Kız", "Erkek")
    )
  )
# ilgili değişkenleri seç ve eksik verileri temizle
veri_pisa_once <- veri_pisa %>%
  select(okul_turu, cinsiyet, PV1MATH)

N_once <- nrow(veri_pisa_once)

veri_pisa_sonra <- veri_pisa_once %>%
  drop_na()

N_sonra <- nrow(veri_pisa_sonra)

N_once
## [1] 7250
N_sonra 
## [1] 7250

STRATUM değişkeni yedi okul türüne (Ortaokul, Fen, Sosyal Bilimler, Anadolu, Anadolu İHL, Anadolu Spor, Mesleki ve Teknik Anadolu) yeniden kodlanmış; cinsiyet değişkeni 1 = Kız, 2 = Erkek olarak etiketlenmiştir. Okul türü, cinsiyet ve PV1MATH seçildikten sonra drop_na() ile eksik veriler temzilenmiş, eksik veri bulunmadığı için örneklem büyüklüğü değişmemiştir (N_once = 7250, N_sonra = 7250).

ozet2 <- veri_pisa_sonra %>%
  group_by(okul_turu, cinsiyet) %>%
  summarise(
    n = n(),
    mean_math = mean(PV1MATH),
    sd_math   = sd(PV1MATH),
    se_math   = sd_math / sqrt(n),
    .groups = "drop"
  )
ozet2
## # A tibble: 14 × 6
##    okul_turu                        cinsiyet     n mean_math sd_math se_math
##    <chr>                            <fct>    <int>     <dbl>   <dbl>   <dbl>
##  1 Anadolu Lisesi                   Kız       2022      458.    75.7    1.68
##  2 Anadolu Lisesi                   Erkek     1674      472.    85.2    2.08
##  3 Anadolu Spor Lisesi              Kız         57      413.    70.1    9.28
##  4 Anadolu Spor Lisesi              Erkek       26      397.    66.9   13.1 
##  5 Anadolu İmam Hatip Lisesi        Kız        465      445.    90.4    4.19
##  6 Anadolu İmam Hatip Lisesi        Erkek      452      445.    92.0    4.33
##  7 Fen Lisesi                       Kız        165      586.    57.9    4.51
##  8 Fen Lisesi                       Erkek      182      607.    52.6    3.90
##  9 Mesleki ve Teknik Anadolu Lisesi Kız        680      387.    61.8    2.37
## 10 Mesleki ve Teknik Anadolu Lisesi Erkek     1260      409.    73.1    2.06
## 11 Ortaokul                         Kız          5      280.    32.5   14.6 
## 12 Ortaokul                         Erkek       11      310.    69.2   20.9 
## 13 Sosyal Bilimler Lisesi           Kız        167      512.    56.7    4.39
## 14 Sosyal Bilimler Lisesi           Erkek       84      528.    55.9    6.10

Her okul türünde kız ve erkek öğrenciler için PV1MATH ortalaması, standart sapma ve standart hata (SE) hesaplanmıştır. SE, ortalamanın örnekleme belirsizliğini gösterir ve n arttıkça SE küçülür.

Okul türü ve cinsiyete göre hesaplanan ortalama matematik puanlarının etrafına çizilen SE çubukları bu ortalamaların örnekleme belirsizliğini yansıtmaktadır. Gözlemler örneklem büyüklüğü yüksek olan okul türlerinde (ör. Anadolu Liseleri ve Mesleki ve Teknik Anadolu Liseleri) SE değerlerinin oldukça düşük olduğunu dolayısıyla bu gruplardaki ortalama başarı düzeylerinin yüksek bir hassasiyetle tahmin edildiğini göstermektedir. Buna karşılık Anadolu Spor Liseleri ve Ortaokullar gibi öğrenci sayısının sınırlı olduğu gruplarda SE değerleri belirgin biçimde yüksektir. Bu durum, bu okul türlerinde gözlenen kız–erkek farklarının büyük ölçüde örnekleme hatasından etkilenebileceğini ve temkinli yorumlanması gerektiğini göstermektedir. Fen ve Sosyal Bilimler Liseleri orta büyüklükte örneklemlere sahip olup, bu gruplarda hesaplanan ortalamalar orta düzey bir belirsizlik taşımaktadır. Dolayısıyla grafikte görülen cinsiyet farklarının güvenilirliği okul türlerine göre değişmekte; büyük örneklemli okul türlerinde farklar daha sağlam biçimde tahmin edilirken, küçük örneklemli gruplarda gözlenen ayrışmaların istatistiksel yorumu sınırlı kalmaktadır.

# mean + SE
p2 <- ggplot(ozet2, aes(x = okul_turu, y = mean_math, color = cinsiyet, group = cinsiyet)) +
  geom_point(position = position_dodge(width = 0.3), size = 1) +
  geom_errorbar(
    aes(ymin = mean_math - se_math, ymax = mean_math + se_math),
    width = 0.2,
    position = position_dodge(width = 0.3)
  ) +
  labs(
    title = "PISA 2022 Türkiye: Okul Türü ve Cinsiyete Göre Matematik Başarısı",
    x = "Okul Türü",
    y = "PV1MATH Ortalama (±1 SE)",
    color = "Cinsiyet"
  ) +
  theme_minimal(base_size = 11) +
  theme(
    axis.text.x = element_text(angle = 23, hjust = 1),
    plot.title = element_text(face = "bold")
  )
p2 

Soru 3

İlk aşamada, analizde kullanılacak olan STRATUM (okul tabakası), ST004D01T (cinsiyet) ve PV1MATH (matematik başarı puanı) değişkenleri seçilmiştir. Analiz kapsamı dışında kalan Ortaokul (TUR01) ve Spor/Güzel Sanatlar Liseleri (TUR27) veri setinden çıkarılmıştır.

# etiketleri temizleme
veri_pisa <- PISA_STU_2022 %>% drop_var_labs()

# değişkenleri seçme
veri_pisa_g <- veri_pisa %>%
  select(STRATUM, ST004D01T, PV1MATH)

# Ortaokul (TUR01) ve Spor/Güzel Sanatlar Lisesini (TUR27) dahil etmedik
veri_pisa_g <- veri_pisa_g %>%
  filter(!STRATUM %in% c("TUR01", "TUR27"))

# Fen, Sosyal, Anadolu, İHL, Meslek liseleri
veri_pisa_g <- veri_pisa_g %>%
  filter(
    STRATUM %in% c(
      paste0("TUR", sprintf("%02d", 2:4)),    # Fen
      paste0("TUR", sprintf("%02d", 5:7)),    # Sosyal
      paste0("TUR", sprintf("%02d", 8:18)),   # Anadolu
      paste0("TUR", sprintf("%02d", 19:26)),  # İHL
      paste0("TUR", sprintf("%02d", 28:36))   # Meslek
    )
  )

# Eksik veriler
veri_pisa_t <- veri_pisa_g %>% drop_na()

Türkiye eğitim sistemindeki ana lise türlerini temsil eden 5 kategori (Fen, Sosyal Bilimler, Anadolu, İmam Hatip ve Mesleki Teknik) case_when fonksiyonu ile tanımlanmıştır.

Her okul türünün kendi içindeki hiyerarşisini görmek adına, STRATUM kodları o türün başlangıç koduna göre A, B, C gibi harf notlarına dönüştürülmüştür.

Cinsiyet değişkeni faktör düzeyine getirilmiş ve her alt tabaka için ortalama puanlar hesaplanmıştır.

veri_pisa_t <- veri_pisa_t %>%
  mutate(
    okul_turu = case_when(
      STRATUM %in% c("TUR02","TUR03","TUR04") ~ "Fen Lisesi",
      STRATUM %in% c("TUR05","TUR06","TUR07") ~ "Sosyal Bilimler Lisesi",
      STRATUM %in% paste0("TUR", sprintf("%02d", 8:18)) ~ "Anadolu Lisesi",
      STRATUM %in% paste0("TUR", sprintf("%02d", 19:26)) ~ "Anadolu İHL",
      STRATUM %in% paste0("TUR", sprintf("%02d", 28:36)) ~ "Mesleki ve Teknik AL"
    ),

    # Sayısal alt kod
    stratum_num = as.numeric(sub("TUR", "", STRATUM))
  ) %>%
  group_by(okul_turu) %>%
  mutate(
    alt_sira = stratum_num - min(stratum_num) + 1,
    alt_tabaka = LETTERS[alt_sira]
  ) %>%
  ungroup() %>%
  mutate(
    cinsiyet = factor(
      ST004D01T,
      levels = c(1, 2),
      labels = c("Kız", "Erkek")
    )
  )
ozet3 <- veri_pisa_t %>%
  group_by(okul_turu, alt_tabaka, cinsiyet) %>%
  summarise(
    n = n(),
    mean_math = mean(PV1MATH),
    .groups = "drop"
  )

ozet3
## # A tibble: 67 × 5
##    okul_turu      alt_tabaka cinsiyet     n mean_math
##    <chr>          <chr>      <fct>    <int>     <dbl>
##  1 Anadolu Lisesi A          Kız         67      581.
##  2 Anadolu Lisesi A          Erkek       58      607.
##  3 Anadolu Lisesi B          Kız         97      557.
##  4 Anadolu Lisesi B          Erkek       70      574.
##  5 Anadolu Lisesi C          Kız         69      528.
##  6 Anadolu Lisesi C          Erkek       54      540.
##  7 Anadolu Lisesi D          Kız        151      508.
##  8 Anadolu Lisesi D          Erkek       98      541.
##  9 Anadolu Lisesi E          Kız        173      491.
## 10 Anadolu Lisesi E          Erkek      136      518.
## # ℹ 57 more rows

Analiz sonuçları, Türkiye’deki lise türlerinin her birinde en üst başarı dilimi olan A tabakasından son tabakaya doğru gidildikçe matematik başarısının istikrarlı bir şekilde düştüğünü göstermektedir. Özellikle Anadolu Liselerinin ve Mesleki ve Teknik Anadolu Liselerinin kendi içlerinde en geniş başarı aralığına sahip olduğu görülmektedir. Anadolu Liselerinde A tabakasında ortalama puan \(M \approx 581\) iken, K tabakasında bu puanın \(M \approx 369\)’a kadar düştüğü görülmektedir. Okul türlerinin neredeyse tamamında ve tabakalarda erkek öğrencilerin matematik puanlarının kız öğrencilere göre daha yüksek olduğu görülmektedir. Ancak bu farkın büyüklüğü kurumsal yapıya göre değişmektedir. Örneğin, Fen Liselerinde cinsiyetler arası farkın üst tabakalarda belirgin olduğu, ancak okulun kendi hiyerarşisi içinde puanların her iki cinsiyet için de paralel bir düşüş sergilediği görülmektedir. Anadolu İmam Hatip Liselerinde ise bazı alt tabakalarda (örneğin G tabakası) puanların birbirine oldukça yaklaştığı ve cinsiyet farkının minimize olduğu söylenebilir.

Okul türleri arasında kendi içinde en homojen yapıya sahip olan grubun Fen Liseleri ve Sosyal Bilimler Liseleri olduğu söylenebilir. Bu okullarda tabaka sayısı daha azdır ve puanların düşme eğimi daha yataydır. Buna karşın Mesleki ve Teknik Anadolu Liseleri ile Anadolu Liseleri heterojen bir yapı sergilemekte; aynı okul etiketi altında çok farklı başarı düzeylerine sahip öğrenciler bulunmaktadır. Özellikle Meslek Liselerinde B tabakasından itibaren kız öğrencilerin başarısında keskin bir düşüş görülmektedir.

Bulgular Türkiye’de matematik başarısının okul türünün yanı sıra, o okul türü içindeki tabakalaşma ile de güçlü bir şekilde ilişkili olduğunu göstermektedir.

p3 <- ggplot(
  ozet3,
  aes(x = alt_tabaka, y = mean_math, color = cinsiyet, group = cinsiyet)
) +
  geom_line(linewidth = 0.9) +
  geom_point(size = 2) +
  facet_wrap(~ okul_turu, scales = "free_x") +
  labs(
    title = "PISA 2022 Türkiye: Lise Türleri İçinde Tabakalaşma ve Cinsiyet",
    x = "Lise Türleri İçinde Tabakalar",
    y = "Ortalama Matematik Puanı (PV1MATH)",
    color = "Cinsiyet"
  ) +
  theme_minimal(base_size = 11) +
  theme(
    strip.text = element_text(face = "bold"),
    plot.title = element_text(face = "bold")
  )

p3

Soru 4

Analiz setinde yer alan 36 farklı tabaka, yorumlanabilirliği artırmak adına 7 okul türüne göre isimlendirilmiştir.

Analizin odağını oluşturan \(ESCS\) (bağımsız değişken), \(PV1MATH\) (bağımlı değişken) ve \(MATHEFF\) (düzenleyici/aracı değişken) seçilerek eskik veriler temizlenmiştir. Eksik verileri temizledikten sonra örneklem büyüklüğünün \(N=7089\) olduğu görülmektedir.

# etiketleri kaldırdık
veri_pisa4 <- PISA_STU_2022 %>% drop_var_labs()

# tüm okul türlerine göre yeniden kodlama yaptık
veri_pisa4 <- veri_pisa4 %>%
  mutate(
    okul_turu7 = case_when(
      STRATUM == "TUR01" ~ "Ortaokul",
      STRATUM %in% c("TUR02","TUR03","TUR04") ~ "Fen Lisesi",
      STRATUM %in% c("TUR05","TUR06","TUR07") ~ "Sosyal Bilimler Lisesi",
      STRATUM %in% paste0("TUR", sprintf("%02d", 8:18)) ~ "Anadolu Lisesi",
      STRATUM %in% paste0("TUR", sprintf("%02d", 19:26)) ~ "Anadolu İHL",
      STRATUM == "TUR27" ~ "Anadolu Spor/GSL",
      STRATUM %in% paste0("TUR", sprintf("%02d", 28:36)) ~ "Mesleki ve Teknik AL",
      TRUE ~ NA_character_
    )
  )

# analizde kullanacağımız değişkenleri seçtik
veri_pisa4_s <- veri_pisa4 %>%
  select(STRATUM, okul_turu7, ESCS, PV1MATH, MATHEFF)

N_once4 <- nrow(veri_pisa4_s)

# eksik verileri temizledik
veri_pisa4_t <- veri_pisa4_s %>% drop_na()

N_sonra4 <- nrow(veri_pisa4_t)

N_once4
## [1] 7250
N_sonra4
## [1] 7089

Her bir okul türü için Pearson korelasyon katsayıları (\(r\)) ve anlamlılık düzeyleri (\(p\)) hesaplanarak, \(ESCS\) ile başarı arasındaki ilişkinin gücü okul türüne göre hiyerarşik olarak sıralanmıştır. İlişkinin en güçlü olduğu üç okul türünde, matematik öz-yeterliği (\(MATHEFF\)) üçüncü bir boyut (renk) olarak grafiğe eklenmiştir.

p4 <- ggplot(veri_pisa4_t, aes(x = ESCS, y = PV1MATH)) +
  geom_point(alpha = 0.25, size = 0.8) +
  geom_smooth(method = "lm", se = FALSE) +
  stat_cor(
    aes(label = gsub("R", "r", ..label..)), # büyük R yapmışım, onu düzeltmek için küçük r yaptım
    method = "pearson",
    label.x.npc = "left",
    label.y.npc = "top",
    size = 3,
    p.accuracy = 0.001 # p < .001 formatı için
  ) +
  facet_wrap(~ okul_turu7, scales = "free_y") +
  labs(
    title = "ESCS ile Matematik Başarısı (PV1MATH) İlişkisi: Okul Türlerine Göre",
    x = "ESCS (Sosyo-ekonomik düzey)",
    y = "PV1MATH (Matematik başarısı)"
  ) +
  theme_minimal(base_size = 11) +
  theme(strip.text = element_text(face = "bold"))

p4
## Warning: The dot-dot notation (`..label..`) was deprecated in ggplot2 3.4.0.
## ℹ Please use `after_stat(label)` instead.
## This warning is displayed once every 8 hours.
## Call `lifecycle::last_lifecycle_warnings()` to see where this warning was
## generated.
## `geom_smooth()` using formula = 'y ~ x'

# okul türüne göre korelasyon (r), p ve n
kor_7 <- veri_pisa4_t %>%
  group_by(okul_turu7) %>%
  summarise(
    n = n(),
    r = cor(ESCS, PV1MATH, use = "complete.obs"),
    p = cor.test(ESCS, PV1MATH)$p.value,
    .groups = "drop"
  ) %>%
  arrange(desc(abs(r)))  # en güçlü ilişki en üstte olacak şekilde sıraladık

kor_7
## # A tibble: 7 × 4
##   okul_turu7                 n     r        p
##   <chr>                  <int> <dbl>    <dbl>
## 1 Anadolu İHL              879 0.420 8.45e-39
## 2 Anadolu Lisesi          3626 0.318 5.13e-86
## 3 Sosyal Bilimler Lisesi   251 0.298 1.59e- 6
## 4 Fen Lisesi               347 0.269 3.49e- 7
## 5 Anadolu Spor/GSL          83 0.248 2.37e- 2
## 6 Ortaokul                  10 0.232 5.19e- 1
## 7 Mesleki ve Teknik AL    1893 0.181 1.88e-15
en_yuksek_okul_turu <- kor_7 %>% slice_max(abs(r), n = 1) %>% pull(okul_turu7)
en_yuksek_okul_turu
## [1] "Anadolu İHL"
veri_en4 <- veri_pisa4_t %>% filter(okul_turu7 == en_yuksek_okul_turu)

# okul türüne göre r, p, n
kor_alt <- veri_en4 %>%
  group_by(STRATUM) %>%
  summarise(
    n = n(),
    r = cor(ESCS, PV1MATH, use = "complete.obs"),
    p = cor.test(ESCS, PV1MATH)$p.value,
    .groups = "drop"
  ) %>%
  arrange(desc(abs(r)))

kor_alt
## # A tibble: 8 × 4
##   STRATUM     n      r       p
##   <chr>   <int>  <dbl>   <dbl>
## 1 TUR22      74 0.322  0.00516
## 2 TUR23     159 0.215  0.00643
## 3 TUR19      81 0.156  0.164  
## 4 TUR21      79 0.156  0.170  
## 5 TUR24     162 0.134  0.0882 
## 6 TUR25     132 0.131  0.136  
## 7 TUR26      68 0.0495 0.689  
## 8 TUR20     124 0.0312 0.731

Analiz sonuçları, ailenin sosyo-ekonomik düzeyinin ($ESCS$) matematik başarısı üzerindeki etkisinin tüm okul türlerinde pozitif ve istatistiksel olarak anlamlı olduğunu göstermektedir. Anadolu İmam Hatip Liseleri, $r = 0.420$ ile sosyo-ekonomik statünün başarıyı en güçlü yordadığı okul türü olarak öne çıkmaktadır. Buna karşın, Mesleki ve Teknik Anadolu Liselerinde bu ilişki en düşük seviyededir ($r = 0.181$)8. Bu durum, Meslek Liselerinin daha homojen bir sosyo-ekonomik düzeyden geldiğini veya bu okullarda başarının aile statüsünden ziyade diğer faktörlerle şekillenebildiğini düşündürmektedir.

p4.2 <- ggplot(veri_en4, aes(x = ESCS, y = PV1MATH)) +
  geom_point(alpha = 0.25, size = 0.8) +
  geom_smooth(method = "lm", se = FALSE) +
  stat_cor(
    aes(label = gsub("R", "r", ..label..)), 
    method = "pearson",
    label.x.npc = "left",
    label.y.npc = "top",
    size = 2.8
  ) +
  facet_wrap(~ STRATUM) +
  labs(
    title = paste0("En Güçlü ESCS–PV1MATH İlişkisine Sahip Okul Türü: ", en_yuksek_okul_turu),
    x = "ESCS",
    y = "PV1MATH"
  ) +
  theme_minimal(base_size = 10)

p4.2 
## `geom_smooth()` using formula = 'y ~ x'

secilmis_3 <- kor_7 %>% slice_max(abs(r), n = 3) %>% pull(okul_turu7)
secilmis_3
## [1] "Anadolu İHL"            "Anadolu Lisesi"         "Sosyal Bilimler Lisesi"

Bu 3 okul türü için MATHEFF’i renkle ekleyelim:

veri_pisa4.2 <- veri_pisa4_t %>% filter(okul_turu7 %in% secilmis_3)

p4.3 <- ggplot(veri_pisa4.2, aes(x = ESCS, y = PV1MATH, color = MATHEFF)) +
  geom_point(alpha = 0.30, size = 0.9) +
  geom_smooth(method = "lm", se = FALSE, aes(color = NULL)) +
  facet_wrap(~ okul_turu7) +
  labs(
    title = "ESCS–Başarı İlişkisinde Matematik Öz-yeterliği (MATHEFF) Üçüncü Boyutu",
    x = "ESCS",
    y = "PV1MATH",
    color = "MATHEFF"
  ) +
  theme_minimal(base_size = 11) +
  theme(strip.text = element_text(face = "bold"))

p4.3
## `geom_smooth()` using formula = 'y ~ x'

Aracı rolü test etme

# mediate(y, x, m, data, n.iter = bootstrap sayısı)
# std = TRUE (standartlaştırılmış katsayılar için)
model_psych <- mediate(
  y = "PV1MATH", 
  x = "ESCS", 
  m = "MATHEFF", 
  data = veri_pisa, 
  n.iter = 5000, 
  std = TRUE,
  plot = TRUE # diyagramı otomatik çizer
)

# sonuçları detaylı görmek için:
print(model_psych, short = FALSE)
## 
## Mediation/Moderation Analysis 
## Call: mediate(y = "PV1MATH", x = "ESCS", m = "MATHEFF", data = veri_pisa, 
##     n.iter = 5000, std = TRUE, plot = TRUE)
## 
## The DV (Y) was  PV1MATH . The IV (X) was  ESCS . The mediating variable(s) =  MATHEFF .
## 
## Total effect(c) of  ESCS  on  PV1MATH  =  0.36   S.E. =  0.01  t  =  32.35  df=  7248   with p =  1.5e-214
## Direct effect (c') of  ESCS  on  PV1MATH  removing  MATHEFF  =  0.3   S.E. =  0.01  t  =  28.87  df=  7247   with p =  1.5e-173
## Indirect effect (ab) of  ESCS  on  PV1MATH  through  MATHEFF   =  0.06 
## Mean bootstrapped indirect effect =  0.06  with standard error =  0  Lower CI =  0.05    Upper CI =  0.06
## R = 0.49 R2 = 0.24   F = 1134.79 on 2 and 7247 DF   p-value:  0 
## 
## 
##  Full output  
## Call: mediate(y = "PV1MATH", x = "ESCS", m = "MATHEFF", data = veri_pisa, 
##     n.iter = 5000, std = TRUE, plot = TRUE)
## 
## Direct effect estimates (traditional regression)    (c') X + M on Y 
##           PV1MATH   se     t   df      Prob
## Intercept    0.00 0.01  0.00 7247  1.00e+00
## ESCS         0.30 0.01 28.87 7247 1.51e-173
## MATHEFF      0.34 0.01 32.69 7247 7.96e-219
## 
## R = 0.49 R2 = 0.24   F = 1134.79 on 2 and 7247 DF   p-value:  0 
## 
##  Total effect estimates (c) (X on Y) 
##           PV1MATH   se     t   df      Prob
## Intercept    0.00 0.01  0.00 7248  1.00e+00
## ESCS         0.36 0.01 32.35 7248 1.46e-214
## 
##  'a'  effect estimates (X on M) 
##           MATHEFF   se     t   df     Prob
## Intercept    0.00 0.01  0.00 7248 1.00e+00
## ESCS         0.16 0.01 14.04 7248 3.24e-44
## 
##  'b'  effect estimates (M on Y controlling for X) 
##         PV1MATH   se     t   df      Prob
## MATHEFF    0.34 0.01 32.69 7247 7.96e-219
## 
##  'ab'  effect estimates (through all  mediators)
##      PV1MATH boot sd lower upper
## ESCS    0.06 0.06  0  0.05  0.06
# daha güzel bir diyagram için:
mediate.diagram(model_psych)

Sosyo-ekonomik düzey (ESCS) ile matematik başarısı (PV1MATH) arasındaki ilişkide, matematik öz-yeterliğinin (MATHEFF) aracı rolünü incelemek amacıyla, psych paketi kullanılarak 5000 yeniden örnekleme (bootstrap) ile bir aracılık analizi yürütülmüştür. Aracılık modelinde, sosyo-ekonomik düzeyin matematik öz-yeterliği üzerindeki rolü istatistiksel olarak anlamlı bulunmuştur (β = .16, p < .001) Modelde matematik öz-yeterliğinin matematik başarısı üzerindeki rolü de anlamlıdır (β = .34, p < .001) Aracı değişken modele eklendiğinde, sosyo-ekonomik düzeyin matematik başarısı üzerindeki doğrudan etkisi azalmakla birlikte istatistiksel anlamlılığını korumuştur (β = .30, p < .001) Aracaılık ilişkisinin anlamlılığı 5000 yeniden örneklemeleli bootstrap üzerinden hesaplanan %95 güven aralığı ile incelenmiştir. Analiz sonucunda, dolaylı etkinin istatistiksel olarak anlamlı olduğu görülmüştür (β = .06, %95 GA [.05, .06]). Sosyo-ekonomik düzeyin matematik başarısı üzerindeki toplam etkisinin de anlamlı olduğu saptanmıştır (β = .36, p < .001). Bu bulgular sosyoekonomik düzey ile matematik ilişkisi arasındaki ilişkinin anlamlı bir kısmını matematik öz-yeterliğinin açıkladığını göstermiştir. Başka bir ifade ile bu bulgu, yüksek sosyoekonomik düzeyden gelen öğrencilerin daha yüksek matematik öz-yeterlik düzeyine sahip olabileceğine ve buna bağlı olarak matematik başarılarının da daha yüksek olabileceğine işaret etmektedir.

Soru 5

library(rstatix) # Analiz sürecinde rstatix paketinin tercih edilmesinin nedeni Cohen’s d hesaplamalarını otomatik olarak gerçekleştirmesidir.
## 
## Attaching package: 'rstatix'
## The following object is masked from 'package:stats':
## 
##     filter
ttest_by_stratum <- function(data, 
                             stratum_var = "STRATUM", 
                             score_var = "PV1MATH", 
                             gender_var = "ST004D01T") {
  
  sonuc <- data %>%
    select(STRATUM = all_of(stratum_var), 
           Score = all_of(score_var), 
           Gender = all_of(gender_var)) %>%
    filter(!is.na(Score), !is.na(Gender)) %>%
    
    group_by(STRATUM) %>%
    group_modify(~ {
      # Kız (1) ve Erkek (2) 
      n1 <- sum(.x$Gender == 1)
      n2 <- sum(.x$Gender == 2)
      
      mean_girl  <- mean(.x$Score[.x$Gender == 1], na.rm = TRUE)
      mean_boy   <- mean(.x$Score[.x$Gender == 2], na.rm = TRUE)
      mean_total <- mean(.x$Score, na.rm = TRUE) # genel ortalama- sıralama için
      
      # hata kontrolü
      if(n1 < 2 | n2 < 2) {
        return(tibble(n1, n2, mean_girl, mean_boy, mean_total, t = NA, p = NA, d = NA))
      }
      
      # testler
      test <- t.test(Score ~ Gender, data = .x)
      d_val <- .x %>% cohens_d(Score ~ Gender, var.equal = FALSE)
      
      # p değerini formatlama
      p_raw <- test$p.value
      p_formatted <- ifelse(p_raw < 0.001, 
                            "< .001", 
                            sprintf("%.3f", p_raw)) # değilse 3 hane göster
      
      # çıktı tablosu
      tibble(
        n1 = n1,
        n2 = n2,
        mean_girl = mean_girl, 
        mean_boy = mean_boy,   
        mean_total = mean_total,
        t = test$statistic,
        p = p_formatted,       # formatlanmış p değeri
        d = d_val$effsize
      )
    }) %>%
    ungroup() %>%
    arrange(desc(mean_total))
    
  return(sonuc)
}

tablo36_guncel <- ttest_by_stratum(veri_pisa) 
print(tablo36_guncel)
## # A tibble: 36 × 9
##    STRATUM    n1    n2 mean_girl mean_boy mean_total      t p           d
##    <chr>   <int> <int>     <dbl>    <dbl>      <dbl>  <dbl> <chr>   <dbl>
##  1 TUR02      37    47      623.     644.       635. -1.82  0.074 -0.405 
##  2 TUR03      60    66      591.     606.       599. -1.59  0.114 -0.284 
##  3 TUR08      67    58      581.     607.       593. -2.76  0.007 -0.495 
##  4 TUR19      50    32      572.     578.       575. -0.608 0.545 -0.134 
##  5 TUR04      68    69      562.     583.       573. -2.76  0.007 -0.472 
##  6 TUR09      97    70      557.     574.       564. -2.15  0.033 -0.342 
##  7 TUR06      57    27      539.     558.       545. -1.89  0.064 -0.440 
##  8 TUR20      72    52      531.     549.       539. -1.86  0.066 -0.343 
##  9 TUR05      50    33      537.     540.       538. -0.381 0.704 -0.0868
## 10 TUR10      69    54      528.     540.       533. -1.10  0.274 -0.200 
## # ℹ 26 more rows

Tablo, p değeri, örneklem büyüklüğü (n) ve etki büyüklüğü (d) arasındaki ilişkinin pratikte nasıl çalıştığını göstermektedir. Sadece p değerine bakarak karar vermek çoğu zaman yanıltıcı olabilir. Örneğin TUR01’de öğrenci sayısı çok az olmasına rağmen etki büyüklüğü oldukça yüksektir, kızlar ve erkekler arasında gerçek bir fark bulunmasına karşın örneklem küçük olduğu için bu fark istatistiksel olarak anlamlı çıkmamaktadır. Benzer şekilde TUR06’da da fark orta düzeyde olmasına rağmen p değerinin, sınırı küçük bir farkla geçemediği görülmektedir. Buna karşılık TUR14 ve TUR16 gibi çok büyük örneklemlerde farklar görece küçük olmasına rağmen p değerleri anlamlı çıkmaktadır, çünkü öğrenci sayısı oldukça fazladır. Bu da küçük farkların bile istatistiksel olarak önemli görülmesine yol açmaktadır. TUR11 ise ideal bir örnek olabilir; hem etki büyüklüğü yüksek hem de örneklem yeterince büyük olduğu için sonuç hem pratikte hem de istatistiksel olarak güçlüdür. Genel olarak bu tablo, cinsiyet farkının gerçekten ne kadar büyük olduğunu anlamak için etki büyüklüğüne bakmak gerektiğini ve bir sonucun anlamlı çıkıp çıkmamasının çoğu zaman farkın büyüklüğünden çok, o gruptaki öğrenci sayısına bağlı olduğunu göstermektedir.