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()
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).
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.
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.
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.
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
İ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
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'
# 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.
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.