Діагностичні графіки для регресії підрахунку


88

Які діагностичні діаграми (і, можливо, формальні тести) ви вважаєте найбільш інформативними для регресій, де результат є змінною?

Мене особливо цікавлять моделі Пуассона та негативні біноміальні моделі, а також нульові надуті та перешкоди для кожної з них. Більшість джерел, які я знайшов, просто побудують залишки проти встановлених значень без обговорення того, як повинні виглядати ці сюжети.

Мудрість та посилання дуже цінували. Зворотна історія про те, чому я це запитую, якщо це актуально, - це інше моє запитання .

Пов'язані дискусії:

Відповіді:


101

Ось що мені зазвичай подобається робити (для ілюстрації я використовую наддисперсні і не дуже легко модельовані дані про квочки днів учнів, відсутніх у школі MASS):

  1. Перевірте та графічте вихідні дані підрахунку , побудувавши спостережувані частоти та встановлені частоти (див. Розділ 2 у Дружньому ), який підтримується vcdпакетом Rу великих частинах. Наприклад, з goodfitі a rootogram:

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

    або з графіками Орда, які допомагають визначити, яка модель даних підрахунку лежить в основі (наприклад, тут нахил є позитивним і перехоплення позитивним, що говорить про негативний біноміальний розподіл):

    Ord_plot(quine$Days)

    або з сюжетами "XXXXXXness", де XXXXX - це розподіл за вибором, скажімо про сюжет Пуассонесса (який говорить проти Пуассона, спробуйте також type="nbinom"):

    distplot(quine$Days, type="poisson")
  2. Перевірте звичайні показники корисності придатності (такі як статистика ймовірності відносно нульової моделі чи подібних):

    mod1 <- glm(Days~Age+Sex, data=quine, family="poisson")
    summary(mod1)
    anova(mod1, test="Chisq")
    
  3. Перевірте наявність надмірної / меншої дисперсії, ознайомившись з residual deviance/dfофіційною статистикою тесту (наприклад, див. Цю відповідь ). Тут ми маємо явно перевищення:

    library(AER)
    deviance(mod1)/mod1$df.residual
    dispersiontest(mod1)
    
  4. Перевірте наявність впливових та важельних точок , наприклад, із упаковкою influencePlotв carупаковці. Звичайно, тут багато моментів дуже впливають, тому що Пуассон - це погана модель:

    library(car)
    influencePlot(mod1)
    
  5. Перевірте нульову інфляцію , встановивши модель даних про підрахунок та її аналог з нульовим надуванням / перешкодою та порівняйте їх (як правило, з AIC). Тут нульова завищена модель підходила б краще, ніж проста Пуассона (знову ж, мабуть, через перевищення):

    library(pscl)
    mod2 <- zeroinfl(Days~Age+Sex, data=quine, dist="poisson")
    AIC(mod1, mod2)
    
  6. Накресліть залишки (необроблені, відхилені або масштабовані) на осі y порівняно з прогнозованими значеннями (log) (або лінійним предиктором) на осі x. Тут ми бачимо кілька дуже великих залишків і істотне відхилення залишків відхилення від норми (виступаючи проти Пуассона; Редагувати: @ Відповідь Флоріана Гартіга говорить про те, що нормальності цих залишків не слід очікувати, тому це не є переконливою підказкою):

    res <- residuals(mod1, type="deviance")
    plot(log(predict(mod1)), res)
    abline(h=0, lty=2)
    qqnorm(res)
    qqline(res)
    
  7. Якщо цікавить, побудуйте половину нормальної діаграми ймовірності залишків, побудувавши впорядковані абсолютні залишки проти очікуваних нормальних значень Аткінсона (1981) . Особливістю буде моделювати довідкову лінію та конверт із змодельованими / завантаженими довірчими інтервалами (не показано, однак):

    library(faraway)
    halfnorm(residuals(mod1))
    
  8. Діагностичні графіки для лінійних моделей журналів для даних лічильників (див. Глави 7.2 та 7.7 ​​в книзі Дружнього). Сюжет передбачив порівняно зі спостережуваними значеннями, можливо, з деякою інтервальною оцінкою (я робив саме для вікових груп - тут ми знову бачимо, що ми досить далеко за нашими оцінками через перевищення, можливо, у групі 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)
    

Це повинно дати вам багато корисної інформації про ваш аналіз і більшість кроків роботи для всіх стандартних розподілів даних підрахунку (наприклад, Пуассон, Негативний Біном, COM Поассон, Закони про владу).


6
Чудова ґрунтовна відповідь! Було б корисно також пройти цю діагностику з моделюванням Пуассона, щоб навчити моє око, як мають виглядати ділянки.
половина проходу

Чи повинен я дати більше пояснень, що роблять сюжети, чи все в порядку це було?
Момо

2
Цікава сторона: Я вважаю, що розподіл НБ рідко здається змодельованим модельованими даними NB на основі тесту GOF, ротограми, графіку Орда та ділянки NB-ності. Винятком, здається, є дуже "приручені" дані NB, які майже симетричні - висока мю, висока тета.
півзахист

1
Гм, ви впевнені, що використовуєте type = "nbinomial" як аргумент? Напр. Fm <- glm.nb (Дні ~., Дані = квіне); манекен <- рнегбін (прилаштований (фм), тета = 4,5) працює чудово.
Момо

@Momo, спасибі - я робив щось на кшталт x = rnegbin (n = 1000, mu = 10, theta = 1); fit = goodfit (x, type = "nbinomial"); резюме (підходить). Встановлення theta = 4,5 покращує придатність, але це все ще часто p <0,05, і ротограма може виглядати досить погано. Просто я розумію різницю між нашими моделюваннями: у вашому, кожне значення манекена було змодельовано з іншого середнього параметра (значення в пристосованому (fm)), правда? У моєму, всі вони мають середнє значення 10.
половина пропуску

14

Щодо підходу до використання стандартних діагностичних діаграм, але хочу знати, як вони мають виглядати, мені подобається документ:

 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

Один із згаданих там підходів полягає у створенні декількох модельованих наборів даних, де припущення, що цікавлять, є правдивими та створення діагностичних діаграм для цих модельованих наборів даних, а також створення діагностичної схеми для реальних даних. розміщувати всі ці сюжети одночасно на екрані (випадковим чином розміщуючи той на основі реальних даних). Тепер у вас є візуальна довідка про те, як повинні виглядати сюжети, і якщо припущення стосуються реальних даних, то цей графік повинен виглядати так само, як і інші (якщо ви не можете сказати, які є реальні дані, то припущення, що тестуються, ймовірно, закриті достатньо для істини), але якщо реальний графік даних виглядає явно відмінним від іншого, то це означає, що принаймні одне з припущень не виконується. vis.testФункція в пакеті TeachingDemos для R допомагає реалізувати це як випробування.


6
Приклад із наведеними вище даними для запису: mod1 <- glm (Дні ~ Вік + Стать, дані = Квіне, сімейство = "Пуассон"); if (interactive ()) {vis.test (залишки (mod1, type = "відповідь"), vt.qqnorm, nrow = 5, ncol = 5, npage = 3)}
напівпропуск

13

Це давнє запитання, але я вважав, що було б корисно додати, що мій пакет DHARMa R (доступний у CRAN, див. Тут ) тепер надає стандартизовані залишки для GLM та GLMM, засновані на імітаційному підході, подібному до запропонованого @GregSnow .

З опису пакета:

Пакет DHARMa використовує підхід на основі моделювання для створення легко інтерпретованих масштабованих залишків із встановлених узагальнених лінійних змішаних моделей. В даний час підтримуються всі класи 'merMod' з 'lme4' ('lmerMod', 'glmerMod'), 'glm' (включаючи 'negbin' від 'MASS', але виключаючи квазірозподіл) та 'lm' модельні класи. Альтернативно, також можуть бути оброблені моделювання, створені ззовні, наприклад, задні передбачувальні симуляції з програмного забезпечення Bayesian, таких як "JAGS", "STAN" або "BUGS". Отримані залишки стандартизовані до значень від 0 до 1 і можуть інтерпретуватися так само інтуїтивно, як залишки від лінійної регресії. У пакеті також передбачено ряд сюжетних і тестових функцій для типової проблеми неправильного визначення,

@Momo - ви можете оновити свою рекомендацію 6, це вводить в оману. Нормальність залишків відхилень взагалі не очікується під Пуассоном , як пояснено у віньетці DHARMa або тут ; і залишки відхилень відхилення (або будь-які інші стандартні залишки), які відрізняються від прямої лінії в графіці qqnorm, взагалі, взагалі не викликають занепокоєння . Пакет DHARMa пропонує графік qq, який є надійним для діагностики відхилень від Пуассона або інших сімейств GLM. Я створив приклад, який демонструє проблему із залишками відхилень тут .


4

У glm.diag.plotsпакеті функція, яка викликається boot, генерує діагностичні графіки для ГЛМ. Що це робить:

Створює графік залишків відхилення ножового відхилення від лінійного предиктора, нормальний показник графіків залишків стандартизованого відхилення, графік приблизної статистики Кука щодо важеля / (1-важіль) та графік випадку статистики Кука.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.