/* Genel yazı tipi ve sayfa ayarları */
body {
font-family: 'Merriweather', 'Georgia', serif; /* Serif yazı tipi */
font-size: 16px;
background-color: #ffeef2; /* Açık pembe arka plan */
color: #4a1a1a; /* Koyu kırmızımsı kahverengi metin */
}
/* Başlıklar */
h1, h2, h3 {
color: #c2185b; /* Pembe-kırmızı başlıklar */
font-weight: bold;
text-transform: uppercase;
font-family: 'Open Sans', sans-serif;
}
/* İçindekiler tablosu */
.tocify {
background-color: #f8bbd0; /* Açık pembe içindekiler tablosu */
border-radius: 5px;
padding: 10px;
font-family: 'Open Sans', sans-serif;
}
/* Kod bloklarının (chunk) arka planı */
pre {
background-color: #fce4ec !important; /* Pembe arka plan */
color: #880e4f !important; /* Koyu pembe-kırmızı kod yazısı */
padding: 12px;
border-radius: 8px;
font-family: 'Fira Code', 'Courier New', Courier, monospace;
}
/* Inline kodlar */
code {
background-color: #f8bbd0;
color: #ad1457;
padding: 3px 6px;
border-radius: 4px;
}
/* Grafik ve görseller */
img, .figure {
border: 2px solid #c2185b; /* Kırmızımsı pembe çerçeve */
border-radius: 10px;
padding: 5px;
}library(dplyr)
library(psych)
library(ggplot2)
library(tidyr)
library(tidyverse)
library(QuantPsyc)
library(EFAtools)
library(EFA.MRFA)
library(EFA.dimensions)
library(knitr)
library(data.table)
library(lavaan)
library(lavaanPlot)
library(devtools)
library(DT)
library(tibble)
library(EFAfactors)
library(outliers)
library(foreign)
library(haven)
library(highr)
library(corrplot)
library(semptools)
library(semTools)
library(sur)
library(gtools)
library(irtoys)
library(kableExtra)
library(lattice)
library(ggfortify)
library(latticeExtra)
library(plotly)
library(flextable)
library(purrr)
library(rgl)
library(olsrr)
library(scatterplot3d)
library(broom)
library(GGally)
library(lavaan)
library(stargazer)
library(effectsize)
library(rockchalk)
library(quartets)
library(broom)
library(flextable)
library(apaTables)
library(officer)Regresyon modellerinde → “BAĞIMSIZ DEĞİŞKENLER” → sürekli ya da kategorik olabilir.
Dummy kodlama ile → kategorik değişkenin üzerine → sayısal değerler ATANAKARA → dummy değişken(ler) oluşturulur.
Bir bireyin k tane düzeye sahip → kategorik bağımsız bir değişkenin belli bir düzeyine ilişkin üyeliğini temsil eden → k-1 tane → “dummy değişken” oluşturulur.
Eğer bir birey kategorik değişkenin BİRİNCİ düzeyinde ise → birinci dummy değişkene 1 değeri verilir, → birey değişkenin başka bir düzeyindeyse birinci dummy değişkene 0 değeri verilir.
Eğer aynı birey kategorik değişkenin İKİNCİ düzeyinde ise → ikinci dummy değişkene 1 değeri verilir, → birey değişkenin başka bir düzeyindeyse ikinci dummy değişkene → 0 değeri verilir.
Eğer aynı birey kategorik değişkenin (k-1). düzeyinde ise → (k-1). dummy değişkene 1 değeri verilir, → birey değişkenin BAŞKA bir düzeyinde ise → (k-1). dummy değişkene → 0 değeri verilir.
Böyle bir kodlama ile oluşturulan → her bir DUMMY DEĞİŞKEN → 2 düzeye sahiptir: 1 ve 0
Veri setindeki değişkenler <- “id”, “female”, “race”, “ses”, “schtype”, “prog”, “read”, “write”, “math”, “science” ve “socst” olmak üzere 200 gözlem bulunmaktadır.
Betimsel istatistikler için:
data$Dum1 <- as.numeric(data$race== 2)
data$Dum2 <- as.numeric(data$race== 3)
data$Dum3 <- as.numeric(data$race== 4)
head(data)##
## 0 1
## 189 11
##
## 0 1
## 180 20
##
## 0 1
## 55 145
##
## Call:
## lm(formula = read ~ Dum1 + Dum2, data = data)
##
## Coefficients:
## (Intercept) Dum1 Dum2
## 52.8935 -0.9844 -6.0935
Intercept: 52.894
Dum1 = 0 ve Dum2 = 0 iken → yani referans grubundaki bireylerin → ortalama read puanı 52.8935’tir.
Dum1: -0.9844
Dum1 = 1 olan bireyler → referans grubuna göre → ortalama 0.98 puan → daha DÜŞÜK read puanına sahiptir.
Eğer Dum1 bir kategoriye ait ise → (örneğin cinsiyet, bölge, vb.) → bu fark ilgili kategorinin etkisini yansıtır.
Dum2: -6.0935
SONUÇ: Dum2 değişkeninin → Dum1’e kıyasla daha GÜÇLÜ bir ETKİye sahip olduğunu gösteriyor.
reg_table <- tidy(model_dummy)
reg_table %>%
kable(digits = 3, caption = "Regresyon Modeli Sonuclari", col.names = c("Değişken", "Katsayi", "Std. Hata", "t-degeri", "p-degeri")) %>%
kable_styling(full_width = FALSE, bootstrap_options = c("striped", "hover", "condensed", "responsive"))| Değişken | Katsayi | Std. Hata | t-degeri | p-degeri |
|---|---|---|---|---|
| (Intercept) | 52.893 | 0.780 | 67.814 | 0.000 |
| Dum1 | -0.984 | 3.155 | -0.312 | 0.755 |
| Dum2 | -6.093 | 2.398 | -2.541 | 0.012 |
1. Sabit Terim (Intercept)
Kesişim katsayısı b0 52.883 read değerine eşittir. Bu değer → medeni değişkeni diğer olan öğrencilerin → yordanan read puanıdır.
Katsayı: 52.893, p-değeri: <0.001
Bu değer → Dum1 = 0 ve Dum2 = 0 (yani referans grup) olduğunda → bireylerin ortalama read (okuma) puanının 52.89 olduğunu gösterir.
p-değeri 0.000 → Bu katsayı istatistiksel olarak MANİDARdır (p < 0.05).
2. Dum1 Değişkeni
Evli için standartlaştırılmamış eğim katsayısı b1 -0.984 değerine eşittir. Bu değer → evliler ve diğerleri arasındaki → yordanan read puanları farkının -0.984 birim olduğunu önerir.
Katsayı: -0.984, p-değeri: 0.755
Dum1 = 1 olan bireyler → referans gruba göre → ortalama 0.98 puan daha DÜŞÜK read puanına sahiptir.
Ancak bu farkın istatistiksel olarak manidar OLMADIĞI görülüyor (çünkü p-değeri > 0.05).
Yani bu değişkenin → read puanı üzerinde → manidar bir etkisi YOKtur.
\(52.883–0.984=51.899\) → medeni durumu → evli olan öğrencilerin yordanan read puanıdır.
3. Dum2 Değişkeni
Bekar için standartlaştırılmamış eğim katsayısı b2 -6.093 değerine eşittir. Bu değer → bekarlar ve diğerleri arasındaki → yordanan read puanları farkının -6.093 birim olduğunu önerir.
Katsayı: -6.093, p-değeri: 0.012
Dum2 = 1 olan bireyler → referans gruba göre → ortalama 6.09 puan daha DÜŞÜK read puanına sahiptir.
Bu fark istatistiksel olarak MANİDARdır (p < 0.05) → dolayısıyla Dum2 değişkeni read puanına → MANİDAR şekilde etkilemektedir.
\(52.883–6.093=46.79\) → medeni durumu → bekar olan öğrencilerin yordanan read puanıdır.
##
## Bekar Diger Evli
## 20 169 11
reg_table_2 <- tidy(model_2)
reg_table_2 %>%
kable(digits = 3, caption = "Regresyon Modeli Sonuclari", col.names = c("Değişken", "Katsayi", "Std. Hata", "t-degeri", "p-degeri")) %>%
kable_styling(full_width = FALSE, bootstrap_options = c("striped", "hover", "condensed", "responsive"))| Değişken | Katsayi | Std. Hata | t-degeri | p-degeri |
|---|---|---|---|---|
| (Intercept) | 46.800 | 2.267 | 20.641 | 0.000 |
| MedeniDiger | 6.093 | 2.398 | 2.541 | 0.012 |
| MedeniEvli | 5.109 | 3.806 | 1.342 | 0.181 |
Intercept = 46.800
Referans grubun (“Bekar”) ortalama puanı 46.8’dir.
p-değeri < 0.001 → bu değer istatistiksel olarak MANİDARdır.
MedeniDiger = 6.093, p = 0.012
“Diğer” medeni durumuna sahip bireyler, “Bekar” bireylere göre → ortalama 6.093 puan daha yüksek puan almıştır.
p-değeri = 0.012 → Bu fark istatistiksel olarak MANİDARdır (p < 0.05).
Yani medeni durumu “Diğer” olan bireylerin → read üzerindeki etkisi MANİDARdır.
MedeniEvli = 5.109, p = 0.181
“Evli” bireyler, “Bekar” bireylere göre → ortalama 5.109 puan daha yüksek paun almıştır ama bu fark manidar DEĞİLdir (p = 0.181 > 0.05).
Yani evli olmanın, bekar olmaya göre → istatistiksel olarak mandiar bir fark YOK.
Eğer bir çoklu regresyon modelinde → bir bağımsız değişken ile bağımlı değişken arasındaki ilişkinin büyüklüğü → diğer bir bağımsız değişkenin düzeyine göre değişirse → etkileşim gözlenir.
Etkileşim etkisi → düzenleyici (moderator) etki olarak da bilinmektedir.
Etkileşim terimi → X1 değişkeninin değerlerinin aracı X2 değişkeninin değerleriyle çarpılmasıyla oluşan bileşik bir değişkendir.
Regresyon eşitliği aşağıdaki gibidir:
\[ Y = a + b_1 x_{1i} + b_2 x_{2i} + b_3 x_{1i} x_{2i} \]
Burada, b3 katsayısı → düzenleyici etki olup → X2 değişkenin değeri değişirken → X1 değişkeninin etkisindeki BİRİM değişimi belirtir.
b1 katsayısı X2 değişkenine ilişkin değer SIFIR iken → X1 değişkeninin etkisini,
b2 katsayısı X1 değişkenine ilişkin değer SIFIR iken → X2 değişkeninin etkisini belirtir
(Etkileşim etkisinin bulunmadığı modelde,
b1 katsayısı X2 değişkeninin bütün düzeylerinde X1 değişkeninin etkisini,
b2 katsayısı X1 değişkeninin bütün düzeylerinde X2 değişkeninin etkisini temsil eder).
Bağımsız değişkenin toplam etkisini belirlemek için değişkenin ayrı ve aracı etkisi bir araya getirilmelidir.
\[ b_{toplam} = b_1 + b_3 X_2 \]
Üç değişkenin her biri → hem yatayda hem düşeyde eşleşmiş.
1. write - math ilişkisi (r = 0.617)
Orta düzeyde pozitif ve istatistiksel olarak manidar bir ilişki var.
Yazma becerisi arttıkça → matematik puanı da → genellikle artma eğiliminde.
2. write - science ilişkisi (r = 0.570)
Orta düzeyde pozitif ve manidar ilişki.
Yazma becerileri ile fen başarısı arasında → MANİDAR bir ilişki olduğu görülüyor.
3. math - science ilişkisi (r = 0.631)
Bu üçlü içinde EN GÜÇLÜ İLİŞKİ burada.
Matematik puanı yüksek olan öğrencilerin → fen puanı da genellikle yüksek.
1. read - math (r = 0.662)
Bu korelasyon, oldukça güçlü ve pozitif bir ilişkiyi ifade eder.
Okuma becerileri ile matematik başarısı arasında YÜKSEK düzeyde ilişki vardır.
p < .001 → İstatistiksel olarak MANİDARır.
2. read - science (r = 0.630)
Orta-üst düzeyde bir pozitif ilişki var.
Okuma becerileri geliştikçe → fen başarısında da → ARTIŞ görülme eğilimi vardır.
3. math - science (r = 0.631)
Matematik ile fen arasında da → GÜÇLÜ bir pozitif ilişki vardır.
Bu iki beceri → sıklıkla BİRLİKTE gelişmektedir.
1. read - write (r = 0.597)
Orta düzeyde GÜÇLÜ ve pozitif ilişki vardır.
Öğrencilerin okuma ve yazma becerileri BİRLİKTE artmaktadır.
2. read - science (r = 0.630)
3. write - science (r = 0.570)
1. read - write (r = 0.597)
ORTA düzeyde pozitif bir ilişki var.
Okuma ve yazma becerileri → genellikle BİRLİKTE gelişiyor.
2. read - math (r = 0.662)
EN GÜÇLÜ korelasyon → bu çift arasında.
Okuma becerileri ile matematiksel başarı arasında YÜKSEK düzeyde pozitif ve manidar bir ilişki var.
3. write - math (r = 0.617)
attach(data_2)
cwrite <- c(scale(write, center=TRUE, scale=FALSE))
cmath <- c(scale(math, center=TRUE, scale=FALSE)) cormat <- cor(x = data_2_c[,c(2:5)])
ggcorrplot::ggcorrplot(corr = cormat,
type = "lower",
hc.order = TRUE,
show.diag = TRUE,
lab = TRUE,
lab_size = 3)1. math ile cross (r = 0.91)
Çok güçlü pozitif korelasyon.
cross, büyük olasılıkla bu testlerin ortalaması olduğundan, EN GÜÇLÜ katkıyı math sağlıyor olabilir.
Bu, matematik puanının genel akademik başarı için belirleyici olduğunu gösteriyor.
2. science ile math (r = 0.83)
Güçlü pozitif ilişki.
Fen ve matematik becerileri genellikle BİRLİKTE gelişiyor.
Bu, sayısal ve mantıksal düşünme yetilerinin paralelliğini yansıtır.
3. write ile diğer değişkenler:
write - cross: r = 0.89 → çok güçlü ve manidar ilişki.
write - math: r = 0.62
write - science: r = 0.57
cormat <- cor(x = data_2_c[,c(4,6:8)])
# Correlation matrix plot:
ggcorrplot::ggcorrplot(corr = cormat, # correlation matrix
type = "lower", # print only the lower part of the correlation matrix
hc.order = TRUE, # hierarchical clustering
show.diag = TRUE, # show the diagonal values of 1
lab = TRUE, # add correlation values as labels
lab_size = 3) # Size of the labels1. cwrite - science (r = 0.57) ve cwrite - cmath (r = 0.62)
Yazma becerisi ile fen ve matematik başarıları arasında orta düzeyde pozitif ve manidar korelasyonlar var.
Bu, yazılı anlatım becerilerinin, akademik başarıyı genel olarak desteklediğini gösterir.
2. science - cmath (r = 0.83)
Çok güçlü pozitif korelasyon.
Sayısal ve bilimsel becerilerin birbiriyle paralel geliştiğini ve ortak bilişsel temellere dayandığını gösterir.
3. cross_m değişkeni ve diğerleri:
cross_m ile cmath: r = 0.12
cross_m ile science: r = -0.03
cross_m ile cwrite: r = -0.12
## [1] 0.4507684
## [1] 0.4538552
Etkileşimli modelin → daha yüksek bir \(R^2\) değerine sahip olduğu açıktır.
Model seçimi için (daha) objektif bir ölçü → düzeltilmiş \(R^2\)’dir → modele dahil edilen değişken sayısı için bir düzeltme uyguladığından → yeni değişken herhangi bir yeni bilgi sağlamıyorsa veya tamamen ilgisizse → düzeltilmiş \(R^2\) ARTMAZ.
Etkileşim teriminin düzeltilmiş \(R^2\)’yi ne kadar değiştirdiği:
## [1] 0.4451925
## [1] 0.4454959
cross_tidy <- tidy(cross_model)
cross_tidy %>%
kable(digits = 3, col.names = c("Terim", "Katsayı", "Std. Hata", "t-değeri", "p-değeri"), caption = "Çapraz Etkileşimli Regresyon Modeli Sonuçları") %>%
kable_styling(full_width = FALSE, bootstrap_options = c("striped", "hover", "condensed"), position = "center")| Terim | Katsayı | Std. Hata | t-değeri | p-değeri |
|---|---|---|---|---|
| (Intercept) | 52.241 | 0.640 | 81.629 | 0.000 |
| cwrite | 0.287 | 0.072 | 3.957 | 0.000 |
| cmath | 0.495 | 0.073 | 6.756 | 0.000 |
| cwrite:cmath | -0.007 | 0.007 | -1.053 | 0.294 |
Sabit Terim (Intercept = 52.24)
cwrite ve cmath değerleri 0 olduğunda (yani ortalama etki yokken) → modelin tahmin ettiği genel başarı puanı yaklaşık 52.24’tür.
Bu sabit katsayı → istatistiksel olarak MANİDARdır (p < 0.001).
cwrite (Yazma Becerisi) Etkisi
Katsayı: 0.286 → Yazma becerisi 1 birim arttığında → genel başarı puanı ortalama 0.29 puan artar (diğer değişkenler SABİT iken).
p-değeri = 0.001 → Etki istatistiksel olarak MANİDARdır.
Bu, yazılı anlatım becerisinin → genel başarıya manidar katkı sağladığını gösterir.
cmath (Matematik Becerisi) Etkisi
Katsayı: 0.495 → Matematik becerisi 1 birim ARTTIğında → genel başarı yaklaşık 0.50 puan ARTAR.
p-değeri < 0.001 → Bu da istatistiksel olarak MANİDARdır.
Matematik başarısının → genel başarı üzerinde DAHA GÜÇLÜ bir etkisi vardır.
cwrite:cmath (Etkileşim Terimi)
Katsayı: -0.007, p = 0.294 → istatistiksel olarak anlamlı DEĞİL.
Bu etkileşim → yazma ve matematik becerilerinin BİRLİKTE etkisinin → genel başarıyı anlamlı şekilde DEĞİŞTİRMEDİĞİNİ gösteriyor.
Yani, yazma ve matematik etkileri → birbirinden BAĞIMSIZ çalışıyor gibi (etkileşim YOK).
library(dplyr)
data_2_c <- data_2_c %>% mutate(
cmath_kat = case_when(
cmath <= -15 ~ "dusuk",
cmath > -15 & cmath < 15 ~ "orta",
cmath >= 15 ~ "yuksek",
)
)
data_2_c <- data_2_c %>% arrange(cwrite)library(dplyr)
library(ggplot2)
data_2_c <- data_2_c %>% mutate(
cmath_kat = case_when(
cmath <= -15 ~ "dusuk",
cmath > -15 & cmath < 15 ~ "orta",
cmath >= 15 ~ "yuksek",
)
)
data_2_c %>% arrange(cwrite)ggplot(data_2_c, aes(x = cwrite, y = science, color = cmath_kat)) +
geom_smooth(method = "lm", se = FALSE, size = 1) +
labs(
x = "cwrite", y = "science", color = "math",
title = "Zorluklar ve Belirtiler Arasındaki İlişki (Math Düzeyine Göre)"
) +
scale_color_manual(values = c("dusuk" = "red", "orta" = "green", "yuksek" = "blue")) +
theme_minimal()Düşük Matematik Düzeyi (kırmızı çizgi)
Pozitif eğim → Yazma becerisi arttıkça fen başarısı da belirgin şekilde artıyor.
Bu → düşük matematik düzeyine sahip öğrencilerde yazılı anlatımın, fen başarısını önemli ölçüde desteklediğini gösteriyor.
Orta Matematik Düzeyi (yeşil çizgi)
Pozitif eğimli bir ilişki var.
Yazma becerileri geliştikçe fen başarısı artıyor ancak bu etki → düşük matematik düzeyine göre biraz daha zayıf gibi görünüyor (eğim daha yatık).
Yüksek Matematik Düzeyi (mavi çizgi)
Negatif eğim → Yazma becerisi arttıkça fen başarısı azalma eğiliminde görünüyor.
Bu, yüksek matematik becerisine sahip bireylerde yazılı ifade becerilerinin fen başarısına katkısının sınırlı veya farklı olabileceğini düşündürüyor.
Etkileşim etkisi mevcut → Matematik düzeyi, yazma ile fen başarısı arasındaki ilişkiyi değiştiriyor.
Eğitimsel açıdan bu çok önemli → Yazma becerileri, özellikle daha düşük matematik becerilerine sahip öğrencilerde fen başarılarını yükseltmek için önemli bir anahtar olabilir.
Yüksek matematik becerisine sahip öğrenciler için ise yazma becerisinin katkısı sınırlı olabilir → bu öğrenciler fen başarısını daha çok analitik yollarla geliştiriyor olabilir.
##
## Düzenleyici Etkisi
## ===================================================================
## Dependent variable:
## -----------------------------------------------
## science
## (1) (2)
## -------------------------------------------------------------------
## cwrite 0.306*** 0.287***
## (0.070) (0.072)
##
## cmath 0.476*** 0.495***
## (0.071) (0.073)
##
## cwrite:cmath -0.007
## (0.007)
##
## Constant 51.850*** 52.241***
## (0.521) (0.640)
##
## -------------------------------------------------------------------
## Observations 200 200
## R2 0.451 0.454
## Adjusted R2 0.445 0.445
## Residual Std. Error 7.375 (df = 197) 7.373 (df = 196)
## F Statistic 80.841*** (df = 2; 197) 54.293*** (df = 3; 196)
## ===================================================================
## Note: *p<0.1; **p<0.05; ***p<0.01
MODEL 1: Basit Etkiler Modeli
Hem cwrite (β = 0.306) hem de cmath (β = 0.476) değişkenlerinin science üzerinde → MANİDAR ve POZİTİF etkisi vardır.
Bu model, yazma ve matematik becerilerinin → BAĞIMSIZ etkilerini dikkate alır.
MODEL 2: Etkileşimli (Düzenleyici) Model
Ana etkiler (cwrite ve cmath) yine → MANİDAR ve POZİTİF.
Ancak cwrite:cmath etkileşimi (β = -0.007):
p = 0.294 → İstatistiksel olarak anlamlı DEĞİL.
Yani matematik düzeyine göre yazma ile fen başarısı arasındaki ilişki DEĞİŞMEMEKTEDİR.
Modelin açıklayıcılığı (Adjusted \(R^2\) = 0.445) önceki modelle AYNI kalmıştır.
Bu, etkileşim teriminin → modele ek bilgi KATMADIĞINI gösterir.
Etki büyüklüğünün incelenmesi de oldukça önemlidir.
cwrite (f² = 0.60)
BÜYÜK etki büyüklüğü.
Yazma becerisi → fen başarısı üzerinde ÇOK GÜÇLÜ bir yordayıcıdır.
Cohen’in sınırlarına göre bu, → “büyük” kategorinin de ötesinde çok büyük bir etki sayılabilir.
cmath (f² = 0.23)
ORTA düzeyde etki büyüklüğü.
Matematik becerisi de → fen başarısında MANİDAR ve GÜÇLÜ bir rol oynar.
Dikkate değer bir etkidir.
cwrite:cmath (f² = 0.00565)
Çok KÜÇÜK (ihmal edilebilir) etki büyüklüğü.
Yazma ile matematik arasındaki etkileşim → fen başarısına anlamlı bir katkı SAĞLAMAMAKtadır.
Bu → etkileşim teriminin → modelde yer almasına gerek OLMADIĞINI destekler.
library(rockchalk)
ps <- plotSlopes(cross_model, plotx="cwrite", modx="cmath", xlab = "Write", ylab = "science", modxVals = c("std.dev"))Tüm çizgiler pozitif eğimli → Yani yazma becerisi (cwrite) ARTTIKÇA → fen başarısı (science) ARTMAKTAdır.
Eğimler BİRBİRİNE ÇOK YAKIN:
DÜŞÜK cmath (siyah çizgi) → yazma ile fen arasında pozitif ama hafif ilişki.
ORTA cmath (mavi) → benzer şekilde pozitif eğim.
YÜKSEK cmath (yeşil) → eğim biraz daha fazla ama fark çok belirgin değil.
Çizgiler paralel gibi → Bu, cmath değişkeninin moderatör etkisinin istatistiksel olarak zayıf veya ANLAMSIZ olduğunu görsel olarak da destekler.
1. cwrite | others
Bu grafik, yazma becerisi (cwrite) ile fen başarısı (science) arasındaki ilişkiyi → diğer değişkenlerin (yani cmath ve cwrite:cmath) etkisi kontrol edildikten sonra gösterir.
Pozitif eğimli bir doğru çizilmiştir.
Bu, yazma becerisinin fen başarısına → manidar ve pozitif katkı sağladığını gösterir (önceki regresyon sonuçlarıyla tutarlı).
2.cmath | others
Bu grafik → matematik becerisi (cmath) ile fen başarısı arasındaki ilişkiyi → diğer değişkenlerin etkisinden ARINDIRILMIŞ olarak gösterir.
Yine pozitif eğim mevcut → Matematik becerisi fen başarısını → manidar şekilde artırmaktadır.
3. write:cmath | others
Bu grafik → yazma ve matematik etkileşiminin (cwrite × cmath) fen başarısına etkisini gösterir → diğer değişkenlerin etkisi kontrol edilmiştir.
Dikkat çeken bir eğim YOKtur, ve veri noktaları yatay eksen boyunca DAĞILMIŞTIR.
Bu, etkileşim teriminin → anlamlı bir katkı sağlaMAdığını görsel olarak destekler.
BAĞIMSIZ DEĞİŞKEN (X): “education” → 1971 yılındaki mesleki çalışanların ortalama eğitim durumu, yıl.
BAĞIMLI DEĞİŞKEN (Y): “income” → Görevdeki kişilerin 1971’deki ortalama geliri, dolar cinsinden.
DÜZENLEYİCİ DEĞİŞKEN (MODERATÖR): “women” → Görevdeki kadınların yüzdesi.
Ek açıklayıcı değişken: “prestige” → 1960’ların ortalarında yapılan bir toplumsal araştırmaya göre mesleğe göre Pineo-Porter prestij puanı.
ARAŞTIRMA: “Mesleki eğitim düzeyinin ortalama gelire etkisi, o meslekteki kadın oranına göre değişiyor mu?”
## education income women prestige
## Min. : 6.380 Min. : 611 Min. : 0.000 Min. :14.80
## 1st Qu.: 8.445 1st Qu.: 4106 1st Qu.: 3.592 1st Qu.:35.23
## Median :10.540 Median : 5930 Median :13.600 Median :43.60
## Mean :10.738 Mean : 6798 Mean :28.979 Mean :46.83
## 3rd Qu.:12.648 3rd Qu.: 8187 3rd Qu.:52.203 3rd Qu.:59.27
## Max. :15.970 Max. :25879 Max. :97.510 Max. :87.20
## census type
## Min. :1113 bc :44
## 1st Qu.:3120 prof:31
## Median :5135 wc :23
## Mean :5402 NA's: 4
## 3rd Qu.:8312
## Max. :9517
Moderasyon → düzenleyici değişken (Z) ile bağımsız değişken (X) arasında → anlamlı etkileşimler aranarak test edilebilir.
Özellikle, çoklu bağlantıyı azaltmak ve yorumlamayı kolaylaştırmak için → hem düzenleyici hem de bağımsız değişkeni merkezlemek gereklidir.
Merkezleme → bir değişkenin ortalamasını o değişkendeki her değerden ÇIKARARAK yapılabilir.
attach(prestige)
Xc <- c(scale(education, center = TRUE, scale = FALSE))
Zc <- c(scale(women, center = TRUE, scale = FALSE)) R’deki bir dizi paket, QuantPsyc paketinin moderate.lm() fonksiyonu ve pequod paketi de dahil olmak üzere → düzenleyici analizlerini yürütmek ve çizmek için de kullanılabilir.
Ancak, burada gösterildiği gibi bunu geleneksel çoklu regresyon kullanarak yapmak da kolaydır ve bu paketlerdeki temel analiz (düzenleyici ve bağımsız etkileşimi) bu yaklaşımla aynıdır.
Burada kullanılan rockchalk paketi → R’de bulunan birçok grafik ve çizim paketinden biridir ve özellikle regresyon analizlerinde kullanılmak üzere tasarlandığı için seçilmiştir.
## Estimate Std. Error t value Pr(>|t|)
## (Intercept) 6847.545199 275.069598 24.893864 3.674145e-44
## Xc 896.708603 103.136971 8.694347 8.193080e-14
## Zc -63.901211 8.706306 -7.339647 6.318227e-11
## Xc:Zc -9.364042 3.837708 -2.440009 1.648365e-02
library(broom)
tablo <- tidy(fitMod)
tablo %>%
kable(digits = 3,
col.names = c("Degisken", "Katsayi", "Std. Hata", "t-degeri", "p-degeri"), caption = "Etkilesimli Regresyon Modeli Sonuclari") %>%
kable_styling(full_width = FALSE, bootstrap_options = c("striped", "hover", "condensed"), position = "center")| Degisken | Katsayi | Std. Hata | t-degeri | p-degeri |
|---|---|---|---|---|
| (Intercept) | 6847.545 | 275.070 | 24.894 | 0.000 |
| Xc | 896.709 | 103.137 | 8.694 | 0.000 |
| Zc | -63.901 | 8.706 | -7.340 | 0.000 |
| Xc:Zc | -9.364 | 3.838 | -2.440 | 0.016 |
Xc (education) → gelir üzerinde MANİDAR ve POZİTİF bir etkiye sahiptir.
Zc (women) → gelir üzerinde MANİDAR ve NEGATİF bir etkiye sahiptir.
Xc:Zc etkileşim terimi → MANİDARdır (p = 0.016) → Bu, Zc’nin (kadın oranının) → Xc’nin (eğitim düzeyinin) gelir üzerindeki etkisini DÜZENLEDİĞİ (moderatör olduğu) anlamına gelir.
library(stargazer)
stargazer(fitMod, type="text", title = "Egitimin ve Kadin Oraninin Gelire Etkisi")##
## Egitimin ve Kadin Oraninin Gelire Etkisi
## ===============================================
## Dependent variable:
## ---------------------------
## income
## -----------------------------------------------
## Xc 896.709***
## (103.137)
##
## Zc -63.901***
## (8.706)
##
## Xc:Zc -9.364**
## (3.838)
##
## Constant 6,847.545***
## (275.070)
##
## -----------------------------------------------
## Observations 102
## R2 0.587
## Adjusted R2 0.574
## Residual Std. Error 2,770.457 (df = 98)
## F Statistic 46.409*** (df = 3; 98)
## ===============================================
## Note: *p<0.1; **p<0.05; ***p<0.01
Eğitim düzeyi arttıkça → gelir MANİDAR bir şekilde ARTAR.
Kadın çalışan oranı arttıkça → gelir MANİDAR bir şekilde AZALIR.
Eğitim ile kadın oranı arasındaki etkileşim → MANİDARdır (p = .017):
Mesleki eğitim düzeyinin gelire etkisi → o meslekteki kadın oranına BAĞLI olarak değişmektedir.
Kadın çalışan oranı arttıkça → eğitim kazancının getirisi azalmaktadır.
Bu durum → iş gücü piyasasındaki → potansiyel toplumsal cinsiyet eşitsizliğine işaret eder.
Eğitim düzeyinin (Xc) gelire etkisi ÇOK BÜYÜKtür (\(f^2\) = 0.81) → Eğitim, gelirin EN GÜÇLÜ belirleyicisidir.
Kadın oranı (Zc) da gelire BÜYÜK oranda etki eder (\(f^2\) = 0.55) → Bu da MANİDAR ve GÜÇLÜ bir yordayıcıdır.
Etkileşim (Xc:Zc) ise KÜÇÜK ama MANİDAR düzeyde katkı sağlar (\(f^2\) = 0.06) → Kadın oranı, eğitimin gelir üzerindeki etkisini bir miktar DEĞİŞTİRİYOR; bu etki büyük olmasa da ihmal edilebilir DEĞİLdir!.
Eğitim ve kadın oranı, geliri açıklamada AYRI AYRI GÜÇLÜ ETKİLER sunmaktadır.
rockchalk paketi → plotSlopes() fonksiyonu otomatik olarak ılımlı etkinin basit eğimlerini (ortalamanın 1 SD üstü ve 1 SD altı) çizecektir.
library(rockchalk)
ps <- plotSlopes(fitMod, plotx="Xc", modx="Zc", xlab = "education", ylab = "income", modxVals = "std.dev")Tüm çizgiler pozitif eğimli, yani eğitim düzeyi arttıkça → gelir de artıyor.
Ancak eğimin dikliği DEĞİŞİYOR:
Kadın oranı DÜŞÜK olduğunda (siyah çizgi), → eğitim-gelir ilişkisi EN GÜÇLÜ → Eğitim arttıkça → gelir en çok burada YÜKSELİyor.
Kadın oranı YÜKSEK olduğunda (yeşil çizgi), → eğitimin gelir üzerindeki etkisi ZAYIFLIyor → Eğim daha yatay.
Kadın oranı arttıkça → eğitim düzeyinin gelir üzerindeki → pozitif etkisi zayıflamaktadır.
SONUÇ: Bu, kadın oranının eğitim-gelir ilişkisini düzenlediğini (modere ettiğini) ve özellikle kadın oranı düşük mesleklerde → eğitimin getirisinin daha yüksek olduğunu göstermektedir.
Xc | others (education)
POZİTİF eğimli çizgi → Eğitim düzeyi arttıkça gelir de artar (diğer değişkenler SABİT iken).
Bu, eğitim düzeyinin gelire MANİDAR POZİTİF katkı sağladığını gösterir.
Zc | others (women)
NEGATİF eğimli çizgi → Kadın oranı arttıkça gelir azalır (diğer değişkenler SABİT iken).
Bu, kadın oranının gelir üzerinde MANİDAR ve NEGATİF bir etkisi olduğunu gösterir.
Xc:Zc | others (etkileşim)
Hafif NEGATİF eğim → Etkileşim terimi zayıf ama mevcut bir düzenleyici etki olduğunu gösteriyor.
Bu, kadın oranının eğitim-gelir ilişkisinin gücünü bir miktar azalttığını destekler.
Eğitim düzeyi ve kadın oranı, geliri bağımsız olarak anlamlı şekilde etkiler.
Düzenleyici değişken → mutlaka literatüre göre seçilmelidir.
Bağımlı değişkenin düzenleyici etkisinin olamayacağı açıklanmalıdır (çünkü matematiksel formül aynı)
Düzenleyici etki anlamlı çıktığında → bu etkileşim görselleştirilmeli, anlamlı ÇIKMAZ ise buna gerek duyulmamalı.
Merkezileştirme ve standartlaştırmaya gerek olmayabilir.
Örneklem büyüklüğü yeterli olmalı ve örneklemin evreni temsil gücü yüksek olmalıdır.
Düzenleyici değişken → sürekli ya da kategorik olabilir fakat sürekli değişkenin kategorik değişkene dönüştürülmesi pek tercih edilmemelidir (edilirse bir kesme değer, ortalama vb. ile belirlenmeli)
Bağımsız değişken → sürekli ya da kategorik olabilir.
anscombe_quartet veri setinin amacı → verilerinizi görselleştirmenin önemli olduğu noktasını vurgulamaya yardımcı olmaktır.
Francis Anscombe bu dört veri setini → istatistiksel özet ölçümlerin tek başına iki değişken (burada x ve y) arasındaki tam ilişkiyi yakalayamayacağını göstermek için oluşturmuştur.
Anscombe, özet istatistikleri hesaplamadan önce verileri görselleştirmenin önemini vurgulamıştır.
Veri seti 1 → x ve y arasında → DOĞRUSAL bir ilişkiye sahiptir
Veri Seti 2 → x ve y arasında → DOĞRUSAL OLMAYAN bir ilişki olduğunu göstermektedir
Veri seti 3 → x ve y arasında → TEK BİR AYKIRI DEĞER ile DOĞRUSAL bir ilişkiye sahiptir.
Veri seti 4 → etkili değer olarak işlev gören tek bir aykırı değer ile x ve y arasında hiçbir ilişki gösterMEMEktedir.
library(dplyr)
library(broom)
library(kableExtra)
colMeans(anscombe) %>%
enframe(name = "Degisken", value = "Ortalama") %>%
mutate(Ortalama = round(Ortalama, 2)) %>%
kable(caption = "Anscombe Veri Seti - Sutun Ortalamalari", col.names = c("Değişken", "Ortalama")) %>%
kable_styling(full_width = FALSE, bootstrap_options = c("striped", "hover"))| Değişken | Ortalama |
|---|---|
| x1 | 9.0 |
| x2 | 9.0 |
| x3 | 9.0 |
| x4 | 9.0 |
| y1 | 7.5 |
| y2 | 7.5 |
| y3 | 7.5 |
| y4 | 7.5 |
apply(anscombe, 2, sd) %>%
enframe(name = "Degisken", value = "Standart Sapma") %>%
mutate(`Standart Sapma` = round(`Standart Sapma`, 2)) %>%
kable(caption = "Anscombe Veri Seti - Sutun Standart Sapmalari", col.names = c("Degisken", "Standart Sapma")) %>%
kable_styling(full_width = FALSE, bootstrap_options = c("striped", "hover"))| Degisken | Standart Sapma |
|---|---|
| x1 | 3.32 |
| x2 | 3.32 |
| x3 | 3.32 |
| x4 | 3.32 |
| y1 | 2.03 |
| y2 | 2.03 |
| y3 | 2.03 |
| y4 | 2.03 |
cor_matrix <- cor(anscombe[, 1:4], anscombe[, 5:8])
cor_matrix %>%
as.data.frame() %>%
rownames_to_column("X_Veri") %>%
pivot_longer(-X_Veri, names_to = "Y_Veri", values_to = "Korelasyon") %>%
mutate(Korelasyon = round(Korelasyon, 2)) %>%
kable(caption = "Anscombe Veri Seti - X ve Y Degiskenleri Arasi Korelasyonlar", col.names = c("X Degiskeni", "Y Degiskeni", "Korelasyon")) %>%
kable_styling(full_width = FALSE, bootstrap_options = c("striped", "hover"))| X Degiskeni | Y Degiskeni | Korelasyon |
|---|---|---|
| x1 | y1 | 0.82 |
| x1 | y2 | 0.82 |
| x1 | y3 | 0.82 |
| x1 | y4 | -0.31 |
| x2 | y1 | 0.82 |
| x2 | y2 | 0.82 |
| x2 | y3 | 0.82 |
| x2 | y4 | -0.31 |
| x3 | y1 | 0.82 |
| x3 | y2 | 0.82 |
| x3 | y3 | 0.82 |
| x3 | y4 | -0.31 |
| x4 | y1 | -0.53 |
| x4 | y2 | -0.72 |
| x4 | y3 | -0.34 |
| x4 | y4 | 0.82 |
ff <- y ~ x
mods <- setNames(as.list(1:4), paste0("lm", 1:4))
for(i in 1:4) {
ff[2:3] <- lapply(paste0(c("y","x"), i), as.name)
mods[[i]] <- lmi <- lm(ff, data = anscombe)
print(anova(lmi))
}## Analysis of Variance Table
##
## Response: y1
## Df Sum Sq Mean Sq F value Pr(>F)
## x1 1 27.510 27.5100 17.99 0.00217 **
## Residuals 9 13.763 1.5292
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## Analysis of Variance Table
##
## Response: y2
## Df Sum Sq Mean Sq F value Pr(>F)
## x2 1 27.500 27.5000 17.966 0.002179 **
## Residuals 9 13.776 1.5307
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## Analysis of Variance Table
##
## Response: y3
## Df Sum Sq Mean Sq F value Pr(>F)
## x3 1 27.470 27.4700 17.972 0.002176 **
## Residuals 9 13.756 1.5285
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## Analysis of Variance Table
##
## Response: y4
## Df Sum Sq Mean Sq F value Pr(>F)
## x4 1 27.490 27.4900 18.003 0.002165 **
## Residuals 9 13.742 1.5269
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
anova_results <- lapply(1:4, function(i) {
model <- lm(anscombe[[paste0("y", i)]] ~ anscombe[[paste0("x", i)]])
anova_summary <- anova(model)
tibble(
Model = paste0("y", i, " ~ x", i),
F_value = round(anova_summary[1, "F value"], 2),
p_value = signif(anova_summary[1, "Pr(>F)"], 3),
Significance = case_when(
anova_summary[1, "Pr(>F)"] < 0.001 ~ "***",
anova_summary[1, "Pr(>F)"] < 0.01 ~ "**",
anova_summary[1, "Pr(>F)"] < 0.05 ~ "*",
anova_summary[1, "Pr(>F)"] < 0.1 ~ ".",
TRUE ~ ""
)
)
})
bind_rows(anova_results) %>%
kable(caption = "Anscombe Veri Seti – ANOVA Ozet Tablosu", col.names = c("Model", "F Degeri", "p-Degeri", "Anlamlilik")) %>%
kable_styling(full_width = FALSE, bootstrap_options = c("striped", "hover"))| Model | F Degeri | p-Degeri | Anlamlilik |
|---|---|---|---|
| y1 ~ x1 | 17.99 | 0.00217 | ** |
| y2 ~ x2 | 17.97 | 0.00218 | ** |
| y3 ~ x3 | 17.97 | 0.00218 | ** |
| y4 ~ x4 | 18.00 | 0.00216 | ** |
Veri setindeki dört ayrı regresyon modeli için (y1 ~ x1, y2 ~ x2, y3 ~ x3, y4 ~ x4) yapılan ANOVA analizine göre:
Tüm modellerde:
F değerleri ≈ 18
p-değerleri ≈ 0.0021
p < 0.01, bu da istatistiksel olarak → YÜKSEK düzeyde anlamlılık anlamına gelir.
Tüm modellerde x değişkenleri y değişkenlerini → MANİDAR biçimde açıklamaktadır.
## lm1 lm2 lm3 lm4
## (Intercept) 3.0000909 3.000909 3.0024545 3.0017273
## x1 0.5000909 0.500000 0.4997273 0.4999091
sapply(mods, coef) %>%
as.data.frame() %>%
rownames_to_column("Katsayi") %>%
kable(digits = 4,
caption = "Anscombe Regresyon Modellerinin Katsayilari", col.names = c("Katsayı", "lm1", "lm2", "lm3", "lm4")) %>%
kable_styling(full_width = FALSE, bootstrap_options = c("striped", "hover"))| Katsayı | lm1 | lm2 | lm3 | lm4 |
|---|---|---|---|---|
| (Intercept) | 3.0001 | 3.0009 | 3.0025 | 3.0017 |
| x1 | 0.5001 | 0.5000 | 0.4997 | 0.4999 |
Sabit terim (intercept) → tüm modellerde yaklaşık 3.00
Eğim katsayısı (x) → tüm modellerde yaklaşık 0.50
Bu, Anscombe’un amacını doğrular:
Yüzeysel olarak tüm regresyon modelleri → BENZER sonuçlar veriyor gibi görünse de → bu benzerlik grafiksel inceleme yapılmadan veri yapısını anlamanın YETERSİZ olduğunu gösterir.
library(tidyverse)
library(quartets)
ggplot(anscombe_quartet, aes(x = x, y = y)) +
geom_point() +
geom_smooth(method = "lm", formula = "y ~ x") +
facet_wrap(~dataset)Tüm alt kümelerde:
Ortalama x ve y değerleri, varyanslar, regresyon katsayıları ve korelasyonlar birbirine çok BENZERdir.
Ancak grafiksel dağılımları → dramatik şekilde FARKLILIK gösterir.
(1) Linear
Gerçekten düzgün dağılmış, pozitif lineer ilişki.
Regresyon varsayımlarına uygundur.
(2) Nonlinear
Veride EĞRİSELLİK vardır → lineer model uygun DEĞİLdir.
Regresyon çizgisi ilişkideki yapıyı iyi açıklamaz.
(3) Outlier
Veri genelde lineer → ancak tek bir UÇ DEĞER (outlier) modeli bozma potansiyeline sahiptir.
Bu nokta kaldırıldığında → model çok FARKLI olacaktır.
(4) Leverage
Tüm veri noktaları yatayda çok yoğun → ama tek bir uç nokta (yüksek leverage) regresyon çizgisini çeker.
Bu nokta modeli yapay olarak yönlendirmektedir.
Bu grafikler → sayısal özetler tek başına yeterli DEĞİLdir ilkesinin → çok güçlü bir örneğidir.
anscombe_quartet |>
group_by(dataset) |>
summarise(mean_x = mean(x),
sd_x = sd(x),
mean_y = mean(y),
sd_y = sd(y),
cor = cor(x, y)) |>
knitr::kable(digits = 2)| dataset | mean_x | sd_x | mean_y | sd_y | cor |
|---|---|---|---|---|---|
| (1) Linear | 9 | 3.32 | 7.5 | 2.03 | 0.82 |
| (2) Nonlinear | 9 | 3.32 | 7.5 | 2.03 | 0.82 |
| (3) Outlier | 9 | 3.32 | 7.5 | 2.03 | 0.82 |
| (4) Leverage | 9 | 3.32 | 7.5 | 2.03 | 0.82 |
library(tidyverse)
library(quartets)
library(knitr)
library(kableExtra)
anscombe_quartet %>%
group_by(dataset) %>%
summarise(
mean_x = mean(x),
sd_x = sd(x),
mean_y = mean(y),
sd_y = sd(y),
cor_xy = cor(x, y)
) %>%
mutate(across(where(is.numeric), ~round(., 2))) %>%
kable(caption = "Anscombe Dortlusu: Ozet İstatistikler",
col.names = c("Veri Seti", "Ortalama X", "SD X", "Ortalama Y", "SD Y", "Korelasyon"),
align = "c") %>%
kable_styling(full_width = FALSE, bootstrap_options = c("striped", "hover"))| Veri Seti | Ortalama X | SD X | Ortalama Y | SD Y | Korelasyon |
|---|---|---|---|---|---|
|
9 | 3.32 | 7.5 | 2.03 | 0.82 |
|
9 | 3.32 | 7.5 | 2.03 | 0.82 |
|
9 | 3.32 | 7.5 | 2.03 | 0.82 |
|
9 | 3.32 | 7.5 | 2.03 | 0.82 |
Tüm alt gruplar → aynı ortalamaya (mean), aynı standart sapmaya (sd) ve aynı korelasyon katsayısına (r ≈ 0.82) sahiptir.
Ancak görselle gösterdiği gibi → veri dağılımları tamamen FARKLIdır.
Bu tablo → sayısal özetlerin veri yapısını → her zaman tam AÇIKLAMADIĞINI kanıtlar.
Dört farklı veri seti → aynı istatistiksel özetlere sahip olsa bile, grafiksel olarak BİRBİRİNDEN ÇOK FARKLI desenler gösterebilir.
Causal Quartet, Anscombe’un Dörtlüsü’ne benzer şekilde, iki değişken arasındaki ilişkiyi görselleştirmenin önemini vurgulamak için oluşturulmuş bir veri setidir.
Ancak, Causal Quartet, değişkenler arasındaki nedensel ilişkileri incelemek için tasarlanmıştır.
Causal Quartet, dört farklı veri seti içerir ve her biri farklı bir nedensel ilişkiyi temsil eder. Bu veri setleri, değişkenler arasındaki ilişkilerin karmaşıklığını ve nedenselliğin önemini vurgulamak için kullanılır.
library(png)
library(grid)
img <- readPNG("C:/Users/User/Desktop/figure1.png")
grid::grid.raster(img)Bir hastane, COVID-19 ölüm oranını analiz ederken sadece hastaneye yatan hastaların verilerini kullanıyor.
Değişkenler:
X: COVID-19 şiddeti (hafif/şiddetli),
Y: Ölüm,
Z: Hastaneye yatış (Collider).
-Neden Sorun?:
Hem şiddetli COVID (X) hem de ölüm riski (Y), hastaneye yatış (Z) ile ilişkilidir.
Sadece hastanede yatanları analiz etmek, şiddetli vakalarda ölüm oranını olduğundan düşük gösterir (çünkü hafif vakalar hastaneye yatmamıştır).
Çözüm:
-Problem: Kahve tüketimi (X) ile akciğer kanseri (Y) arasında pozitif bir korelasyon bulunuyor.
Değişkenler:
X: Kahve tüketimi,
Y: Akciğer kanseri,
Z: Sigara içmek (Confounder).
Neden Sorun?:
Sigara içenler (Z) hem daha fazla kahve tüketir (X) hem de akciğer kanseri riski taşır (Y).
Kahve ve kanser arasında sahte bir ilişki oluşur.
Çözüm:
Problem: Egzersiz (X) ile kalp sağlığı (Y) arasındaki ilişkiyi inceleyen bir çalışma.
Değişkenler:
X: Egzersiz,
Z: Kilo kaybı (Mediator),
Y: Kalp hastalığı riski.
Analiz Seçenekleri:
Toplam Etki: Egzersizin kalp sağlığına tüm etkisi (kilo kaybı dahil).
Model: Y∼X (sonuç: egzersiz riski azaltır).
Doğrudan Etki: Egzersizin kilo kaybı haricindeki etkisi (örneğin, kas güçlenmesi).
Model: Y∼ X+Z (sonuç: egzersizin direkt etkisi sıfır çıkabilir).
Neden Önemli?:
Problem: Bir eğitim çalışmasında, sosyoekonomik statü (Z) için düzeltme yapılıyor, ancak bu değişken ölçülmeyen faktörlerden etkileniyor.
Değişkenler:
U1 : Ailenin eğitim geçmişi (ölçülmüyor),
U2 : Okulun kaynakları (ölçülmüyor),
Z: Ölçülen “aile geliri” (M-Bias kaynağı),
X: Eğitim programı,
Y: Test puanları.
Neden Sorun?:
Z (aile geliri), U1 ve U2 tarafından etkilenir.
Z için düzeltme yapmak, programın (X) etkisini olduğundan farklı gösterir.
Çözüm:
Collider: “Gözlemlediğiniz veri kümesi, bir seçilim yanlılığı içeriyor olabilir mi?”
Confounder: “İlişkinin arkasında gizli bir ortak neden var mı?”
Mediator: “Etkiyi hangi mekanizma üzerinden ölçmek istiyorum?”
M-Bias: “Düzeltme yaptığım değişken, ölçülmeyen faktörlerle bağlantılı mı?”
Bu örnekler, veri analizinde nedensel yapıyı anlamanın neden “istatistikten daha fazlası” gerektirdiğini gösterir.
library(tidyverse)
library(quartets)
ggplot(causal_quartet, aes(x = exposure, y = outcome)) +
geom_point() +
geom_smooth(method = "lm", formula = "y ~ x") +
facet_wrap(~dataset)(1) Collider: Ortak sonucu kontrol etmek ilişki yaratır — yanıltıcı ilişki (spurious).
(2) Confounder: Ortak neden kontrol edilmezse ilişki yanlış yönlenebilir (bias).
(3) Mediator: X → Z (aracı) → Y yapısı. Aracı değişken X ve Y arasındaki etkiyi taşır.
(4) M-Bias: Karıştırıcıyı kontrol etmek ters etki yaratabilir, ilişkiyi bozar.
Tüm grafiklerde regresyon çizgisi benzer görünse de, nedensel yapılar farklıdır.
causal_quartet |>
nest_by(dataset) |>
mutate(`Y ~ X` = round(coef(lm(outcome ~ exposure, data = data))[2], 2),
`Y ~ X + Z` = round(coef(lm(outcome ~ exposure + covariate, data = data))[2], 2),
`Correlation of X and Z` = round(cor(data$exposure, data$covariate), 2)) |>
select(-data, `Data generating mechanism` = dataset) |>
knitr::kable()| Data generating mechanism | Y ~ X | Y ~ X + Z | Correlation of X and Z |
|---|---|---|---|
| (1) Collider | 1 | 0.55 | 0.7 |
| (2) Confounder | 1 | 0.50 | 0.7 |
| (3) Mediator | 1 | 0.00 | 0.7 |
| (4) M-Bias | 1 | 0.88 | 0.7 |
causal_quartet %>%
nest_by(dataset) %>%
mutate(
`Y ~ X` = round(coef(lm(outcome ~ exposure, data = data))[2], 2),
`Y ~ X + Z` = round(coef(lm(outcome ~ exposure + covariate, data = data))[2], 2),
`Correlation of X and Z` = round(cor(data$exposure, data$covariate), 2)
) %>%
select(`Data generating mechanism` = dataset, `Y ~ X`, `Y ~ X + Z`, `Correlation of X and Z`) %>%
kable(caption = "Causal Quartet: Nedensel Yapilara gore Regresyon Katsayilari ve Korelasyonlar",
col.names = c("Yapı", "Y ~ X", "Y ~ X + Z", "X ve Z Arası Korelasyon"), align = "c") %>%
kable_styling(full_width = FALSE, bootstrap_options = c("striped", "hover"))| Yapı | Y ~ X | Y ~ X + Z | X ve Z Arası Korelasyon |
|---|---|---|---|
|
1 | 0.55 | 0.7 |
|
1 | 0.50 | 0.7 |
|
1 | 0.00 | 0.7 |
|
1 | 0.88 | 0.7 |
Tüm yapılarda X ile Z arasında yüksek korelasyon var (r = 0.70) → yapılar BENZER görünüyor.
Collider ve M-Bias modellerinde Z eklenince X’in etkisi kayboluyor (sıfıra düşüyor):
Confounder modelinde Z eklenince → X’in etkisi artıyor.
Mediator modelinde Z → X’in etkisinin bir kısmını açıklıyor.
Korelasyon aynı olsa bile → değişkenler arası nedensel ilişkiler FARKLI olduğunda regresyon sonuçları ciddi şekilde DEĞİŞEBİLİR.
Simpson Paradoksu → bir gruptaki iki değişken arasındaki ilişkinin → alt gruplara bölündüğünde ortaya çıktığı, kaybolduğu veya tersine döndüğü istatistiksel bir olgudur.
Paradoksu sergileyen vakalar matematik ve olasılık teorisi açısından problemsizdir → ancak yine de birçok insanı şaşırtmaktadır.
“Berkeley’deki California Üniversitesi’ne 1973 sonbaharında yapılan lisansüstü kabullere ilişkin toplu veriler incelendiğinde → kadın başvuru sahiplerine karşı açık ama yanıltıcı bir önyargı örüntüsü görülmektedir.
Veriler altı bölümden gelmektedir.
Elimizde başvuru sahibinin kadın mı erkek mi olduğu ve kabul edilip edilmediğine dair bilgiler var.
İlk olarak, kabul edilen erkeklerin yüzdesinin genel olarak kadınlardan gerçekten daha yüksek olup olmadığını değerlendireceğiz.
library(dsbox)
library(dplyr)
library(knitr)
library(kableExtra)
devtools::install_github("tidyverse/dsbox")
ucbadmit %>%
count(gender) %>%
kable(
caption = "UCB Basvurulari: Cinsiyete gore Dagilim",
col.names = c("Cinsiyet", "Basvuru Sayisi"),
align = "c"
) %>%
kable_styling(full_width = FALSE, bootstrap_options = c("striped", "hover"))| Cinsiyet | Basvuru Sayisi |
|---|---|
| Female | 1835 |
| Male | 2691 |
ucbadmit %>%
count(dept) %>%
kable(
caption = "UCB Basvurulari: Bolumu gore Dagilim",
col.names = c("Bolum", "Basvuru Sayisi"),
align = "c"
) %>%
kable_styling(full_width = FALSE, bootstrap_options = c("striped", "hover"))| Bolum | Basvuru Sayisi |
|---|---|
| A | 933 |
| B | 585 |
| C | 918 |
| D | 792 |
| E | 584 |
| F | 714 |
ucbadmit %>%
count(admit) %>%
kable(
caption = "UCB Basvurulari: Kabul Durumuna gore Dagilim",
col.names = c("Kabul Durumu", "Basvuru Sayisi"),
align = "c"
) %>%
kable_styling(full_width = FALSE, bootstrap_options = c("striped", "hover"))| Kabul Durumu | Basvuru Sayisi |
|---|---|
| Rejected | 2771 |
| Admitted | 1755 |
ucbadmit %>%
count(gender, admit) %>%
kable(
caption = "UCB Basvurulari: Cinsiyet ve Kabul Durumuna gore Dagilim",
col.names = c("Cinsiyet", "Kabul Durumu", "Basvuru Sayisi"),
align = "c"
) %>%
kable_styling(full_width = FALSE, bootstrap_options = c("striped", "hover"))| Cinsiyet | Kabul Durumu | Basvuru Sayisi |
|---|---|---|
| Female | Rejected | 1278 |
| Female | Admitted | 557 |
| Male | Rejected | 1493 |
| Male | Admitted | 1198 |
ucbadmit %>%
count(gender, admit) %>%
group_by(gender) %>%
mutate(prop_admit = round(n / sum(n), 3)) %>%
ungroup() %>%
kable(
caption = "UCB Basvurulari: Cinsiyete gore Kabul Orani",
col.names = c("Cinsiyet", "Kabul Durumu", "Basvuru Sayisi", "Oran"),
align = "c"
) %>%
kable_styling(full_width = FALSE, bootstrap_options = c("striped", "hover"))| Cinsiyet | Kabul Durumu | Basvuru Sayisi | Oran |
|---|---|---|---|
| Female | Rejected | 1278 | 0.696 |
| Female | Admitted | 557 | 0.304 |
| Male | Rejected | 1493 | 0.555 |
| Male | Admitted | 1198 | 0.445 |
ggplot(ucbadmit, aes(y = gender, fill = admit)) +
geom_bar(position = "fill", color = "white", width = 0.7) +
scale_fill_manual(
values = c("Admitted" = "#00CFC1", "Rejected" = "#FF6F61"),
name = "Kabul Durumu"
) +
labs(
title = "Cinsiyete gore Kabul Orani",
subtitle = "Barlar %100'e normalize edilmistir",
x = NULL,
y = NULL
) +
scale_x_continuous(labels = scales::percent_format()) +
theme_minimal(base_size = 14) +
theme(
plot.title = element_text(face = "bold", color = "#333333", size = 16),
plot.subtitle = element_text(color = "#666666"),
legend.position = "bottom",
legend.title = element_text(face = "bold"),
panel.grid.major.y = element_blank()
)ucbadmit %>%
count(dept, gender, admit) %>%
arrange(dept, gender, admit) %>%
kable(
caption = "UCB Basvurulari: Bolum, Cinsiyet ve Kabul Durumuna gore Dagilim",
col.names = c("Bolum", "Cinsiyet", "Kabul Durumu", "Basvuru Sayisi"),
align = "c"
) %>%
kable_styling(full_width = FALSE, bootstrap_options = c("striped", "hover", "condensed"))| Bolum | Cinsiyet | Kabul Durumu | Basvuru Sayisi |
|---|---|---|---|
| A | Female | Rejected | 19 |
| A | Female | Admitted | 89 |
| A | Male | Rejected | 313 |
| A | Male | Admitted | 512 |
| B | Female | Rejected | 8 |
| B | Female | Admitted | 17 |
| B | Male | Rejected | 207 |
| B | Male | Admitted | 353 |
| C | Female | Rejected | 391 |
| C | Female | Admitted | 202 |
| C | Male | Rejected | 205 |
| C | Male | Admitted | 120 |
| D | Female | Rejected | 244 |
| D | Female | Admitted | 131 |
| D | Male | Rejected | 279 |
| D | Male | Admitted | 138 |
| E | Female | Rejected | 299 |
| E | Female | Admitted | 94 |
| E | Male | Rejected | 138 |
| E | Male | Admitted | 53 |
| F | Female | Rejected | 317 |
| F | Female | Admitted | 24 |
| F | Male | Rejected | 351 |
| F | Male | Admitted | 22 |
ucbadmit %>%
count(dept, gender, admit) %>%
pivot_wider(names_from = dept, values_from = n) %>%
arrange(gender, admit) %>%
kable(
caption = "UCB Basvurulari: Cinsiyet ve Kabul Durumuna gore Bolum Bazinda Dagilim",
col.names = c("Cinsiyet", "Kabul Durumu", "A", "B", "C", "D", "E", "F"),
align = "c"
) %>%
kable_styling(full_width = TRUE, bootstrap_options = c("striped", "hover", "condensed"))| Cinsiyet | Kabul Durumu | A | B | C | D | E | F |
|---|---|---|---|---|---|---|---|
| Female | Rejected | 19 | 8 | 391 | 244 | 299 | 317 |
| Female | Admitted | 89 | 17 | 202 | 131 | 94 | 24 |
| Male | Rejected | 313 | 207 | 205 | 279 | 138 | 351 |
| Male | Admitted | 512 | 353 | 120 | 138 | 53 | 22 |
library(ggplot2)
library(dsbox)
library(scales)
ggplot(ucbadmit, aes(y = gender, fill = admit)) +
geom_bar(position = "fill", color = "white", width = 0.75) +
facet_wrap(~ dept, ncol = 3) +
scale_x_continuous(labels = label_percent()) +
scale_fill_manual(
values = c("Admitted" = "#00CFC1", "Rejected" = "#FF6F61"),
name = "Kabul Durumu"
) +
labs(
title = "Bolumlere ve Cinsiyete gore Kabul Oranlari",
subtitle = "Barlar %100'e normalize edilmistir (Admitted vs Rejected)",
x = NULL,
y = NULL
) +
theme_minimal(base_size = 13) +
theme(
plot.title = element_text(face = "bold", color = "#333333", size = 16),
plot.subtitle = element_text(color = "#666666", size = 12),
strip.text = element_text(face = "bold", size = 13, color = "#2C3E50"),
legend.position = "bottom",
legend.title = element_text(face = "bold"),
panel.grid.major.y = element_blank()
)ucbadmit %>%
count(dept, gender, admit) %>%
group_by(dept, gender) %>%
mutate(
n_applied = sum(n),
prop_admit = n / n_applied
) %>%
filter(admit == "Admitted") %>%
rename(n_admitted = n) %>%
select(-admit) %>%
mutate(prop_admit = round(prop_admit, 3)) %>%
kable(
caption = "UCB Basvurulari: Bolum ve Cinsiyete gore Basvuru Sayisi, Kabul Sayisi ve Orani",
col.names = c("Bolum", "Cinsiyet", "Kabul Sayisi", "Basvuru Sayisi", "Kabul Orani"),
align = "c"
) %>%
kable_styling(full_width = FALSE, bootstrap_options = c("striped", "hover", "condensed"))| Bolum | Cinsiyet | Kabul Sayisi | Basvuru Sayisi | Kabul Orani |
|---|---|---|---|---|
| A | Female | 89 | 108 | 0.824 |
| A | Male | 512 | 825 | 0.621 |
| B | Female | 17 | 25 | 0.680 |
| B | Male | 353 | 560 | 0.630 |
| C | Female | 202 | 593 | 0.341 |
| C | Male | 120 | 325 | 0.369 |
| D | Female | 131 | 375 | 0.349 |
| D | Male | 138 | 417 | 0.331 |
| E | Female | 94 | 393 | 0.239 |
| E | Male | 53 | 191 | 0.277 |
| F | Female | 24 | 341 | 0.070 |
| F | Male | 22 | 373 | 0.059 |
Tabloya bakıldığında kadın öğrenciler, üniversitenin en büyük 6 bölümünün 4’ünde erkek öğrencilere göre daha fazla kabul almıştır.
Yani A, B, D ve F bölümlerine kabul gören erkek sayısı kadın sayısına göre daha azdır.
Şöyle ki erkekler en fazla öğrenci kabul edilen bölüme başvuruyu daha fazla yaparken kız öğrenciler ise en az öğrenci kabul edilen bölüme daha fazla başvuru yapmıştır.
Bu sebeple grup yüzdeleri ile toplam yüzdeleri birbirinden FARKLILIK göstermektedir.
Simpson’s paradox
Bir ilişkiyi incelerken önemli bir değişkeni dikkate almamak Simpson paradoksu ile sonuçlanabilir.
Simpson paradoksu, açıklayıcı bir değişkenin ihmal edilmesinin, başka bir açıklayıcı değişken ile yanıt değişkeni arasındaki ilişkinin ölçüsü üzerinde yaratabileceği etkiyi göstermektedir.
Üçüncü bir değişkenin analize dahil edilmesi, diğer iki değişken arasındaki görünür ilişkiyi değiştirebilir