นี่คือสิ่งที่ฉันมักจะชอบทำ (สำหรับภาพประกอบฉันใช้ข้อมูลเกินกำหนดและไม่ได้จำลองข้อมูลควินอย่างง่าย ๆ ในสมัยของนักเรียนที่ขาดเรียนMASS
)
ทดสอบและจัดทำกราฟข้อมูลนับต้นฉบับโดยการพล็อตความถี่ที่สังเกตได้และความถี่ที่พอดี (ดูบทที่ 2 เป็นมิตร ) ซึ่งได้รับการสนับสนุนโดยvcd
แพ็คเกจในR
ชิ้นส่วนขนาดใหญ่ ตัวอย่างเช่นด้วยgoodfit
และrootogram
:
library(MASS)
library(vcd)
data(quine)
fit <- goodfit(quine$Days)
summary(fit)
rootogram(fit)
หรือพล็อต Ordซึ่งช่วยในการระบุตัวแบบข้อมูลนับที่เป็นพื้นฐาน (เช่นตรงนี้ความชันเป็นบวกและการสกัดกั้นเป็นบวกซึ่งพูดถึงการแจกแจงแบบทวินามลบ):
Ord_plot(quine$Days)
หรือพล็อต"XXXXXXness"ที่ XXXXX เป็นการกระจายตัวเลือกให้พูดพล็อต Poissoness (ซึ่งพูดกับปัวซองลองดูด้วยtype="nbinom"
):
distplot(quine$Days, type="poisson")
ตรวจสอบการวัดความดีตามปกติ(เช่นสถิติอัตราส่วนความน่าจะเป็นเทียบกับโมเดลแบบโมฆะหรือคล้ายกัน):
mod1 <- glm(Days~Age+Sex, data=quine, family="poisson")
summary(mod1)
anova(mod1, test="Chisq")
ตรวจสอบเกิน / ต่ำกว่าโดยดูจากresidual deviance/df
สถิติทดสอบอย่างเป็นทางการ (เช่นดูคำตอบนี้ ) ที่นี่เรามีการทับซ้อนอย่างชัดเจน:
library(AER)
deviance(mod1)/mod1$df.residual
dispersiontest(mod1)
ตรวจสอบคะแนนที่มีอิทธิพลและงัดเช่นinfluencePlot
ในcar
แพ็คเกจ แน่นอนว่าที่นี่มีหลายจุดที่มีอิทธิพลสูงเพราะปัวซองเป็นนางแบบที่ไม่ดี:
library(car)
influencePlot(mod1)
ตรวจสอบอัตราเงินเฟ้อเป็นศูนย์โดยการปรับรูปแบบข้อมูลการนับและการเทียบเคียง zeroinflated / hurdle และเปรียบเทียบกับพวกมัน (ปกติกับ AIC) ที่นี่โมเดลพองเกินศูนย์จะพอดีกับปัวซองแบบง่าย ๆ (อาจเป็นเพราะ overdispersion):
library(pscl)
mod2 <- zeroinfl(Days~Age+Sex, data=quine, dist="poisson")
AIC(mod1, mod2)
พล็อตส่วนที่เหลือ (ดิบเบี่ยงเบนหรือปรับสัดส่วน) บนแกน y เทียบกับค่าที่ทำนาย (บันทึก) (หรือตัวทำนายเชิงเส้น) บนแกน x ที่นี่เราเห็นเศษเหลือใช้ที่มีขนาดใหญ่มากและการเบี่ยงเบนที่เหลืออยู่ของค่าเบี่ยงเบนจากค่าปกติ (พูดกับปัวซอง; แก้ไข: @ คำตอบของ FlorianHartig แสดงให้เห็นว่าไม่ต้องคาดหวังว่ากฎเกณฑ์ทั่วไปของสิ่งตกค้างเหล่านี้
res <- residuals(mod1, type="deviance")
plot(log(predict(mod1)), res)
abline(h=0, lty=2)
qqnorm(res)
qqline(res)
หากสนใจพล็อตครึ่งพล็อตน่าจะเป็นปกติของเศษโดยพล็อตที่สั่งซื้อเหลือแน่นอนเมื่อเทียบกับค่าปกติคาดว่าแอตกินสัน (1981) คุณสมบัติพิเศษคือการจำลอง 'เส้น' และซองจดหมายอ้างอิงที่มีช่วงความเชื่อมั่นแบบจำลอง / bootstrapped (ไม่แสดงแม้ว่า):
library(faraway)
halfnorm(residuals(mod1))
แปลงการวินิจฉัยสำหรับโมเดลเชิงเส้นบันทึกสำหรับข้อมูลนับ (ดูบทที่ 7.2 และ 7.7 ในหนังสือของ Friendly) พล็อตที่คาดการณ์ไว้กับค่าที่สังเกตได้อาจจะมีการประมาณช่วงเวลา (ฉันแค่สำหรับกลุ่มอายุ - ที่นี่เราเห็นอีกครั้งว่าเราค่อนข้างห่างไกลจากการคาดการณ์ของเราเนื่องจากการกระจายตัวมากเกินไปบางทีในกลุ่ม F3 จุดสีชมพู การทำนายจุดข้อผิดพลาดมาตรฐานหนึ่งข้อ):±
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)
สิ่งนี้ควรให้ข้อมูลที่เป็นประโยชน์เกี่ยวกับการวิเคราะห์ของคุณและขั้นตอนส่วนใหญ่ทำงานให้กับการแจกแจงข้อมูลมาตรฐานทั้งหมด (เช่น Poisson, Negative Binomial, COM Poisson, Power Laws)