Sayım regresyonu için tanı grafikleri


88

Hangi sayım değişkenleri (ve belki de resmi testler) sonucun bir sayı değişkeni olduğu gerilemeler için en bilgilendirici buluyor musunuz?

Özellikle Poisson ve negatif binom modellerinin yanı sıra her birinin sıfır şişirilmiş ve engelli benzerleri ile ilgileniyorum. Bulduğum kaynakların çoğu, bu parsellerin "nasıl olması gerektiği" hakkında tartışmadan, artıkları ve takılan değerleri basit bir şekilde çiziyor.

Bilgelik ve referanslar büyük beğeni topluyor. Bunu neden sorduğumun arka hikayesi, eğer ilgiliyse diğer sorum .

İlgili tartışmalar:

Yanıtlar:


101

Genelde yapmaktan hoşlandığım şeyler: (örnek olarak, okuldan gelmeyen öğrencilerin günlerinin fazlaca dağıtılmış ve çok kolay modellenmemiş quine verilerini kullanıyorum MASS):

  1. Test ve grafik orijinal sayım verileri gözlemlenen frekansların ve monte frekansları (in bölüm 2. çizilerek Uygun tarafından desteklenmektedir) vcdambalajın Rbüyük parçalar. Örneğin, goodfitve a rootogram:

    library(MASS)
    library(vcd)
    data(quine) 
    fit <- goodfit(quine$Days) 
    summary(fit) 
    rootogram(fit)

    veya hangi sayım veri modelinin altında olduğunu belirlemeye yardımcı olan Ord parselleriyle (örneğin, burada eğim pozitif ve kesişme negatif binom dağılımı için konuşulan pozitif):

    Ord_plot(quine$Days)

    veya "XXXXXXness" , XXXXX’in seçim dağılımı olduğu yerlerde, Poissoness arsa (Poisson’a karşı konuşur, ayrıca deneyin type="nbinom") diyelim :

    distplot(quine$Days, type="poisson")
  2. Genel uygunluk önlemlerini inceleyin (örneğin, olasılık oranı istatistikleri ve boş bir model veya benzeri):

    mod1 <- glm(Days~Age+Sex, data=quine, family="poisson")
    summary(mod1)
    anova(mod1, test="Chisq")
  3. Resmi bir test istatistiğine bakarak veya inceleyerek aşırı / az dağılım olup olmadığını kontrol edin residual deviance/df(örneğin, bu cevaba bakınız ). Burada açıkça aşırı dağılma var:

    library(AER)
    deviance(mod1)/mod1$df.residual
    dispersiontest(mod1)
  4. Olup olmadığını kontrol edin nüfuzlu ve kaldıraç noktaları ile, örneğin, influencePlotiçinde carpaketin. Tabii ki burada birçok nokta son derece etkili çünkü Poisson kötü bir model:

    library(car)
    influencePlot(mod1)
  5. Bir sayım veri modelini ve sıfır şişirilmiş / engelli karşılığını takıp sıfır şişirme olup olmadığını kontrol edin (genellikle AIC ile). Burada sıfır şişirilmiş bir model, basit Poisson'dan daha iyi bir uyum sağlar (muhtemelen muhtemelen aşırı dağılma nedeniyle):

    library(pscl)
    mod2 <- zeroinfl(Days~Age+Sex, data=quine, dist="poisson")
    AIC(mod1, mod2)
  6. Artıkları (ham, sapma veya ölçeklendirilmiş) y ekseninde (x) ekseninde (log) tahmin edilen değerlere (veya lineer tahmin) vs. çizin . Burada bazı çok büyük artıklar ve normalden sapma artıklarının büyük ölçüde sapmalarını görüyoruz (Poisson'a karşı konuşmak; Düzen: @ FlorianHartig'in cevabı, bu artıkların normalliğinin beklenemeyeceğini göstermektedir, bu nedenle bu kesin bir ipucu değildir):

    res <- residuals(mod1, type="deviance")
    plot(log(predict(mod1)), res)
    abline(h=0, lty=2)
    qqnorm(res)
    qqline(res)
  7. İlgileniyorsanız, sipariş edilen mutlak kalıntıları karşılık beklenen normal değerlere göre normal bir kalıntı grafiği çizin . Atkinson (1981) . Özel bir özellik referans 'satırı' ve benzetilmiş / önyüklenmiş güven aralığı olan zarfları simüle etmek olacaktır (gösterilmemiştir):

    library(faraway)
    halfnorm(residuals(mod1))
  8. Sayma verileri için log lineer modeller için teşhis grafikleri (Friendly'nin kitabındaki bölüm 7.2 ve 7.7'ye bakınız). Plot tahmin edilen ve gözlemlenen değerleri belki de bazı aralık tahminleriyle (Sadece yaş grupları için yaptım - burada tekrar görüyoruz ki, belki de F3 grubundaki aşırı dağılma nedeniyle tahminlerimizden oldukça uzaktayız.) Pembe noktalar nokta tahmini bir standart hata):±

    plot(Days~Age, data=quine) 
    prs  <- predict(mod1, type="response", se.fit=TRUE)
    pris <- data.frame("pest"=prs[[1]], "lwr"=prs[[1]]-prs[[2]], "upr"=prs[[1]]+prs[[2]])
    points(pris$pest ~ quine$Age, col="red")
    points(pris$lwr  ~ quine$Age, col="pink", pch=19)
    points(pris$upr  ~ quine$Age, col="pink", pch=19)

Bu, analizinizle ilgili faydalı bilgilerin çoğunu vermeli ve çoğu adım, tüm standart sayı veri dağılımları için çalışmalıdır (örn. Poisson, Negatif Binom, COM Poisson, Güç Yasaları).


6
Harika kapsamlı cevap! Gözlerimi nasıl görünmesi gerektiği konusunda eğitmek için Poisson simüle edilmiş verilerle bu teşhisi de yapmak yardımcı oldu.
yarım geçiş 16

Arazilerin ne yaptığını daha fazla açıklama yapmalı mıydım yoksa bu şekilde sorun oldu mu?
Momo

2
İlginç not: NB dağılımının nadiren GOF testi, rootogram, Ord arsa ve NB-arsa temelli benzetilmiş NB verilerine uyduğunu gördüm. Bunun istisnası, neredeyse simetrik - yüksek mu, yüksek teta olan NB verisinin çok “evcil” olduğu görülüyor.
yarı geçişte

1
Hm, argüman olarak type = "nbinomial" kullandığınızdan emin misiniz? Örneğin, fm <- glm.nb (Günler., Data = quine); kukla <- rnegbin (takılı (fm), theta = 4.5) iyi çalışıyor.
Momo

@Momo, teşekkürler - x = rnegbin gibi bir şey yapıyordum (n = 1000, mu = 10, theta = 1); fit = iyi uyum (x, type = "nbinomial"); özet (sığacak). Theta = 4.5 ayarı uyumu iyileştirir, ancak hala sık sık p <0.05 ve rootogram oldukça kötü görünebilir. Sırf simülasyonlarımız arasındaki farkı anlıyorum: seninkilerde, kukla değerlerin her biri farklı bir ortalama parametresinden (takılmış bir değer (fm)), değil mi? Benimkiler, hepsinin ortalama 10'u var.
yarı geçiş

14

Standart tanı grafiklerini kullanma yaklaşımı için, ancak neye benzemeleri gerektiğini bilmek istemek için makaleyi beğendim:

 Buja, A., Cook, D. Hofmann, H., Lawrence, M. Lee, E.-K., Swayne,
 D.F and Wickham, H. (2009) Statistical Inference for exploratory
 data analysis and model diagnostics Phil. Trans. R. Soc. A 2009
 367, 4361-4383 doi: 10.1098/rsta.2009.0120

Sözü edilen yaklaşımlardan biri, ilgili varsayımların doğru olduğu birkaç simüle veri kümesi oluşturmak ve bu simüle veri setleri için teşhis grafikleri oluşturmak ve ayrıca gerçek veriler için teşhis grafiği oluşturmaktır. Tüm bu parselleri aynı anda ekrana yerleştirin (rastgele birisini gerçek verilere dayanarak yerleştirerek). Şimdi grafiklerin neye benzemesi gerektiğine dair görsel bir referansınız var ve varsayımlar gerçek veriler için geçerliyse, o zaman bu arsa diğerleri gibi görünmelidir (eğer gerçek verinin hangisi olduğunu söyleyemezseniz, test edilen varsayımların muhtemelen gerçeğe yetecek kadar), ancak eğer gerçek veri grafiği diğerinden açıkça farklı görünüyorsa, bu, varsayımlardan en az birinin tutmayacağı anlamına gelir. vis.testR TeachingDemos paketinde işlevi test olarak bu uygulamaya yardımcı olur.


6
Yukarıdaki verilere sahip bir örnek, kayıt için: mod1 <- glm (Günler ~ Yaş + Cinsiyet, veri = quine, aile = "poisson"); if (interactive ()) {vis.test (artıklar (mod1, type = "response"), vt.qqnorm, nrow = 5, ncol = 5, npage = 3)}
yarı-

13

Bu eski bir soru, ancak DHARMa R paketimin (CRAN'dan edinilebilir, buraya bakınız ) şimdi @GregSnow tarafından önerilenlere benzer bir simülasyon yaklaşımına dayanarak GLM'ler ve GLMM'ler için standart artıklar sağladığını eklemenin yararlı olacağını düşündüm. .

Paket açıklamasından:

DHARMa paketi, takılı genelleştirilmiş doğrusal karışık modellerden kolayca yorumlanabilen ölçeklenmiş artıklar oluşturmak için simülasyon tabanlı bir yaklaşım kullanır. Şu anda desteklenenler, 'lme4' ('lmerMod', 'glmerMod'), 'glm' ('MASS'den' negbin 'dahil, ancak yarı-dağılımlar hariç) ve' lm 'model sınıflarının tümüdir. Alternatif olarak, harici olarak oluşturulan simülasyonlar, örneğin 'JAGS', 'STAN' veya 'BUGS' gibi Bayesian yazılımlarından gelen arka tahmin simülasyonları da işlenebilir. Elde edilen artıklar, 0 ve 1 arasındaki değerlere standardize edilmiştir ve doğrusal bir regresyondan gelen artıklar olarak sezgisel olarak yorumlanabilir. Pakette ayrıca, tipik modelin yanlış tanımlanması sorunu için bir dizi çizim ve test fonksiyonu bulunmaktadır.

@Momo - Tavsiyenizi güncellemek isteyebilirsiniz 6, yanıltıcıdır. Sapma artıklarının normalliği genel olarak DHARMa skeçinde veya burada açıklandığı gibi bir Poisson altında beklenmez ; ve qqnorm grafiğindeki düz bir çizgiden farklı olan sapma artıklarını (veya diğer standart artıkları) görmek, bu nedenle genel olarak hiç endişe verici değildir . DHARMa paketi, Poisson veya diğer GLM ailelerinin sapmalarını teşhis etmek için güvenilir bir qq grafiği sunar. Buradaki sapma artıkları ile sorunu gösteren bir örnek yarattım .


4

GLM'ler için teşhis grafikleri oluşturmak için glm.diag.plotspakette adı verilen bir işlev vardır boot. Bu ne yapar:

Jackknife kalıntılarını doğrusal kestiricilere karşı sapma, normal puanlanmış standart sapma kalıntılarına ilişkin komplolar, kaldıraç / (1 kaldıraç) değerine göre yaklaşık Cook istatistiklerinin grafiği ve Cook istatistiğinin durum grafiği.

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.