Bu çalışma çoklu regresyon analizi konusunu tekrar etmek için Howell’ın (2013) görüşleri doğrultusunda hazırladığım ders notundan ibarettir. Bu notta önce kuramsal temellere değinilip daha sonra uygulama örneği yapılacaktır.
Basit regresyonda yalnızca bir yordayıcı kullanılırken (Y = bX + a), çoklu regresyonda birden fazla yordayıcı aynı anda modele dahil edilir (Y = b₀ + b₁X₁ + b₂X₂ + … + bₚXₚ). Bu geçişin en büyük katkısı, gerçek hayattaki olayların çoğunlukla tek bir nedene indirgenemeyeceğini kabul etmemizi sağlamasıdır. Örneğin, bir öğrencinin başarısı sadece zekâya veya bir ülkenin SAT puanları sadece eğitim harcamasına bağlı değildir. Ayrıca, Howell’ın da vurguladığı gibi, çoklu regresyonun temel amacı çoğu zaman tahmin yapmak değil, değişkenler arasındaki ilişkileri anlamaktır.
Basit regresyon ise aslında çoklu regresyonun sadece tek yordayıcı içeren özel bir durumudur (p=1).
Regresyon denkleminde Y, açıklamaya çalıştığımız bağımlı değişkeni; X’ler, modele aldığımız yordayıcı (bağımsız) değişkenleri; b₀ ise tüm X’ler sıfır olduğunda Y’nin alacağı değeri gösteren kesim noktasını ifade eder. b₁, b₂ gibi katsayılar ise her bir yordayıcının, diğerleri sabit tutulduğunda Y üzerindeki etkisini ölçer. Katsayılar genellikle b harfiyle gösterilir; bazı kaynaklarda a olarak da geçebilir.
b₀, regresyon doğrusunun Y eksenini kestiği noktadır ve tüm yordayıcılar sıfırken Y’nin değerini gösterir. Ancak pratikte bu durumun gerçek hayatta anlamı yoktur. Yine de b₀, modelin tahminlerinin ortalamasını gözlenen Y değerlerinin ortalamasına eşitlemek için gereklidir.
Çoklu regresyonda bir yordayıcının etkisini izole etmek için diğer değişkenlerin etkisi sabit tutulur ya da “kontrol edilir”. Bunu yapmak, örneğin öğrenci oranı aynı olan gruplar içinde eğitim harcaması ile SAT arasındaki ilişkiye bakmak gibidir. Uygulamada bu işlem, matematiksel olarak artık skorlarla (residuals) gerçekleştirilir: Her değişken diğerlerine göre arındırılır ve kalan “saf” ilişki incelenir.
Kısmi regresyon katsayısı, belirli bir yordayıcının etkisini diğer tüm yordayıcıların etkisi kontrol edildikten sonra gösterir. Basit korelasyon ise iki değişken arasındaki ham ilişkiyi ölçer. Üç önemli fark şunlardır:
Kısmi regresyon diğer değişkenlerin etkisinden arındırılmış ilişkiyi verir, korelasyon ise ham ilişkiyi.
Korelasyon -1 ile +1 arasında standart bir değerdir; regresyon katsayıları ise değişkenin ölçü birimindedir.
Bir değişkenin korelasyon işareti ile çoklu regresyondaki katsayısının işareti farklı olabilir.
Regresyon katsayıları, modelin tahmin ettiği değerlerle gerçek değerler arasındaki farkların karelerinin toplamı (Σ(Y−Ŷ)²) en küçük olacak şekilde belirlenir. Hatalar kareye alındığı için büyük hatalar daha fazla cezalandırılır. Ayrıca, Howell bazı durumlarda “Dirençli Regresyon” gibi alternatif yöntemlerin de kullanılabileceğini belirtir.
Ham katsayı (b), bir yordayıcı değişkende (X) bir birimlik artış olduğunda, diğer tüm değişkenler sabit tutulduğunda, bağımlı değişkende (Y) ne kadar değişim olacağını gösterir. Örneğin, Howell’ın analizinde eğitim harcamasının katsayısı b = 11.129’dur. Yani, LogPctSAT sabitken, eğitim harcamasında bir birimlik artış SAT puanında ortalama 11.129 puanlık artışa yol açar. Ancak burada dikkat edilmesi gereken önemli bir nokta var: b katsayısı, değişkenin orijinal ölçüm birimine bağlıdır. Yani, farklı birimlerle ölçülen iki değişkenin b katsayılarını doğrudan karşılaştırmak yanıltıcı olabilir.
Ham katsayılar farklı birimlerde olduğu için bir değişkenin diğerinden “daha önemli” olup olmadığını anlamak zorlaşır. İşte burada devreye standardize edilmiş katsayı, yani Beta (β), girer. Beta, tüm değişkenler aynı ölçekte (ortalama = 0, standart sapma = 1) olacak şekilde hesaplanır ve bu sayede karşılaştırma yapmak kolaylaşır. β, bir yordayıcıda bir standart sapmalık artış olduğunda Y’de kaç standart sapmalık değişim olacağını gösterir. Howell’ın örneğinde, β₁(Expend) = 0.203 ve β₂(LogPctSAT) = -1.040 bulunmuştur. Buradan, LogPctSAT’ın SAT puanını açıklamada Expend’e göre daha güçlü bir etkisi olduğunu söyleyebiliriz. Ancak, özellikle yordayıcılar arasında yüksek korelasyon (çoklu bağlantı) varsa, β’ların büyüklüğüne bakarak kesin bir önem sırası yapmak yanıltıcı olabilir.
Bir regresyon katsayısının pozitif ya da negatif olması, ilgili yordayıcı ile bağımlı değişken arasındaki ilişkinin yönünü gösterir. Pozitif işaret, X arttıkça Y’nin de arttığını; negatif işaret ise X arttıkça Y’nin azaldığını ifade eder. Ancak işaretin sabit olmadığını unutmamak gerekir. Örneğin, Expend ile SAT arasındaki basit korelasyon negatif çıkarken, modele LogPctSAT eklendiğinde Expend’in katsayısı pozitif olur. Yani, modelde hangi değişkenlerin olduğu, katsayının işaretini değiştirebilir. Bu durum, bazı değişkenlerin modele dahil edilmesinin diğerlerinin etkisini “baskılayabileceği” anlamına gelir.
Bir değişkenin b katsayısının büyük olması, o değişkenin mutlaka daha önemli olduğu anlamına gelmez. Çünkü b’nın büyüklüğü doğrudan ölçüm birimine bağlıdır. Howell’ın örneğinde de görüldüğü gibi, bir değişkende “bir birimlik artış” ile diğerinde aynı artış pratikte çok farklı anlamlara gelebilir. Bu yüzden, değişkenlerin önemini karşılaştırırken doğrudan b katsayılarına bakmak yanıltıcı olur. Beta katsayıları ise karşılaştırma açısından daha adil olsa da, yordayıcılar arasında yüksek ilişki varsa (çoklu bağlantı durumu), β değerleri örneklemden örnekleme çok değişkenlik gösterebilir. Yani, bir veri setinde β₁ = 0.50 iken, başka bir veri setinde 0.25 çıkabilir. Oysa her iki durumda da modelin açıklama gücü (R²) benzer kalabilir. Bu nedenle, sadece β katsayısına bakarak değişkenlerin önemini değerlendirmek her zaman güvenilir değildir.
R², bağımlı değişkendeki (Y) toplam değişkenliğin, modeldeki yordayıcılar tarafından ne kadarının açıklandığını gösterir. Matematiksel olarak, gözlenen Y ile modelin tahmin ettiği değerler (Ŷ) arasındaki korelasyonun karesi alınır. Örneğin, sadece Expend kullanıldığında R² = .145, yani SAT puanındaki varyansın %14.5’i açıklanıyor. LogPctSAT da eklendiğinde R² bir anda .886’ya yükselir; artık varyansın %88.6’sı açıklanabilir. Dikkat edilmesi gereken bir detay ise çoklu R’ın her zaman pozitif olmasıdır; çünkü korelasyon pozitif tanımlanır.
Standart R², örnekleme özgü rastlantısal örüntüleri de yakalayarak modelin açıklama gücünü olduğundan fazla gösterebilir. Özellikle örneklem küçükse ve yordayıcı sayısı fazlaysa bu şişme artar. Adjusted R² ise bu yanlılığı düzeltmek için formüle edilen ayarlı bir değerdir ve modeldeki yordayıcı sayısı arttıkça R²’nin şişmesini törpüler. Ancak, Howell’ın önerisi genellikle standart R² ve çoklu R’ı raporlamaktır; Adjusted R² ise daha çok bilgisayar çıktısında yer alır.
F testi, modeldeki yordayıcıların bir bütün olarak bağımlı değişkeni anlamlı biçimde açıklayıp açıklamadığını test eder. Temel soru şudur: Bu yordayıcılar topluca şanstan daha iyi bir tahmin sağlıyor mu? Eğer F testi anlamlıysa (örneğin p < .001), model genel olarak güçlü demektir. ANOVA tablosunda modelin açıkladığı varyans, açıklayamadığı varyans, serbestlik dereceleri ve F değeri birlikte raporlanır.
Her bir yordayıcının katkısı t testiyle değerlendirilir: t = b / SE. Eğer t değeri istatistiksel olarak anlamlıysa, o değişkenin modele özgün bir katkısı var denir. Test daima sıfıra karşı yapılır; çünkü katsayının evrende sıfır olması, o değişkenin Y’yi tahmin etmede faydasız olduğu anlamına gelir. Unutmayın ki, tek yordayıcı için F testi ile t testi arasında matematiksel bir ilişki (F = t²) vardır.
Bazı değişkenler, tek başına anlamlı bir ilişki gösterirken çoklu regresyonda anlamsız hale gelebilir. Örneğin, Salary değişkeni SAT ile negatif korelasyona sahip olsa da, Expend ile yüksek korelasyon nedeniyle modele ikisi birlikte alındığında Salary artık ek bir bilgi sunmaz ve anlamsızlaşır. Bu, modeldeki diğer değişkenlerden bağımsız olarak hangi yordayıcının özgün katkı yaptığını anlamamıza yardımcı olur.
Yordayıcı değişkenler birbiriyle yüksek korelasyona sahipse, modelde bazı sıkıntılar ortaya çıkar. Öncelikle, standart hatalar büyür ve katsayıların güven aralıkları genişler; böylece anlamlı görünen değişkenler anlamsız çıkabilir. Ayrıca, katsayılar örneklemler arası dalgalanır ve modelin güvenilirliği azalır. Bu durumu ölçmek için Tolerans (1 − Rⱼ²) ve Varyans Enflasyon Faktörü (VIF = 1/Tolerans) kullanılır. Yüksek tolerans ve düşük VIF arzu edilir; genellikle tolerans < .10 veya VIF > 10 kritik eşiklerdir.
Kısmi korelasyon, üçüncü bir değişkenin etkisini hem bağımlı değişkenden hem de yordayıcıdan çıkararak saf ilişkiyi ölçer. Örneğin, gelir ile başarı arasındaki ilişkiyi incelerken IQ’nun etkisini arındırmak istiyorsak, kısmi korelasyon kullanılır. Yarı-kısmi (part) korelasyon ise üçüncü değişkenin etkisini sadece yordayıcıdan çıkarır; Y olduğu gibi kalır. Yarı-kısmi korelasyonun karesi, bir yordayıcının modele kattığı benzersiz katkıyı doğrudan gösterir. İlave bir anlamlılık testi yapmaya gerek yoktur; çünkü t testi bu işlevi zaten kapsar.
Bazen bir yordayıcı ile Y arasında pozitif bir ilişki varken, modelde negatif katsayı çıkabilir. Bu tür değişkenler, diğer değişkenlerin modeldeki gürültüsünü filtreleyerek, bağımlı değişkenin daha “saf” ölçülmesini sağlar. Örneğin, okuma hızı gibi bir değişken, sınavda bilgiye odaklanmak için hata kaynağını bastırabilir ve negatif katsayı alır. Bu tür baskı değişkenleri matematiksel olarak tutarlıdır ve özellikle biyoloji ile ekonomi gibi alanlarda daha sık görülür.
Bootstrap yöntemi, geleneksel anlamlılık testlerinin gerektirdiği dağılım varsayımlarına ihtiyaç duymadan, örneklemden yerine koyarak tekrar tekrar örnekler çekip katsayılar için bir güven aralığı oluşturur. 10.000 tekrar sonrası elde edilen dağılımın alt ve üst %2.5’lik noktaları alınarak %95 güven aralığı bulunur. Eğer bu aralık sıfırı kapsamıyorsa, katsayı anlamlıdır. Howell’ın analizinde Expend ve LogPctSAT anlamlı, PTratio ise anlamsız çıkmıştır.
Regresyon analizinde üç temel tanılama ölçütü vardır:
Uzaklık (Distance): Gözlenen ve tahmin edilen Y arasındaki farktır; büyük artıklar modelden uzak gözlemleri gösterir.
Kaldıraç (Leverage): Bir gözlemin X değerlerinin ortalamadan ne kadar uzak olduğunu gösterir; yüksek kaldıraca sahip gözlemler potansiyel olarak etkilidir.
Etki (Influence, Cook’s D): Hem uzaklık hem de kaldıracı birleştirir; Cook’s D > 1 olan gözlemler dikkatle incelenmelidir.
Artık grafikleri, artıkların tahmin değerleri boyunca rastgele dağılmış olup olmadığını kontrol etmek için kullanılır. Q-Q grafikleri ise artıkların normal dağılıp dağılmadığına bakar. Homokedastisite ihlali için Breusch-Pagan testi uygulanır.
İç içe olmayan modelleri (örneğin PctSAT’lı ve LogPctSAT’lı modeller) doğrudan varyans farkıyla kıyaslayamayız. Burada AIC (Akaike Bilgi Kriteri) devreye girer; daha düşük AIC, daha iyi bir modeli gösterir. Değişken seçimi için otomatik yöntemler (stepwise, backward) kullanılabilir ama Howell’ın önerisi, değişkenlerin anlamını ve teoriye uygunluğunu bilen bir araştırmacının bilinçli seçim yapmasıdır.
library(tidyverse) # veri manipülasyonu ve grefikler
library(psych) # betimsel istatistikler
library(knitr) # tablo
library(kableExtra) # gelişmiş tablo formatlama
library(corrplot) # korelasyon matrisi görseli
library(car) # VIF / regresyon tanılama
library(lmtest) # Breusch-Pagan testi
library(ppcor) # kısmi ve yarı-kısmi korelasyon
library(ggpubr) # grafik düzenleme araçları
library(ggrepel)renk_ana <- "#7eb8d4"
renk_ikinci <- "#e08040"
renk_ucuncu <- "#a8d8a8"
renk_dord <- "#d4855a"
tema_odev <- theme_minimal(base_size = 13) +
theme(
plot.background = element_rect(fill = "#1a1e2e", color = NA),
panel.background = element_rect(fill = "#252a3d", color = NA),
panel.grid.major = element_line(color = "#3a4060", linewidth = 0.4),
panel.grid.minor = element_blank(),
text = element_text(color = "#e8e8e8", family = "sans"),
axis.text = element_text(color = "#c8cdd8"),
axis.title = element_text(color = "#7eb8d4"),
plot.title = element_text(color = "#7eb8d4", size = 13, face = "bold"),
plot.subtitle = element_text(color = "#a0a8c0", size = 10),
plot.caption = element_text(color = "#606880", size = 9),
legend.background = element_rect(fill = "#252a3d", color = NA),
legend.text = element_text(color = "#e8e8e8"),
strip.text = element_text(color = "#7eb8d4", face = "bold")
)
theme_set(tema_odev)Howell (2013) Tablo 15.1’deki veriler girilerek "howell"
isimli bir veri seti oluşturulmuştur.
howell <- tibble(
State = c("Alabama","Alaska","Arizona","Arkansas","California",
"Colorado","Connecticut","Delaware","Florida","Georgia",
"Hawaii","Idaho","Illinois","Indiana","Iowa",
"Kansas","Kentucky","Louisiana","Maine","Maryland",
"Massachusetts","Michigan","Minnesota","Mississippi","Missouri",
"Montana","Nebraska","Nevada","New Hampshire","New Jersey",
"New Mexico","New York","North Carolina","North Dakota","Ohio",
"Oklahoma","Oregon","Pennsylvania","Rhode Island","South Carolina",
"South Dakota","Tennessee","Texas","Utah","Vermont",
"Virginia","Washington","West Virginia","Wisconsin","Wyoming"),
Expend = c(4.405,8.963,4.778,4.459,4.992,5.443,8.817,7.030,5.718,5.193,
6.078,4.210,6.136,5.826,5.483,5.817,5.217,4.761,6.428,7.245,
7.287,6.994,6.000,4.080,5.383,5.692,5.935,5.160,5.859,9.774,
4.586,9.623,5.077,4.775,6.162,4.845,6.436,7.109,7.469,4.797,
4.775,4.388,5.222,3.656,6.750,5.327,5.906,6.107,6.930,6.160),
PTratio = c(17.2,17.6,19.3,17.1,24.0,18.4,14.4,16.6,19.1,16.3,
17.9,19.1,17.3,17.5,15.8,15.1,17.0,16.8,13.8,17.0,
14.8,20.1,17.5,17.5,15.5,16.3,14.5,18.7,15.6,13.8,
17.2,15.2,16.2,15.3,16.6,15.5,19.9,17.1,14.7,16.4,
14.4,18.6,15.7,24.3,13.8,14.6,20.2,14.8,15.9,14.9),
Salary = c(31.144,47.951,32.175,28.934,41.078,34.571,50.045,39.076,32.588,32.291,
38.518,29.783,39.431,36.785,31.511,34.652,32.257,26.461,31.972,40.661,
40.795,41.895,35.948,26.818,31.189,28.785,30.922,34.836,34.720,46.087,
28.493,47.612,30.793,26.327,36.802,28.172,38.555,44.510,40.729,30.279,
25.994,32.477,31.223,29.072,35.405,33.987,36.151,31.944,37.746,31.285),
PctSAT = c(8,47,27,6,45,29,81,68,48,65,57,15,13,58,5,9,11,9,68,64,
80,11,9,4,9,21,9,30,70,70,11,74,60,5,23,9,51,70,70,58,
5,12,47,4,68,65,48,17,9,10),
SAT = c(1029,934,944,1005,902,980,908,897,889,854,889,979,1048,882,1099,
1060,999,1021,896,909,907,1033,1085,1036,1045,1009,1050,917,935,898,
1015,892,865,1107,975,1027,947,880,888,844,1068,1040,893,1076,901,
896,937,932,1073,1001),
PctACT = c(61,32,27,66,11,62,3,3,36,16,17,62,69,19,64,74,65,80,2,11,
6,68,60,79,64,55,73,39,4,3,59,16,11,78,60,66,12,8,2,13,
68,83,30,69,7,6,16,57,64,70),
ACT = c(20.2,21.0,21.1,20.3,21.0,21.5,21.4,21.0,20.4,20.2,21.6,21.4,21.2,
21.2,22.1,21.7,20.1,19.4,21.5,20.7,21.6,21.3,22.1,18.7,21.5,21.9,
21.7,21.3,22.3,20.8,20.3,21.9,19.3,21.4,21.3,20.6,22.3,21.0,21.4,
18.9,21.3,19.7,20.2,21.5,21.9,20.7,22.4,20.0,22.3,21.4)
)Bu çalışmada Howell (2013, Bölüm 15) tarafından sunulan veri seti kullanılmıştır. Veri seti, 50 ABD eyaletine ait eğitim harcamaları ve standart test performanslarına ilişkin bilgileri içermektedir. Değişkenler şunlardır: öğrenci başına eğitim harcaması (Harcama, bin dolar), öğrenci-öğretmen oranı (OgrenciOgretmen), ortalama öğretmen maaşı (Maas, bin dolar), SAT sınavına giren öğrenci yüzdesi (SATYuzdesi), ortalama SAT puanı (SATPuan), ACT sınavına giren öğrenci yüzdesi (ACTYuzdesi) ve ortalama ACT puanı (ACTPuan). Tablo 1’de veri setinin ilk 10 gözlemi sunulmaktadır.
howell_tr %>%
head(10) %>%
kbl(caption = "Tablo 1. Howell (2013) Veri Seti — İlk 10 Gözlem",
digits = 2, align = "c") %>%
kable_styling(
bootstrap_options = c("striped", "hover", "condensed"),
full_width = TRUE,
font_size = 12
) %>%
row_spec(0, background = "#2e3557", color = "#7eb8d4", bold = TRUE) %>%
row_spec(seq(1, 10, 2), background = "#252a3d", color = "#e8e8e8") %>%
row_spec(seq(2, 10, 2), background = "#1e2535", color = "#e8e8e8")| Eyalet | Harcama | OgrenciOgretmen | Maas | SATYuzdesi | SATPuan | ACTYuzdesi | ACTPuan |
|---|---|---|---|---|---|---|---|
| Alabama | 4.40 | 17.2 | 31.14 | 8 | 1029 | 61 | 20.2 |
| Alaska | 8.96 | 17.6 | 47.95 | 47 | 934 | 32 | 21.0 |
| Arizona | 4.78 | 19.3 | 32.17 | 27 | 944 | 27 | 21.1 |
| Arkansas | 4.46 | 17.1 | 28.93 | 6 | 1005 | 66 | 20.3 |
| California | 4.99 | 24.0 | 41.08 | 45 | 902 | 11 | 21.0 |
| Colorado | 5.44 | 18.4 | 34.57 | 29 | 980 | 62 | 21.5 |
| Connecticut | 8.82 | 14.4 | 50.05 | 81 | 908 | 3 | 21.4 |
| Delaware | 7.03 | 16.6 | 39.08 | 68 | 897 | 3 | 21.0 |
| Florida | 5.72 | 19.1 | 32.59 | 48 | 889 | 36 | 20.4 |
| Georgia | 5.19 | 16.3 | 32.29 | 65 | 854 | 16 | 20.2 |
Analize başlamadan önce değişkenlere ilişkin temel betimsel istatistikler incelenmiştir. Tablo 2, tüm sayısal değişkenlerin ortalama, standart sapma, minimum, maksimum, çarpıklık ve basıklık değerlerini içermektedir.
howell_tr %>%
dplyr::select(-Eyalet) %>%
describe() %>%
as.data.frame() %>%
dplyr::select(n, mean, sd, min, max, skew, kurtosis) %>%
round(3) %>%
kbl(caption = "Tablo 2. Betimsel İstatistikler",
col.names = c("n", "Ortalama", "SS", "Min", "Max",
"Çarpıklık", "Basıklık"),
align = "c") %>%
kable_styling(
bootstrap_options = c("striped", "hover", "condensed"),
full_width = TRUE, font_size = 12
) %>%
row_spec(0, background = "#2e3557", color = "#7eb8d4", bold = TRUE) %>%
row_spec(seq(1, 7, 2), background = "#252a3d", color = "#e8e8e8") %>%
row_spec(seq(2, 7, 2), background = "#1e2535", color = "#e8e8e8")| n | Ortalama | SS | Min | Max | Çarpıklık | Basıklık | |
|---|---|---|---|---|---|---|---|
| Harcama | 50 | 5.905 | 1.363 | 3.656 | 9.774 | 1.041 | 0.877 |
| OgrenciOgretmen | 50 | 16.858 | 2.266 | 13.800 | 24.300 | 1.255 | 2.008 |
| Maas | 50 | 34.829 | 5.941 | 25.994 | 50.045 | 0.712 | -0.208 |
| SATYuzdesi | 50 | 35.240 | 26.762 | 4.000 | 81.000 | 0.247 | -1.642 |
| SATPuan | 50 | 965.920 | 74.821 | 844.000 | 1107.000 | 0.222 | -1.367 |
| ACTYuzdesi | 50 | 40.520 | 28.351 | 2.000 | 83.000 | -0.081 | -1.725 |
| ACTPuan | 50 | 21.040 | 0.881 | 18.700 | 22.400 | -0.738 | 0.015 |
Tablo 2 incelendiğinde, SAT puanlarının ortalamasının 983.24 (SS = 65.08) olduğu görülmektedir. SATYuzdesi değişkeni, eyaletler arasında büyük farklılıklar göstermekte (minimum = 4, maksimum = 81) ve belirgin bir çarpıklık sergilemektedir. Bu durum, söz konusu değişkenin doğrusal olmayan bir dağılıma sahip olabileceğine işaret etmektedir.
Regresyon analizine geçmeden önce değişkenlerin dağılım özellikleri incelenmiştir. Şekil 1’de dört temel değişkene ait histogramlar, Şekil 2’de ise Q-Q grafikleri sunulmaktadır.
howell_tr %>%
dplyr::select(Harcama, OgrenciOgretmen, SATYuzdesi, SATPuan) %>%
pivot_longer(everything(),
names_to = "Degisken",
values_to = "Deger") %>%
ggplot(aes(x = Deger, fill = Degisken)) +
geom_histogram(bins = 12, color = "#1a1e2e", alpha = 0.85) +
facet_wrap(~Degisken, scales = "free", ncol = 2) +
scale_fill_manual(
values = c(renk_ana, renk_ikinci, renk_ucuncu, renk_dord)
) +
labs(
title = "Şekil 1. Ana Değişkenlerin Dağılımları",
subtitle = "50 ABD Eyaleti (Howell, 2013)",
x = NULL, y = "Frekans"
) +
theme(legend.position = "none")Şekil 1. Ana Değişkenlerin Dağılımları
howell_tr %>%
dplyr::select(Harcama, OgrenciOgretmen, SATYuzdesi, SATPuan) %>%
pivot_longer(everything(),
names_to = "Degisken",
values_to = "Deger") %>%
ggplot(aes(sample = Deger, color = Degisken)) +
stat_qq(size = 1.8, alpha = 0.8) +
stat_qq_line(linewidth = 0.7, color = "#ffffff") +
facet_wrap(~Degisken, scales = "free", ncol = 2) +
scale_color_manual(
values = c(renk_ana, renk_ikinci, renk_ucuncu, renk_dord)
) +
labs(
title = "Şekil 2. Q-Q Grafikleri",
subtitle = "Noktalar beyaz çizgiye yakınsa normallik varsayımı karşılanıyor",
x = "Teorik Kantiller", y = "Örneklem Kantilleri"
) +
theme(legend.position = "none")Şekil 2. Q-Q Grafikleri
Histogram ve Q-Q grafikleri birlikte değerlendirildiğinde, SATYuzdesi değişkeninin belirgin biçimde bimodal bir dağılım sergilediği görülmektedir. Bazı eyaletlerde öğrencilerin büyük çoğunluğunun (örneğin Connecticut’ta %81), bazı eyaletlerde ise çok küçük bir bölümünün (örneğin Utah’ta %4) sınava girmesiyle açıklanabilir. Howell’ın (2013) belirttiği üzere, sınava yalnızca seçkin öğrencilerin girdiği eyaletler daha yüksek puan ortalaması sergileme eğilimindedir. Bu durum, SATYuzdesi ile SATPuan arasındaki ilişkinin doğrusal olmadığına işaret etmektedir.
SATYuzdesi değişkeninin SATPuan ile eğrisel bir ilişki sergilemesi nedeniyle logaritmik dönüşüm uygulanmıştır. Şekil 4’te ham SATYuzdesi ile log(SATYuzdesi) değişkenlerinin SATPuan ile ilişkileri karşılaştırmalı olarak sunulmaktadır. İç içe olmayan iki modeli karşılaştırmak amacıyla Akaike Bilgi Kriteri (AIC) kullanılmış; sonuçlar Tablo 4’te özetlenmiştir.
Şekil 3’te her bir yordayıcı değişkenin SATPuan ile ilişkisi saçılım grafikleri aracılığıyla incelenmiştir. Her panel için hem doğrusal regresyon doğrusu (beyaz) hem de LOESS düzleştirme eğrisi sunulmuştur.
howell_tr %>%
dplyr::select(Harcama, OgrenciOgretmen,
SATYuzdesi, LogSATYuzdesi, SATPuan) %>%
pivot_longer(-SATPuan,
names_to = "Degisken",
values_to = "Deger") %>%
mutate(Degisken = factor(Degisken,
levels = c("Harcama","OgrenciOgretmen",
"SATYuzdesi","LogSATYuzdesi"))) %>%
ggplot(aes(x = Deger, y = SATPuan)) +
geom_point(color = renk_ana, size = 2, alpha = 0.75) +
geom_smooth(method = "lm", color = "#ffffff",
se = FALSE, linewidth = 0.8) +
geom_smooth(method = "loess", color = renk_ikinci,
se = FALSE, linewidth = 0.8, linetype = "dashed") +
facet_wrap(~Degisken, scales = "free_x", ncol = 2) +
labs(
title = "Şekil 3. Yordayıcıların SAT Puanı ile Saçılım Grafikleri",
subtitle = "Beyaz = doğrusal fit | Turuncu kesikli = LOESS eğrisi",
x = NULL, y = "SAT Puanı"
) +
theme(legend.position = "none")Şekil 3. Saçılım Grafikleri
Şekil 3 incelendiğinde harcama ile SATPuan arasındaki ilişki negatif yönlüdür. Bu bulgu, daha fazla harcama yapan eyaletlerin daha düşük SAT puanı aldığını ima etmekte ve ilk bakışta şaşırtıcı bir görünüm sergilemektedir. Söz konusu paradoksal ilişkinin açıklanabilmesi için SATYuzdesi değişkeninin modele dahil edilmesi gerekmektedir. Öte yandan, SATYuzdesi ile SATPuan arasında belirgin bir eğrisellik gözlemlenmekte olup ham değişkenin doğrusal model varsayımını karşılamadığı anlaşılmaktadır.
Regresyon analizine geçmeden önce değişkenler arasındaki Pearson korelasyon katsayıları hesaplanmıştır. Sonuçlar Tablo 3’te ve Şekil 5’te sunulmaktadır.
howell_tr %>%
dplyr::select(Harcama, OgrenciOgretmen, Maas, SATYuzdesi, SATPuan, LogSATYuzdesi) %>%
cor() %>%
round(3) %>%
kbl(caption = "Tablo 3. Pearson Korelasyon Matrisi",
align = "c") %>%
kable_styling(
bootstrap_options = c("striped","hover","condensed"),
full_width = TRUE, font_size = 12
) %>%
row_spec(0, background="#2e3557", color="#7eb8d4", bold=TRUE) %>%
row_spec(seq(1,5,2), background="#252a3d", color="#e8e8e8") %>%
row_spec(seq(2,5,2), background="#1e2535", color="#e8e8e8")%>%
row_spec(seq(3,5,2), background="#1e2535", color="#e8e8e8")| Harcama | OgrenciOgretmen | Maas | SATYuzdesi | SATPuan | LogSATYuzdesi | |
|---|---|---|---|---|---|---|
| Harcama | 1.000 | -0.371 | 0.870 | 0.593 | -0.381 | 0.561 |
| OgrenciOgretmen | -0.371 | 1.000 | -0.001 | -0.213 | 0.081 | -0.132 |
| Maas | 0.870 | -0.001 | 1.000 | 0.617 | -0.440 | 0.613 |
| SATYuzdesi | 0.593 | -0.213 | 0.617 | 1.000 | -0.887 | 0.961 |
| SATPuan | -0.381 | 0.081 | -0.440 | -0.887 | 1.000 | -0.926 |
| LogSATYuzdesi | 0.561 | -0.132 | 0.613 | 0.961 | -0.926 | 1.000 |
kor_matris <- howell_tr %>%
dplyr::select(Harcama, OgrenciOgretmen, Maas, SATYuzdesi, SATPuan, LogSATYuzdesi) %>%
cor()
corrplot(kor_matris,
method = "color",
type = "upper",
tl.col = "#c8cdd8",
tl.srt = 45,
addCoef.col = "#ffffff",
number.cex = 0.85,
col = colorRampPalette(
c("#e08040","#1a1e2e","#7eb8d4"))(200),
bg = "#252a3d",
cl.col = "#e8e8e8",
title = "Şekil 4. Korelasyon Matrisi",
mar = c(0,0,2,0))Şekil 4. Korelasyon Isı Haritası
Tablo 3 ve Şekil 4 incelendiğinde en dikkat çekici bulgunun Harcama ile SATPuan arasındaki negatif korelasyon (r = -.381, p = .006) olduğu görülmektedir. Bu ilişki ilk bakışta paradoksal görünse de eğitim harcamasının yüksek olduğu eyaletlerde genellikle öğrencilerin büyük çoğunluğunun sınava girdiği bilinmektedir. Yüksek katılım oranı, daha düşük performanslı öğrencileri de kapsamakta ve eyalet ortalamasını aşağıya çekmektedir. Bu nedenle, SATYuzdesi değişkeni kontrol edilmeden Harcama-SATPuan ilişkisinin yorumlanması yanıltıcı olabilmektedir.
p1 <- ggplot(howell_tr, aes(x = SATYuzdesi, y = SATPuan)) +
geom_point(color = renk_ikinci, size = 2.2, alpha = 0.8) +
geom_smooth(method="lm", color="#ffffff", se=FALSE, linewidth=0.8) +
geom_smooth(method="loess", color=renk_ana, se=FALSE,
linewidth=0.8, linetype="dashed") +
labs(title="Ham: SATYuzdesi", x="SAT Yüzdesi", y="SAT Puanı")
p2 <- ggplot(howell_tr, aes(x = LogSATYuzdesi, y = SATPuan)) +
geom_point(color = renk_ucuncu, size = 2.2, alpha = 0.8) +
geom_smooth(method="lm", color="#ffffff", se=FALSE, linewidth=0.8) +
geom_smooth(method="loess", color=renk_ana, se=FALSE,
linewidth=0.8, linetype="dashed") +
labs(title="Dönüştürülmüş: LogSATYuzdesi",
x="log(SAT Yüzdesi)", y="SAT Puanı")
ggarrange(p1, p2, ncol=2) %>%
annotate_figure(
top = text_grob(
"Şekil 5. Log Dönüşümünün Eğriselliği Giderme Etkisi",
color="#7eb8d4", size=12, face="bold"
)
)Şekil 5. Log Dönüşümünün Etkisi
Şekil 5, SAT yüzdesi değişkenine logaritmik dönüşüm uygulamanın eğrisellik sorununu nasıl çözdüğünü karşılaştırmalı olarak göstermektedir. Sol tarafta, ham SAT yüzdesiyle analiz yapıldığında veri noktalarının doğrusal regresyon çizgisinden belirgin şekilde saptığı ve ilişkide eğrilik olduğu görülmektedir. Sağ tarafta ise aynı değişkenin logaritması alındığında, veri noktalarının çizgi etrafında çok daha düzgün dağıldığı ve eğriselliğin neredeyse tamamen ortadan kalktığı anlaşılmaktadır. Bu, SAT yüzdesi değişkeninin doğrusal regresyona dahil edilmeden önce log dönüşümüne tabi tutulmasının önemli olduğunu göstermektedir.
model_ham <- lm(SATPuan ~ Harcama + SATYuzdesi, data = howell_tr)
model_log <- lm(SATPuan ~ Harcama + LogSATYuzdesi, data = howell_tr)
tibble(
Model = c("Harcama + SATYuzdesi",
"Harcama + LogSATYuzdesi"),
R2 = round(c(summary(model_ham)$r.squared,
summary(model_log)$r.squared), 3),
AIC = round(c(AIC(model_ham), AIC(model_log)), 2)
) %>%
kbl(caption = "Tablo 4. AIC Karşılaştırması",
col.names = c("Model","R²","AIC"), align="c") %>%
kable_styling(
bootstrap_options = c("striped","hover"),
full_width = FALSE, font_size = 12
) %>%
row_spec(0, background="#2e3557", color="#7eb8d4", bold=TRUE) %>%
row_spec(1, background="#252a3d", color="#e8e8e8") %>%
row_spec(2, background="#1e2535", color="#e8e8e8", bold=TRUE)| Model | R² | AIC |
|---|---|---|
| Harcama + SATYuzdesi | 0.819 | 494.80 |
| Harcama + LogSATYuzdesi | 0.886 | 471.76 |
Tablo 4’te görüldüğü üzere, log dönüşümlü değişken içeren model
(R² = .886, AIC = 471.76), ham değişken içeren modele
(R² = .819, AIC = 494.80) kıyasla daha düşük AIC değeri
sergilemektedir. Howell’ın (2013) da belirttiği gibi, AIC değerleri
arasında istatistiksel bir sınır bulunmamakla birlikte, daha düşük değer
daha iyi model uyumuna işaret eder. Bu bulgular doğrultusunda sonraki
analizlerde logSATYuzdesi değişkeni kullanılmıştır.
İlk aşamada yalnızca Harcama değişkeninin SATPuan üzerindeki etkisi incelenmiştir. Bu model, Howell’ın (2013) analitik yaklaşımına uygun biçimde, yalnızca tek yordayıcı içermektedir.
##
## Call:
## lm(formula = SATPuan ~ Harcama, data = howell_tr)
##
## Residuals:
## Min 1Q Median 3Q Max
## -145.074 -46.821 4.087 40.034 128.489
##
## Coefficients:
## Estimate Std. Error t value Pr(>|t|)
## (Intercept) 1089.294 44.390 24.539 < 2e-16 ***
## Harcama -20.892 7.328 -2.851 0.00641 **
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## Residual standard error: 69.91 on 48 degrees of freedom
## Multiple R-squared: 0.1448, Adjusted R-squared: 0.127
## F-statistic: 8.128 on 1 and 48 DF, p-value: 0.006408
model1 %>%
broom::tidy(conf.int = TRUE, conf.level = 0.95) %>%
mutate(across(where(is.numeric), ~round(., 3))) %>%
kbl(caption = "Tablo 5. Model 1 Katsayılar Tablosu (Yordayıcı: Harcama)",
col.names = c("Terim","b","Std. Hata","t","p",
"%95 GA Alt","%95 GA Üst"),
align="c") %>%
kable_styling(
bootstrap_options = c("striped","hover"),
full_width = TRUE, font_size = 12
) %>%
row_spec(0, background="#2e3557", color="#7eb8d4", bold=TRUE) %>%
row_spec(1, background="#252a3d", color="#e8e8e8") %>%
row_spec(2, background="#1e2535", color="#e8e8e8")| Terim | b | Std. Hata | t | p | %95 GA Alt | %95 GA Üst |
|---|---|---|---|---|---|---|
| (Intercept) | 1089.294 | 44.390 | 24.539 | 0.000 | 1000.042 | 1178.546 |
| Harcama | -20.892 | 7.328 | -2.851 | 0.006 | -35.627 | -6.158 |
Model 1 bulgularına göre, Harcama değişkeni SATPuan’ı anlamlı biçimde yordamaktadır (b = -20.892, SE = 7.328, t(48) = -2.851, p = .006). Ancak katsayının negatif yönde olması paradoksal bir görünüm sergilemekte, R² = .145 değeri ise modelin SAT puanlarındaki varyansın yalnızca %14.5’ini açıkladığına işaret etmektedir.
İkinci aşamada Harcama’nın yanı sıra LogSATYuzdesi değişkeni de modele eklenmiştir. Katsayılara ilişkin sonuçlar Tablo 6’da, varyans analizi Tablo 7’de ve her iki modelin karşılaştırmalı değerlendirmesi Tablo 8’de sunulmaktadır.
##
## Call:
## lm(formula = SATPuan ~ Harcama + LogSATYuzdesi, data = howell_tr)
##
## Residuals:
## Min 1Q Median 3Q Max
## -61.510 -13.586 -2.587 16.562 54.932
##
## Coefficients:
## Estimate Std. Error t value Pr(>|t|)
## (Intercept) 1147.113 16.700 68.69 < 2e-16 ***
## Harcama 11.130 3.264 3.41 0.00134 **
## LogSATYuzdesi -78.205 4.471 -17.49 < 2e-16 ***
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## Residual standard error: 25.78 on 47 degrees of freedom
## Multiple R-squared: 0.8861, Adjusted R-squared: 0.8813
## F-statistic: 182.9 on 2 and 47 DF, p-value: < 2.2e-16
model2 %>%
broom::tidy(conf.int = TRUE, conf.level = 0.95) %>%
mutate(across(where(is.numeric), ~round(., 3))) %>%
kbl(caption = "Tablo 6. Model 2 Katsayılar Tablosu (Harcama + LogSATYuzdesi)",
col.names = c("Terim","b","Std. Hata","t","p",
"%95 GA Alt","%95 GA Üst"),
align="c") %>%
kable_styling(
bootstrap_options = c("striped","hover"),
full_width = TRUE, font_size = 12
) %>%
row_spec(0, background="#2e3557", color="#7eb8d4", bold=TRUE) %>%
row_spec(c(1,3), background="#252a3d", color="#e8e8e8") %>%
row_spec(2, background="#1e2535", color="#e8e8e8")| Terim | b | Std. Hata | t | p | %95 GA Alt | %95 GA Üst |
|---|---|---|---|---|---|---|
| (Intercept) | 1147.113 | 16.700 | 68.688 | 0.000 | 1113.516 | 1180.710 |
| Harcama | 11.130 | 3.264 | 3.410 | 0.001 | 4.563 | 17.696 |
| LogSATYuzdesi | -78.205 | 4.471 | -17.491 | 0.000 | -87.200 | -69.210 |
anova(model2) %>%
as.data.frame() %>%
rownames_to_column("Kaynak") %>%
mutate(across(where(is.numeric), ~round(., 3))) %>%
kbl(caption = "Tablo 7. Model 2 ANOVA Tablosu",
col.names = c("Kaynak","SS","df","MS","F","p"),
align="c") %>%
kable_styling(
bootstrap_options = c("striped","hover"),
full_width = TRUE, font_size = 12
) %>%
row_spec(0, background="#2e3557", color="#7eb8d4", bold=TRUE) %>%
row_spec(c(1,3), background="#252a3d", color="#e8e8e8") %>%
row_spec(2, background="#1e2535", color="#e8e8e8")| Kaynak | SS | df | MS | F | p |
|---|---|---|---|---|---|
| Harcama | 1 | 39722.06 | 39722.059 | 59.764 | 0 |
| LogSATYuzdesi | 1 | 203347.24 | 203347.240 | 305.948 | 0 |
| Residuals | 47 | 31238.38 | 664.646 | NA | NA |
tibble(
Model = c("Model 1: Harcama",
"Model 2: Harcama + LogSATYuzdesi"),
R2 = round(c(summary(model1)$r.squared,
summary(model2)$r.squared), 3),
Adj_R2 = round(c(summary(model1)$adj.r.squared,
summary(model2)$adj.r.squared), 3),
F_ist = round(c(summary(model1)$fstatistic[1],
summary(model2)$fstatistic[1]), 3),
AIC = round(c(AIC(model1), AIC(model2)), 2)
) %>%
kbl(caption = "Tablo 8. Model Karşılaştırması",
col.names = c("Model","R²","Adj. R²","F","AIC"),
align="c") %>%
kable_styling(
bootstrap_options = c("striped","hover"),
full_width = TRUE, font_size = 12
) %>%
row_spec(0, background="#2e3557", color="#7eb8d4", bold=TRUE) %>%
row_spec(1, background="#252a3d", color="#e8e8e8") %>%
row_spec(2, background="#1e2535", color="#e8e8e8", bold=TRUE)| Model | R² | Adj. R² | F | AIC |
|---|---|---|---|---|
| Model 1: Harcama | 0.145 | 0.127 | 8.128 | 570.57 |
| Model 2: Harcama + LogSATYuzdesi | 0.886 | 0.881 | 182.856 | 471.76 |
Model 2 bulguları, LogSATYuzdesi’nin modele eklenmesinin son derece çarpıcı bir etkiye yol açtığını ortaya koymaktadır. R² değeri .145’ten .886’ya yükselerek SAT puan varyansının %88.6’sının açıklanabildiğini göstermektedir. Öte yandan, Harcama değişkeninin katsayısı -20.892’den +11.129’a dönüşmüştür. Bu değişim, Howell’ın (2013) da vurguladığı gibi, kısmi regresyon katsayılarının yorumunun yalnızca o değişken açısından değil, modeldeki diğer değişkenler kontrol edildiğinde yapılması gerektiğini açıkça göstermektedir. Başka bir deyişle, aynı SATYuzdesi’ne sahip eyaletler karşılaştırıldığında, daha fazla harcama yapan eyaletlerin daha yüksek SAT puanına sahip olduğu görülmektedir. ANOVA sonuçları modelin istatistiksel olarak anlamlı olduğunu doğrulamaktadır, F(2, 47) = 182.856, p < .001.
Üçüncü aşamada OgrenciOgretmen değişkeni modele eklenmiş; ayrıca yordayıcılar arasındaki çoklu bağlantı Tolerans ve VIF değerleriyle incelenmiştir. Sonuçlar Tablo 9’da sunulmaktadır.
##
## Call:
## lm(formula = SATPuan ~ Harcama + LogSATYuzdesi + OgrenciOgretmen,
## data = howell_tr)
##
## Residuals:
## Min 1Q Median 3Q Max
## -60.151 -14.404 -2.417 18.038 56.096
##
## Coefficients:
## Estimate Std. Error t value Pr(>|t|)
## (Intercept) 1132.0325 39.7869 28.452 < 2e-16 ***
## Harcama 11.6645 3.5327 3.302 0.00186 **
## LogSATYuzdesi -78.3927 4.5331 -17.293 < 2e-16 ***
## OgrenciOgretmen 0.7423 1.7742 0.418 0.67761
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## Residual standard error: 26.01 on 46 degrees of freedom
## Multiple R-squared: 0.8866, Adjusted R-squared: 0.8792
## F-statistic: 119.8 on 3 and 46 DF, p-value: < 2.2e-16
vif_deger <- vif(model3)
tibble(
Degisken = names(vif_deger),
VIF = round(vif_deger, 3),
Tolerans = round(1 / vif_deger, 3)
) %>%
kbl(caption = "Tablo 9. VIF ve Tolerans Değerleri (Model 3)",
col.names = c("Değişken","VIF","Tolerans"),
align="c") %>%
kable_styling(
bootstrap_options = c("striped","hover"),
full_width = FALSE, font_size = 12
) %>%
row_spec(0, background="#2e3557", color="#7eb8d4", bold=TRUE) %>%
row_spec(c(1,3), background="#252a3d", color="#e8e8e8") %>%
row_spec(2, background="#1e2535", color="#e8e8e8")| Değişken | VIF | Tolerans |
|---|---|---|
| Harcama | 1.679 | 0.596 |
| LogSATYuzdesi | 1.473 | 0.679 |
| OgrenciOgretmen | 1.171 | 0.854 |
Model 3 sonuçlarına göre OgrenciOgretmen değişkeni modele anlamlı bir katkı sağlamamaktadır (b = 0.742, t(46) = 0.418, p = .678). VIF değerleri incelendiğinde tüm değişkenlerin eşik değerlerin (VIF > 10, Tolerans < .10) oldukça altında kaldığı görülmektedir. Bu bulgular, modelde ciddi bir çoklu bağlantı sorununun bulunmadığına işaret etmektedir. OgrenciOgretmen değişkeninin Harcama ile örtüşen bilgi sunması (r = -.371) ve özgün bir katkı ekleyememesi nedeniyle bu değişken nihai modele dahil edilmemiştir.
Ham regresyon katsayıları farklı ölçüm birimlerine dayandığından değişkenlerin göreli katkıları doğrudan karşılaştırılamamaktadır. Bu sorunu aşmak amacıyla Tablo 10’da standardize edilmiş Beta katsayıları hesaplanmıştır.
sd_y <- sd(howell_tr$SATPuan)
sd_x1 <- sd(howell_tr$Harcama)
sd_x2 <- sd(howell_tr$LogSATYuzdesi)
coef_m2 <- coef(model2)
tibble(
Degisken = c("Harcama", "LogSATYuzdesi"),
b = round(coef_m2[-1], 3),
Beta = round(c(coef_m2[2] * sd_x1 / sd_y,
coef_m2[3] * sd_x2 / sd_y), 3)
) %>%
kbl(caption = "Tablo 10. Standardize Edilmiş Beta Katsayıları (Model 2)",
col.names = c("Değişken","b (Ham)","β (Beta)"),
align="c") %>%
kable_styling(
bootstrap_options = c("striped","hover"),
full_width = FALSE, font_size = 12
) %>%
row_spec(0, background="#2e3557", color="#7eb8d4", bold=TRUE) %>%
row_spec(1, background="#252a3d", color="#e8e8e8") %>%
row_spec(2, background="#1e2535", color="#e8e8e8")| Değişken | b (Ham) | β (Beta) |
|---|---|---|
| Harcama | 11.130 | 0.203 |
| LogSATYuzdesi | -78.205 | -1.040 |
Beta katsayıları incelendiğinde LogSATYuzdesi’nin (β = -1.040) Harcama’ya (β = .203) kıyasla SATPuan üzerinde daha güçlü bir etkiye sahip olduğu görülmektedir. Bununla birlikte, Howell’ın (2013) uyarısı doğrultusunda, bu katsayıların kesin bir önem sıralaması için kullanılmaması gerektiği unutulmamalıdır; zira değişkenler arasında korelasyon bulunduğunda Beta katsayıları örnekleme göre dalgalanma gösterebilmektedir.
Her yordayıcının SATPuan’a olan benzersiz katkısını belirlemek amacıyla kısmi ve yarı-kısmi korelasyonlar hesaplanmıştır. Sonuçlar Tablo 11’de sunulmaktadır.
pcor_sonuc <- pcor(howell_tr %>%
dplyr::select(SATPuan, Harcama, LogSATYuzdesi))
spcor_sonuc <- spcor(howell_tr %>%
dplyr::select(SATPuan, Harcama, LogSATYuzdesi))
tibble(
Degisken = c("Harcama", "LogSATYuzdesi"),
Kismi_r = round(pcor_sonuc$estimate[1, 2:3], 3),
Kismi_r2 = round(pcor_sonuc$estimate[1, 2:3]^2, 3),
YariKismi_r = round(spcor_sonuc$estimate[1, 2:3], 3),
YariKismi_r2 = round(spcor_sonuc$estimate[1, 2:3]^2, 3)
) %>%
kbl(caption = "Tablo 11. Kısmi ve Yarı-Kısmi Korelasyonlar (Model 2)",
col.names = c("Değişken","r (kısmi)","r² (kısmi)",
"r (yarı-kısmi)","r² (yarı-kısmi)"),
align="c") %>%
kable_styling(
bootstrap_options = c("striped","hover"),
full_width = TRUE, font_size = 12
) %>%
row_spec(0, background="#2e3557", color="#7eb8d4", bold=TRUE) %>%
row_spec(1, background="#252a3d", color="#e8e8e8") %>%
row_spec(2, background="#1e2535", color="#e8e8e8")| Değişken | r (kısmi) | r² (kısmi) | r (yarı-kısmi) | r² (yarı-kısmi) |
|---|---|---|---|---|
| Harcama | 0.445 | 0.198 | 0.168 | 0.028 |
| LogSATYuzdesi | -0.931 | 0.867 | -0.861 | 0.741 |
Yarı-kısmi korelasyonun karesi, bir yordayıcının R²’ye yaptığı katkıya eşittir. Buna göre Harcama, LogSATYuzdesi kontrol edildiğinde SATPuan varyansının yalnızca %2.9’unu (r²₀(₁.₂) = .029) açıklamaktadır. LogSATYuzdesi ise Harcama kontrol edildiğinde varyansın %74.1’ini (r²₀(₂.₁) = .741) açıklamaktadır. Bu bulgular, LogSATYuzdesi’nin modelin baskın yordayıcısı konumunda olduğunu açıkça ortaya koymaktadır.
Regresyon katsayılarının güvenilirliğini dağılım varsayımlarına bağlı kalmadan sınamak amacıyla 10.000 tekrarlı bootstrap analizi gerçekleştirilmiştir. Örnekleme dağılımları Şekil 6’da, yüzdelik güven aralıkları ise Tablo 12’de sunulmaktadır.
set.seed(42)
n_boot <- 10000
b_harcama <- numeric(n_boot)
b_logsat <- numeric(n_boot)
for (i in seq_len(n_boot)) {
idx <- sample(nrow(howell_tr), replace = TRUE)
m <- lm(SATPuan ~ Harcama + LogSATYuzdesi,
data = howell_tr[idx, ])
b_harcama[i] <- coef(m)["Harcama"]
b_logsat[i] <- coef(m)["LogSATYuzdesi"]
}
boot_df <- tibble(
Harcama = b_harcama,
LogSATYuzdesi = b_logsat
) %>%
pivot_longer(everything(),
names_to = "Degisken",
values_to = "Katsayi")
ci_df <- boot_df %>%
group_by(Degisken) %>%
summarise(alt = quantile(Katsayi, 0.025),
ust = quantile(Katsayi, 0.975),
.groups = "drop")
ggplot(boot_df, aes(x = Katsayi, fill = Degisken)) +
geom_histogram(bins = 60, color = "#1a1e2e", alpha = 0.85) +
geom_vline(xintercept = 0, color = "#ff6b6b",
linewidth = 1, linetype = "dashed") +
geom_vline(data = ci_df, aes(xintercept = alt),
color = "#ffffff", linewidth = 0.7, linetype = "dotted") +
geom_vline(data = ci_df, aes(xintercept = ust),
color = "#ffffff", linewidth = 0.7, linetype = "dotted") +
facet_wrap(~Degisken, scales = "free", ncol = 2) +
scale_fill_manual(values = c(renk_ana, renk_ikinci)) +
labs(
title = "Şekil 6. Bootstrap Örnekleme Dağılımları (10.000 Tekrar)",
subtitle = "Kırmızı kesikli = 0 | Beyaz noktalı = %95 GA",
x = "Katsayı Değeri", y = "Frekans"
) +
theme(legend.position = "none")Şekil 6. Bootstrap Dağılımları
ci_df %>%
mutate(across(where(is.numeric), ~round(., 3))) %>%
kbl(caption = "Tablo 12. Bootstrap %95 Güven Aralıkları",
col.names = c("Değişken","Alt Sınır (%2.5)","Üst Sınır (%97.5)"),
align="c") %>%
kable_styling(
bootstrap_options = c("striped","hover"),
full_width = FALSE, font_size = 12
) %>%
row_spec(0, background="#2e3557", color="#7eb8d4", bold=TRUE) %>%
row_spec(1, background="#252a3d", color="#e8e8e8") %>%
row_spec(2, background="#1e2535", color="#e8e8e8")| Değişken | Alt Sınır (%2.5) | Üst Sınır (%97.5) |
|---|---|---|
| Harcama | 5.625 | 18.322 |
| LogSATYuzdesi | -86.727 | -68.753 |
Bootstrap bulguları geleneksel t testi sonuçlarıyla tutarlılık göstermektedir. Harcama için %95 güven aralığı sıfırı kapsamamakta, bu durum söz konusu değişkenin anlamlı bir yordayıcı olduğunu doğrulamaktadır. LogSATYuzdesi için de aralığın sıfırı kapsamadığı görülmektedir. Howell’ın (2013) belirttiği gibi bootstrap yaklaşımının temel amacı daha iyi bir katsayı tahmini sağlamak değil, katsayıların örnekleme değişkenliğini (standart hatasını) güvenilir biçimde tahmin etmektir.
Model 2’nin varsayımlarını değerlendirmek amacıyla kapsamlı bir regresyon tanılama süreci yürütülmüştür. Bu süreçte artık grafikleri, normallik kontrolü, etkili gözlem analizleri ve homokedastisite testi uygulanmıştır.
tibble(
tahmin = fitted(model2),
artik = residuals(model2),
eyalet = howell_tr$Eyalet
) %>%
ggplot(aes(x = tahmin, y = artik)) +
geom_hline(yintercept = 0, color = "#ff6b6b",
linewidth = 0.8, linetype = "dashed") +
geom_point(color = renk_ana, size = 2.2, alpha = 0.8) +
geom_smooth(method = "loess", color = renk_ikinci,
se = FALSE, linewidth = 0.9) +
geom_text_repel(
data = . %>% filter(abs(artik) > 40),
aes(label = eyalet), color = "#ffffff", size = 3
) +
labs(
title = "Şekil 7. Artık vs. Tahmin Grafiği (Model 2)",
subtitle = "Turuncu düzleştirme çizgisi sıfır etrafında yatay olmalı",
x = "Tahmin Edilen SAT Puanı", y = "Artık"
)Şekil 7. Artık vs. Tahmin
Şekil 7 incelendiğinde artıkların tahmin değerleri boyunca büyük ölçüde rastgele dağıldığı ve LOESS eğrisinin sıfır çizgisi etrafında yatay bir seyir izlediği görülmektedir. Bu bulgu, doğrusallık varsayımının karşılandığına işaret etmektedir.
tibble(artik = residuals(model2)) %>%
ggplot(aes(sample = artik)) +
stat_qq(color = renk_ana, size = 2, alpha = 0.8) +
stat_qq_line(color = "#ffffff", linewidth = 0.8) +
labs(
title = "Şekil 8. Artıkların Q-Q Grafiği (Model 2)",
subtitle = "Noktalar çizgiye yakınsa normallik varsayımı karşılanıyor",
x = "Teorik Kantiller", y = "Örneklem Kantilleri"
)Şekil 8. Artıkların Q-Q Grafiği
Q-Q grafiği artıkların normal dağılım varsayımını büyük ölçüde karşıladığını göstermektedir. Dağılımın uç noktalarında hafif sapmalar gözlemlense de bu sapmaların model yorumunu tehdit edecek düzeyde olmadığı değerlendirilmektedir.
tibble(
index = 1:nrow(howell_tr),
cooksd = cooks.distance(model2),
eyalet = howell_tr$Eyalet,
esik = 4 / nrow(howell_tr)
) %>%
ggplot(aes(x = index, y = cooksd)) +
geom_hline(aes(yintercept = esik), color = "#ff6b6b",
linewidth = 0.8, linetype = "dashed") +
geom_segment(aes(xend = index, yend = 0),
color = renk_ana, linewidth = 0.7) +
geom_point(aes(color = cooksd > esik), size = 2.5) +
scale_color_manual(values = c(renk_ana, renk_ikinci)) +
geom_text_repel(
data = . %>% filter(cooksd > esik),
aes(label = eyalet), color = "#ffffff", size = 3
) +
labs(
title = "Şekil 9. Cook's D Değerleri (Model 2)",
subtitle = "Kırmızı kesikli çizgi = 4/N eşiği",
x = "Gözlem İndeksi", y = "Cook's D"
) +
theme(legend.position = "none")Şekil 9. Cook’s D
Cook’s D değerleri incelendiğinde hiçbir eyaletin 1.00 eşiğini aşmadığı görülmektedir. Bununla birlikte, 4/N = .08 yumuşak eşiğini aşan bazı eyaletler dikkat çekmektedir. Bu gözlemler, Howell’ın (2013) öngördüğü biçimde, West Virginia başta olmak üzere birkaç eyaleti kapsamaktadır; ancak bu gözlemlerin yanlış kodlanmış olmadığı ve veri setine ait gerçek değerleri temsil ettiği bilinmektedir.
p_sayi <- ncol(model.matrix(model2)) - 1
tibble(
index = 1:nrow(howell_tr),
leverage = hatvalues(model2),
eyalet = howell_tr$Eyalet,
esik = 3 * (p_sayi + 1) / nrow(howell_tr)
) %>%
ggplot(aes(x = index, y = leverage)) +
geom_hline(aes(yintercept = esik), color = "#ff6b6b",
linewidth = 0.8, linetype = "dashed") +
geom_segment(aes(xend = index, yend = 0),
color = renk_ucuncu, linewidth = 0.7) +
geom_point(aes(color = leverage > esik), size = 2.5) +
scale_color_manual(values = c(renk_ucuncu, renk_ikinci)) +
geom_text_repel(
data = . %>% filter(leverage > esik),
aes(label = eyalet), color = "#ffffff", size = 3
) +
labs(
title = "Şekil 10. Leverage Değerleri (Model 2)",
subtitle = "Kırmızı kesikli çizgi = 3(p+1)/N eşiği",
x = "Gözlem İndeksi", y = "Leverage (hᵢ)"
) +
theme(legend.position = "none")Şekil 10. Leverage Değerleri
Stevens’ın (1992) eşik kuralı [3(p+1)/N] temel alındığında bazı eyaletlerin yüksek kaldıraç değerine sahip olduğu görülmektedir. Yüksek kaldıraç, potansiyel etki anlamına gelmekle birlikte, bunu tek başına belirleyici bir kriter olarak ele almak yanıltıcı olabilmektedir. Cook’s D ile birlikte değerlendirildiğinde bu eyaletlerin modeli orantısız biçimde etkilemediği anlaşılmaktadır.
tibble(
tahmin = fitted(model2),
std_artik_kok = sqrt(abs(rstandard(model2)))
) %>%
ggplot(aes(x = tahmin, y = std_artik_kok)) +
geom_point(color = renk_dord, size = 2.2, alpha = 0.8) +
geom_smooth(method = "loess", color = "#ffffff",
se = FALSE, linewidth = 0.9) +
labs(
title = "Şekil 11. Scale-Location Grafiği (Model 2)",
subtitle = "Düzleştirme çizgisi yataysa homokedastisite karşılanıyor",
x = "Tahmin Edilen SAT Puanı", y = "Standart Artık|ar"
)Şekil 11. Scale-Location
Scale-Location grafiğinde LOESS eğrisinin yatay bir seyir izlediği görülmektedir. Bu bulgu, artık varyansının tahmin değerleri boyunca büyük ölçüde sabit kaldığına, yani homokedastisite varsayımının karşılandığına işaret etmektedir.
bp <- bptest(model2)
tibble(
Test = "Breusch-Pagan",
`BP İstatistiği` = round(bp$statistic, 3),
df = bp$parameter,
p = round(bp$p.value, 3)
) %>%
kbl(caption = "Tablo 13. Breusch-Pagan Homokedastisite Testi (Model 2)",
align="c") %>%
kable_styling(
bootstrap_options = c("striped","hover"),
full_width = FALSE, font_size = 12
) %>%
row_spec(0, background="#2e3557", color="#7eb8d4", bold=TRUE) %>%
row_spec(1, background="#252a3d", color="#e8e8e8")| Test | BP İstatistiği | df | p |
|---|---|---|---|
| Breusch-Pagan | 1.151 | 2 | 0.562 |
Breusch-Pagan testi sonuçları artık varyansının homojenitesini istatistiksel olarak sınamaktadır. p > .05 bulunması homokedastisite varsayımının ihlal edilmediğini doğrulamakta ve grafik bulgularını desteklemektedir.
Bu ödevi hazırlarken olabildiğince Howell ’ten (2013) ayrılmamaya çalıştım. Kitabı ilk incelediğimde ve daha önceki bilgilerimi düşündüğümde çoklu regresyon konusunda iyi olduğumu sanıyordum. Ancak detaylı okuyup kavram ve uygulamaları görünce oldukça kapsamlı bir konu olduğunu farkettim. Şimdi “Sadece bir çoklu regresyon konusunda bile bu kadar kavram ve dikkat edilmesi gereken husus varsa çok değişkenli istatistiğe hakim olmak için ne kadar zaman ve emek gerekiyor?“ diye kendime soruyorum. Ancak şunu da ifade etmeliyim ki belki yavaş ama her ödevde biraz daha ilerlediğimi hissediyorum.
Bu ödevi yaparken zihnimdeki en önemli değişklikler şunlar oldu:
Son olarak dönem başı ve hemen ardından gelen ramzan dolayısıyla kendimi derslere verme konusunda zorlandığımı söyleyebilirim. Artık daha iyi olacağım:)
Not: Günden Kalanlar (İngilizce özgün adı: The Remains of the Day) Nobel ödüllü İngiliz yazar Kazuo Ishiguro’nun 1989 tarihli romanını okumanızı öneririm.
Howell, D. C. (2013). Statistical methods for psychology (8th ed.). Cengage Learning.