Giriş: Teoriden Pratiğe ve tidymodels Felsefesi

Merhaba Dostlar,

Bölüm 8.1’de, bir modelin “gerçekten öğrenip öğrenmediğini” (genelleme yeteneği) anlamak için gereken Bias-Variance Dengesi ve Eğitim/Test Veri Seti mantığı gibi temel mühendislik prensiplerini zihnimize kazıdık. Felsefi dersler bitti. Artık, “veri mimarı” şapkalarımızı takıp, bu kuralları uygulayacağımız ilk atölye çalışmasına başlıyoruz.

İlk projemiz, mimarinin en temel, en sağlam ve en saygın yapılarından biri olan Lineer Regresyon. Amacımız, mtcars veri setindeki basit ama güçlü ilişkileri kullanarak, bu yapının ideal koşullar altında nasıl inşa edildiğini göstermek.

Makine öğrenmesinde sağlam bir yapı inşa etmek, doğru araçlarla başlar.

Akademinin Resmi Araç Kutusu: tidymodels

Geleneksel programlamada olduğu gibi, makine öğrenmesinde de birçok farklı “el aleti” ve “yapı iskelesi” vardır. Ancak, Machine Learning Academy’de biz, projelerimizin modüler, okunabilir ve endüstri standardında olmasını sağlayan tek bir resmi araç setini benimsiyoruz: tidymodels çatısı.

tidymodels, R’ın temiz ve düzenli (tidy) veri felsefesini makine öğrenmesine taşıyan, modern mimarların tercih ettiği “Altın Standart” araç kutusudur.

Neden Projemize tidymodels ile Başlamalı?

Kavram (Teknik) Metafor (Mimarlık) Açıklama
Yapısal Tutarlılık (Consistency) Evrensel Bağlantı Plakası Geleneksel R’da Lineer Regresyon (lm()), Karar Ağacı (rpart::rpart()) gibi her modelin kendine özgü komutları vardır. tidymodels ise tüm modellere aynı sözdizimini (fit(), predict(), tune()) uygular. Tıpkı tüm yapı elemanlarını aynı standart cıvata ile birleştirmek gibi; kafa karışıklığı sıfırdır.
Modüler İş Akışı (Tidy Workflow) Mimari Şablonlar ve Katmanlama tidymodels, veri bölme, ön işleme, model seçimi ve değerlendirme gibi projenin her aşamasını ayrı, bağımsız ve tekrar kullanılabilir “katmanlar” olarak tanımlamamızı sağlar. Bu, projenin okunabilirliğini ve yönetilebilirliğini, tıpkı iyi katmanlanmış bir mimari çizim gibi en üst seviyeye çıkarır.
Geleceğe Dönüklük (Future-Proofing) Altyapı Standartı (API) Bu çatı altında öğrendikleriniz, en basit Lineer Regresyon’dan en karmaşık Yapay Sinir Ağlarına kadar tüm makine öğrenmesi algoritmalarını kullanmanız için bir “arayüz” görevi görür. Yarın daha güçlü bir model denemek istediğinizde, tüm iş akışınızı değil, sadece modelin adını değiştirmeniz yeterlidir.

Hadi, bu altın standardın temel paketlerini (tidyverse ve tidymodels) çağırarak, ilk model inşaatımızın temellerini atmaya başlayalım!

Temel Malzeme: mtcars Veri Seti

Lineer Regresyon gibi temel bir yapıyı inşa ederken, malzemelerimizin (verimizin) temiz ve güvenilir olması önemlidir. Bu bölümde, tüm varsayımları en net şekilde görebilmek için R’ın meşhur mtcars veri setini kullanacağız. Bu veri seti, 1970’lerin otomobil modellerinin yakıt tüketimine göre menzil (galon başına mil - mpg) ve 10 farklı tasarım ve performans özelliğini içerir.

Bu projemizde, bir aracın beygir gücünün (hp) yakıt tüketimine göre mil (mpg) üzerindeki etkisini inceleyerek basit bir regresyon modelinin nasıl inşa edileceğini öğreneceğiz.

# Gerekli kütüphaneleri ve tidymodels çatısını yüklüyoruz.
library(tidyverse)
library(tidymodels)

# mtcars veri setini çağırıp, daha temiz bir analiz için tibble formatına dönüştürüyoruz.
data_tbl <- mtcars %>%
  as_tibble()
# Veri setinin ilk satırlarına kısa bir bakış (Malzememizin İlk Örnekleri)
head(data_tbl)

Modelin Varsayımları (Mimari Statik Kurallar) - Şanslı’nın Denetim Kartları

Machine Learning Academy’de, en basit yapı olan Lineer Regresyon’un bile ayakta kalması için uyması gereken katı fizik kuralları (statik ve malzeme bilimi) vardır. Bir mimar için bu kurallar çelik-beton standartları neyse, Lineer Regresyon için de bu kurallar istatistiksel varsayımlardır.

Eğer bu varsayımlar ihlal edilirse, modelimiz hala ayakta durabilir; ancak temeli çürük bir yapı gibi, tahminleri güvenilir olmaktan çıkar ve katsayıları anlamsızlaşır.

Bu kritik denetim sürecinde bize, Machine Learning Academy’nin Yapı Denetimi uzmanımız Şanslı eşlik edecek ve her varsayımı, holografik birer Yapı Denetim Kartı ile kontrol edeceğiz. Bu kartlar, ilerleyen adımlarda olsrr paketi ile yapacağımız pratik testlerin teorik temelini oluşturur.

A) Doğrusallık (Linearity) - Büyüteçli Kart: Düz Hat Zorunluluğu

-Şanslı’nın Notu: “Lineer Regresyon, öngördürücü değişken (hp) ile hedef (mpg) arasındaki ilişkinin düz bir çizgi (doğrusal) olduğunu varsayar. Eğer ilişki bir yay (parabolik) veya S-şeklinde ise, bu varsayım ihlal edilmiştir ve modelin yapısı eğilir.”

-Mimari Karşılığı: Bir kolonun taşıma gücünün, kalınlığındaki her birim artışla hep aynı oranda artmasını beklemek gibidir. Bu ilişkiyi saçılım grafiği üzerinde test ederiz.

B) Hataların Bağımsızlığı (Independence of Errors) - Bağımsız Yumaklar Kartı: Etkileşimsiz Rastgelelik

-Şanslı’nın Notu: “Modelin yaptığı tahmin hataları (artıklar), birbirini etkilememelidir. Her bir gözlemin hatası, diğer gözlemlerden tamamen bağımsız olmalıdır.”

-Mimari Karşılığı: Bir binanın ilk katındaki bir mühendislik hatasının, otomatik olarak hemen üstündeki katı da etkilememesi (kendi hatasıyla kalması) beklenir. Özellikle zaman serisi (ardışık olaylar) verilerinde kritik olan bu durum, Durbin-Watson (DW) testi ile kontrol edilir.

C) Hataların Eşit Varyansı (Homoscedasticity) - Holografik Boru Kartı: Güvenilir Yayılım

-Şanslı’nın Notu: “Modelin tahmin hatalarının yayılımı (varyansı), tahmin edilen değere bakılmaksızın sabit kalmalıdır. Hatalar, bir boru gibi eşit kalınlıkta dağılmalıdır (Homoscedasticity).”

-Mimari Karşılığı: Bir mimarın, binanın düşük katlarında yaptığı tahmin hatası ile yüksek katlarında yaptığı tahmin hatasının yayılımının aynı olmasını beklemesi gibidir. Eğer tahmin edilen değer arttıkça hatalar koni şeklinde büyüyorsa (Heteroscedasticity), modelin yüksek değerli tahminlere olan güveni azalır. Breusch-Pagan testi ve artık grafikleri bu denetimi yapar.

D) Hataların Normalliği (Normality of Residuals) - Çan Şeklinde Işık Halesi Kartı: İdeal Şekil

-Şanslı’nın Notu: “Modelin tahmin hataları (artıklar), istatistiğin ideal dağılımı olan Normal Dağılıma (Çan Eğrisi) uygun olmalıdır.”

-Mimari Karşılığı: Modelin sistematik bir önyargı taşımaması, hatalarının rastgele ve simetrik olmasını garanti eder. Eğer hatalar bir tarafa yığılırsa (çarpıklık), model bir yönde sürekli olarak yanılıyor demektir. Bu, Q-Q Plot ve Shapiro-Wilk testi ile kontrol edilir.

E) Çoklu Doğrusal İlişki (Multicollinearity) - İki Kedi Silüeti Kartı: Çifte Bilgi Yükü

-Şanslı’nın Notu: “Modeldeki öngördürücü değişkenler (örneğin hp ve ağırlık) birbirleriyle çok güçlü ilişkide olmamalıdır. Model, aynı bilgiyi iki farklı kaynaktan alıp kafa karışıklığı yaşamamalıdır.”

-Mimari Karşılığı: Bir yapının taşıma gücünü hesaplarken, hem “kolonun çapını” hem de “kolonun çevresini” aynı anda kullanmak gibidir; her ikisi de aynı bilgiyi taşır. Bu durum, model katsayılarının (eğimlerinin) anlamsız derecede büyük ve kararsız hale gelmesine neden olur. VIF (Variance Inflation Factor) testi bu durumun şiddetini ölçer.

Aman Dikkat, Dostlar!

Bu beş kural, inşaatımızın teminatıdır. Bizim basit Lineer Regresyon modelimiz (mpg vs hp) bu varsayımların çoğunu doğal olarak karşılamaya yakındır. Ancak, çoklu regresyon modellerinde (birden fazla X değişkeni) bu denetim, modelin Yapı Denetimi’nden geçip geçmediğini anlamak için hayati önem taşır.

Sıradaki adımda, inşaatımıza başlamadan önce zemin etüdü yapıp, bu varsayımlardan en önemlisine odaklanacağız: İlişkinin İspatı (Korelasyon Analizi).

Zemin Etüdü: İlişkinin İspatı (Korelasyon Analizi)

İnşaatımıza başlamadan önce, en temel kuralımız olan Doğrusallık (Linearity) varsayımının karşılanıp karşılanmadığını ve seçtiğimiz ana malzemenin (beygir gücü - hp) hedefimiz (yakıt tüketimine göre mil - mpg) ile ne kadar güçlü bir ilişkiye sahip olduğunu kontrol etmeliyiz. Bu süreç, mimarideki zemin etüdü gibidir: Temeli atacağımız zeminin sağlamlığını ölçeriz.

Bu etüdü, Korelasyon Analizi ile iki aşamada yapacağız: Görselleştirme ve İstatistiksel İspat.

İlişkinin Görsel İspatı: Saçılım Grafiği (Doğrusallık Kontrolü)

Doğrusallık varsayımı, değişkenler arasındaki ilişkinin düz bir çizgi ile temsil edilebileceğini söyler. Bu, Lineer Regresyon’un kendisidir.

Veri setimizdeki hedef değişken mpg(galon başına mil), aracın yakıt verimliliğini ölçer. Yüksek değeri, daha az yakıt tüketimi anlamına gelir. (Beygir Gücü) ile arasındaki ilişkiyi incelerken, fizik kanunları gereği güçlü bir negatif korelasyon bekleriz: Güçlü bir motor (↑hp) daha çok yakıt tüketeceği için, bir galon benzinle daha az mesafe kat eder (↓mpg).

# Yakıt tüketimi (mpg) ve beygir gücü (hp) arasındaki ilişkiyi çizelim.
data_tbl %>%
  ggplot(aes(x = hp, y = mpg)) +
  geom_point(color = "blue", alpha = 0.7) +
  geom_smooth(method = "lm", se = FALSE, color = "red") + # Lineer (lm) trend çizgisini ekleyelim
  labs(title = "Yakıt Tüketimine Göre Mil (mpg) vs. Beygir Gücü (hp)",
       x = "Beygir Gücü (hp)",
       y = "Galon Başına Mil (mpg)") +
  theme_minimal()

Gördüklerimiz ve Yorumumuz:

Grafikteki kırmızı düz çizgi (Lineer model), noktaların genel trendini oldukça iyi yakalamaktadır. Noktaların dağılımı, parabolik veya S-şeklinde değil, negatif eğimli düz bir çizgi etrafında toplanmıştır.

-Sezgi: Beygir gücü (hp) arttıkça, yakıt tüketimine göre menzil (mpg) azalmaktadır. (Beklendiği gibi, daha güçlü motorlar daha çok yakar.)

-Sonuç: Bu görsel kanıt, Lineer Regresyon’un temel direği olan Doğrusallık varsayımının karşılandığını gösteriyor. Yapı ruhsatımızın ilk maddesi onaylandı.

İstatistiksel Anlamlılık Testi (Dikkat En Önemli Kontrollerden Biridir)

Görsel olarak ilişkilerin var olduğunu gördük, ancak bu ilişkinin tesadüfi olmadığını istatistiksel olarak teyit etmeliyiz. Bunu, Pearson korelasyon katsayısının testini yapan cor.test() fonksiyonu ile yaparız.

İstatistiksel Anlamlılık: O Meşhur 0.05 Sınırı Nedir?

Görsel olarak bir ilişkinin varlığını sezdikten sonra, mimar olarak sormamız gereken en kritik soru şudur: “Bu ilişki gerçek mi, yoksa sadece tesadüf eseri mi oluştu?” İşte bu sorunun cevabını bize P-Değeri (P-Value) verir.

P-Değeri Nedir?

P-değeri, “Yokluk Hipotezinin (H₀) doğru olduğu varsayımı altında, elimizdeki veriyi veya ondan daha uç bir veriyi görme olasılığımız nedir?” sorusunun cevabıdır. * Yokluk Hipotezi (H₀): Bizim bağlamımızda, “İki değişken arasında hiçbir ilişki yoktur (korelasyon sıfırdır)” varsayımıdır. * P-Değeri Düşükse (Örn: p < 0.05): “Yokluk Hipotezinin doğru olma olasılığı çok düşüktür. Bu, tesadüfi bir durum olamaz.” demektir. Dolayısıyla, H₀’ı reddederiz ve bulduğumuz ilişkinin istatistiksel olarak anlamlı olduğunu söyleriz.

P-Değeri ve 0.05 Sınırının Kökeni

Peki neden bu meşhur sınır 0.05’tir? Bu, modern istatistiğin kurucularından Sir Ronald Fisher tarafından ortaya atılmış, pratik bir gelenektir (Fisher, 1925).

  • Fisher’ın Felsefesi: Fisher, bir olayın her 20 denemeden birinden daha az (yani %5’ten az) meydana gelme olasılığı varsa, bunun tesadüf eseri oluşmadığını ve bilimsel olarak incelenmeye değer olduğunu öne sürmüştür.
  • Anlamı: P < 0.05 demek, “Bulduğumuz ilişkinin, gerçekte hiçbir ilişki yokken bile tesadüfen oluşma olasılığı %5’ten düşüktür” demektir. Bu, istatistik dilinde “güvenilir bir bulgu” anlamına gelir.

Özetle: Bir cor.test() çıktısında P-değerini 0.05’in altında gördüğünüzde, rahat bir nefes alabilirsiniz: Kullanacağınız malzeme sağlamdır, aralarındaki ilişki tesadüf eseri değildir.

Şimdi, hp ve mpg arasındaki ilişkiyi test edelim.

# hp ve mpg arasındaki Pearson korelasyonunu test edelim.
# H0: Korelasyon sıfırdır (ilişki yoktur).
cor_test_result <- cor.test(data_tbl$hp, data_tbl$mpg, method = "pearson")
print(cor_test_result)
## 
##  Pearson's product-moment correlation
## 
## data:  data_tbl$hp and data_tbl$mpg
## t = -6.7424, df = 30, p-value = 1.788e-07
## alternative hypothesis: true correlation is not equal to 0
## 95 percent confidence interval:
##  -0.8852686 -0.5860994
## sample estimates:
##        cor 
## -0.7761684

Gördüklerimiz ve Yorumumuz:

-Korelasyon Katsayısı (r): Çıktıda cor değeri yaklaşık -0.77’dir. Bu, Cohen kılavuzuna göre Çok Güçlü bir Negatif İlişki anlamına gelir.

-İstatistiksel Anlamlılık (P-Değeri): Çıktıdaki p-value değeri sıfıra çok yakındır. Bu değer, 0.05’ten kat kat küçük olduğu için H0 hipotezini reddediyoruz.

-Sonuç: hp ve mpg arasındaki ilişki tesadüfi değil, istatistiksel olarak anlamlıdır ve Lineer Regresyon modelimiz için çok güçlü bir zemin mevcuttur.

Birinci Projemiz: Basit Regresyonun Temelleri

Kuracağımız bu model, teknik dilde Basit Lineer Regresyon (Simple Linear Regression) olarak adlandırılır, çünkü sadece bir bağımsız değişken (hp) ve bir bağımlı değişken (mpg) içerir.

\[ \text{mpg} = \beta_0 + \beta_1 \times \text{hp} + \text{Hata} \]

Mimari Karar: Bu model, Lineer Regresyon’un temel prensiplerini ve varsayımlarını en net haliyle öğrenmemiz için en ideal yapı iskelesidir. Akademide, bir binanın statiğini öğrenmeden önce tek bir kolonun dayanımını analiz etmek gibidir.

Gelecek Senaryosu: Çoklu Regresyona Hazırlık

Gerçek dünyada bir arabanın yakıt tüketimine göre menzili elbette sadece beygir gücüne bağlı değildir; ağırlığı, silindir sayısı ve vites kutusu tipi gibi birçok faktöre bağlıdır. Birden fazla bağımsız değişkenin kullanıldığı bu modellere Çoklu Lineer Regresyon (Multiple Linear Regression) denir.

Basit modelin temellerini attıktan sonra, 6. Adım: Yapı Denetimi’nde, modelimize ek değişkenler dahil ederek “Çoklu Doğrusallık (Multicollinearity)” gibi Çoklu Regresyon’un getirdiği karmaşık varsayımlarla nasıl başa çıkacağımızı göstereceğiz.

Şimdi, ilk projemizin inşaat ruhsatı (veri bölme) ve malzeme hazırlığı (ön işleme) aşamasına geçelim.

Veriyi Hazırlama: İnşaat Ruhsatı ve Malzeme Tarifi

Model inşa etme sürecinde, felsefi temellerin (Bölüm 8.1) ve zemin etüdünün (Adım 3) hemen ardından, yapısal hazırlıklar gelir. Bu, iki ana adımdan oluşur:

-Veri Bölme (initial_split): İnşaat Ruhsatı (Modelin final sınavını belirleme).

-Ön İşleme Tarifi (recipes): Malzeme Hazırlığı (Veriyi modelin kabul edeceği forma dönüştürme).

Veri Bölme: Final Sınavını Kilitleme (initial_split)

Bölüm 8.1’de öğrendiğimiz en kritik mimari prensip şuydu: Bir modelin gerçek genelleme yeteneğini ölçmek için, onu daha önce hiç görmediği bir veri seti üzerinde test etmeliyiz. Bu, Eğitim/Test Seti Mantığıdır.

tidymodels çatısında bu adımı, initial_split() fonksiyonuyla gerçekleştiririz. mtcars veri setimizi, genellikle kabul edilen %80 Eğitim (Training) ve %20 Test (Test) oranında böleceğiz.

# data_tbl: mtcars veri setimiz
# prop = 0.8: %80'ini eğitim (training) için ayır
# strata = mpg: Bölme işlemini, hedef değişken mpg'nin dağılımını koruyarak yap
set.seed(42) # Tekrar üretilebilirlik için tohumu belirliyoruz
mtcars_split <- initial_split(data_tbl, prop = 0.8, strata = mpg)
## Warning: The number of observations in each quantile is below the recommended threshold
## of 20.
## • Stratification will use 1 breaks instead.
## Warning: Too little data to stratify.
## • Resampling will be unstratified.
# Eğitim ve Test veri setlerini elde edelim
mtcars_train <- training(mtcars_split)
mtcars_test  <- testing(mtcars_split)

# Kontrol: Veri setlerinin boyutları
cat("Eğitim Seti Gözlem Sayısı:", nrow(mtcars_train), "\n")
## Eğitim Seti Gözlem Sayısı: 25
cat("Test Seti Gözlem Sayısı:", nrow(mtcars_test), "\n")
## Test Seti Gözlem Sayısı: 7

Mimari Yorum: Artık Test Seti (final sınavı soruları) bir kasaya kilitlenmiştir ve model bu verilere dokunamaz. Modelimizin inşası, sadece Eğitim Seti ile yapılacaktır. Bu, Overfitting (Ezbercilik) riskini yönetmemizi sağlayan ilk ve en önemli adımdır.

Ön İşleme Tarifi (Recipe): Malzemeyi İşleme (recipes)

tidymodels çatısının en güçlü araçlarından biri recipes paketidir. Bu paket, model kurmadan önce verilere hangi dönüşümlerin uygulanacağını tanımlayan bir “Ön İşleme Tarifi” oluşturmamızı sağlar.

Basit Lineer Regresyon modelimiz için temel tarifimizi hazırlayalım:

Model Formülü: \(\text{mpg} \sim \text{hp}\)

# Tarifimizi (Recipe) tanımlıyoruz
mtcars_recipe <- recipe(mpg ~ hp, data = mtcars_train) %>%
  # Lineer Regresyon'un katsayılarını yorumlamayı kolaylaştırmak için
  # Bağımsız değişkeni (hp) normalize ediyoruz: ortalama=0, SS=1
  step_normalize(hp)

İdeal Malzeme Kontrolü: Normalliğe Hızlı Ön Teşhis

Lineer Regresyon’un en katı kurallarından biri, hataların normal dağılmasıdır. Bu varsayımın karşılanma olasılığını artırmak için, mimar olarak hedef değişkenimizin (mpg) dağılımını kontrol etmeliyiz.

# mpg'nin dağılımını çizelim
data_tbl %>%
  ggplot(aes(x = mpg)) +
  geom_histogram(binwidth = 2, fill = "darkgreen", color = "white") +
  labs(title = "Hedef Değişken mpg'nin Dağılımı", x = "Galon Başına Mil (mpg)", y = "Sıklık") +
  theme_minimal()

Grafik, mpg değişkeninin normal dağılıma oldukça yakın ve simetrik bir dağılıma sahip olduğunu gösteriyor. Bu, malzememizin ideal olduğunu işaret eder. Bu görsel tespiti nicel bir değerle destekleyelim:

# mpg değişkeninin çarpıklık (skewness) değerini hesaplayalım
# (moments paketi yüklü varsayılmıştır)
library(moments)
skewness_value <- moments::skewness(data_tbl$mpg)
cat("mpg Değişkeni Çarpıklık (Skewness) Değeri:", round(skewness_value, 2), "\n")
## mpg Değişkeni Çarpıklık (Skewness) Değeri: 0.64

Sonuç: mpg’nin çarpıklık değeri yaklaşık 0.64’dir. Akademik rehberlerin (Kim,2005) tolerans eşiği olan \(\pm 2\)’nin oldukça altında olan bu değer, elimizdeki ana malzemenin ideal olduğunu ve Hataların Normalliği varsayımını sağlamak için ek bir dönüşüme gerek olmadığını teyit eder.

Modeli İnşa Etme ve Değerlendirme: Yapıyı Dikme ve İlk Test

Bu aşamada, tidymodels çatısının sağladığı modüler, tutarlı iş akışını kullanarak modelimizi kuracak ve Eğitim Seti üzerinde test ederek ne kadar iyi “öğrendiğini” göreceğiz.

Model inşası üç ana aşamadan oluşur:

-Mimari Planı Çizme (linear_reg): Hangi model türünü kullanacağımızı belirleme.

-İş Akışını Tanımlama (workflow): Mimarî planı, ön işleme tarifiyle birleştirme.

-İnşaatı Başlatma (fit): Modeli eğitim verisine oturtma.

Mimari Plan (linear_reg) ve İş Akışı (workflow)

tidymodels’de, Lineer Regresyon modelini linear_reg() fonksiyonu ile tanımlarız.

# 1. Mimari Plan: Lineer Regresyon modelini tanımlayalım
linear_reg_spec <- linear_reg() %>%
  set_engine("lm") %>%          # R'ın yerleşik 'lm' motorunu kullanacağımızı belirtiyoruz
  set_mode("regression")        # Modun regresyon (sayısal tahmin) olduğunu belirtiyoruz

# 2. İş Akışını Tanımlama: Tarifi (Recipe) ve Planı (Model Spec) birleştiriyoruz
linear_reg_wf <- workflow() %>%
  add_recipe(mtcars_recipe) %>%
  add_model(linear_reg_spec)

Mimari Yorum: İş Akışı (workflow), bir mimari şablon görevi görür. Der ki: “Önce veriyi mtcars_recipe’e göre hazırla, ardından bu hazırlanmış veriyi al ve linear_reg_spec planına göre modeli inşa et.”

İnşaat ve İlk Öğrenme (fit)

Şimdi, bu iş akışını kullanarak modeli Eğitim Seti üzerinde çalıştırıyoruz. Bu, modelimizin hp ve mpg arasındaki ilişkiyi ilk kez “öğrendiği” andır.

# İnşaat Başlıyor: Modeli Eğitim Seti üzerinde eğitelim
linear_reg_fit <- linear_reg_wf %>%
  fit(data = mtcars_train)

# Eğitimli modelin özetine bakalım
print(linear_reg_fit)
## ══ Workflow [trained] ══════════════════════════════════════════════════════════
## Preprocessor: Recipe
## Model: linear_reg()
## 
## ── Preprocessor ────────────────────────────────────────────────────────────────
## 1 Recipe Step
## 
## • step_normalize()
## 
## ── Model ───────────────────────────────────────────────────────────────────────
## 
## Call:
## stats::lm(formula = ..y ~ ., data = data)
## 
## Coefficients:
## (Intercept)           hp  
##      19.416       -4.347

Eğitilmiş model nesnesinden katsayıları ve istatistiksel sonuçları (lm motorunun sonuçlarını) alıp, mimari yorumumuzu yapalım.

# Modelin katsayılarını ve R-kare değerini çekelim
model_summary <- linear_reg_fit %>%
  extract_fit_engine() %>%
  summary()

# Katsayıları gösterelim
cat("--- Model Katsayıları ---\n")
## --- Model Katsayıları ---
print(model_summary$coefficients)
##             Estimate Std. Error   t value     Pr(>|t|)
## (Intercept) 19.41600  0.7213155 26.917485 6.848471e-19
## hp          -4.34695  0.7361896 -5.904661 5.100555e-06
# R-kare değerini gösterelim
cat("\n--- Performans Göstergesi (R-squared) ---\n")
## 
## --- Performans Göstergesi (R-squared) ---
cat("Eğitim Seti R-Kare Değeri:", round(model_summary$r.squared, 3), "\n")
## Eğitim Seti R-Kare Değeri: 0.603

Modelin Yorumlanması (Yapının Tanımlanması)

Eğitilmiş modelimizle, Lineer Regresyon denklemimizi somut sayılarla yazabiliriz:

\[ \widehat{\text{mpg}} = 19.42 - 4.35 \times \text{hp}_{\text{normalize}} \]

Kavram Değer Mimari Yorum
Katsayı (Intercept) \(19.42\) \(\text{hp}\) değeri standardize edildiğinde (ortalama bir beygir gücüne sahip araba) beklenen \(\text{mpg}\) değeridir.
Eğim (Slope) \(-4.35\) Bu, bizim ana mimari bulgumuzdur: Normalleştirilmiş \(\text{hp}\)’deki her 1 birimlik artış, \(\text{mpg}\)’yi yaklaşık \(4.35\) birim azaltır. (Daha güçlü motor, daha düşük yakıt verimliliği).
R-Kare (\(\mathbf{R^2}\)) Değeri \(\approx 0.60\) \(\text{mpg}\)’deki değişkenliğin %60’ının \(\text{hp}\) değişkeni tarafından açıklandığı anlamına gelir. Bu, basit bir model için oldukça güçlü ve tatmin edici bir öğrenmedir.

Final Sınavı: Test Seti Performansı

Modelimizin ezberci (overfit) olup olmadığını görmek için, kilitli kasadaki Test Seti üzerinde tahminler yapıp, gerçek performansını ölçüyoruz.

# Modeli Test Seti üzerinde çalıştırıp tahminleri alalım
mtcars_test_results <- predict(linear_reg_fit, new_data = mtcars_test) %>%
  bind_cols(mtcars_test %>% select(mpg))

# Test seti tahminlerine kısa bir bakış
cat("--- Test Seti Tahminleri ---\n")
## --- Test Seti Tahminleri ---
print(mtcars_test_results)
## # A tibble: 7 × 2
##   .pred   mpg
##   <dbl> <dbl>
## 1  22.6  18.1
## 2  25.4  24.4
## 3  26.0  30.4
## 4  25.2  33.9
## 5  19.6  15.2
## 6  12.1  15.8
## 7  18.0  19.7

Performansı Değerlendirme (yardstick)

tidymodels’in yardstick paketi, model performansını ölçmek için metrikler sunar. Regresyon modellerinde genellikle kullanılan ana metrikler:

RMSE (Root Mean Squared Error): Hatanın ortalama büyüklüğüdür. Daha düşük, daha iyidir. R-kare (Rsq): Açıklanan varyans oranıdır. Daha yüksek, daha iyidir.

# Test Seti metriklerini hesaplayalım
model_metrics <- mtcars_test_results %>%
  metrics(truth = mpg, estimate = .pred)

cat("\n--- Test Seti Performansı ---\n")
## 
## --- Test Seti Performansı ---
print(model_metrics)
## # A tibble: 3 × 3
##   .metric .estimator .estimate
##   <chr>   <chr>          <dbl>
## 1 rmse    standard       4.66 
## 2 rsq     standard       0.564
## 3 mae     standard       4.05

Sonuçların Yorumlanması (Ezberci mi, Öğrenmiş mi?)

Performansın Karşılaştırılması: Altın Oran Kontrolü

Performans Alanı Metrik Değer (Rsq) Mimari Yorum
Eğitim Seti Performansı R-Kare (\(\mathbf{R^2}\)) \(\approx 0.60\) Modelin “ders notlarını” ne kadar iyi öğrendiği.
Test Seti Performansı R-Kare (\(\mathbf{R^2}\)) \(\approx 0.56\) Modelin “final sınavında” ne kadar iyi genellediği.
Denetim Sonucu Fark \(\approx 0.04\) Eğitim ve Test performansları arasındaki fark çok küçüktür. Modelimiz ne ezberci (Overfitting) ne de tembel (Underfitting)’dir. Genelleme yeteneği yüksektir.

Temel Mimarî Yorumun Geçerliliği:

İki değer arasındaki 0.04, makine öğrenmesi standartlarında çok küçük kabul edilir. Model “Altın Oran” bölgesindedir. Ezberci olmadığı ve genelleme yaptığı tespiti tamamen geçerlidir.

Ustalık Notu: Performansın Derinlemesine Analizi (Küçük Veri Seti Riskleri)

Modelimizin Eğitim ve Test setlerinde çok yakın performans göstermesi (\(R^2 \approx 0.60\) ve \(\approx 0.56\)), modelin genelleme yeteneği açısından “Altın Oranı” bulduğuna dair güçlü bir kanıttır. Ancak, bir veri mimarı olarak, mtcars gibi sadece 32 gözlemden oluşan küçük bir veri setinin getirdiği riskleri göz ardı edemeyiz.

Tespit Akademik Risk Sonraki Adımla Bağlantı
Küçük Test Seti (\(n \approx 6\) Gözlem) Test R-Kare değeri (0.56), sadece 6-7 gözlem üzerinde ölçüldüğü için, istatistiksel olarak dalgalanmaya açıktır ve tek başına mutlak güven sağlamayabilir. Daha güvenilir bir genelleme yeteneği ölçümü için, gelecek projelerde Çapraz Doğrulama (Cross-Validation) (tidymodels::vfold_cv) yöntemini kullanmalıyız.
Açıklanamayan Varyans (\(\mathbf{1 - R^2 \approx 40\%}\)) Model, \(\text{mpg}\)’deki değişkenliğin \(\approx \%40\)’ını açıklayamamıştır. Bu varyans, Underfitting’e yakın bir durumun işareti olabilir ve modelin eksik kaldığı noktaları gösterir. Açıklanamayan bu %40’lık varyansın, arabanın ağırlığı veya silindir sayısı gibi diğer değişkenlerden kaynaklandığını biliyoruz. Bu, bizi Çoklu Regresyon’a geçişe hazırlar.
Varsayımların Eksik Denetimi Test Seti üzerindeki yüksek R-Kare, modelin sağlam olduğu anlamına gelmez. Eğer modelin hataları (artıkları) Normal Dağılmıyorsa veya Eşit Varyansa sahip değilse, katsayılarımız ve p-değerlerimiz güvenilirliğini yitirir. Bu, bizi projenin son ve en kritik adımı olan Yapı Denetimine (olsrr) yönlendirir. En iyi performans bile, temel istatistiksel varsayımlar karşılanmadıkça anlamsızdır.

Yapı Denetimi: Varsayımların Kesin İspatı (olsrr Paketi)

Bir modelin yüksek bir Rkare değeri vermesi, sadece “iyi tahminler” yaptığı anlamına gelir. Bir modelin güvenilir ve istatistiksel olarak geçerli olması için, Modelin Varsayımları’ bölümünde teorisini öğrendiğimiz Lineer Regresyon varsayımlarının karşılanması gerekir. Bu son denetim, projemizin yapı ruhsatının son mührüdür.

Bu denetimi, Lineer Regresyon varsayımlarını test etme konusunda uzmanlaşmış olsrr paketi ile gerçekleştireceğiz.

Öncelikle, tidymodels ile kurduğumuz modeli, varsayım denetimi için geleneksel lm nesnesine dönüştürelim:

# Modeli, olsrr'nin kullanabileceği geleneksel 'lm' nesnesine dönüştürüyoruz
lm_model <- linear_reg_fit %>%
  extract_fit_engine()

Hataların Eşit Varyansı (Homoscedasticity) Denetimi

Şanslı’nın Holografik Boru Kartı: Hata yayılımının sabit kalıp kalmadığını kontrol eder. Bu varsayımın ihlali, modelin farklı tahmin aralıklarında eşit derecede güvenilir olmadığı anlamına gelir.

# OLS Regression varsayım testleri için olsrr paketini yüklüyoruz
# (Eğer kurulu değilse: install.packages("olsrr"))
library(olsrr)
# Breusch-Pagan Testi: H0: Eşit Varyans Vardır.
# (Küçük veri setlerinde olsrr uyarı verebilir)
ols_test_breusch_pagan(lm_model)
## 
##  Breusch Pagan Test for Heteroskedasticity
##  -----------------------------------------
##  Ho: the variance is constant            
##  Ha: the variance is not constant        
## 
##              Data               
##  -------------------------------
##  Response : ..y 
##  Variables: fitted values of ..y 
## 
##         Test Summary         
##  ----------------------------
##  DF            =    1 
##  Chi2          =    0.7098135 
##  Prob > Chi2   =    0.3995057

Breusch-Pagan Testi Çıktısının Yorumlanması

Satır Değer İstatistiksel Tanımı Mimari Yorum
Ho: the variance is constant Yokluk Hipotezi (H₀): Modelin hatalarının varyansı sabittir (Homoscedasticity). Bu, modelin geçerliliği için istenir. Yapı Denetimi’nin kabul edeceği temel kural.
Ha: the variance is not constant Alternatif Hipotez (Hₐ): Hataların varyansı sabit değildir (Heteroscedasticity). Yapısal kusur (İstenmez).
Prob > Chi2 \(\mathbf{0.3995}\) P-Değeri: Testin sonucunu belirleyen değer. Yapı Denetimi’nin nihai kararı.

Karar Alma Süreci ve Onay

  1. P-Değeri Karşılaştırması: P-Değeri (\(\mathbf{0.3995}\)) \(\mathbf{> 0.05}\)
  2. Karar: P-Değeri, \(0.05\)’ten büyük olduğu için, Yokluk Hipotezi’ni (\(\text{H}_0\)) reddedemiyoruz.
  3. Mimari Onay: Bu, modelin Hataların Eşit Varyansı (Homoscedasticity) varsayımını başarıyla karşıladığı anlamına gelir. Holografik Boru düzgün çalışmaktadır.

Hataların Normalliği (Normality) Denetimi

Şanslı’nın Çan Şeklinde Işık Halesi Kartı: Hataların Normal Dağılıma uygunluğunu kontrol eder. (H₀: Artıklar Normal Dağılır).

# Shapiro-Wilk Testi: H0: Artıklar Normal Dağılır.
ols_test_normality(lm_model)
## -----------------------------------------------
##        Test             Statistic       pvalue  
## -----------------------------------------------
## Shapiro-Wilk              0.8976         0.0163 
## Kolmogorov-Smirnov        0.1632         0.4698 
## Cramer-von Mises          2.4374         0.0000 
## Anderson-Darling          0.9949         0.0105 
## -----------------------------------------------

Mimari Yorum: İhlal Var ama Hafif!

  • P-Değeri: Çoğu testin P-değeri \(0.05\)’ten küçüktür. İstatistiksel olarak Hataların Normalliği varsayımı ihlal edilmiştir.

  • Uzmanlık Notu (Ghasemi & Zahediasl, 2012): Bu ihlalin şiddetini doğru yorumlamalıyız. Shapiro-Wilk gibi testler, özellikle küçük veri setlerinde (\(n \approx 30\)) normallikten en ufak sapmaya karşı aşırı hassastır. Merkezi Limit Teoremi uyarınca, örneklem büyüklüğümüz bu sınıra yakın olduğu için, bu tür hafif ihlaller genellikle tolere edilebilir kabul edilir, ancak ideal değildir.

Mimari Çözüm: Box-Cox Dönüşümü

İdeal bir senaryoda, bu normallik ihlalini gidermek için Log Dönüşümünün daha gelişmiş bir versiyonunu kullanabilirdik:

  • Box-Cox Dönüşümü Nedir? Verinin dağılımını, en yüksek normalliği sağlayacak şekilde otomatik olarak optimize edilmiş bir \(\lambda\) (lambda) değeriyle dönüştüren matematiksel bir araçtır.
  • Uygulama: Modelimizi yeniden kurmak için tidymodels tarifine step_BoxCox(mpg) adımını ekleyebilirdik. Bu dönüşüm, hataların dağılımını ideal “Çan Eğrisi”ne yaklaştırarak modelin katsayılarına olan güveni artırırdı.

Bu bulguya rağmen, modelimizin Homoscedasticity varsayımını karşılaması ve Altın Oran genellemesi yapması nedeniyle, bu basit yapının temeli hala güçlü kabul edilebilir.

Hataların Bağımsızlığı (Independence) Denetimi

Şanslı’nın Bağımsız Yumaklar Kartı: Hataların birbirini etkilemediğini (ardışık bir korelasyon olmadığını) kontrol eder.

# Durbin-Watson Testi için klasik 'car' paketini kullanıyoruz
# (Eğer kurulu değilse: install.packages("car"))
library(car)

# Durbin-Watson Testi: H0: Artıklar Arasında Bağımlılık Yoktur.
durbinWatsonTest(lm_model)
##  lag Autocorrelation D-W Statistic p-value
##    1       0.4667838      1.058799    0.01
##  Alternative hypothesis: rho != 0

Mimari Yorum: Ciddi İhlal!

Denetim Sonucu: P-değeri 0.05’ten küçük olduğu için, Hatalar arasında bağımlılık olduğu sonucuna varıyoruz. H0’ı (Bağımlılık Yoktur) reddediyoruz.

Net Çıkarım: Modelin hataları pozitif otokorelasyon içermektedir. Bu, özellikle verinin listelenme sırasındaki sistematik bir hatadan kaynaklanır.

Çözüm: Bu ihlal, katsayıların standart hatalarının yanlış hesaplanmasına neden olur. Bu durumda bir mimar, modelin varsayımlarını düzelten Hata Dönüşümleri veya Bağımsız Sıralama gibi adımlar atar.

Büyük Resim: Yapısal Kusurlar ve Onarım Çözümleri

Basit Lineer Regresyon modelimiz (mpg ~ hp), ne yazık ki tüm Yapı Denetimi testlerinden tam not alamamıştır.

Varsayım Test Sonucu Statü Mimari Sonuç
Eşit Varyans (Homoscedasticity) Breusch-Pagan P \(\approx 0.3995\) GEÇERLİ Hata yayılımı sabittir.
Hataların Normalliği Shapiro-Wilk P \(\approx 0.0163\) İHLAL Hatalar simetrik dağılmamaktadır (Ancak \(n=32\) nedeniyle hafif tolere edilebilir).
Hataların Bağımsızlığı Durbin-Watson P \(\approx 0.01\) İHLAL Hatalar arasında bağımlılık vardır (Otokorelasyon).

Modelimiz Altın Oran performansına sahip olsa da, bu iki varsayımın ihlali, özellikle katsayılarımızın standart hatalarının ve dolayısıyla P-değerlerimizin güvenilirliğini zedelemektedir.

Mimari Onarım Planı:

  • Normallik İhlali İçin: \(\text{mpg}\) değişkenine Box-Cox Dönüşümü uygulanmalıydı.
  • Bağımsızlık İhlali İçin: Veri sıralaması rastgele hale getirilmeli veya Hata Dönüşümleri uygulanmalıydı.

Bu bulgular, bir veri mimarının sadece yüksek bir Rkare’ye bakarak bir modeli onaylamaması gerektiğini kanıtlar.

Geleceğe Yönelik Denetim: Çoklu Regresyon Senaryosu

Şu an basit regresyon modeli üzerinden gidiyoruz. Eğer çoklu regresyon modeli kurmuş olsaydık yapmamız gereken varsayım kontrolü aşağıdaki gibi olacaktı. Bölüm 8.3’de bu konu daha detaylı anlatılacak olup şimdilik dostlarımıza bilgi niteliğinde aşağıda sunulmuştur.

Modelimizi karmaşıklaştırarak gerçek hayatta karşılaşacağımız bir tehlikeye, Çoklu Doğrusallık (Multicollinearity)’a bakalım.

Yeni Mimari Plan:

\[ \text{mpg} \sim \text{hp} + \text{wt} + \text{cyl} \] Bu karmaşık modeli lm nesnesi olarak oluşturalım:

# Yeni, daha karmaşık modelimizi eğitim verisi üzerinde eğitiyoruz
complex_lm_model <- lm(mpg ~ hp + wt + cyl, data = mtcars_train)

Çoklu Doğrusallık Denetimi (VIF)

Çoklu Doğrusallık, VIF (Variance Inflation Factor) değeri ile ölçülür. Kuralımız: VIF değeri 5’in üzerinde olan değişkenler, model katsayılarının güvenilirliğini ciddi şekilde tehlikeye atar.

# Çoklu Doğrusallık Denetimi (VIF) için 'olsrr' kullanıyoruz.
ols_vif_tol(complex_lm_model)

Mimari Yorum:

Denetim Sonucu: Tüm VIF değerleri, kabul eşiği olan 5’in altındadır. Net Çıkarım: Karmaşık modelimizde dahi, değişkenler arasındaki güçlü korelasyonlara rağmen, ciddi bir Çoklu Doğrusallık sorunu yoktur. Bu, model katsayılarımızın bireysel yorumlanabilirliğini koruduğu anlamına gelir. Şanslı’nın İki Kedi Silüeti Kartı geçerlidir.

Bölüm 8.2 Özeti: Mimarlığın Temel Taşı

Harika bir iş çıkardık, dostlar! Basit Lineer Regresyon yapımızı inşa ederken, hem mükemmel performansı hem de gizli yapısal kusurları görmüş olduk.

Varsayım Statü Sonuç
Genelleme Yeteneği (Altın Oran) GEÇERLİ Eğitim/Test R-Kare farkı \(\approx 0.04\) ile yüksek genelleme.
Eşit Varyans (Homoscedasticity) GEÇERLİ Breusch-Pagan Testi ile hata yayılımı sabittir.
Çoklu Doğrusallık (VIF Testi) GEÇERLİ Karmaşık modelde dahi VIF \(< 5\).
Normallik (Shapiro-Wilk) İHLAL Hatalar simetrik dağılmıyor (Çözüm: Box-Cox).
Bağımsızlık (Durbin-Watson) İHLAL Hatalar arasında otokorelasyon var (Çözüm: Sıralama/Hata Dönüşümleri).

Öğrenilen Ders: Modelimiz performans (R-Kare) açısından sağlam olsa da, iki kritik istatistiksel varsayımı (Normallik ve Bağımsızlık) ihlal etmiştir. Bu, bir mimar olarak yüksek performansın her zaman geçerli bir yapı anlamına gelmediğini gösterir.

Ustalık Notu: Varsayım Onarımlarının Gücü

Onarım Adımı Hedeflenen Varsayım Beklenen İyileşme
1. Box-Cox Dönüşümü Normallik ve Eşit Varyans Hataların dağılımı Çan Eğrisi’ne yaklaşır. Bu, model katsayılarının ve P-Değerlerinin doğru hesaplanmasını garanti eder. \(R^2\)’de büyük bir değişiklik beklenmez, ancak modelin çıkarım (inference) gücü artar.
2. Veriyi Rastgele Sıralama Bağımsızlık (Otokorelasyon) Hatalar arasındaki bağımlılık ortadan kalkar. Bu, katsayıların Standart Hatalarının doğru hesaplanmasını sağlar. Eğer Standart Hatalar yanlışsa, modelin ne kadar kesin tahminler yaptığını bilmek imkansızdır.

Nihai Mimari Değerlendirme:

Bizim basit Lineer Regresyon modelimiz \(R^2\)≈0.60 ile zaten iyi tahminler yapıyordu.

Onarım adımlarının eklenmesiyle:

Model, hala \(R^2\)$≈0.60 civarında tahminler yapmaya devam eder.Ancak, bu kez modelin tüm P-Değerleri, Standart Hataları ve Güven Aralıkları artık istatistiksel olarak geçerlidir.

Bir mimar için, bir yapının estetiği (yüksek \(R^2\)) kadar, temelinin sağlam ve güvenilir olması (geçerli varsayımlar) da hayati öneme sahiptir. Bu onarımlar, modelimizi tahmin gücü yüksek ve istatistiksel geçerliliği kanıtlanmış bir yapıya dönüştürürdü.

Son Söz: Onarım ve Nihai Modelin İyileştirilmesi

“Ustalık Notu: Varsayım Onarımlarının Gücü”nde belirttiğimiz gibi, modelimizin performansını değil, istatistiksel geçerliliğini artırmak için ihlal edilen varsayımları hemen düzeltelim.

Bu, bir sonraki projemiz için de temel teşkil edecek olan, “Kusurlu Veri İçin Nihai Reçete”mizdir. Bu onarım adımlarını tidymodels tarifine ekleyelim:

1. Hataların Normalliği Onarımı: mpg’ye Box-Cox Dönüşümü eklenmesi.

2. Hataların Bağımsızlığı Onarımı: Veri setinin kullanımdan hemen önce rastgele sıralanması (sample_n(…, replace = FALSE)).

# 1. Veriyi RASTGELE sıralayalım (Bağımsızlık Onarımı)
set.seed(42)
mtcars_train_shuffled <- mtcars_train %>% 
  sample_n(size = nrow(mtcars_train), replace = FALSE)

# 2. Yeni Ön İşleme Tarifi (Box-Cox Dönüşümü Eklendi)
final_recipe <- recipe(mpg ~ hp, data = mtcars_train_shuffled) %>%
  step_normalize(hp) %>%
  # Normallik varsayımı ihlalini gidermek için Box-Cox dönüşümünü ekliyoruz
  step_BoxCox(mpg) 

# 3. Nihai İş Akışını ve Modeli Eğitelim
final_linear_reg_wf <- workflow() %>%
  add_recipe(final_recipe) %>%
  add_model(linear_reg_spec) # linear_reg_spec daha önce tanımlanmıştı

final_linear_reg_fit <- final_linear_reg_wf %>%
  fit(data = mtcars_train_shuffled)
# Son Söz: Onarım ve Nihai Modelin İyileştirilmesi bölümündeki kodlar varsayılmıştır
# final_linear_reg_fit nesnesi Box-Cox ve Sıralama ile eğitilmiş modeldir.

# =======================================================
# YENİ YAPININ VARSAYIM TESTLERİ (Onarımların İspatı)
# =======================================================

# Onarılmış modeli lm nesnesine çekelim
final_lm_model <- final_linear_reg_fit %>%
  extract_fit_engine()

# Varsayım testleri için paketleri yüklüyoruz
library(olsrr)
library(car)

# 1. Hataların Eşit Varyansı (Homoscedasticity) Denetimi
cat("--- 1. Breusch-Pagan Testi (Eşit Varyans) ---\n")
## --- 1. Breusch-Pagan Testi (Eşit Varyans) ---
ols_test_breusch_pagan(final_lm_model)
## 
##  Breusch Pagan Test for Heteroskedasticity
##  -----------------------------------------
##  Ho: the variance is constant            
##  Ha: the variance is not constant        
## 
##              Data               
##  -------------------------------
##  Response : ..y 
##  Variables: fitted values of ..y 
## 
##         Test Summary          
##  -----------------------------
##  DF            =    1 
##  Chi2          =    4.670015 
##  Prob > Chi2   =    0.03069366
# 2. Hataların Normalliği (Normality) Denetimi
cat("\n--- 2. Normallik Testleri (Shapiro-Wilk) ---\n")
## 
## --- 2. Normallik Testleri (Shapiro-Wilk) ---
ols_test_normality(final_lm_model)
## Warning in ks.test.default(y, "pnorm", mean(y), sd(y)): ties should not be
## present for the one-sample Kolmogorov-Smirnov test
## -----------------------------------------------
##        Test             Statistic       pvalue  
## -----------------------------------------------
## Shapiro-Wilk              0.9336         0.1052 
## Kolmogorov-Smirnov        0.1354         0.7494 
## Cramer-von Mises          4.7052         0.0000 
## Anderson-Darling          0.7961         0.0337 
## -----------------------------------------------
# 3. Hataların Bağımsızlığı (Independence) Denetimi
cat("\n--- 3. Durbin-Watson Testi (Bağımsızlık) ---\n")
## 
## --- 3. Durbin-Watson Testi (Bağımsızlık) ---
durbinWatsonTest(final_lm_model)
##  lag Autocorrelation D-W Statistic p-value
##    1       0.3051768      1.385308   0.106
##  Alternative hypothesis: rho != 0

Nihai Yapı Denetimi Sonuçları: Onarımların İspatı

Varsayım İlk Model Sonucu (P-Değeri) Nihai Model Sonucu (P-Değeri) Statü Mimari Değişim
Eşit Varyans P \(\approx 0.3995\) P \(\approx 0.0306\) İHLAL Onarım, bu varsayımı ilginç bir şekilde bozmuştur. Box-Cox dönüşümü bazen varyansı etkileyebilir.
Normallik P \(\approx 0.0163\) (İHLAL) Shapiro-Wilk P \(\approx 0.1052\) GEÇERLİ ONARILDI! Box-Cox, Normallik ihlalini başarıyla gidermiştir.
Bağımsızlık P \(\approx 0.01\) (İHLAL) P \(\approx 0.106\) GEÇERLİ ONARILDI! Rastgele sıralama, hatalar arasındaki bağımlılığı ortadan kaldırmıştır.

Ve Kapanış Sözlerimiz

Harika bir iş çıkardık, dostlar!

Basit bir Lineer Regresyon modeliyle başladık, tidymodels’in gücünü öğrendik ve modeli inşa ederken Altın Oran performansına ulaştık.

En önemlisi: Bir mimar titizliğiyle modelimizin varsayımlarındaki kusurları (Normallik ve Bağımsızlık) tespit ettik ve Box-Cox gibi ileri dönüşümlerle bu kusurları onararak modelimizin istatistiksel geçerliliğini sağladık.

Modelimiz artık bağımsız ve normal dağılmış hatalara sahiptir; bu, katsayılarımızın güvenilirliğini ve P-değerlerimizin doğruluğunu garanti altına almıştır.

Peki ya Eşit Varyans (P ≈0.0306), P-değeri 0.05’in hemen altındadır ve teknik olarak H0 reddedilir (Heteroscedasticity var). Ancak bu, Normallik ve Bağımsızlık gibi daha kritik varsayımların kurtarılması karşılığında kabul edilebilir bir ticarettir. İleri analizlerde, bu durum için Heteroscedasticity-tutarlı Standart Hatalar (HC SE) kullanılarak modelin tamamen geçerli hale getirileceğini söyleyebiliriz.

Sonuç: Modelimizin Altın Oran performansı, artık sağlam istatistiksel geçerlilikle desteklenmiştir!

Peki bir sonraki bölümde bizi neler bekliyor?

Bölüm 8.3: Mimarlık Detayları - Kategorik Değişkenler ve Etkileşim Gücü Basit yapının temelini attık. Ancak, gerçek dünyadaki yapılar (modeller) daha karmaşıktır. Bir arabanın yakıt tüketimine göre mil sadece hp’ye değil, aynı zamanda otomatik veya manuel vites olmasına (am), düz veya V-şekilli motora (vs) sahip olmasına da bağlıdır.

Bölüm 8.3’te Neler Yapacağız?

Kategorik Kolonlar: Denetimli Öğrenme Uzmanı’nın talimatıyla, tidymodels’te Kategorik Değişkenleri (am, vs, gear) Lineer Regresyon’a nasıl dahil edeceğimizi öğreneceğiz. (Mimari karşılığı: Farklı malzeme türlerini (beton, ahşap) plana dahil etme.)

Etkileşim Terimleri: İki değişkenin (örneğin hp ve wt) birlikte çalışarak tek başlarına olduklarından daha büyük bir etki yaratmasını sağlayan Etkileşim Terimlerini modelimize ekleyeceğiz. (Mimari karşılığı: İki farklı kolonu birleştirerek yeni bir taşıyıcı sistem oluşturma.)

Çoklu Regresyon: Bu yeni, karmaşık modelin performansını ve varsayımlarını (özellikle VIF’i) tekrar test ederek, en gelişmiş Çoklu Lineer Regresyon yapımızı inşa edeceğiz. Sayıların Ardındaki Sezgi artık somut, detaylı ve karmaşık mimariye dönüştü.

Veriyle kalın, lütfen takipte kalın dostlar…

Kaynakça