Чому достовірний інтервал Байєса в цій поліноміальній регресії зміщений, тоді як інтервал довіри правильний?


9

Розглянемо сюжет нижче, в якому я моделював дані наступним чином. Ми дивимось на двійковий результат для якого справжня ймовірність дорівнює 1 позначена чорною лінією. Функціональний взаємозв'язок між коваріатним і p (y_ {obs} = 1 | x) - поліном 3-го порядку з логістичним зв’язком (тому він є нелінійним у подвійному напрямку).уобсхp(уобс=1|х)

Зелена лінія - це логістична регресія GLM, де х вводиться як поліном 3-го порядку. Пунктирні зелені лінії - це 95% довірчі інтервали навколо прогнозування p(уобс=1|х,β^) , де β^ відповідні коефіцієнти регресії. Я використовував R glmі predict.glmдля цього.

Аналогічно, пружкова лінія - це середнє значення заднього з 95% достовірним інтервалом для p(уобс=1|х,β) байєсівської логістичної регресійної моделі з використанням рівномірного попереднього. Я використовував для цього пакет MCMCpackз функцією MCMClogit(налаштування B0=0дає рівномірний неінформативний попередній характер).

Червоні точки позначають спостереження в наборі даних, для яких , чорні точки - спостереження з . Зауважимо, що, як часто в класифікації / дискретному аналізі, спостерігається але не .уобс=1уобс=0уp(уобс=1|х)

введіть тут опис зображення

Можна побачити кілька речей:

  1. Я спеціально моделював, що - ліва рука. Я хочу, щоб довіра та надійний інтервал стали широкими тут через брак інформації (спостережень).х
  2. Обидва прогнози є упередженими вгору зліва. Цей ухил обумовлений чотирма червоними точками, що позначають спостереження, що помилково говорить про те, що справжня функціональна форма підніметься тут. Алгоритм не має достатньо інформації для висновку, що справжня функціональна форма є зігнутою вниз.уобс=1
  3. Інтервал довіри стає ширшим, як очікувалося, тоді як вірогідний інтервал - ні . Насправді довірчий інтервал охоплює повний простір параметрів, як це має бути через брак інформації.

Здається, достовірний інтервал тут неправильний / занадто оптимістичний для частини . Дійсно небажана поведінка для достовірного інтервалу звужуватися, коли інформація стає рідкою або повністю відсутня. Зазвичай на це не реагує надійний інтервал. Може хтось пояснить:х

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

Код для отримання інтервалів прогнозування у графіці друкується тут:

fit <- glm(y_obs ~ x + I(x^2) + I(x^3), data=data, family=binomial)
x_pred <- seq(0, 1, by=0.01)
pred <- predict(fit, newdata = data.frame(x=x_pred), se.fit = T)
plot(plogis(pred$fit), type='l')
matlines(plogis(pred$fit + pred$se.fit %o% c(-1.96,1.96)), type='l', col='black', lty=2)


library(MCMCpack)
mcmcfit <- MCMClogit(y_obs ~ x + I(x^2) + I(x^3), data=data, family=binomial)
gibbs_samps <- as.mcmc(mcmcfit)
x_pred_dm <- model.matrix(~ x + I(x^2) + I(x^3), data=data.frame('x'=x_pred))
gibbs_preds <- apply(gibbs_samps, 1, `%*%`, t(x_pred_dm))
gibbs_pis <- plogis(apply(gibbs_preds, 1, quantile, c(0.025, 0.975)))
matlines(t(gibbs_pis), col='red', lty=2)

Доступ до даних : https://pastebin.com/1H2iXiew спасибі @DeltaIV та @AdamO


Якщо хтось міг би мені пояснити, як поділитися таблицею з даними, я можу це зробити.
tomka

Ви можете використовувати dputв кадрі даних, що містить дані, а потім включити dputвихід у якості коду у свою посаду.
DeltaIV

1
@tomka ой я бачу. Я не барвінок, але мені дуже важко бачити різницю зеленого / синього!
AdamO

1
@AdamO сподіваюся, що це краще
tomka

1
@Flounderer Перевірте, наприклад, stats.stackexchange.com/questions/26450/… або stats.stackexchange.com/questions/6652/…
Tim

Відповіді:


6

Для моделі, частотна дисперсія в передбачення НЕ збільшиться пропорційно квадрату відстані від центроїда . Ваш метод обчислення інтервалів прогнозування для Bayesian GLM використовує емпіричні кванти на основі встановленої кривої ймовірності, але не враховує важеліХХ

Біноміальний частістський GLM нічим не відрізняється від GLM зі зв’язком ідентичності, за винятком того, що дисперсія пропорційна середній.

Зауважимо, що будь-яке поліноміальне представлення ймовірностей logit призводить до прогнозування ризику, що сходиться до 0 як та 1 як або навпаки, залежно від знаку найвищого строку поліноміального порядку .Х-Х

Для частого прогнозування в цій тенденції переважає пропорційне збільшення квадратичного відхилення (важеля) дисперсії прогнозів. Ось чому швидкість конвергенції до інтервалів прогнозування приблизно дорівнює [0, 1] швидше, ніж конвергенція полінома логіта третього порядку до ймовірностей 0 або 1 сингулярно.

Це не так для байєсівських квантових приміщень. Немає явного використання відхилення у квадраті, тому ми покладаємося просто на частку домінуючих 0 або 1 тенденцій для побудови тривалих інтервалів прогнозування.

Це стало очевидним екстраполяцією дуже далеко в крайності .Х

Використовуючи вказаний вище код, ми отримуємо:

> x_pred_dom <- model.matrix(~ x + I(x^2) + I(x^3), data=data.frame('x'=c(1000)))
> gibbs_preds <- plogis(apply(gibbs_samps[1000:10000, ], 1, `%*%`, t(x_pred_dom))) # a bunch of 0/1s basically past machine precision
> prop.table(table(gibbs_preds))
gibbs_preds
         0          1 
0.97733585 0.02266415 
> 

Отже, 97,75% часу, третій член многочлена був від'ємним. Це можна перевірити зразків Гіббса:

> prop.table(table(gibbs_samps[, 4]< 0))

 FALSE   TRUE 
0.0225 0.9775 

Отже, передбачувана ймовірність сходиться до 0, коли переходить до нескінченності. Якщо ми перевіримо СЕ байєсівської моделі, то виявимо, що оцінка третього многочленового члена становить -185,25 з se 108,81, це означає, що це 1,70 СД від 0, тому, використовуючи нормальні закони ймовірності, вона повинна опускатися нижче 0 95,5% часу ( не страшно інший прогноз, заснований на 10 000 ітерацій). Просто ще один спосіб розуміння цього явища.Х

З іншого боку, частість придатних ударів до 0,1, як очікувалося:

freq <- predict(fit, newdata = data.frame(x=1000), se.fit=T)
plogis(freq$fit + c(-1.96, 1.96) %o% freq$se.fit)

дає:

> plogis(freq$fit + c(-1.96, 1.96) %o% freq$se.fit)
     [,1]
[1,]    0
[2,]    1

Тим не менш: чи не є баєсівська модель надто впевненою в області даних хщо вона не бачила прикладів з? Я знаю, що байєвські плакати або прогнозні розподіли часто мають дуже різну поведінку (тобто більше схожі на конфліктний інтервал). Я підозрюю, що є певний вплив попереднього. Якщо ви маніпулюєте B0в MCMClogitвас вказати точність нормального до і спостерігається досить вплив на яке заслуговує на довіру інтервалу.
tomka

@tomka Я не знаю, як точно відповісти на це питання, оскільки це здається дотичним до цього питання. Найголовніше вказувати на те, що ці методи обчислення ПІ насправді не порівнянні, тим більше, що вони стосуються екстраполяції. Звичайно, за умови байєсівського висновку, якщо ви використовуєте інформаційний попередній, ви отримуєте ефективність, коли пріоритет є правильним, і програєте, коли пріоритет неправильний.
AdamO

Просто щоб повідомити вам, що я все ще думаю про вашу відповідь. Я все ще відчуваю, що дивно, що задній не реагує на розрідженість розширенням. Я вважаю, що для інших пріорів можна досягти кращої поведінки в рідкісному регіоні. Я не можу це точно зафіксувати на даний момент; Я, можливо, допомню питання на прикладі, коли достовірний інтервал працює так, як я б очікував, навіть у випадку екстраполяції (я думаю саме про нормальну лінійну байєсівську регресію, зокрема). Коли я це зроблю, я дам вам знати.
tomka
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.