Sonuç Evet/Hayır Olduğunda
Doğrusal regresyon bir sayı tahmin eder. Ama modellemeye değer soruların birçoğu ikilidir: müşteri kaybediliyor mu, hasta iyileşiyor mu, e-postaya tıklanıyor mu. 0/1 sonuca düz bir çizgi uydurmak anında bozulur - çizgi neşeyle −0.3 ya da 1.4 olasılıkları tahmin eder ve bunlar saçmadır.
Lojistik regresyon bunu, sonucun olasılığını log-odds (logit) dönüşümü üzerinden modelleyerek düzeltir: log(p / (1 − p)) = kesişim + eğim × x. Log-odds ölçeği tüm sayı doğrusu boyunca uzanır, dolayısıyla orada doğrusal bir denklem doğal biçimde oturur - ve geri eşleme her tahmini tanıdık S biçimli eğri boyunca (0, 1) aralığına sıkıştırır. Hilenin bedeli: katsayılar log-odds ölçeğinde yaşar ve bir lojistik regresyonu okumanın tüm oyunu, onları insanların anlayacağı bir şeye geri çevirmektir.
Uydurma: family = binomial ile glm()
glm() (genelleştirilmiş doğrusal model), lm() fonksiyonunun büyük kardeşidir; family = binomial lojistik regresyonu seçer. mtcars içinde am, şanzıman türünü kaydeder (1 = manuel, 0 = otomatik) - yakıt açısından verimli arabalar manuel olma eğiliminde mi?
Çıktıyı okumadan önce iki şey. Birincisi, family = binomial isteğe bağlı değildir - onu atlarsanız glm() sessizce sıradan en küçük kareleri uydurur. İkincisi, sonuç ikili olmalıdır: 0/1, mantıksal ya da iki seviyeli bir faktör (R, ikinci seviyenin olasılığını modeller).
Şimdi özet, blok blok:
- Coefficients -
mpgEstimate değeri yaklaşık 0.31'dir ve bu bir log-odds eğimidir: her ek mpg, manuel olmanın log-odds değerine 0.31 ekler. Pozitif "olasılığı yükseltir", negatif "düşürür" demektir - işaretin ötesinde kimsenin sezgisi bu ölçekte işlemez; bir sonraki bölümün var olma nedeni budur. - z value ve Pr(>|z|) - regresyonun t-testleriyle aynı mantık (Estimate ÷ Std. Error, sonra "bu sıfır olabilir mi?" için bir p değeri), yalnızca normal yaklaşım kullanılır - dolayısıyla t yerine z. Burada p ≈ 0.011: mpg ile şanzıman türü arasındaki ilişkinin gürültü olması olası değil.
- Null deviance ve Residual deviance - sapma, glm dünyasının uyumsuzluk ölçüsüdür (daha küçük = daha iyi). Null deviance (31 df'te 43.2) yalnızca kesişimli modeldir; residual deviance (30 df'te 29.7) sizinkidir. Bir yordayıcılık df karşılığında yaklaşık 13.6'lık düşüş, "R-kare yükseldi" ifadesinin glm karşılığıdır.
- AIC - uyumu karmaşıklığa karşı dengeleyen bir model karşılaştırma puanı; düşük olan kazanır. Tek başına anlamsızdır, aynı veri üzerindeki aday modeller arasında yararlıdır.
Log-Odds'tan Odds Oranlarına: exp(coef())
Üs almak, katsayıları toplamsal log-odds ölçeğinden çarpımsal odds ölçeğine taşır:
exp(0.307) ≈ 1.36 ve ezberlenecek dürüst cümle kalıbı şudur: "her ek mpg, manuel şanzıman olma odds değerini yaklaşık 1.36 ile çarpar." 1'in üstündeki bir odds oranı odds değerini yükseltir, altındaki düşürür, tam olarak 1 etki yok demektir - odds oranları için güven aralığı hükmünün "aralık 1 değerini dışlıyor mu?" olmasının nedeni budur (sıfır değil; sıfır, log-odds ölçeğindeki sınırdı).
Dile dikkat: odds, olasılık değildir. Odds = p / (1 − p), dolayısıyla 0,75 olasılık 3 odds demektir. Odds değerini 1.36 ile çarpmak, olasılığı 1.36 ile çarpmakla aynı şey değildir - ve sonuç yaygın olduğunda fark büyüktür. Nadir bir sonuç için 2 olan bir odds oranı "kabaca iki katı risk" gibi davranır; %50 oranında seyreden bir sonuç için kesinlikle öyle davranmaz. Sonuç nadir olmadıkça bir odds oranını asla risk oranı diliyle ("1.36 kat daha olası") raporlamayın.
Tahmin Edilen Olasılıklar: type = "response" Tuzağı
Doğadaki en yaygın lojistik regresyon hatası:
İlk çağrı varsayılan type = "link" değerini döndürür - log-odds ölçeğinde tahminler, negatif değerler falan. İkincisi gerçek olasılıkları döndürür. "Olasılıklarınız" negatif ya da 1'in üstünde çıkıyorsa sebep budur. Bloğu çalıştırın: 15 mpg'lik bir arabanın manuel olma şansı esasen yoktur, 30 mpg'lik bir araba büyük olasılıkla manueldir ve S eğrisi ortadan bükülür.
Sınıflandırma: Eşikleme ve Karışıklık Tablosu
Olasılıklar bir kesme noktası seçilerek tahmin edilen sınıflara dönüşür - varsayılan seçim 0,5'tir - ve dürüst karne, tahmin edilene karşı gerçek değerlerin tablosudur:
Köşegen hücreler doğru kararlardır; köşegen dışındaki iki hücre farklı iki hatadır (otomatik bir araba için manuel tahmin etmek ve tersi). Genel doğruluk tek başına bir modeli fena hâlde kayırabilir - müşterilerin %95'i ayrılmıyorsa "kimse ayrılmaz tahmin et" %95 alır ve sıfır ayrılanı yakalar - o yüzden her zaman iki hata türüne de bakın. Ve 0,5 bir gelenektir, bir yasa değil: iki hatanın maliyetleri farklı olduğunda eşiği buna göre kaydırın.
Bir dürüstlük uyarısı: bu tablo modeli, uydurulduğu aynı veri üzerinde puanlar ve bu onu kayırır. Gerçek değerlendirme, modelin hiç görmediği veriyi ayırır.
Birden Çok Yordayıcı
Tam olarak lm() gibi - terimleri + ile ekleyin ve her yorum "diğerleri sabit tutulduğunda" niteleyicisini kazanır:
Üssü alınmış her katsayı artık, diğer yordayıcılarda birbirine benzeyen arabalar arasında o yordayıcıdaki bir birimlik artış için odds çarpanıdır. Mekanizma ölçeklenir, ama doğrusal regresyondaki uyarılar da öyle: ilişkili yordayıcılar birbirlerinin katsayılarını yeniden karar.
Uyarılar
- Tam ayrışma. Bir yordayıcı sonucu mükemmel biçimde ayırıyorsa (belirli bir mpg değerinin üstündeki her araba manuel, altındaki her araba otomatik), maksimum olabilirlik katsayısı sonsuz olmak ister. R uyarır -
glm.fit: fitted probabilities numerically 0 or 1 occurred- ve saçma standart hatalarla devasa katsayılar bildirir. O sayıları yayımlamayın; modeli basitleştirin, daha fazla veri toplayın ya da cezalandırılmış bir yöntem kullanın (brglm2ya dalogistfpaketleri). - Yeterli olay. Bağlayıcı kısıt toplam satır sayısı değil, daha nadir sonucun sayısıdır. Eski bir genel kural, yordayıcı başına 10-15 olay mertebesi ister; buradaki 32 arabalık örnekler mekanizmayı öğretmek içindir, yayımlanabilir örneklem büyüklükleri için bir şablon değil.
- Sonuç yaygın olduğunda odds oranları risk oranı değildir - yukarıda ele alındı, tekrarlandı çünkü siz yakalamasanız da hakemler yakalayacak.
Buradan Ne Çıkarıyorsunuz
- İkili sonuç →
glm(y ~ x, data = df, family = binomial);familyargümanını asla unutmayın. - Ham katsayılar log-odds'tur;
exp(coef(fit))odds oranlarını verir ve aralıkları için sıfır değeri 1'dir. - Cümle kalıbı: "x'teki her bir birimlik artış, sonucun odds değerini exp(b) ile çarpar."
- Olasılıklar için
predict(..., type = "response")- varsayılan log-odds döndürür, bir numaralı karışıklık. - Bir eşikle sınıflandırın ve bir karışıklık tablosuyla yargılayın; doğruluk tek başına yalan söyleyebilir.
- Ayrışma uyarılarına dikkat edin, olaylarınızı sayın ve odds oranlarını risk oranı kılığına sokmayın.
Sırada: şimdiye kadar gördüğünüz her aralığın arkasındaki mekanizma - t.test(), confint() ve prop.test() ile güven aralıkları.
Sıkça Sorulan Sorular
R'de lojistik regresyon nasıl çalıştırılır?
glm() ve family = binomial ile: fit <- glm(am ~ mpg, data = mtcars, family = binomial), sonra summary(fit). Sonuç ikili olmalıdır - 0/1, TRUE/FALSE ya da iki seviyeli bir faktör. family = binomial unutulursa sessizce sıradan doğrusal regresyon uydurulur.
R'de glm katsayıları nasıl yorumlanır?
Ham katsayılar log-odds ölçeğindedir ve kimse bu ölçekte düşünmez. Odds oranlarını elde etmek için onların üssünü alın - exp(coef(fit)): bir yordayıcı için 1.36 değeri, her bir birimlik artışın sonucun odds değerini yaklaşık 1.36 ile çarptığı anlamına gelir. 1'in üstündeki değerler odds değerini yükseltir, altındakiler düşürür, tam olarak 1 etki yok demektir.
R'de glm'den tahmin edilen olasılıklar nasıl alınır?
predict(fit, newdata, type = "response") kullanın. Bir numaralı tuzak budur: varsayılan type = "link", olasılıkları değil log-odds değerlerini döndürür - dolayısıyla "olasılıklarınız" negatifse ya da 1'in üstündeyse type = "response" yazmayı unutmuşsunuzdur.
Odds ile olasılık arasındaki fark nedir?
Olasılık, başarıların tüm denemelere oranıdır; odds ise başarıların başarısızlıklara oranıdır. 0,75 olasılık, 3 odds demektir (başarısızlık başına üç başarı). Lojistik regresyonun odds oranları olasılıkları değil odds değerlerini çarpar - ve sonuç yaygın olduğunda bir odds oranı karşılık gelen risk oranından çok daha büyük olabilir, o yüzden birini diğeri gibi sunmayın.