R REGRESYON ANALİZİ

Korelasyon "gelir ile gıda harcaması ilişkili mi" sorusuna cevap verir; peki "geliri 60 bin TL olan bir hane tahminen ne kadar gıda harcar?" sorusuna hangi araç cevap verir? İlişkiyi ölçmekten tahmin üretmeye geçtiğiniz anda regresyondasınız. Regresyon, iki değişken arasındaki ilişkiyi bir denkleme döker — ve o denklem, elinizde olmayan durumlar için tahmin üretir. İktisattan psikolojiye her alanın tez yöntemi bölümünde bu yüzden başroldedir.
Örneğimiz 60 hanelik bir bütçe verisi: aylık gelir ile aylık gıda harcaması. Amaç, harcamayı gelirden tahmin eden modeli kurmak, çıktısını satır satır okumak ve modelle gerçek tahminler üretmek. Bütün sayılar gerçek çalıştırmadan.
R scriptini indir (.R) — veri: r-regresyon-analizi-veri.csv1. Modeli Kurmak: lm
model <- lm(gida_harcamasi ~ aylik_gelir, data = veri)
summary(model)
# Coefficients:
# Estimate Std. Error t value Pr(>|t|)
# (Intercept) 4.920e+03 5.074e+02 9.696 9.64e-14 ***
# aylik_gelir 1.348e-01 8.295e-03 16.255 < 2e-16 ***
#
# Residual standard error: 1254 on 58 degrees of freedom
# Multiple R-squared: 0.82, Adjusted R-squared: 0.8169
# F-statistic: 264.2 on 1 and 58 DF, p-value: < 2.2e-16Formül gösterimi R'ın imzasıdır: y ~ x, "y'yi x ile açıkla" demektir. Çıktıdaki bilimsel gösterime dikkat — 4.920e+03 dört bin dokuz yüz yirmi, 1.348e-01 ise 0.1348'dir. e+ ve e- ayrımını karıştırmak, katsayıyı bin kat yanlış okumakla sonuçlanır.
2. Katsayıların Anlamı
Model denklemi şu: gıda harcaması = 4920 + 0.1348 × aylık gelir. İki katsayı iki farklı cümle kurar:
- Eğim (0.1348): modelin kalbi. Gelir 1 TL arttığında gıda harcaması ortalama 0.135 TL artıyor — daha okunur hâliyle: her 1000 TL ek gelirin yaklaşık 135 TL'si gıdaya gidiyor. p<.001 olduğundan bu eğim sıfırdan anlamlı biçimde farklı; güven aralığı da [0.118, 0.151] ile dar ve sıfırdan uzak.
- Sabit (4920): gelir sıfırken modelin öngördüğü harcama. Matematiksel olarak gerekli ama her zaman anlamlı yorumlanmaz — veri setinde geliri sıfıra yakın hane yoksa sabit, gözlem aralığının dışına uzatılmış bir soyutlamadır. Sabiti zorla yorumlamak yerine "modelin başlangıç düzeyi" olarak geçmek yeterlidir.
3. R Kare ve F Testi
R²=0.82: gıda harcamasındaki değişkenliğin %82'si gelirle açıklanıyor. Tek değişkenli sosyal veri için yüksek bir değer — ama R²'nin "iyi model" garantisi olmadığını bilmek gerekir: eğri ilişkiye yanlış yerleştirilmiş bir doğru da yüksek R² verebilir. F testi (F=264.2, p<.001) modelin bütününün anlamlılığını sınar; tek açıklayıcılı modelde eğimin t testiyle aynı hükmü verir, çoklu regresyonda ise "model toplamda işe yarıyor mu" sorusunun cevabı olur.
Adjusted R² (0.817) çoklu regresyonun ölçüsüdür: modele eklenen her değişken düz R²'yi yapay olarak şişirir, düzeltilmiş versiyon bu şişmeyi cezalandırır. Tek açıklayıcıda ikisi doğal olarak yakındır.
4. Artık Analizi: Model Geçerli mi
shapiro.test(residuals(model))
# W = 0.99177, p = 0.9585 → artıklar normal
Regresyonda normallik varsayımı sık yanlış anlaşılır: normal dağılması gereken, değişkenlerin kendisi değil artıklardır — gerçek değerlerle model tahminleri arasındaki farklar. Burada artıkların Shapiro p'si 0.959: varsayım rahatça sağlanıyor. İkinci kontrol görseldir: artıklar tahmin değerlerine karşı çizildiğinde desensiz bir bulut görünmeli; huni biçimi (varyansın büyüme) veya kavis (doğrusal olmayan ilişki) modelin yeniden düşünülmesini ister. plot(model) bu tanı grafiklerini tek komutla üretir.
5. predict ile Tahmin Üretmek
yeni <- data.frame(aylik_gelir = c(40000, 60000, 80000))
predict(model, yeni)
# 1 2 3
# 10313.47 13010.21 15706.96Modelin ödülü bu üç satırdır: 40 bin TL gelirli hane için yaklaşık 10.313 TL, 60 bin için 13.010 TL, 80 bin için 15.707 TL gıda harcaması tahmini. predict fonksiyonuna interval = "prediction" eklerseniz her tahminin güven bandını da alırsınız — tek sayı yerine aralık sunmak, tahminin belirsizliğini dürüstçe gösterir.
Kritik sınır: tahmin, verinin gözlendiği gelir aralığı içinde geçerlidir. Veri setinde 200 bin TL gelirli hane yoksa modeli oraya uzatmak (ekstrapolasyon) istatistiksel değil spekülatif bir işlemdir — doğrusallık o bölgede hiç test edilmemiştir.
6. Raporlama ve Dosyalar
Tez kalıbı: "Aylık gelir, gıda harcamasını anlamlı düzeyde yordamıştır; b=0.135, %95 GA [0.118, 0.151], t(58)=16.26, p<.001. Model, gıda harcamasındaki varyansın %82'sini açıklamaktadır; F(1, 58)=264.2, p<.001."

Grafikteki doğru, denklemin görsel karşılığı; noktaların doğruya sıkı kümelenmesi R²=0.82'nin resmidir. İlişkinin gücünü tahminsiz ölçmek yeterliyse korelasyon analizi daha yalın bir araçtır — regresyona geçiş, "ne kadar" sorusunun sorulduğu andır.
Örnek veriyi indir (.csv) — 60 hane, gelir ve gıda harcamasıScript ile veriyi aynı klasörde çalıştırıp model kurulumundan tahmine bütün adımları yeniden üretebilirsiniz. Çoklu regresyon, kukla değişkenler ve model karşılaştırması gibi tezlerin asıl ihtiyaç duyduğu ileri adımlar için R veri analizi eğitimi birebir uygulamalı ilerliyor; tahmin modellerini üretim ortamına taşımak isteyenler Python eğitimini inceleyebilir.
Sıkça Sorulan Sorular
Korelasyon varken neden ayrıca regresyon yapayım?
Korelasyon ilişkinin gücünü tek sayıyla özetler; regresyon ilişkiyi denkleme döker ve tahmin üretir. 'Gelirle harcama ilişkili mi' sorusuna korelasyon, 'geliri 60 bin olan hane ne harcar' sorusuna regresyon cevap verir. Ayrıca regresyon çoklu değişkene genişler — birden fazla etkenin aynı anda katkısını ayrıştırmak yalnızca regresyonla mümkündür.
R kare kaç olmalı, 0.82 iyi mi?
Alan bağımlıdır. Sosyal bilimlerde insan davranışı çok etkenli olduğundan 0.20-0.40 bandı yaygın ve kabul edilebilirdir; fiziksel ve ekonomik ölçümlerde 0.80 üzeri görülebilir. Buradaki 0.82, gelir-gıda gibi güçlü yapısal bir ilişki için gerçekçidir. Düşük R² modeli çöpe atmaz — eğim anlamlıysa ilişki gerçektir, sadece başka etkenler de sahnededir.
Regresyonda normal dağılması gereken hangi değişken?
Hiçbiri — varsayım artıklar (residuals) üzerinedir: gerçek değerlerle tahminler arasındaki farkların normal dağılması ve sabit varyanslı olması beklenir. Bağımlı değişkenin kendisinin çarpık olması tek başına sorun değildir. shapiro.test(residuals(model)) ve plot(model) tanı grafikleri bu kontrolün standart araçlarıdır.
Sabit (intercept) anlamsız değerde çıktı; model yanlış mı?
Hayır. Sabit, açıklayıcı değişken sıfırken tahmin edilen değerdir; veri aralığınızda sıfır gözlenmiyorsa bu bir soyutlamadır ve gerçekçi yorumlanması gerekmez. Boyu sıfır olan insanın kilosunu öngören sabit gibi. Model, verinin gözlendiği aralıkta değerlendirilir; sabitin görevi doğruyu doğru yükseklikte konumlandırmaktır.
predict ile veri aralığı dışına tahmin yapabilir miyim?
Teknik olarak fonksiyon sayı üretir ama istatistiksel olarak savunulamaz — buna ekstrapolasyon denir. Doğrusallık yalnızca gözlenen aralıkta test edilmiştir; 30-110 bin TL gelir aralığıyla kurulan model 250 bin TL için konuşamaz. Tezde tahmin senaryolarını veri aralığının içinden seçmek ve bu sınırı yöntem bölümünde belirtmek doğru pratiktir.
Birden fazla açıklayıcı değişken nasıl eklenir?
Formüle + ile eklenir: lm(harcama ~ gelir + hane_buyuklugu + kira, data=veri). Her katsayı artık 'diğerleri sabitken' yorumu kazanır — çoklu regresyonun gücü de inceliği de budur. Yeni dikkat noktaları eklenir: açıklayıcılar arası yüksek korelasyon (çoklu bağlantı, VIF ile kontrol) ve değişken seçiminin kuramsal gerekçesi.


