/* Genel yazı tipi ve sayfa ayarları */
body {
  font-family: 'Merriweather', 'Georgia', serif; /* Serif yazı tipi */
  font-size: 18px; /* Yazı boyutu biraz büyütüldü */
  background-color: #ffe6f0; /* Daha açık pembe arka plan */
  color: #4a1a1a; /* Koyu kırmızımsı kahverengi metin */
  line-height: 1.75; /* Satır aralığı biraz daha genişletildi */
  margin: 0;
  padding: 0 20px;
}
/* Başlıklar */
h1, h2, h3 {
  color: #d32f2f; /* Koyu kırmızı başlıklar */
  font-weight: bold;
  text-transform: uppercase;
  font-family: 'Open Sans', sans-serif; /* Başlıklara modern ve net sans-serif yazı tipi */
}
/* İçindekiler tablosu */
.tocify {
  background-color: #ffab91; /* Daha açık turuncu içindekiler tablosu */
  border-radius: 5px;
  padding: 10px;
  font-family: 'Open Sans', sans-serif;
}
/* Kod bloklarının (chunk) arka planı */
pre {
  background-color: #e6e0ff !important; /* Daha açık mor kod arka planı */
  color: #4b0082 !important; /* Koyu mor kod yazısı */
  padding: 12px;
  border-radius: 8px;
  font-family: 'Fira Code', 'Courier New', Courier, monospace;
  overflow-x: auto; /* Uzun kodlarda yatay kaydırma */
}
/* Inline kodlar */
code {
  background-color: #e6e0ff;
  color: #4b0082;
  padding: 3px 6px;
  border-radius: 4px;
}
/* Grafik ve görseller */
img, .figure {
  border: 2px solid #d32f2f; /* Kırmızı çerçeve */
  border-radius: 10px;
  padding: 5px;
  margin: 10px 0;
}

0.0.1 R KODLAR

library(dplyr)
library(psych)
library(ggplot2)
library(tidyr)
library(tidyverse)
library(EFAtools)
library(EFA.MRFA)
library(EFA.dimensions)
library(knitr)
library(data.table)
library(devtools)
library(DT)
library(EFAfactors)
library(foreign)
library(haven)
library(highr)
library(corrplot)
library(sur)
library(gtools)
library(irtoys)
library(kableExtra)
library(lattice)
library(latticeExtra)
library(plotly)
library(flextable)
library(purrr)

0.0.2 Veri Seti

USA <- read.csv("C:/Users/User/Desktop/USA_temiz.csv", header=T, sep=",")
head(USA)
USA <- USA %>% 
  mutate(IMMIG = ifelse(is.na(IMMIG), mean(IMMIG, na.rm=T), IMMIG)) %>% na.omit()

0.1 Çok Değişkenli Normallik Sayıltısı

  • Çok değişkenli normallik sayıltısının test edilmesi için → her bir değişken AYRI AYRI test edilir → HER BİR değişken normal dağılım gösteriyor ise → çok değişkenli normal oldukları varsayılır.

  • Normallğin 2 bileşeni: Çarpıklık ve Basıklık

    • Bir değişkene ait dağılım → normal olduğunda → değişkene ait çarpıklık ve basıklık katsayıları → sıfıra eşittir.

    • Değişkenin çarpıklık ve basıklık katsayıları →-1.00 ve +1.00 aralığında ise → değişkenin normale yakın olduğu yorumu yapılabilir.

  • Çarpıklık ve basıklık katsayıları sağlandıktan sonra → analizin artıkları (hataları) da → normal dağılır.

library(sur)
attach(USA)

skew(AGE)     # 0.058
## [1] 0.05834881
skew(GRADE)   # 0.470
## [1] 0.4698533
skew(IMMIG)   # 2.010
## [1] 2.010203
  • NOT: “attach()” fonksiyonu ile → veri seti, vektör olarak çalışma alanına açılabilir.
skew(IMMIG)                   # 2.010
## [1] 2.010203
se.skew(IMMIG)                # 0.062 
## [1] 0.06174097
skew.ratio(IMMIG)             # 32.559
## [1] 32.55865
skew(IMMIG)/se.skew(IMMIG)    # 32.559
## [1] 32.55865
  • “skew.ratio()” → çarpıklığın, çarpıklığın standart hatasına bölümü → ile elde edilen orandır.

    \[ skew.ratio = \frac{skew}{se.skew} = \frac{2.010}{0.062} = 32.559 \]

  • Moments paketinde“jarque.test()” fonksiyonu → “Veri normal dağılımdan farklılaşmamaktadır.” → yokluk hipotezisini test etmektedir.

    • Jarque-Bera testi, → bir veri kümesinin normal dağılıma uyup uymadığını anlamak için kullanılan bir istatistiksel testtir.

    • Test, çarpıklık (skewness) ve basıklık (kurtosis) değerlerini değerlendirerek → normal dağılıma uygunluğu test eder.

library(moments)
library(labelled)

jarque.test((remove_labels(IMMIG)))
## 
##  Jarque-Bera Normality Test
## 
## data:  (remove_labels(IMMIG))
## JB = 1770.3, p-value < 2.2e-16
## alternative hypothesis: greater
  • Elde edilen “Jarque-Bera Normality Test” sonucuna göre → p-değeri 0.05’ten çok daha KÜÇÜK olduğu için → H0 hipotezi reddedilir → IMMIG değişkeninin normal dağılıma UYMADIĞI anlamına gelir.

    • JB = 1770.3: Bu değer → test istatistiğini gösterir. Eğer bu değer YÜKSEK ise → normal dağılımdan önemli bir sapma olduğu anlamına gelir.
ggplot(data = USA, aes(sample = IMMIG)) +
  geom_qq() + 
  geom_qq_line()

0.2 Doğrusallık

  • Doğrusallık2 değişken arasında doğrusal bir ilişkinin olduğu sayıltısıdır.

  • 2 değişken arasındaki doğrusallık → 2 değişkenli saçılım grafiği incelenerek değerlendirilebilir.

    • Eğer 2 değişken de normal dağılıyor ve doğrusal olarak ilişkili ise → saçılım grafiği oval şeklindedir.

0.3 Varyansların Homojenliği

  • Varyansların homojenliği (homoscedasticty) → bağımlı değişken(ler)in → bağımsız değişken(ler)in aralığı boyunca AYNI DÜZEYDE VARYANSA sahip olduğu sayıltısıdır.

  • Varyansların heterojenliği → GRUPLANMIŞ veride daha önemlidir!

  • Varyans homojenliğini test etmek için → Box’s M test kullanılabilir.

  • Varyansların heterojenliği değişkenlerden birinin normal dağılım GÖSTERMEMESİNDEN veya bapımsız değişkendeli HATALI ÖLÇÜMLERden kaynaklanabilir.

pairs(USA[, 3:6])

0.4 Veri Dönüştürme

  • Veri dönüştürme işlemlerinden SONRA → sayıltılar TEKRAR kontrol edilmelidir!
DAĞILIM DÖNÜŞÜM
Orta düzeyde pozitif çarpık Karekök
Yüksek düzeyde pozitif çarpık Logaritma
Aşırı düzeyde pozitif çarpık Ters Çevirme
Orta düzeyde negatif çarpık Yansıtma ve karekök
Yüksek düzeyde negatif çarpık Yansıtma ve logaritma
Aşırı düzeyde negatif çarpık Yansıtma ve ters çevirme
  • ÖRNEK: IMMIG değişkeni üzerinde dönüşüm yapmak:
logIMMIG <- log(IMMIG+1)
describe(IMMIG)

0.5 Çoklu Bağlantı ve Tekillik

  • Çoklu bağlantı ve tekillik → BAĞIMSIZ değişkenler arasındaki → korelasyon ÇOK YÜKSEK olduğunda ortaya çıkan bir problemdir.
cor(USA[, 3:6]) %>%  kable(digit = 2)
AGE GRADE IMMIG LANGN
AGE 1.00 0.55 0.02 -0.02
GRADE 0.55 1.00 0.10 -0.02
IMMIG 0.02 0.10 1.00 0.07
LANGN -0.02 -0.02 0.07 1.00
cor_matrix <- cor(USA[, 3:6])
cor_matrix %>%
  round(2) %>%
  kbl(digits = 2, caption = "Tablo 1: USA Veri Seti Korelasyon Matrisi") %>%
  kable_styling(full_width = FALSE, position = "center", bootstrap_options = c("striped", "hover"))
Tablo 1: USA Veri Seti Korelasyon Matrisi
AGE GRADE IMMIG LANGN
AGE 1.00 0.55 0.02 -0.02
GRADE 0.55 1.00 0.10 -0.02
IMMIG 0.02 0.10 1.00 0.07
LANGN -0.02 -0.02 0.07 1.00
library(corrplot)
corrplot(cor(USA[,3:6]))

  • corrplot() fonksiyonu, → korelasyon matrisini → görselleştirir.

    • Renkli döngüler, kareler, gölgeler veya sayısal değerler kullanılarak → korelasyonlar gösterilir.

    • Genellikle Pozitif korelasyonlarmavi; negatif korelasyonlarkırmızı renkle gösterilir.

    • Korelasyon katsayılarının büyüklüğüne görerenklerin yoğunluğu ARTAR.

library(PerformanceAnalytics)
chart.Correlation(USA[, 3:6])

  • chart.Correlation() fonksiyonu → bir veri kümesindeki sayısal değişkenlerin korelasyon matrisini grafiksel olarak görselleştirir.

    • Dağılım grafikleri (scatter plots), korelasyon katsayıları ve yoğunluk grafikleri (density plots) bir arada gösterilir.
  • NOT: YÜKSEK korelasyon değerlerinin bulunMAMAsı → bağlantı problemi olmadığı anlamına GELMEZ!

    • Bağlantıilgili bağımsız değişken dışındaki diğer bağımsız değişkenlerden 2 veya daha fazlasının bir aradaki etkisinden kaynaklanabilir → bu durumda çoklu bağlantı söz konusudur.
library(corrplot)
library(ggcorrplot)
corrplot(cor(USA[, 3:6]))

ggcorrplot(cor(USA[,3:6]))

  • Daha Şık ve Özelleştirilebilir Grafikler için → ggcorrplot()

  • Hızlı ve Basit Görselleştirme için → corrplot()

corrplot(cor(USA[, 3:6]))

ggcorrplot(cor(USA[,3:6]))

cor_mat <- cor(USA[,3:6])
cor_pmat <- ggcorrplot::cor_pmat(x = USA[, 3:6])

ggcorrplot::ggcorrplot(cor_mat, lab=TRUE, lab_size = 6, p.mat = cor_pmat)

  • Yukarıdaki şekilde → anlamsız korelasyonların üzeri çizilmiştir.

  • Çoklu bağlantının belirlenmesinde → her bir değişken için SMC (squared multiple correlation, \(R^2\)) değeri incelenebilir.

    • \(R^2\) değeri → regresyon modelinde belli bir bağımsız değişkenin gözlenen varyansının → diğer bütün bağımsız değişkenler tarafından açıklanan miktarıdır.

    • \(R^2\) değeri → BAĞIMSIZ değişkenlerden birinin (ör. x1) bağımlı değişken, diğer BAĞIMSIZ değişkenlerin ise bağımsız değişken (ör. x2 ve x3 gibi) ele alındığı bir → regresyon modeli kurularak hesaplanmaktadır.

    • \(R^2\) değeri → YÜKSEK ise → değişken diğer değişkenler ile oldukça ilişkilidir ve YÜKSEK değerler → çoklu bağlantıya işarettir.

    • \(R^2\) değeri → 1’e eşit ise → değişken diğer değişkenler ile mükemmel derecede ilişkilidir ve → bu değer → teklliğe işarettir.

  • Çoklu bağlantının belirlenmesinde → her bir değişken için → tolerans (tolerance) (\(1- R^2\)) değeri → incelenebilir.

    • Bu değer belli bir bağımsız değişkenin gözlenen varyansının → modeldeki diğer bağımsız değişkenler tarafından AÇIKLANMAYAN miktarıdır.

    • Tolerans değerinin YÜKSEK olması gerekir.

    • DAHA DÜŞÜK tolerans değerleri → DAHA YÜKSEK derecede çoklu bağlantı anlamına gelir.

    • Tolerans değeri için önerilen kesme değeri0.10’dur. → Bu değer → bir bağımsız değişken ve diğer bağımsız değişkenler arasında 0.95 değerinde → bir çoklu korelasyona karşılık gelir.

  • Çoklu bağlantının belirlenmesinde → her bir değişken için VIF değeri incelenebilir.

    • VIF değeritolerans değerinin tersi alınarak hesaplanabilir. → \(1/(1 - R^2)\)

    • ÖRNEK: X1 değişkeninin tolerans değeri = 0.75 ise;

      • VIF değeri = 1.33 olur.

      • VIF değerinin kareköküçoklu bağlantıdan kaynaklı standart hatanın ARTMA derecesini yansıtır.

    • VIF değerininkesme değeri0.10’dur. → Standart hatalar → HİÇ çoklu bağlantı bulunmayan duruma oran ile → 3 kattan daha FAZLA ARTACAKtır.

model <- lm(CNTSTUID ~ AGE + GRADE + IMMIG + MISCED + FISCED,
            data = USA)
library(olsrr)
ols_vif_tol  <- ols_vif_tol(model) 
ols_vif_tol <- ols_vif_tol %>%
  mutate(VIF = round(VIF, 2),
         Tolerance = round(Tolerance, 2))
ols_vif_tol %>%
  kbl(digits = 2, caption = "Tablo 2: MODEL") %>%
  kable_styling(full_width = FALSE, position = "center", bootstrap_options = c("striped", "hover"))
Tablo 2: MODEL
Variables Tolerance VIF
AGE 0.70 1.43
GRADE 0.69 1.45
IMMIG 0.92 1.08
MISCED 0.65 1.55
FISCED 0.68 1.48
library(car)
vif(model)
##      AGE    GRADE    IMMIG   MISCED   FISCED 
## 1.433251 1.446827 1.083993 1.549587 1.479112
  • Çoklu bağlantı problemi belirlenirse:

    • İlk olarak → çoklu bağlantıya neden olan değişkenlerden EN AZ birisi analizden çıkarılır.

    • Diğer seçenek → çoklu bağlantıya neden olan değişkenlere ait değerlerintoplanması veya ortalamasının alınmasıdır.

    • Üçüncü seçenek → temel bileşenlerin hesaplanıp → analizlerde temel bileşenlerin kullanılmasıdır.

library(ggpubr)
ggqqplot(USA, x= "MISCED")

ggboxplot(USA, x = "FISCED", y = "MISCED")

library(mctest)
mctest(model)
## 
## Call:
## omcdiag(mod = mod, Inter = TRUE, detr = detr, red = red, conf = conf, 
##     theil = theil, cn = cn)
## 
## 
## Overall Multicollinearity Diagnostics
## 
##                        MC Results detection
## Determinant |X'X|:         0.4365         0
## Farrar Chi-Square:      1299.2385         1
## Red Indicator:             0.2686         0
## Sum of Lambda Inverse:     6.9928         0
## Theil's Method:            1.3575         1
## Condition Number:        204.1227         1
## 
## 1 --> COLLINEARITY is detected by the test 
## 0 --> COLLINEARITY is not detected by the test
  • mctest() fonksiyonu → ile → çoklu bağlantı (Multicollinearity) testi

  • Determinant |X’X| (0.4732) değeri → güvenli bir değerde → ciddi bir problem işareti değil.

  • Farrar Chi-Square (1173.0663) → çok YÜKSEK bir değerde ve → ÇOKLU BAĞLANTI olduğu anlamına gelir.

  • Red Indicator (0.3227) değeri → 0.5’in altında olduğu için → problem yok.

  • Sum of Lambda Inverse (5.8151) → uygun bir değerde.

  • Theil’s Method (1.2411) → biraz problem işaret edebilir ama çok ciddi değil.

  • Condition Number (184.5026) → çok YÜKSEKtir → ve → ciddi bir ÇOKLU BAĞLANTI problemine işaret eder.

library(mctest)
mctest(model, type= "i")
## 
## Call:
## imcdiag(mod = mod, method = method, corr = FALSE, vif = vif, 
##     tol = tol, conf = conf, cvif = cvif, ind1 = ind1, ind2 = ind2, 
##     leamer = leamer, all = all)
## 
## 
## All Individual Multicollinearity Diagnostics Result
## 
##           VIF    TOL       Wi       Fi Leamer   CVIF Klein   IND1   IND2
## AGE    1.4333 0.6977 169.6179 226.3016 0.8353 1.4346     1 0.0018 1.1055
## GRADE  1.4468 0.6912 174.9328 233.3927 0.8314 1.4482     1 0.0018 1.1294
## IMMIG  1.0840 0.9225  32.8834  43.8725 0.9605 1.0850     1 0.0024 0.2834
## MISCED 1.5496 0.6453 215.1634 287.0677 0.8033 1.5510     1 0.0016 1.2971
## FISCED 1.4791 0.6761 187.5725 250.2563 0.8222 1.4805     1 0.0017 1.1846
## 
## 1 --> COLLINEARITY is detected by the test 
## 0 --> COLLINEARITY is not detected by the test
## 
## AGE , GRADE , IMMIG , MISCED , FISCED , coefficient(s) are non-significant may be due to multicollinearity
## 
## R-square of y on all x: 0.0024 
## 
## * use method argument to check which regressors may be the reason of collinearity
## ===================================
  • VIF → Variance Inflation Factor → Değer 5’ten KÜÇÜK ise çoklu bağlantı problemi YOKtur.

  • TOL → Tolerance → 1/VIF olarak hesaplanır. Değerin 0.1’in ÜZERİNDE olması iyi bir işarettir.

  • Wi → Determinant of Correlation Matrix → Değişkenler arasındaki ilişkiyi gösterir.

  • Fi Leamer → Leamer Test Statistic → Değerin YÜKSEK olması → çoklu bağlantı olduğuna işarettir.

  • CVIF → Centered Variance Inflation Factor → VIF’in normalize edilmiş versiyonudur. 1’e YAKIN olması iyidir.

  • Klein → Klein’s Rule of Thumb → Eğer Klein değeri 0.5’ten BÜYÜK ise çoklu bağlantı olabilir.

  • IND1 → Indicator 1 (Genel) → Eğer 1 ise çoklu bağlantı vardır.

  • IND2 → Indicator 2 (Özelleştirilmiş) → Eğer 1’e YAKIN ise çoklu bağlantı olabilir.

library(performance)
check_collinearity(model)
  • Term → Analiz edilen değişkenin adı.

  • VIF (Variance Inflation Factor) → Değişkenin çoklu bağlantı seviyesini gösterir. 5’in ALTINDA olması genelde güvenli kabul edilir.

  • VIF %95 CI → VIF değerinin %95 güven aralığı. Eğer güven aralığı genişse, modelde değişkenler arasında değişkenlik olabilir.

  • Increased SE → “Standart hata artış oranı”. YÜKSEK değerler, çoklu bağlantı nedeni ile tahminlerin hassasiyetinin AZALDIĞINI gösterir.

  • Tolerance\(1 / VIF\) olarak hesaplanır. Değerin 0.1’in ÜZERİNDE olması iyidir. DÜŞÜK değerler → çoklu bağlantı göstergesidir.

  • Tolerance %95 CI → Tolerance değerinin %95 güven aralığı.

data <- data.frame(
  Term = c("AGE", "GRADE", "MISCED", "FISCED"),
  VIF = c(1.43, 1.43, 1.48, 1.48),
  `VIF 95% CI` = c("[1.35, 1.53]", "[1.34, 1.53]", "[1.39, 1.59]", "[1.39, 1.59]"),
  `Increased SE` = c(1.20, 1.19, 1.22, 1.22),
  Tolerance = c(0.70, 0.70, 0.68, 0.68),
  `Tolerance 95% CI` = c("[0.65, 0.74]", "[0.65, 0.74]", "[0.63, 0.72]", "[0.63, 0.72]"))
data %>%
  kbl(caption = "Tablo 3: Coklu Baglanti", 
      digits = 2, 
      booktabs = TRUE, 
      align = "c") %>%
  kable_styling(full_width = FALSE, position = "center") %>%
  add_header_above(c(" " = 1, "Variance Inflation Factor (VIF)" = 3, "Tolerance" = 2))
Tablo 3: Coklu Baglanti
Variance Inflation Factor (VIF)
Tolerance
Term VIF VIF.95..CI Increased.SE Tolerance Tolerance.95..CI
AGE 1.43 [1.35, 1.53] 1.20 0.70 [0.65, 0.74]
GRADE 1.43 [1.34, 1.53] 1.19 0.70 [0.65, 0.74]
MISCED 1.48 [1.39, 1.59] 1.22 0.68 [0.63, 0.72]
FISCED 1.48 [1.39, 1.59] 1.22 0.68 [0.63, 0.72]
  • eigprop() fonksiyonu → mctest paketine ait bir fonksiyondur.

    • Bu fonksiyon → regresyon modelinde kullanılan değişkenlerin korelasyon matrisine ait özdeğerler (eigenvalues) ve bu özdeğerlerin katkı oranlarını (proportion) hesaplar.

    • $ci → Fonksiyonun çıktısındaki → Condition Index (CI) değerlerini → döndürür.

eigprop(model)$ci
## [1]   1.000000   2.320892   5.423303   9.941963  11.748810 204.122705
eigprop(model)
## 
## Call:
## eigprop(mod = model)
## 
##   Eigenvalues       CI (Intercept)    AGE  GRADE  IMMIG MISCED FISCED
## 1      4.8503   1.0000      0.0000 0.0000 0.0034 0.0047 0.0021 0.0026
## 2      0.9005   2.3209      0.0000 0.0000 0.6887 0.0002 0.0005 0.0005
## 3      0.1649   5.4233      0.0000 0.0000 0.0068 0.4828 0.0616 0.0657
## 4      0.0491   9.9420      0.0010 0.0011 0.0003 0.3347 0.0019 0.5564
## 5      0.0351  11.7488      0.0004 0.0005 0.0000 0.1708 0.9291 0.3745
## 6      0.0001 204.1227      0.9985 0.9985 0.3009 0.0069 0.0048 0.0002
## 
## ===============================
## Row 6==> AGE, proportion 0.998451 >= 0.50 
## Row 2==> GRADE, proportion 0.688675 >= 0.50 
## Row 5==> MISCED, proportion 0.929080 >= 0.50 
## Row 4==> FISCED, proportion 0.556415 >= 0.50
  • Eigenvalues (Özdeğerler):

    • 5 adet özdeğer hesaplanmıştır.

    • Çok KÜÇÜK ÖZDEĞERLER (0.0001) modelde → çoklu bağlantı sorununun olduğunu gösterebilir.

  • CI (Condition Index):

    • CI değeri 30’un ÜZERİNDE olduğunda → ciddi çoklu bağlantı sorunu olduğu anlamına gelir.

      • Burada, 5. satırdaki CI değeri: 184.5026 → bu ciddi bir sorun olduğuna işaret eder.
  • Değişkenlerin Etkisi:

    • Özellikle Intercept, AGE, ve GRADE değişkenleri, → 5. satırdaki CI değerine YÜKSEK ORANDA katkı yapıyor (0.9992, 0.9992, 0.2964).

    • Çoklu bağlantı nedeniyle → bu değişkenler modelde güvenilir sonuçlar verMEyebilir.

  • Proportion Değerleri:

    • Eşik değeri >= 0.50 olarak kabul edilir.

    • Modelde her bir değişkenin hangi satırda etkilendiği belirtilmiştir.

eig_data <- data.frame(
  Eigenvalues = c(3.9902, 0.8994, 0.0724, 0.0380, 0.0001),
  CI = c(1.0000, 2.1063, 7.4244, 10.2501, 184.5026),
  Intercept = c(0.0000, 0.0000, 0.0008, 0.0000, 0.9992),
  AGE = c(0.0000, 0.0000, 0.0008, 0.0000, 0.9992),
  GRADE = c(0.0053, 0.6955, 0.0024, 0.0005, 0.2964),
  MISCED = c(0.0034, 0.0006, 0.1296, 0.8636, 0.0028),
  FISCED = c(0.0038, 0.0007, 0.3047, 0.6906, 0.0002))
eig_data %>% kbl(caption = "Tablo 4: Eigenvalues ve Condition Indexes", 
      digits = 4, 
      booktabs = TRUE, 
      align = "c") %>%
  kable_styling(full_width = FALSE, position = "center")
Tablo 4: Eigenvalues ve Condition Indexes
Eigenvalues CI Intercept AGE GRADE MISCED FISCED
3.9902 1.0000 0.0000 0.0000 0.0053 0.0034 0.0038
0.8994 2.1063 0.0000 0.0000 0.6955 0.0006 0.0007
0.0724 7.4244 0.0008 0.0008 0.0024 0.1296 0.3047
0.0380 10.2501 0.0000 0.0000 0.0005 0.8636 0.6906
0.0001 184.5026 0.9992 0.9992 0.2964 0.0028 0.0002

1 ÇOKLU REGRESYON

  • Çoklu regresyon, → basit regresyonun → tek bir bağımlı değişkenin iki veya daha fazla yordayıcısına izin veren uzantısıdır.

    • Diğer bir ifade ile → çoklu regresyon tek bir bağımlı değişken ile iki veya daha fazla bağımsız (yordayıcı) değişken arasındaki ilişkinin analiz edilmesi için kullanılan → istatistiksel bir yöntemdir.
  • Çoklu regresyonun amacıdeğerleri bilinen bağımsız değişkenleri kullanarak bağımlı değişkenin değerini yordamaktır.

    • Regresyon yöntemiyle bağımsız değişkenlerden en fazla yordamayı sağlamak üzere her bağımsız değişken ağırlıklandırılır.

    • Ağırlıklar → bağımsız değişkenin yordamaya bağıl katkısını ifade eder ve → her bir değişkenin yordamadaki etkisine ilişkin yorumlamayı kolaylaştırır.

  • Çoklu regresyon → hem bağımlı değişken hem de bağımsız değişkenler EN AZ EŞİT ARALIKLI ÖLÇEK düzeyinde ölçüldüğünde kullanılmalıdır.

    • Ancak bağımsız değişkenler SINIFLAMA veya SIRALAMA ölçeğinde ölçüldüğünde ilgili değişkenler belli koşullar altında analize dahil edilebilir.
  • Çoklu regresyon → her bir bağımsız değişkendeki değişikliklerin bağımlı değişkendeki değişikliklerle ne ölçüde ilişkili olduğunu kestirir.

    • Ancak bağımsız değişkenler arasındaki korelasyon → YORMADA SÜRECİNİ zorlaştırır.
knitr::include_graphics("C:/Users/User/Desktop/gorsel1.png")

  • Örneğin;

    • X1 ve Y arasındaki korelasyon katsayısı 0.40

    • X2 ile Y arasındaki korelasyon katsayısı 0.50

    • X1 ve X2 arasındaki korelasyon katsayısı SIFIR ise

    • Y’nin varyansının iki değişken tarafından açıklanan toplam oranı iki değişkenin Y ile korelasyonlarının kareleri toplamında elde edilir:

    \((0.40)^2 + (0.50)^2 = 0.16 + 0.25 = 0.41\)

knitr::include_graphics("C:/Users/User/Desktop/gorsel2.png")

  • Ancak, uygulamada çoğunlukla X1 ve X2 birlikte değişim gösterirler ve → iki değişkenin Y ile korelasyonlarının kareleri toplamı → ÇOK YÜKSEK bir oran verir.

    • Bunun nedeni, 2 bağımsız değişkenin aralarındaki korelasyonlardan dolayı her bir bağımsız değişken tarafından açıklanan Y varyansının bir kısmının ÜST ÜSTE gelmesidir.

    • Çoklu regresyonun en önemli özelliği → modele eklenen bağımsız değişkenler arasındaki ilişkileri → kontrol altına almasıdır.

1.1 Çoklu Regresyon “cateris paribus”

  • Modeldeki bağımsız değişkenler arasındaki ilişkilerin kontrol altına alınması, → modeldeki bir değişkenin bağımlı değişken üzerindeki etkisini incelerken, → modeldeki diğer bütün degiskenlerin SABİT tutulmasıdır.

    • Örnegin, bir çalışmada kahve tüketiminin ölüm oranını nasıl etkilediği çalışılmıştır.
  • Başta, sonuçlar daha YÜKSEK kahve tüketiminin daha YÜKSEK ölüm riskiyle ilişkili oldugunu gostermistir. Ancak kahve içen çogu → kişi sigara da içmektedir.

    • Araştırmacılar modellerine → sigara içme alışkanlıkları için bir değişken eklediklerinde, → sigara içmenin ölüm riskini arttırırken, → kahve tüketiminin ölüm riskini azalttığını bulmuşlardır.
  • Bu durumda modele bütün önemli degişkenlerin eklenmesi gerekmektedir. Önemli değişkenlerin modelin dışında bırakılması, katsayılara ilişkin kestirimlerin → yanlı olmasina neden olabilmektedir.


1.2 Çoklu Regresyon

1.2.1 Örnek: Performansın Yordanması

  • Öğrencilerin matematikteki performans düzeylerini, motivasyon ve kaygı düzeylerinden yordamak ile ilgilendiğimizi düşünelim.

  • Bu araştırma sorusuna cevap vermek için çoklu regresyon uygun bir istatistiksel analiz yöntemdir.

    \[ Y_{performans_i} = b_0 + b_1 X_{motivasyon_i} + b_2 X_{kaygı_i} + e_i \]

    \[ \hat{Y}_{performans_i} = b_0 + b_1 X_{motivasyon_i} + b_2 X_{kaygı_i} \]

  • Burada b1 ve b2 motivasyon ve kaygı yordayıcıları için ağırlıklardır.

    • Diğer bir ifadeyle → regresyon katsayılarıdır veya eğimlerdir.

    • b0 kesişimdir.

1.3 Çoklu Regresyonda Kestirim Yöntemi

  • Amaç hata puanlarının (artiklarin) kareleri toplamının KÜÇÜLECEĞİ, → diğer bir ifade ile → Y ve yordanan Y arasındaki korelasyonun BÜYÜYECEĞİ, → b0, b1 ve b2 değerleri için tek bir çözüm kümesi bulmaktır.

  • Grafiğin sadeleştirilmesi için bir bağımsız değişken kullanılmıştır.

knitr::include_graphics("C:/Users/User/Desktop/grafik1.png")

  • Tek bir çözüm bulmak için kullanılan yöntem → Sıradan En Küçük Kareler Yöntemi (Ordinary Least Squares Procedure) olarak adlandırılır.

1.3.1 Veri Seti Revizyonu

  • new_USA isimli bir veri seti oluşturarak analizlere devam edilmiştir. USA veri setinin içerisine 4 sürekli değişken eklenmiştir.
n <- nrow(USA)

set.seed(123) 
new_data <- data.frame(
  var1 = rnorm(n, mean = 50, sd = 10),  
  var2 = runif(n, min = 0, max = 100),
  var3 = rnorm(n, mean = 100, sd = 20), 
  var4 = rexp(n, rate = 0.1)          
)

new_USA <- cbind(USA, new_data)
head(new_USA)
desc_data <- psych::describe(new_USA)

desc_data %>%
  round(3) %>%  
  kbl(caption = "Tablo 5: new_USA Veri Seti Betimsel Istatistikleri", 
      digits = 3, 
      booktabs = TRUE) %>%
  kable_styling(full_width = FALSE, 
                position = "center", 
                bootstrap_options = c("striped", "hover", "condensed"))
Tablo 5: new_USA Veri Seti Betimsel Istatistikleri
vars n mean sd median trimmed mad min max range skew kurtosis se
CNT* 1 1571 1.000 0.000 1.000 1.000 0.000 1.0000e+00 1.000 0.000 NaN NaN 0.000
CNTSTUID 2 1571 84004109.321 2352.236 84004153.000 84004116.648 2978.543 8.4000e+07 84008157.000 8153.000 -0.022 -1.191 59.346
AGE 3 1571 15.828 0.290 15.830 15.825 0.371 1.5330e+01 16.330 1.000 0.058 -1.170 0.007
GRADE 4 1571 0.134 0.461 0.000 0.100 0.000 -2.0000e+00 2.000 4.000 0.469 1.376 0.012
IMMIG 5 1571 1.239 0.491 1.000 1.134 0.000 1.0000e+00 3.000 2.000 2.008 3.291 0.012
LANGN 6 1571 316.203 124.008 313.000 308.379 0.000 1.5600e+02 859.000 703.000 3.204 12.532 3.129
REPEAT 7 1571 0.047 0.212 0.000 0.000 0.000 0.0000e+00 1.000 1.000 4.271 16.255 0.005
MISSSC 8 1571 0.046 0.209 0.000 0.000 0.000 0.0000e+00 1.000 1.000 4.340 16.842 0.005
SKIPPING 9 1571 0.351 0.478 0.000 0.314 0.000 0.0000e+00 1.000 1.000 0.622 -1.614 0.012
TARDYSD 10 1571 0.509 0.691 0.000 0.386 0.000 0.0000e+00 2.000 2.000 1.003 -0.285 0.017
EXERPRAC 11 1571 4.745 3.493 5.000 4.681 4.448 0.0000e+00 10.000 10.000 0.191 -1.175 0.088
STUDYHMW 12 1571 4.959 2.955 5.000 4.936 2.965 0.0000e+00 10.000 10.000 0.149 -0.796 0.075
WORKPAY 13 1571 1.282 2.444 0.000 0.663 0.000 0.0000e+00 10.000 10.000 2.163 4.075 0.062
WORKHOME 14 1571 4.122 3.474 4.000 3.903 4.448 0.0000e+00 10.000 10.000 0.431 -1.087 0.088
EXPECEDU 15 1571 7.073 1.722 7.000 7.252 1.483 2.0000e+00 9.000 7.000 -0.904 -0.065 0.043
MATHPREF 16 1571 0.169 0.375 0.000 0.087 0.000 0.0000e+00 1.000 1.000 1.762 1.105 0.009
MATHEASE 17 1571 0.125 0.331 0.000 0.032 0.000 0.0000e+00 1.000 1.000 2.260 3.110 0.008
MATHMOT 18 1571 0.026 0.159 0.000 0.000 0.000 0.0000e+00 1.000 1.000 5.939 33.298 0.004
DURECEC 19 1571 2.266 0.986 2.000 2.171 1.483 0.0000e+00 6.000 6.000 0.751 0.687 0.025
SISCO 20 1571 0.835 0.371 1.000 0.919 0.000 0.0000e+00 1.000 1.000 -1.805 1.258 0.009
MISCED 21 1571 7.170 2.162 8.000 7.383 1.483 1.0000e+00 10.000 9.000 -0.855 0.014 0.055
FISCED 22 1571 6.751 2.187 7.000 6.920 2.965 1.0000e+00 10.000 9.000 -0.493 -0.576 0.055
HISCED 23 1571 7.622 1.979 8.000 7.811 1.483 1.0000e+00 10.000 9.000 -0.997 0.342 0.050
PAREDINT 24 1571 14.624 2.338 16.000 15.062 0.000 3.0000e+00 16.000 13.000 -1.929 4.211 0.059
BMMJ1 25 1571 53.028 22.296 59.180 53.948 24.092 1.1560e+01 88.700 77.140 -0.395 -1.242 0.563
BFMJ2 26 1571 48.516 23.290 51.500 48.377 34.070 1.1010e+01 88.960 77.950 0.015 -1.489 0.588
HISEI 27 1571 60.865 19.965 68.700 62.675 15.760 1.1560e+01 88.960 77.400 -0.759 -0.646 0.504
ICTRES 28 1571 0.336 0.864 0.334 0.324 0.799 -2.5500e+00 4.174 6.724 0.269 0.729 0.022
HOMEPOS 29 1571 0.331 0.851 0.310 0.318 0.828 -2.5960e+00 4.911 7.508 0.190 0.495 0.021
ESCS 30 1571 0.342 0.887 0.527 0.418 0.815 -3.3280e+00 2.626 5.954 -0.861 0.677 0.022
FCFMLRTY 31 1571 7.181 4.478 7.000 7.075 4.448 0.0000e+00 16.000 16.000 0.102 -0.724 0.113
ICTAVSCH 32 1571 6.683 0.910 7.000 6.889 0.000 0.0000e+00 7.000 7.000 -4.726 27.136 0.023
ICTHOME 33 1571 0.095 0.824 0.335 0.327 0.000 -6.3290e+00 0.346 6.675 -4.587 25.246 0.021
ICTAVHOM 34 1571 5.796 0.717 6.000 5.975 0.000 0.0000e+00 6.000 6.000 -5.145 31.388 0.018
var1 35 1571 50.249 9.848 50.315 50.214 9.678 2.1902e+01 83.904 62.001 0.049 -0.029 0.248
var2 36 1571 49.629 28.863 49.982 49.649 36.798 7.0000e-03 99.994 99.988 -0.004 -1.201 0.728
var3 37 1571 99.735 19.304 99.610 99.741 18.834 3.7069e+01 156.782 119.713 -0.018 0.015 0.487
var4 38 1571 10.045 10.024 7.028 8.325 7.176 8.0000e-03 71.970 71.962 1.847 4.385 0.253

1.3.2 Korelasyon Değerleri ve Anlamlılığı

library(broom)
cor.test( ~ var1 + var2, data = new_USA)
## 
##  Pearson's product-moment correlation
## 
## data:  var1 and var2
## t = -0.93734, df = 1569, p-value = 0.3487
## alternative hypothesis: true correlation is not equal to 0
## 95 percent confidence interval:
##  -0.07302789  0.02582925
## sample estimates:
##         cor 
## -0.02365715
  • t (t-istatistiği) → -0.9374 → Değişkenler arasındaki ilişkinin anlamlı olup olmadığını test eder.

    • NEGATİF değer, → negatif ilişkiyi işaret eder. Ancak buradaki değer çok küçük.
  • df (Serbestlik derecesi) → 1569 → Testin gücünü belirler. Bu, iki değişkenin örnek sayısına göre belirlenir.

  • p-value (Anlamlılık Düzeyi) → 0.3487 → Genellikle 0.05’ten KÜÇÜK ise ilişki anlamlı kabul edilir. Bu durumda ilişki anlamlı DEĞİL.

  • Alternative Hypothesis (Alternatif Hipotez) → İki değişken arasında anlamlı bir ilişki olduğunu varsayar.

  • Confidence Interval (Güven Aralığı) → -0.0730, 0.0258 → Gerçek korelasyon katsayısının bu aralıkta olma olasılığı %95’tir. Bu aralık 0’ı içerdiği için ilişki anlamlı DEĞİLdir.

  • Sample Estimates (Örnek Korelasyon Katsayısı) → cor = -0.0237 → İki değişken arasındaki ilişki zayıf ve negatif.

library(broom)
cor_1 <- cor.test( ~ var1 + var2, data = new_USA)

tablo6 <- tidy(cor_1) 
tablo6 <- tablo6 %>%
  mutate(across(where(is.numeric), round, 3))

tablo6 %>% 
  kbl(caption = "Tablo 6: Korelasyon Testi Sonuclari", 
      booktabs = TRUE) %>%
  kable_styling(full_width = FALSE, 
                position = "center", 
                bootstrap_options = c("striped", "hover", "condensed"))
Tablo 6: Korelasyon Testi Sonuclari
estimate statistic p.value parameter conf.low conf.high method alternative
-0.024 -0.937 0.349 1569 -0.073 0.026 Pearson’s product-moment correlation two.sided
cor_2 <- cor.test( ~ var1 + var3, data = new_USA)

tablo7 <- tidy(cor_2) 
tablo7 <- tablo7 %>%
  mutate(across(where(is.numeric), round, 3))

tablo7 %>% 
  kbl(caption = "Tablo 7", 
      booktabs = TRUE) %>%
  kable_styling(full_width = FALSE, 
                position = "center", 
                bootstrap_options = c("striped", "hover", "condensed"))
Tablo 7
estimate statistic p.value parameter conf.low conf.high method alternative
0.016 0.645 0.519 1569 -0.033 0.066 Pearson’s product-moment correlation two.sided
cor_3 <- cor.test( ~ var2 + var4, data = new_USA)

tablo8 <- tidy(cor_3)[,c(1,3)]
tablo8 <- tablo8 %>%
  mutate(across(where(is.numeric), round, 3))

tablo8 %>% 
  kbl(caption = "Tablo 8", 
      booktabs = TRUE) %>%
  kable_styling(full_width = FALSE, 
                position = "center", 
                bootstrap_options = c("striped", "hover", "condensed"))
Tablo 8
estimate p.value
0.02 0.419
cor_4 <- cor.test( ~ var2 + var4, data = new_USA)
tablo9 <- tidy(cor_4)[,c(1,4)]

tablo9 <- tablo9 %>%
  mutate(across(where(is.numeric), round, 3))

tablo9 %>% 
  kbl(caption = "Tablo 9", 
      booktabs = TRUE) %>%
  kable_styling(full_width = FALSE, 
                position = "center", 
                bootstrap_options = c("striped", "hover", "condensed"))
Tablo 9
estimate parameter
0.02 1569
library(GGally)
ggpairs(new_USA[,35:37])

library(scatterplot3d)

scatterplot3d(new_USA[, 35:37],
              pch = 16,
              color= "steelblue",
              angle =75)

scatterplot3d(new_USA[, 35:37],
              pch = 16, color= "steelblue",
              angle =75,
              box = FALSE, type = "h")

library(rgl)

plot3d(new_USA$var1, new_USA$var2, new_USA$var3,
       xlab = "var1", ylab = "var2",
       zlab = "var3",
       type = "s", size = 1.5,
       col = "red")

rglwidget()