library(openintro)
library(Stat2Data)
library(tidyverse)
library(broom)


library(ResourceSelection) # Hosmer-Lemeshow testi için
library(DescTools) # nagelkare hesaplamak için
library(aod)# wald test

DERS NOTLARI & KONU ÖZETİ

İki Kategorili Bağımlı Değişkenin Basit Doğrusal Regresyon ile Analizinde Karşılaşılan Problemler: -bağımlı değişkenin 0 veya 1 değerini almasına karşın, X değerleri için yordanan bağımlı değişken değerlerinin hiçbirisinin veya çoğunun 0 veya 1’e eşit olmamasıdır. 0-1 dışında değerler üretir.

-varyansların homojenliği sayıltısının ihlal edilmesi; hata teriminin varyansının bağımsız değişkenin değerleri arasında farklılık gösterdiği durumda varyansların heterojenliği söz konusu olur.

  • iki kategorili bapımlı değişken için basit regresyon iyi bir seçim değil ama bağımsız değişkenin bütün değerleri boyunca bağımlı değişken değerlerinin yüzdesi, %20’nin altına düşmediği veya %80’in üstüne çıkmadığı sürece oldukça iyi kestirim sağlayacaktır (Cox ve Wermuth, 1992).

Lojistik Regresyon: bir grup bağımsız değişkenden iki kategorili bir değişkenin yordanmasını sağlar.LR analizi ile bağımlı değişkene ilişkin logg-odds yordanır.

Olasılık (Probability) (p): 0 ile 1 arasındadır.

Odds (p/1-p): Bir olayın meydana gelme şansının meydana gelmeme şansına oranıdır. 0 ile artı sonsuz arasındadır.

Log-Odds (ln[p/1-p]): Oddsun doğal logaritmasıdır, eksi sonsuz ile artı sonsuz arasındadır. Log-odds p=0,5 etrafında simetriktir.

Örnek: Geçme olasılığı, p=0.80

Geçme odds:0,80/(1-0,80)=0,80/0,20=4; yani geçme olasılığı kalma olasılığının 4 katı.

Geçme log-oddsu 1,386’dır, kalma log-oddsu -1.386.

Log-odds yorumlaması: p < 0,5 ise, odds 1’den küçük, log-odds da 0’dan küçüktür.

p=0,5, odds 1’e eşit, log-odds da 0’a eşittir.

p > 0,5, odds 1’den büyük, log-odds da 0’dan büyüktür.

LR analizinde yaygın olarak kullanılan kestirim yöntemi maksimum olabilirlik (maximum likelihood – ML) yöntemidir; bu yöntemin kestirimleri tutarlı, asimptotik olarak verimli ve normaldir.

ÖRNEK UYGULAMA 1

library(haven)
Pass <- read_sav("Pass.sav")

Verinin Görselleştirilmesi

v1 <- ggplot(data = Pass, aes(x = X, y = pass)) + 
  geom_jitter(width = 0, height = 0.05, alpha = 0.5) +
  labs(title = "Ön Test Puanı ve Geçme Durumu", 
       x = "Ön Test Puanı (X)", 
       y = "Geçme Durumu (0=Kaldı, 1=Geçti)")

v1

Düşük Puanlar (1-5 arası): Noktaların neredeyse tamamı alt tarafta (0= Kaldı) toplanmış.

Yüksek Puanlar (6-9 arası): Noktaların çoğu üst tarafta (1=Geçti) kümelenmiş.

Sağ altta 8 puan alan kişi kalmış.

v1 +
  geom_smooth(method = "lm", se = FALSE)

Mavi çizgi sol tarafta 0’ın altında; neden lojistik regresyon kullanmalıyız sorusunun cevabı budur.

v1 + 
  geom_smooth(method = "lm", se = FALSE)+
    geom_smooth(method = "glm", se = FALSE, color = "red", 
              method.args = list(family = "binomial"))

Kırmızı çizgi lojistik regresyon eğrisidir. Bu model: Tahmin edilen olasılıkların 0 ile 1 arasında kalmasını sağlar. Uç değerlerde daha gerçekçi tahminler üretir.

puan_breaks <- Pass |>
  pull(X) |>
  quantile(probs = seq(0, 1, by = 0.2))

v2 <- v1+ 
  stat_summary_bin(
    fun = "mean", 
    color = "red", 
    geom = "line", 
    breaks = puan_breaks,
    size = 1
  )

v2

mod_pass<- glm(formula = pass ~ X, family = binomial, data = Pass)
mod_pass
## 
## Call:  glm(formula = pass ~ X, family = binomial, data = Pass)
## 
## Coefficients:
## (Intercept)            X  
##     -6.3475       0.9843  
## 
## Degrees of Freedom: 10 Total (i.e. Null);  9 Residual
## Null Deviance:       14.42 
## Residual Deviance: 7.664     AIC: 11.66
v2 +
  geom_line(
    data = augment(mod_pass, type.predict = "response"), 
    aes(y = .fitted), color = "blue"
  )

Mavi çizgi: lojistik regresyon modelinin tahmin ettiği olasılık eğrisi.

Kırmızı Çizgi : Bu, veriyi gruplara (bin) ayırdığımızda ortaya çıkan gerçek geçme oranları.

Gerçek hayatta öğrenciler, modelinin tahmin ettiğinden biraz daha yüksek bir oranda başarılı olmuşlar. Özellikle 4 ile 7 puan arasındaki yükseliş, modelin beklediğinden daha farklı.

(Intercept) - Sabit Terim (-6.3475): Ön test puanı (X) sıfır olduğunda, bir öğrencinin dersten geçme olasılığının log-odds değeridir. X (Ön Test Puanı) (0.9843): Ön test puanındaki 1 birimlik artış, dersten geçme olasılığının log-odds değerini 0.9843 birim artırır.

exp(0.9843) 
## [1] 2.675938
# log-odds değerini anlayabileceğimiz bir dile, yani Odds Oranına (Odds Ratio) çevirmemiz lazım. Bunun için katsayının üssünü (exponential) alıyoruz.

Ön test puanındaki her 1 puanlık artış, dersten geçme odds’unu (şansını) yaklaşık 2.67 kat artırmaktadır. Beta katsayısına bak önce negatif mi pozitif mi ondan sonra yorumla pozitif olduğu için artırır dedik, negatif olsa azaltır derdik.

exp(coef(mod_pass))
## (Intercept)           X 
## 0.001751178 2.675995938
# Ön test puanındaki (X) her 1 birimlik artış, öğrencinin dersten geçme Odds'unu (şansını) 2.67 kat artırır.

# Eğer sonuç 1'den büyükse (> 1): Değişken, olasılığı artırıyor demektir (Pozitif etki).Eğer sonuç 1'den küçükse (< 1): Değişken, olasılığı azaltıyor demektir (Negatif etki).Negatif durumda yorum kolaylığı için Yüzdelik Azalma Formülü (OR < 1 ise) (1 - OR) x 100 kullan.

# Eğer bir öğrenci ön testten 0 puan alırsa, geçme odds'u neredeyse sıfırdır (binde 1.7). Yani 0 puan alan birinin geçme ihtimali yok denecek kadar azdır.

Model Testleri

Genel Test Model Ki-Kare: 14.42 (Null-Sadece sabit terim varken hata)) - 7.664 (Residual-Puan değişkeni eklendiğinde kalan hata) =6.756 (Fark) Serbestlik Derecesi (df): 1 df = 1 için kritik eşik değer 3.84’tür. 6.756 > 3.84 olduğu için model istatistiksel olarak anlamlıdır.

Model Uyum (Kalite) Ölçümleri: Yalancı (Pseudo) R2

PseudoR2(mod_pass, which = "Nagelkerke")
## Nagelkerke 
##  0.6283291
# Modelin uyum iyiliği istatistikleri incelendiğinde, Nagelkerke R^2 değeri 0.628 olarak hesaplanmıştır. Öğrencilerin ön test puanlarının , dersten geçme durumunu oldukça güçlü bir şekilden açıkladığını göstermektedir.

İyilik Uyumu İstatistiği: Hosmer-Lemeshow Testi

library(ResourceSelection)

hl_test <- hoslem.test(Pass$pass, fitted(mod_pass), g = 10) # g = 10, grup sayısını belirtir
hl_test
## 
##  Hosmer and Lemeshow goodness of fit (GOF) test
## 
## data:  Pass$pass, fitted(mod_pass)
## X-squared = 4.099, df = 6, p-value = 0.6633
# Sonuç 
# p>.05 olduğu için modelin veriye uyumu istatistiksel olarak iyidir.

** Artıklar (Residuals) ve Model Tanılama (Diagnostics) 1. Ham artıklar

raw_res <- Pass$pass - predict(mod_pass, type = "response")
head(raw_res)
##            1            2            3            4            5            6 
## -0.004664287 -0.012384798 -0.032467741 -0.082399697 -0.082399697 -0.193744796
# yorumlar 
# Tüm değerlerin negatif (-) olması: Bu 6 öğrencinin tamamı gerçekte kalmış (0).
# Model ise onlar için çok düşük de olsa bir "geçme olasılığı" hesaplamış.

Sapma Artıkları (Deviance Residuals): Lojistik regresyonda aykırı değerleri (outliers) bulmak için ham artıklar yerine Log-olabilirlik (Log-likelihood) fonksiyonuna dayanan sapma artıkları kullanılır. Bir gözlemin sapma artığı mutlak değerce çok büyükse (örneğin > 2 veya > 3), model o kişiyi tahmin etmede ciddi şekilde yanılıyor demektir.

dev_res <- residuals(mod_pass, type = 'deviance')
summary(dev_res)
##     Min.  1st Qu.   Median     Mean  3rd Qu.     Max. 
## -1.85668 -0.41471 -0.15787 -0.04591  0.51099  1.36974
# değerler -1.85 ile 1.36 arasında kalmış. Model oldukça stabil ve güvenilir.

***Sınıflandırma Metrikleri

Karışıklık matrisi model performansını değerlendirmek için kullanılır.

Önce 0 ile 1 arasında olasılıklar ekle

model_verisi <- augment(mod_pass, type.predict = "response") %>%
              mutate(pass_hat = round(.fitted))

Sınıflama Tablosu

model_verisi %>%
  select(pass, pass_hat) %>%
  table()
##     pass_hat
## pass 0 1
##    0 6 1
##    1 1 3

Yorum: 11 öğrenciden 9 tanesi doğru tahmin edilmiştir. Modelin genel doğruluğu yaklaşık %81.8’dir

Köşegen Toplamı: (Doğru Tahminler): 6+3, 11 kişide 9 u doğru tahmin etti yüzde 82 yaklaşık eder doğruluk yüzdesi.

Wald Testi

wald.test(b = coef(mod_pass), Sigma = vcov(mod_pass), Terms = 2)
## Wald test:
## ----------
## 
## Chi-squared test:
## X2 = 3.1, df = 1, P(> X2) = 0.076

0.0760 > 0.05 olduğu için X değişkeni (ön test puanı) istatistiksel olarak anlamlı değildir. Omnibus (Model) Testin anlamlı çıkmıştı (p = 0.0093). Ancak Wald Testi değil (p = 0.076), bunun sebebi örneklem sayının (n=11) çok küçük olmasıdır. Aşağıda veri sayısı iki katına çıkarılınca istatistiksle olarak anlamlı değer elde edildi.

library(haven)
Pass_x2_ <- read_sav("~/Desktop/HACETTEPE DOKTORA/OLC 733 R/04_LR/Pass(x2).sav")

mod_pass2<- glm(formula = pass ~ X, family = binomial, data = Pass_x2_)
wald.test(b = coef(mod_pass2), Sigma = vcov(mod_pass2), Terms = 2)
## Wald test:
## ----------
## 
## Chi-squared test:
## X2 = 6.3, df = 1, P(> X2) = 0.012

ÖRNEK UYGULAMA 2

library(haven)
nelsstudent <- read_sav("~/Desktop/HACETTEPE DOKTORA/OLC 733 R/04_LR/nelsstudent.sav")

Model 1 Okuma

mod1 <- glm(passmath ~ bytxrstd, data = nelsstudent, family = binomial)
summary(mod1)
## 
## Call:
## glm(formula = passmath ~ bytxrstd, family = binomial, data = nelsstudent)
## 
## Coefficients:
##             Estimate Std. Error z value Pr(>|z|)    
## (Intercept) -7.56050    1.14368  -6.611 3.83e-11 ***
## bytxrstd     0.17219    0.02386   7.218 5.28e-13 ***
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## (Dispersion parameter for binomial family taken to be 1)
## 
##     Null deviance: 283.58  on 238  degrees of freedom
## Residual deviance: 200.05  on 237  degrees of freedom
##   (61 observations deleted due to missingness)
## AIC: 204.05
## 
## Number of Fisher Scoring iterations: 5

**Yorum: Model 1 için, 283.6-200=83.6, Kritik ki-kare değeri sd=1 ile 3,841 olduğu için sonuç istatistiksel olarak anlamlıdır.Bu sonuç evrende matematik testini geçme (passmath) log-oddsunun yordanmasında bytxrstd değişkeninin sıfırdan farklı bir eğim katsayısına sahip olduğu şeklinde yorumlanabilir.

Kesişim katsayısı: -7,5605. Okuma puanı 0’a eşitken yordanan matematik testini geçme log-oddsudur. Eğim katsayısı .172. Bu değer okuma puanındaki bir birimlik artışın matematik testini geçme log-oddsunun ,172 birim artacağı anlamına gelmektedir.

Z testi istatistiksel olarak anlamlıdır (p <,001).

exp(0.1722 ) 
## [1] 1.187915
# Okuma puanındaki bir birimlik artış ile öğrencilerin matematik testini geçme oddsunun 1,188 katına çıkacağı anlamına gelmektedir.
library(aod)
# Okuma Puanı (bytxrstd) için Wald Testi (1:Intercept, 2:bytxrstd)
wald1<- wald.test(b = coef(mod1), Sigma = vcov(mod1), Terms = 2)
wald1
## Wald test:
## ----------
## 
## Chi-squared test:
## X2 = 52.1, df = 1, P(> X2) = 5.3e-13
# Yapılan Wald testi sonucu, istatistiksel olarak anlamlı olduğu  görülmüştür. Bu sonuç evrende bytxrstd değişkeninin sıfırdan farklı bir eğim katsayısına sahip olduğu şeklinde yorumlanabilir.

Model (2): okuma puanı+SES

mod2 <- glm(passmath ~ bytxrstd + f1ses, data = nelsstudent, family = binomial)

summary(mod2)
## 
## Call:
## glm(formula = passmath ~ bytxrstd + f1ses, family = binomial, 
##     data = nelsstudent)
## 
## Coefficients:
##             Estimate Std. Error z value Pr(>|z|)    
## (Intercept) -6.58208    1.20156  -5.478 4.30e-08 ***
## bytxrstd     0.15497    0.02493   6.215 5.13e-10 ***
## f1ses        1.02895    0.28732   3.581 0.000342 ***
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## (Dispersion parameter for binomial family taken to be 1)
## 
##     Null deviance: 283.58  on 238  degrees of freedom
## Residual deviance: 185.46  on 236  degrees of freedom
##   (61 observations deleted due to missingness)
## AIC: 191.46
## 
## Number of Fisher Scoring iterations: 5

Yorum: Model 2 için ki kare değeri 283.58-185.46=98.12,sd=2 için kikare değeri 5,992’den büyük olduğu için sonuç istatistiksel olarak anlamlı. Bu sonuç evrende matematik testini geçme (passmath) log-oddsunun yordanmasında bytxrstd ve f1ses değişkenlerinden en az birinin sıfırdan farklı bir eğim katsayısına sahip olduğu şeklinde yorumlanabilir. Her iki eğim katsayısı için Z testi istatistiksel olarak anlamlı.

exp(0.15497) # bytxrstd değişkeni odds oranı 1.168
## [1] 1.167623
exp(1.02895) # f1 ses değişkeni odds oranı 2.798
## [1] 2.798126
#  SES puanı kontrol edildikten sonra okuma puanındaki bir birimlik artış ile öğrencilerin matematik testini geçme oddsunun 1,168 katına çıkar.

# Okuma puanı kontrol edildikten sonra SES puanındaki bir birimlik artış ile öğrencilerin matematik testini geçme oddsunun 2,798 katına çıkacağı anlamına gelmektedir.
library(aod)
# Okuma Puanı (bytxrstd) için Wald Testi (1:Intercept, 2:bytxrstd, 3:f1ses)
wald.test(b = coef(mod2), Sigma = vcov(mod2), Terms = 2)
## Wald test:
## ----------
## 
## Chi-squared test:
## X2 = 38.6, df = 1, P(> X2) = 5.1e-10
# SES (f1ses) için Wald Testi
wald.test(b = coef(mod2), Sigma = vcov(mod2), Terms = 3)
## Wald test:
## ----------
## 
## Chi-squared test:
## X2 = 12.8, df = 1, P(> X2) = 0.00034

Yorum: Her iki değişken için de, Wald testi istatistiksel olarak anlamlıdır (p < .001). Bu sonuç evrende hem bytxrstd değişkeninin hem de f1ses değişkeninin sıfırdan farklı bir eğim katsayısına sahip olduğu şeklinde yorumlanabilir.

Model 3

mod3 <- glm(passmath ~ bytxrstd + f1ses+ f1stumor, data = nelsstudent, family = binomial)

summary(mod3)
## 
## Call:
## glm(formula = passmath ~ bytxrstd + f1ses + f1stumor, family = binomial, 
##     data = nelsstudent)
## 
## Coefficients:
##             Estimate Std. Error z value Pr(>|z|)    
## (Intercept) -6.39511    1.25522  -5.095 3.49e-07 ***
## bytxrstd     0.15234    0.02599   5.861 4.60e-09 ***
## f1ses        0.97149    0.29554   3.287  0.00101 ** 
## f1stumor    -0.02128    0.02756  -0.772  0.43989    
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## (Dispersion parameter for binomial family taken to be 1)
## 
##     Null deviance: 265.47  on 228  degrees of freedom
## Residual deviance: 174.03  on 225  degrees of freedom
##   (71 observations deleted due to missingness)
## AIC: 182.03
## 
## Number of Fisher Scoring iterations: 5
exp(0.15234)# okuma odds oranı
## [1] 1.164556
exp(0.97149)# ses odds oranı 
## [1] 2.641878
exp(-0.02128)# moral odds oranı 
## [1] 0.9789448

Yorumlar:

Model 3 için ki kare değeri 265.47-174.03= 91.44,sd=3 için kikare değeri 7,815’den büyük olduğu için sonuç istatistiksel olarak anlamlı. Bu sonuç evrende matematik testini geçme (passmath) log-oddsunun yordanmasında bytxrstd, f1ses ve f1stumor değişkenlerinden en az birinin sıfırdan farklı bir eğim katsayısına sahip olduğu şeklinde yorumlanabilir. Her iki eğim katsayısı için Z testi istatistiksel olarak anlamlı. Kesişim katsayısı -6,395’e eşittir. Bu değer okuma puanı, SES puanı ve moral puanı 0’a eşitken yordanan matematik testini geçme log-oddstur.

bytxrstd değişkeni için eğim katsayısı ,152’ye, bu katsayıya ilişkin odds oranı ise 1,165’e eşittir. Bu değer SES puanı ve moral puanı kontrol edildikten sonra okuma puanındaki bir birimlik artış ile öğrencilerin matematik testini geçme oddsunun 1,165 katına çıkacağı anlamına gelmektedir.

f1ses değişkeni için eğim katsayısı ,971’e, bu katsayıya ilişkin odds oranı ise 2,642’ye eşittir. Bu değer okuma puanı ve moral puanı kontrol edildikten sonra SES puanındaki bir birimlik artış ile öğrencilerin matematik testini geçme oddsunun 2,642 katına çıkacağı anlamına gelmektedir.

f1stumor değişkeni için eğim katsayısı -,021’e, bu katsayıya ilişkin odds oranı ise ,979’a eşittir. Fakat mevcut modelde moral düzeyinin matematik başarısı üzerinde belirleyici bir etkisi olduğu söylenemez.

bytxrstd ve f1ses değişkenlerinin eğim katsayısı için z testi istatistiksel olarak anlamlıdır (p < ,001), f1stumor değişkeni için değildir.

# Wald testleri (1:Intercept, 2:bytxrstd, 3:f1ses, 4:f1stumor)

wald.test(b = coef(mod3), Sigma = vcov(mod3), Terms = 2)
## Wald test:
## ----------
## 
## Chi-squared test:
## X2 = 34.4, df = 1, P(> X2) = 4.6e-09
wald.test(b = coef(mod3), Sigma = vcov(mod3), Terms = 3)
## Wald test:
## ----------
## 
## Chi-squared test:
## X2 = 10.8, df = 1, P(> X2) = 0.001
wald.test(b = coef(mod3), Sigma = vcov(mod3), Terms = 4)
## Wald test:
## ----------
## 
## Chi-squared test:
## X2 = 0.6, df = 1, P(> X2) = 0.44

Yorum: Wald testi bytxrstd ve f1ses değişkenlerinin eğim katsayıları için istatistiksel olarak anlamlı iken, f1stumor değişkeni için değildir.Bu sonuç evrende hem bytxrdstd değişkeninin hem de f1ses değişkeninin sıfırdan farklı bir eğim katsayısına sahip olduğu şeklinde yorumlanabilir. f1stumor değişkeninin sıfırdan farklı bir eğim katsayısına sahip olmadığı şeklinde yorumlanabilir.

# Model 1 için Nagelkerke R2
PseudoR2(mod1, which = "Nagelkerke")
## Nagelkerke 
##  0.4245833
# Model 2 için Nagelkerke R2
PseudoR2(mod2, which = "Nagelkerke")
## Nagelkerke 
##  0.4846692
# Model 3 için Nagelkerke R2
PseudoR2(mod3, which = "Nagelkerke")
## Nagelkerke 
##  0.4796797
# Hosmer-Lemeshow Test
# Eksik veri sebebiyle hata verdi o yüzden silme işlemi yaptım, tekrar modelleri kurdum. 

analiz_verisi <- nelsstudent %>%
  select(passmath, bytxrstd, f1ses, f1stumor) %>%
  na.omit() 

mod1x <- glm(passmath ~ bytxrstd, data = analiz_verisi, family = binomial)
mod2x <- glm(passmath ~ bytxrstd + f1ses, data = analiz_verisi, family = binomial)
mod3x <- glm(passmath ~ bytxrstd + f1ses + f1stumor, data = analiz_verisi, family = binomial)


hl_test1 <- hoslem.test(analiz_verisi$passmath, fitted(mod1x), g = 10)
hl_test2 <- hoslem.test(analiz_verisi$passmath, fitted(mod2x), g = 10)
hl_test3 <- hoslem.test(analiz_verisi$passmath, fitted(mod3x), g = 10)

hl_test1 
## 
##  Hosmer and Lemeshow goodness of fit (GOF) test
## 
## data:  analiz_verisi$passmath, fitted(mod1x)
## X-squared = 8.5538, df = 8, p-value = 0.3813
hl_test2 
## 
##  Hosmer and Lemeshow goodness of fit (GOF) test
## 
## data:  analiz_verisi$passmath, fitted(mod2x)
## X-squared = 6.0599, df = 8, p-value = 0.6405
hl_test3 
## 
##  Hosmer and Lemeshow goodness of fit (GOF) test
## 
## data:  analiz_verisi$passmath, fitted(mod3x)
## X-squared = 5.4366, df = 8, p-value = 0.71
# Sonuç; tüm modeller için p>.05 değeri aldım, modellerin veriye uyumu istatistiksel olarak iyidir.

Tahmini Olasılıkların Histogram Grafiği

hist(predict(mod2, type = "response"), 
     main = "Tahmini Olasılıkların Histogramı", 
     xlab = "Yordanan Olasılıklar", 
     ylab = "Frekans", 
     col = "lightblue", 
     breaks = 20)

# Yorum: Çoğu öğrenci ,50’nin üzerinde geçme olasılığına sahiptir. Ancak bazı öğrenciler ,50’nin altında geçme olasılığına sahiptir. Bütün olasılık değerleri çok geniş bir aralıktadır – çoğu değer ,02 ve ,996 arasındadır. Ancak bu grafik kimin doğru sınıflandığı hakkında fikir vermez.

Sınıflama Tablosu

Önce 0 ile 1 arasında olasılıklar ekle

model_verisi2 <- augment(mod2, type.predict = "response") %>%
              mutate(passmath_hat = round(.fitted))
model_verisi2 %>%
  select(passmath, passmath_hat) %>%
  table()
##         passmath_hat
## passmath   0   1
##        0  42  25
##        1  16 156

Yorum: 239 öğrenciden 198 tanesi doğru tahmin edilmiştir. Modelin genel doğruluğu yaklaşık yüzde 83’tür.

Öğrenme Günlüğü

Bu hafta, bağımlı değişkenin kategorik olduğu durumlarda doğrusal regresyonun neden yetersiz kaldığını ve Lojistik Regresyon’un bu sorunu “S” tipi bir eğri ile nasıl çözdüğünü öğrendik. Özellikle katsayıların doğrudan yorumlanamadığını, bunun yerine Odds Oranları (OR) üzerinden konuşmanın sonuçları daha anlaşılır hale getirdiğini öğrendim. İki farklı veri seti üzerinde uygulama yapmak konuyu pekiştirmek için iyi oldu. Wald testi, Uyum iyiliği için Hosmer-Lemeshow testi yeni öğrendiğim diğer testler oldu. Konular giderek zorlaşıyor, karışıyor gibi, umarım tünelin sonu aydınlıktır…