/* 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;
}

1 R KODLAR

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)

2 Kategorik Bağımsız Değişken ile Çoklu Regresyon

  • Regresyon modellerinde → “BAĞIMSIZ DEĞİŞKENLER” → sürekli ya da kategorik olabilir.

    • Kategorik değişkenleri → regresyon analizine dahil etmek için → dummy (yapay) değişkenler oluşturulur.
  • Dummy kodlama ile → kategorik değişkenin üzerinesayısal değerler ATANAKARAdummy 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 edenk-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şkene0 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şkene0 değeri verilir.

  • Böyle bir kodlama ile oluşturulan → her bir DUMMY DEĞİŞKEN → 2 düzeye sahiptir: 1 ve 0


2.1 VERİ SETİ

data <- read.csv("https://stats.idre.ucla.edu/stat/data/hsb2.csv")
head(data)
  • 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:

describe_df <- psych::describe(data)
describe_df[] <- lapply(describe_df, function(x) {
  if (is.numeric(x)) round(x, 3) else x})
DT::datatable(describe_df, caption = "Veri Seti Icin Tanımlayıcı Istatistikler")

3 DUMMY DEĞİŞKEN

  • İnternetten alınan veri seti ile Dummy değişken oluşturmak:
data$Dum1 <- as.numeric(data$race== 2)
data$Dum2 <- as.numeric(data$race== 3)
data$Dum3 <- as.numeric(data$race== 4)
head(data)
table(data$Dum1)
## 
##   0   1 
## 189  11
table(data$Dum2)
## 
##   0   1 
## 180  20
table(data$Dum3)
## 
##   0   1 
##  55 145
model_dummy <- lm(read ~ Dum1 + Dum2 , 
                  data = data)
model_dummy
## 
## 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

    • Dum2 = 1 olan bireyler → referans grubuna göre → ortalama 6.09 puan → daha DÜŞÜK read puanına sahiptir.
  • SONUÇ: Dum2 değişkeninin → Dum1’e kıyasla daha GÜÇLÜ bir ETKİye sahip olduğunu gösteriyor.

library(broom)
tidy(model_dummy)
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"))
Regresyon Modeli Sonuclari
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.

data$Medeni <- ifelse(data$Dum1 == 1, "Evli",
                      ifelse(data$Dum2 == 1, "Bekar", "Diger"))
head(data)
table(data$Medeni)
## 
## Bekar Diger  Evli 
##    20   169    11
model_2 <- lm(read ~ Medeni, 
                  data = data)
library(broom)
tidy(model_2)
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"))
Regresyon Modeli Sonuclari
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.


4 Çoklu Regresyonda İki - Yönlü Etkileşim Etkisi

  • 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 etkisidü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.

    • X1 değişkeninin → X2 değişkeninin herhangi bir değerindeki → toplam etkisi aşağıdaki eşitlikle hesaplanabilir:

\[ b_{toplam} = b_1 + b_3 X_2 \]


data_2 <- data[, c("read", "write", "math", "science")]
head(data_2)
library(GGally)
ggpairs(data_2[,-1])

  • Üç 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.

ggpairs(data_2[,-2])

  • 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.

ggpairs(data_2[,-3])

  • 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)

    • Okuma becerileri ile fen başarısı arasında da → MANİDAR ve orta-üst düzeyde bir ilişki vardır.
  • 3. write - science (r = 0.570)

    • Yazma ve fen başarıları da → MANİDAR bir ilişki göstermektedir.
ggpairs(data_2[,-4])

  • 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)

    • Yazma ve matematik başarıları arasında → orta-üst düzey pozitif ilişki mevcut.

attach(data_2)

cwrite    <- c(scale(write, center=TRUE, scale=FALSE)) 
cmath    <- c(scale(math, center=TRUE, scale=FALSE)) 
data_2_c <- data.frame(cbind(data_2, cross = write*math, 
                                cwrite, cmath, cross_m = cwrite*cmath))
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 labels

  • 1. 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


attach(data_2)
n_model <- lm(science  ~ cwrite  + cmath)
cross_model <- lm(science  ~ cwrite  + cmath + cwrite*cmath)
  • Etkileşim teriminin açıklanan varyansı ne kadar değiştirdiği:
glance(n_model)$r.squared
## [1] 0.4507684
glance(cross_model)$r.squared
## [1] 0.4538552
  • Etkileşimli modelin → daha yüksek bir \(R^2\) değerine sahip olduğu açıktır.

    • Bununla birlikte birden fazla açıklayıcı değişkene sahip modellerde → model seçimi için \(R^2\) iyi bir fikir değildir → çünkü herhangi bir değişken moda eklendiğinde \(R^2\) artar.
  • 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.

    • Bu da → düzeltilmiş \(R^2\) → çoklu regresyon modellerinde → model seçimi için tercih edilebilir bir metriktir.
  • Etkileşim teriminin düzeltilmiş \(R^2\)’yi ne kadar değiştirdiği:

glance(n_model)$adj.r.squared
## [1] 0.4451925
glance(cross_model)$adj.r.squared
## [1] 0.4454959
  • \(R^2\) değeri yaklaşık 0.45 olup belirtilerdeki varyansın yaklaşık %45’ini doğrusal regresyon modeli tarafından açıklandığı anlamına gelmektedir.
tidy(cross_model)
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")
Çapraz Etkileşimli Regresyon Modeli Sonuçları
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.


5 ETKİLEŞİM ETKİSİ

  • Etkileşim etkisini → strargazer paketi ile göstermek.
library(stargazer)
stargazer(n_model, cross_model, type = "text", title = "Düzenleyici Etkisi")
## 
## 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.

    • Düzenleyicilik etki analizini hesaplamada genellikle Cohen \(f^2\) kullanılır ve küçük, orta, büyük olarak değerlendirmede .005, .01, .025 kesme değerleri kullanılır (Aguinis vd., 2015; Kenny, 2018)
library(effectsize)
cohens_f_squared(cross_model)
  • 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.

library(car)
avPlots(cross_model)

  • 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.


6 DÜZENLEYİCİLİK ANALİZİ - II

library(carData)
data("Prestige")    
prestige <- Prestige
head(prestige)
  • 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?”

summary(prestige)
##    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.

attach(prestige)
fitMod <- lm(income ~ Xc + Zc + Xc * Zc) 
coef(summary(fitMod))
##                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")
Etkilesimli Regresyon Modeli Sonuclari
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):

    • Kadın oranı yükseldikçe → eğitimin gelir üzerindeki olumlu etkisi ZAYIFLAmaktadır.
  • 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.

cohens_f_squared(fitMod)
  • 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.

    • Aralarındaki etkileşim ise KÜÇÜK ama MANİDAR bir katkı sağlar; bu da kadın oranının, eğitimin gelir üzerindeki etkisini bir ölçüde DÜZENLEDİĞİNİ göstermektedir.
  • rockchalk paketiplotSlopes() 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.

library(car)
avPlots(fitMod)

  • 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.

    • SONUÇ: Kadın oranı arttıkça eğitim düzeyinin gelir üzerindeki etkisi azalır – yani kadın oranı, bu ilişkiyi düzenleyen bir değişkendir (moderatör).

6.1 HOCADAN ÖNEMLİ NOTLAR:

  • 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ı.

    • Hatta bu değişken modelden bile çıkarılıp → SADECE regresyon analizi yapılabilir.
  • Merkezileştirme ve standartlaştırmaya gerek olmayabilir.

    • Zaten bu işlemler etkileşim etkisi üzerinde herhangi bir değişime neden olmaz.
  • Örneklem büyüklüğü yeterli olmalı ve örneklemin evreni temsil gücü yüksek olmalıdır.

  • Düzenleyici değişkensü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şkensürekli ya da kategorik olabilir.

    • Bağımlı değişken → de aynı şekilde fakat kategorik olduğundalojistik regresyon veya probit regresyon ile hesaplama yapılmalıdır.

7 Anscombe’un Dörtlüsü

  • 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(datasets)
datasets::anscombe
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"))
Anscombe Veri Seti - Sutun Ortalamalari
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
  • Değişkenlerin standart sapmaları:
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"))
Anscombe Veri Seti - Sutun Standart Sapmalari
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
  • Değişkenler arası korelasyonlar:
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"))
Anscombe Veri Seti - X ve Y Degiskenleri Arasi Korelasyonlar
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
  • Regresyon denklemleri:
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"))
Anscombe Veri Seti – ANOVA Ozet Tablosu
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:

    • Her bir modelde → bağımsız değişken (x), bağımlı değişken (y) üzerinde → MANİDAR bir etkiye sahiptir.
  • 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.

    • Bu, Anscombe’un amacına uygun olarak — farklı veri desenlerine sahip olsalar da — aynı özet istatistikleri (ortalama, varyans, korelasyon ve regresyon katsayıları) verebildiklerini gösterir.
sapply(mods, coef)
##                   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"))
Anscombe Regresyon Modellerinin Katsayilari
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

    • Dört farklı veri setinde → regresyon denklemlerinin neredeyse AYNI olduğunu gösterir.
  • Bu, Anscombe’un amacını doğrular:

    • Farklı veri desenleri → aynı özet istatistikleri (ortalama, varyans, korelasyon, regresyon katsayıları) verebilir.
  • 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.

    • Regresyon analizi yaparken MUTLAKA → grafiksel veri incelemesi de yapılmalıdır.
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"))
Anscombe Dortlusu: Ozet İstatistikler
Veri Seti Ortalama X SD X Ortalama Y SD Y Korelasyon
  1. Linear
9 3.32 7.5 2.03 0.82
  1. Nonlinear
9 3.32 7.5 2.03 0.82
  1. Outlier
9 3.32 7.5 2.03 0.82
  1. Leverage
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.

    • Bu, veriyi → daima GÖRSELLEŞTİREREK incelemenin → önemini vurgular.

8 Causal Quartet

  • 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)

8.1 Collider (Çarpıştırıcı) Örneği Problem:

  • 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:

    • Collider için düzeltme yapılmamalı (tüm popülasyon verisi kullanılmalı).

8.2 Confounder (Karıştırıcı) Örneği

-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:

    • Sigara içme durumu (Z) için düzeltme yapılmalı.

8.3 Mediator (Aracı Değişken) Örneği

  • 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?:

    • Kilo kaybını (Z) düzeltirseniz, egzersizin farklı mekanizmalarını izole edersiniz.

8.4 M-Bias (M-Yanılgısı) Örneği

  • 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:

    • M-Bias’tan kaçınmak için önemli confounder’ları doğrudan ölçmeye çalışın (örneğin, okul kaynakları).

8.5 Özetle:

  • 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.

    • Bu, yalnızca istatistiksel ilişkiyi görmekle yetinmenin yanıltıcı olabileceğini, neden–sonuç ilişkilerini doğru anlamak için neden teorisine (causal inference) dikkat edilmesi gerektiğini gösterir.
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"))
Causal Quartet: Nedensel Yapilara gore Regresyon Katsayilari ve Korelasyonlar
Yapı Y ~ X Y ~ X + Z X ve Z Arası Korelasyon
  1. Collider
1 0.55 0.7
  1. Confounder
1 0.50 0.7
  1. Mediator
1 0.00 0.7
  1. M-Bias
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):

    • Z değişkenini modele dahil etmek YANILTICI olabilir.
  • Confounder modelinde Z eklenince → X’in etkisi artıyor.

    • Z burada gerçekten → AÇIKLAYICI (DÜZENLEYİCİ) rol oynar.
  • Mediator modelinde Z → X’in etkisinin bir kısmını açıklıyor.

    • Dolaylı etkiyi ayıklıyor → doğrudan etkisi azalıyor.
  • Korelasyon aynı olsa bile → değişkenler arası nedensel ilişkiler FARKLI olduğunda regresyon sonuçları ciddi şekilde DEĞİŞEBİLİR.

    • Bu, istatistiksel modellemede → nedensel yapıyı anlamanın önemini güçlü biçimde gösterir.

9 Simpson Paradoxu

  • 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.

    • Örneğin, iki değişken bir grupta pozitif ilişkili olabilir, ancak tüm alt gruplarda bağımsız veya hatta NEGATİF ilişkili olabilir.
  • Paradoksu sergileyen vakalar matematik ve olasılık teorisi açısından problemsizdir → ancak yine de birçok insanı şaşırtmaktadır.

9.1 Berkeley’deki cinsiyete dayalı kabul oranları:

  • “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.

    • Gizlilik için bunlara A-F olarak kodlanmıştır.
  • 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.

    • Daha sonra, her bölüm için aynı yüzdeyi hesaplayacağız.
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"))
UCB Basvurulari: Cinsiyete gore Dagilim
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"))
UCB Basvurulari: Bolumu gore Dagilim
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"))
UCB Basvurulari: Kabul Durumuna gore Dagilim
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"))
UCB Basvurulari: Cinsiyet ve Kabul Durumuna gore Dagilim
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"))
UCB Basvurulari: Cinsiyete gore Kabul Orani
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"))
UCB Basvurulari: Bolum, Cinsiyet ve Kabul Durumuna gore Dagilim
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"))
UCB Basvurulari: Cinsiyet ve Kabul Durumuna gore Bolum Bazinda Dagilim
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"))
UCB Basvurulari: Bolum ve Cinsiyete gore Basvuru Sayisi, Kabul Sayisi ve Orani
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