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
):
Test ve grafik orijinal sayım verileri gözlemlenen frekansların ve monte frekansları (in bölüm 2. çizilerek Uygun tarafından desteklenmektedir) vcd
ambalajın R
büyük parçalar. Örneğin, goodfit
ve 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")
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")
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)
Olup olmadığını kontrol edin nüfuzlu ve kaldıraç noktaları ile, örneğin, influencePlot
içinde car
paketin. Tabii ki burada birçok nokta son derece etkili çünkü Poisson kötü bir model:
library(car)
influencePlot(mod1)
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)
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)
İ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))
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ı).