Lm için varsayılan tanı grafiklerine olası uzantılar (R ve genel olarak)?


11

Plot.lm işlevine biraz kazmaya başladım , bu işlev lm için altı grafik verir, bunlar:

  1. kalan değerlere uygun değerlere karşı bir arsa
  2. Sunulan değerlere karşı sqrt (| Artıklar |) 'nın Ölçek-Konum grafiği
  3. Normal QQ grafiği, Cook'un satır etiketlerine karşı mesafelerinin grafiği
  4. kaldıraçlara karşı artıkların bir arsası
  5. Cook'un kaldıraç / (1 kaldıraç) ile olan mesafelerinin bir grafiği

Ve doğrusal grafiklerde mevcut grafiklerin diğer yaygın / yararlı uzantılarının var olduğunu merak ediyorum ve bunlar R'de nasıl yapılabilir? (paket makalelerine bağlantılar da memnuniyetle karşılanmaktadır)

Boxcox işlevi ({MASS} 'den) başka bir yararlı tanılama grafiğinin bir örneğidir (ve böyle bir cevap harika olurdu), ancak, R'de lm için mevcut varsayılan tanılama grafiğindeki varyasyonlar / uzantılar hakkında daha fazla merak ediyorum (genel olmasına rağmen) konuyla ilgili diğer açıklamalar her zaman memnuniyetle karşılanmaktadır).

İşte ne demek istediğimin bazı basit örnekleri:

#Some example code for all of us to refer to
set.seed(2542)
x1 <- rnorm(100)
x2 <- runif(100, -2,2)
eps <- rnorm(100,0,2)
y <- 1 + 2*x1 + 3*x2 + eps
y[1:4] <- 14 # adding some contaminated points
fit <- lm(y~x1+x2)

#plot(y~x1+x2)
#summary(fit)

Artıkları potansiyel x'in her birine karşı çizmek

plot(resid(fit)~x1); abline (h = 0)
plot(resid(fit)~x2); abline (h = 0)
# plot(resid(fit)~x1+x2) # you can also use this, but then you wouldn't be able to use the abline on any plot but the last one

Qqline'ın 0-1 satırını (bu satır İngilizce olarak nasıl adlandırılır ?!) eklemek için qqline'ın ne kadar saptığını görmek için

plot(fit, which = 2); abline(0,1, col = "green")

Qq-plotunu harici olarak öğrenci kalıntılarını kullanarak çizmek

# plot(fit, which = 2); abline(0,1, col = "green") # The next command is just like this one
qqnorm(rstandard(fit), ylim = c(-2.2,4.2)); qqline(rstudent(fit), lty = 2) ;abline(0,1, col = "green")
qqnorm(rstudent(fit), ylim = c(-2.2,4.2)); qqline(rstudent(fit), lty = 2) ;abline(0,1, col = "green")
# We can note how the "bad" points are more extreme when using the rstudent

Aslında bu soruyu lmer nesneleri için sordum: stats.stackexchange.com/questions/17785/… ve ek cevapların geleceğini umuyorum.
Michael Bishop

Yanıtlar:


17

Paket car, doğrusal ve genelleştirilmiş doğrusal modellerin teşhis grafikleri için oldukça kullanışlı işlevlere sahiptir. Vanilya R parselleriyle karşılaştırıldığında, genellikle ek bilgilerle geliştirilirler. example("<function>")Grafiklerin nasıl göründüğünü görmek için aşağıdaki işlevleri denemenizi tavsiye ederim . Tüm araziler, Fox & Weisberg'in 6. bölümünde ayrıntılı olarak açıklanmaktadır. 2011. Uygulamalı Regresyona R Arkadaşı. 2. baskı.

  • residualPlots() her bir öngörücüye karşı Pearson kalıntıları çizer (Lowess uyumu dahil sayısal değişkenler için dağılım grafikleri, faktörler için kutu grafikleri)
  • marginalModelPlots() Lowess uyumu dahil olmak üzere her bir sayısal kestiriciye karşı yanıt değişkeninin dağılım grafiklerini görüntüler
  • avPlots() kısmi regresyon grafiklerini gösterir: her bir öngörücü için bu bir dağılım grafiğidir a) yanıt değişkeninin diğer tüm öngörücüler üzerindeki gerilemesinden kalanlar b) öngörücünün diğer tüm öngörücülere karşı gerilemesinden kalanlar
  • qqPlot() güven zarfı içeren bir kantil-kantil arsa için
  • influenceIndexPlot() Cook'un uzaklığı, şapka değeri, aykırı test için p değeri ve gözlem endeksine karşı ani bir arsada öğrenci kalıntısı için her bir değeri gösterir
  • influencePlot(), Cook'un mesafeye tekabül balonun büyüklüğü ile hat-değerlerine karşı studentized artıkların bir kabarcık arsa verir ayrıca bkz dfbetaPlots()veleveragePlots()
  • boxCox()bir Box-Cox güç dönüşümünde dönüşüm parametresi için günlük olasılığının bir profilini görüntülerλ
  • crPlots() bir varyantı CERES grafikleri olan (koşullu Beklentileri ve Konutları Birleştirme) olan bileşen + artık grafikler içindir. ceresPlots()
  • spreadLevelPlot() sabit olmayan hata varyansını değerlendirmek içindir ve uygun değerlere karşı mutlak öğrenci kalıntıları gösterir
  • scatterplot() eksenler boyunca kutu grafikleri, iki değişkenli dağıtım için güven elipsleri ve güven bantlı tahmin çizgileri içeren çok gelişmiş dağılım grafikleri sağlar
  • scatter3d()pakete dayanır rglve tel örgü güven elipsoidleri ve tahmin düzlemleri dahil olmak üzere etkileşimli 3D dağılım grafiklerini görüntüler,example("scatter3d")

Ayrıca , üç değişkenin ortak dağılımını gösteren başka bir yaklaşım için bplot()pakete bakınız rms.


1
(+1) Bu, hepimiz için yararlı olacak çok iyi bir genel bakış!
chl

Caracal - bu harika bir liste, teşekkür ederim! Eğer sizin için sorun değilse, bunu blogumda yeniden yayınlayabilirim (daha fazla insan muhtemelen yorumlarını ekledikten sonra)
Tal Galili

@TalGalili Tabii, bu benim için sorun değil.
caracal

4
Bunlardan bazılarının örneklerini burada görebilirsiniz: statmethods.net/stats/rdiagnostics.html
Michael Bishop

Caracal - tekrar teşekkürler :) Michael - bu iyi bir bağlantı. Bir cevap olarak eklemek isterseniz (ve belki de karakol cevabında görünmeyen ilgili parselleri kopyalayıp yapıştırın) - Memnuniyetle oylayacağım ...
Tal Galili

7

Bu cevap, Fox'un paketinin benimsenmeye değer olduğunu kabul etsem de, dış paketler yerine R tabanında mevcut olanlara odaklanıyor.

İşlev influence()(veya influence.measures()sarıcısı), jacknifed istatistikleri de dahil olmak üzere model tanılama için ihtiyacımız olanların çoğunu döndürür. Chambers ve Hastie'nin S'deki İstatistiksel Modellerinde belirtildiği gibi (Wadsworth & Brooks, 1992), ile kombinasyon halinde kullanılabilir summary.lm(). "Beyaz kitap" (s. 130-131) olarak adlandırılan örnekten biri, standartlaştırılmış (eşit varyansa sahip artıklar) ve öğrenci haline getirilmiş (SE için farklı bir tahminle aynı), DFBETAS ( regresyon katsayıları için SE tarafından ölçeklenen katsayılar), DFFIT (gözlem düştüğünde takılan değerde değişiklik) ve DFFITS (birim varyans ile aynı) çok fazla zorluk çekmeden ölçer.

Örneğinize dayanarak ve aşağıdaki nesneleri tanımlayın:

lms <- summary(fit)
lmi <- influence(fit)
e <- residuals(fit)
s <- lms$sigma
xxi <- diag(lms$cov.unscaled)
si <- lmi$sigma
h <- lmi$hat
bi <- coef(fit) - coef(lmi)

yukarıdaki miktarları aşağıdaki gibi hesaplayabiliriz:

std. residuals    e / (s * (1-h)^.5
stud. residuals   e / (si * (1-h)^.5
dfbetas           bi / (si %o% xxi^.5 
dffit             h * e / (1-h)
dffits            h^.5 * e / (si * (1-h))

(Bu Tablo 4.1 , s.131.)

Chambers ve Hastie, DFBETAS'ın hesaplanması için aşağıdaki S / R kodunu verir:

dfbetas <- function(fit, lms = summary(fit), lmi = lm.influence(fit)) {
  xxi <- diag(lms$cov.unscaled)
  si <- lmi$sigma
  bi <- coef(fit) - coef(lmi)
  bi / (si %o% xxi^0.5)
}

Neden bu yaklaşımdan bahsediyorum? İlk olarak, bunun pedagojik bir perspektiften ilginç olduğunu düşünüyorum (giriş istatistik derslerini öğretirken kullanıyorum), çünkü R'ye takılan monte edilmiş bir doğrusal modelin çıktısından ne hesaplanabileceğini göstermesine izin veriyor (ama aynı şey diğer herhangi bir istatistiksel paketle başvurunuz). İkincisi, yukarıdaki miktarlar R'de basit vektörler veya matrisler olarak döndürüleceğinden, bu istatistikleri görüntülemek için istediğimiz grafik cihazını (kafes veya ggplot) seçebileceğimiz veya mevcut bir durumu geliştirmek için kullanabileceğimiz anlamına gelir. çizim (örn., bir dağılım grafiğindeki DFFITS değerlerini değişen nokta boyutuna göre vurgulayın cex).


Çok bilgilendirici ve faydalı bir cevap. İstatistiksel mantığı belgelediğinizden, R'ye odaklanma değeri gerçekten azaltmaz,
DWin
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.