Fikir: En Küçük Kareler Doğrusu
Doğrusal regresyon, bir nokta bulutunun içinden düz bir çizgi geçirir: y = kesişim + eğim × x. Olası her çizgi arasından lm(), kare artıkların toplamını en aza indireni seçer - artık, bir nokta ile çizgi arasındaki dikey boşluktur. Kare almak büyük ıskalamaları orantısız biçimde ağırlaştırır; tek bir çılgın aykırı değerin tüm uyumu eğebilmesinin nedeni budur.
Korelasyon size "bunlar ne kadar sıkı birlikte hareket ediyor" için birimsiz tek bir sayı verirken, regresyon size bir denklem verir - birimleriyle, yorumlayabileceğiniz bir eğimle ve tahmin mekanizmasıyla.
Formülü "mpg değişkenini wt fonksiyonu olarak modelle" diye okuyun. İki katsayı uydurulmuş doğrudur: mpg ≈ 37.3 − 5.3 × ağırlık. Eğimin gerçek birimleri vardır - arabanın her ek 1000 libresi (wt, 1000 libre birimindedir) yaklaşık 5.3 mil/galon'a mal olur. Kesişim (sıfır ağırlıkta 37.3 mpg) yalnızca doğrunun sıfırı kestiği yerdir; hiçbir araba sıfır ağırlıkta değildir, o yüzden onu fazla okumayın.
summary() Gezintisi
summary(fit), her istatistik dersinin yorumlamanızı istediği çıktıdır. Onu çalıştırın, sonra blok blok ele alın:
Call - uydurduğunuz modeli yankılar. Şimdi önemsiz, altı model nesnesiyle hokkabazlık yaparken hayat kurtarıcı.
Residuals - artakalanların (gerçek − tahmin) beş sayılı özeti. Medyanın 0'a yakın ve Min/Max ile 1Q/3Q arasında kabaca simetri olmasını istersiniz; güçlü asimetri, doğrusal modelin bir şeyi kaçırdığını ima eder.
Coefficients - çıktının kalbi, terim başına bir satır:
- Estimate - uydurulmuş değer.
wtiçin −5.34: her ek 1000 libre, yaklaşık 5.3 daha az mpg ile ilişkilidir. Eğimi her zaman birimleriyle bir cümleye çevirin; o cümle modelin tüm pratik içeriğidir. - Std. Error - tahminin tekrarlanan örneklemlerde ne kadar oynayacağı. Sıfırdan birkaç standart hata uzaklıktaki tahminler sallantılıdır.
- t value - Estimate ÷ Std. Error: katsayının sıfırdan kaç standart hata uzakta durduğu (burada −9.56).
- Pr(>|t|) - "bu katsayı gerçekten sıfır olabilir mi?" için p değeri.
wtiçin yaklaşık 1.3e-10: ağırlığın mpg ile gerçekten doğrusal bir ilişkisi olmasaydı, bu kadar dik bir eğim 32'lik bir örneklemde esasen hiç görünmezdi. Küçük p değeri = ilişkinin var olduğuna dair kanıt - modelin doğru olduğunun kanıtı değil ve bir önem ölçüsü değil (minicik ama hassas tahmin edilmiş bir etki de minicik bir p değeri alır). - Signif. codes / yıldızlar - p değeri sütunu için görsel bir kısaltma. Kullanışlıdır; bilgi eklemez.
Residual standard error: 3.05 on 30 degrees of freedom - bir tahmin ıskalamasının tipik büyüklüğü, yanıtın kendi biriminde: tahminler tipik olarak yaklaşık 3 mpg şaşar. Onu mpg ölçeğine (kabaca 10-34 arası) göre değerlendirin.
Multiple R-squared: 0.75 - ağırlık, mpg varyansının yaklaşık %75'ini açıklar. Adjusted R-squared (0.74), bunu yordayıcı başına bir cezayla yeniden hesaplar; çünkü ham sürüm siz değişken ekledikçe - rastgele gürültü bile olsa - yalnızca artabilir. Farklı sayıda yordayıcıya sahip modelleri karşılaştırırken dürüst olan düzeltilmiş sürümdür. Ve "iyi model = yüksek R²" refleksine direnin: gerçekten yararlı bir etki düşük R²'li bir modelde yaşayabilir (gürültülü sonuç, birçok etkenden biri), yüksek bir R² ise aşırı uyumdan ya da sızmış bir değişkenden gelebilir.
F-statistic: 91.4 ... p-value: 1.29e-10 - tüm model testi: bu model "herkes için sadece ortalamayı tahmin et" seçeneğini geçiyor mu? Tek yordayıcıyla eğimin t-testini tekrarlar (9.56² ≈ 91.4 olduğuna dikkat edin); birkaç yordayıcıyla en az bir katsayının sıfırdan farklı olduğuna dair birleşik teste dönüşür. Mekanizması ANOVA ile aynı varyans ayrıştırmasıdır.
Çoklu Regresyon: Diğerlerini Sabit Tutmak
Yordayıcıları + ile ekleyin:
Yorum kritik bir biçimde değişir. Her Estimate artık o yordayıcının diğerleri sabit tutulduğunda etkisidir: wt katsayısı (yaklaşık −3.9, −5.3'ten düşmüş), aynı beygir gücündeki arabalar karşılaştırıldığında ek ağırlığın mpg maliyetidir. Basit regresyonun −5.3 değeri, ağır arabaların aynı zamanda daha güçlü olma eğiliminde olduğu gerçeğini sessizce paketliyordu; çoklu regresyon onu ayrıştırır. Değişken eklediğinizde katsayıların kaymasının nedeni de budur - yeni yordayıcı eskisiyle ilişkiliyse eskisinin görev tanımı değişir. R-kare yaklaşık 0.83'e tırmanır ve burada tek yordayıcılı modele karşı adil karşılaştırma düzeltilmiş sürümdür.
Tahminler: predict()
Uydurulmuş model bir fonksiyondur; predict() onu değerlendirir. Sütun adları yordayıcılarla birebir eşleşen bir newdata veri çerçevesi kurun:
İki aralık türü farklı soruları yanıtlar ve onları karıştırmak klasik bir sınav hatasıdır:
interval = "confidence"- ortalamaya dair belirsizlik: "2500 libre ağırlığındaki tüm arabalar için ortalama mpg nerede?" Dardır ve veri büyüdükçe küçülür.interval = "prediction"- o ağırlıktaki tek bir yeni arabanın düşme olasılığı olan aralık. Çok daha geniştir, çünkü tek bir araba çizgi etrafında kendi saçılımını taşır - hiçbir veri miktarının ortalayarak yok edemeyeceği bir saçılım.
Soru tek bir yeni gözlem hakkındayken güven aralığı raporlamak, hassasiyetinizi dramatik biçimde abartır.
Tanılar ve Ekstrapolasyon Tuzağı
summary() modelin ne tahmin ettiğini söyler; artık grafikleri buna inanıp inanmayacağınızı söyler. Etkileşimli bir oturumda:
par(mfrow = c(2, 2))
plot(fit) # four diagnostic plots
Nelere bakmalı: Residuals vs Fitted biçimsiz bir bulut olmalı - bir eğri ilişkinin doğrusal olmadığı anlamına gelir; bir huni (yayılım uydurulmuş değerlerle büyüyor) sabit olmayan varyans anlamına gelir ve standart hatalarınız yanlıştır. Q-Q plot noktaları çizgiye sarılmalı - ağır kuyruklar aykırı değerlerin uyumu bozduğu anlamına gelir. Scale-Location yine huni kontrolüdür. Residuals vs Leverage, etkili noktaları işaretler - tek başlarına katsayıları sürükleyen gözlemler (mtcars içinde Chrysler Imperial gibi egzotik arabalar burada belirme eğilimindedir). Uydurmadan önce ham verinin hızlı bir saçılım grafiği, bunun çoğunu erkenden yakalar.
Son olarak, hiçbir tanının yakalamadığı tuzak: ekstrapolasyon. Model kabaca 1500-5400 libre ağırlığındaki arabalardan öğrendi. predict() fonksiyonuna 8 değerinde bir wt verin; neşeyle negatif bir mpg döndürecektir - matematik çizgiyi sonsuza uzatır, ama kanıt verinin kenarında biter. Yalnızca uydurduğunuz aralığın içinde (ya da yakınında) tahmin yapın.
Buradan Ne Çıkarıyorsunuz
fit <- lm(y ~ x, data = df)en küçük kareler doğrusunu uydurur;coef(fit)denklem,summary(fit)tam rapordur.- Estimate değerlerini birimleriyle cümle olarak okuyun;
Pr(>|t|)"bu sıfır olabilir mi?" diye sorar, "bu önemli mi?" diye değil. - Residual standard error gerçek birimlerde tipik ıskalamadır; adjusted R-squared adil model karşılaştırma sayısıdır.
- Çoklu regresyonda her katsayı "diğerleri sabit tutulduğunda" demektir - ve ilişkili yordayıcılar katıldığında katsayılar kayar.
predict(fit, newdata, interval = ...): ortalama için "confidence", tek bir yeni durum için "prediction" - geniş olan.- Eğriler, huniler ve etkili noktalar için
plot(fit)kontrol edin; verinin aralığı dışındaki tahminlere asla güvenmeyin.
Sırada: sonuç bir sayı yerine evet/hayır olduğunda - glm() ile lojistik regresyon.
Sıkça Sorulan Sorular
R'de doğrusal regresyon nasıl çalıştırılır?
lm() ve bir formülle: fit <- lm(mpg ~ wt, data = mtcars), mpg değerini ağırlık üzerine regresyona sokar. Sonra summary(fit) katsayıları, p değerlerini, R-kareyi ve F istatistiğini yazdırır. Daha fazla yordayıcıyı + ile ekleyin: lm(mpg ~ wt + hp, data = mtcars).
R'de lm summary çıktısı nasıl yorumlanır?
Coefficients bloğunda her Estimate, o yordayıcıdaki bir birimlik artış için yanıttaki beklenen değişimdir (diğerleri sabit tutulduğunda); Pr(>|t|), o katsayının makul biçimde sıfır olup olamayacağını test eder. Multiple R-squared, açıklanan varyans payıdır. Alttaki F istatistiği modelin tamamını, yalnızca kesişimli bir modele karşı test eder.
Multiple R-squared ile Adjusted R-squared arasındaki fark nedir?
Multiple R-squared, açıklanan varyansın ham payıdır ve yordayıcı eklediğinizde - işe yaramazlar bile olsa - yalnızca yükselebilir. Adjusted R-squared ise yordayıcı başına bir ceza uygular, dolayısıyla yalnızca yeni bir değişken yerini hak ettiğinde yükselir. Modelleri düzeltilmiş sürümle karşılaştırın.
R'de bir regresyondan yeni değerler nasıl tahmin edilir?
Sütun adları yordayıcılarla eşleşen bir veri çerçevesi kurun, sonra predict(fit, newdata = ...) çağırın. Ortalama yanıta dair belirsizlik için interval = "confidence", tek bir yeni gözlemin düşme olasılığı olan (çok daha geniş) aralık için interval = "prediction" ekleyin.