Інтервали довіри для параметрів регресії: Байесова проти класичної


15

З огляду на два масиви x і y, обидві довжиною n, я підходять до моделі y = a + b * x і хочу обчислити 95% довірчий інтервал для схилу. Це (b - дельта, b + дельта), де b зустрічається звичайним чином і

delta = qt(0.975,df=n-2)*se.slope

а se.slope - це стандартна похибка у схилі. Одним із способів отримати стандартну похибку нахилу від R є summary(lm(y~x))$coef[2,2].

Тепер припустимо, що я записую ймовірність нахилу, заданих x і y, помножую це на "плоскість" до і використовую техніку MCMC, щоб намалювати вибірку m із заднього розподілу. Визначте

lims = quantile(m,c(0.025,0.975))

Моє запитання: (lims[[2]]-lims[[1]])/2приблизно дорівнює дельті, як визначено вище?

Додаток нижче - проста модель JAGS, де ці два здаються різними.

model {
 for (i in 1:N) {
  y[i] ~ dnorm(mu[i], tau)
  mu[i] <- a + b * x[i]
 }
 a ~ dnorm(0, .00001)
 b ~ dnorm(0, .00001)
 tau <- pow(sigma, -2)
 sigma ~ dunif(0, 100)
}

Я виконую наступне в R:

N <- 10
x <- 1:10
y <- c(30.5,40.6,20.5,59.1,52.5,
       96.0,121.4,78.9,112.1,128.4)
lin <- lm(y~x)

#Calculate delta for a 95% confidence interval on the slope
delta.lm <- qt(0.975,df=N-2)*summary(lin)$coef[2,2]

library('rjags')
jags <- jags.model('example.bug', data = list('x' = x,'y' = y,'N' = N),
                   n.chains = 4,n.adapt = 100)
update(jags, 1000)
params <- jags.samples(jags,c('a', 'b', 'sigma'),7500)
lims <- quantile(params$b,c(0.025,0.975))
delta.bayes <- (lims[[2]]-lims[[1]])/2

cat("Classical confidence region: +/-",round(delta.lm, digits=4),"\n")
cat("Bayesian confidence region:  +/-",round(delta.bayes,digits=4),"\n")

І отримайте:

Класичний регіон довіри: +/- 4.6939

Байєсський регіон довіри: +/- 5.1605

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

Відповіді:


9

"Проблема" в пріоритеті сигми. Спробуйте менш інформативні налаштування

tau ~ dgamma(1.0E-3,1.0E-3)
sigma <- pow(tau, -1/2)

у вашому файлі джегів. Потім оновіть купу

update(10000)

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

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


@ Ringold, що спрацювало? Попередня сигма чи оновлення? Або обоє? Ви перевірили їх окремо?
Цікаво

має бути sigma <- pow(tau, -1/2)абоsigma <- 1/sqrt(tau)
цікаво

@Tomas, цілком правильно. Друкарська помилка.
кон'югатприор

Хоча, чесно кажучи, це може бути джерелом різниці, оскільки це в оригінальному коді ...
conjuprprior

6

Якщо ви зразок з задньої частини b | y і обчислити lims (як ви визначаєте), він повинен бути таким же, як (b - delta, b + delta). Зокрема, якщо обчислити задній розподіл b | y під плоскою до, це те саме, що і класичний розподіл вибірки b.

Більш детально див.: Gelman et al. (2003). Байєсівський аналіз даних. CRC Press. Розділ 3.6

Редагувати:

Рінгольд, поведінка, яку ви спостерігаєте, відповідає байєсівській ідеї. Байєсівський достовірний інтервал (CI), як правило, ширший, ніж класичний. І причина в тому, як ви правильно здогадалися, гіперпріори враховували мінливість через невідомі параметри.

Для таких простих сценаріїв (НЕ ЗАГАЛЬНО):

Байзійська CI> Емпірична байєсівська CI> Класична ІС; > == ширше


Я додав код за допомогою JAGS, де, здається, я отримую іншу відповідь. Де моя помилка? Це відбувається через пріорів?
Рінгольд

Тепер я розгублений. По-перше, ви сказали, що задній розподіл b | y під плоским попереднім аналогічним класичному розподілу вибірки b. Тоді ви сказали, що байєсівський КІ ширший за класичний. Як воно могло бути ширшим, якщо розподіли однакові?
Рінгольд

Вибачте - я мав би сказати, що @CP запропонував у своїх коментарях. Теоретично, b | y під плоским попереднім і класичним ІС є однаковим, але ви не можете цього зробити практично в JAGS, якщо ви не використовуєте дуже дифузний попередній, як запропоновано CP, і не використовуєте багато ітерацій MCMC.
suncoolsu

Я об’єднав ваші акаунти, щоб ви могли редагувати свої запитання та додавати коментарі. Однак зареєструйте свій обліковий запис, натиснувши тут: stats.stackexchange.com/users/login ; ви можете використовувати ваш Gmail OpenID, щоб зробити це за кілька секунд, і ви більше не втрачаєте свій обліковий запис тут.

Дякую, я зареєструвався. І велике спасибі тим, хто відповів на це питання. Я спробую попередньо гамму.
Рінгольд

5

Для лінійних гауссових моделей краще використовувати пакет байесм. Він реалізує напівсполучену родину пріорів, а попередня Джеффрі є граничним випадком цієї родини. Дивіться мій приклад нижче. Це класичні симуляції, не потрібно використовувати MCMC.

Я не пам'ятаю, чи точно такі інтервали достовірності щодо параметрів регресії відповідають звичайним інтервалам довіри найменших квадратів, але в будь-якому випадку вони дуже близькі.

> # required package
> library(bayesm)
> # data
> age <- c(35,45,55,65,75)
> tension <- c(114,124,143,158,166)
> y <- tension
> # model matrix
> X <- model.matrix(tension~age)
> # prior parameters
> Theta0 <- c(0,0)
> A0 <- 0.0001*diag(2)
> nu0 <- 0
> sigam0sq <- 0
> # number of simulations
> n.sims <- 5000
> # run posterior simulations
> Data <- list(y=y,X=X)
> Prior <- list(betabar=Theta0, A=A0, nu=nu0, ssq=sigam0sq)
> Mcmc <- list(R=n.sims)
> bayesian.reg <- runireg(Data, Prior, Mcmc)
> beta.sims <- t(bayesian.reg$betadraw) # transpose of bayesian.reg$betadraw
> sigmasq.sims <- bayesian.reg$sigmasqdraw
> apply(beta.sims, 1, quantile, probs = c(0.025, 0.975))
[,1] [,2]
2.5% 53.33948 1.170794
97.5% 77.23371 1.585798
> # to be compared with: 
> frequentist.reg <- lm(tension~age)

3

Зважаючи на те, що проста лінійна регресія є аналітично ідентичною між класичним та байєсівським аналізами з попереднім Джефрі, обидва вони аналітичні, здається, що дивно вдатися до чисельного методу, такого як MCMC, щоб зробити байєсівський аналіз. MCMC - це лише інструмент чисельної інтеграції, який дозволяє використовувати байєсовські методи у складніших проблемах, які є аналітично нерозбірливими, так само, як Newton-Rhapson або Fisher Scoring - це чисельні методи вирішення класичних задач, які не можна вирішити.

Задній розподіл p (b | y), використовуючи попередній p (a, b, s) Джефрі, пропорційний 1 / s (де s - стандартне відхилення помилки) - розподіл студента t з розташуванням b_ols, шкала se_b_ols (" ols "для" звичайних найменших квадратів "оцінка) і n-2 ступеня свободи. Але розподіл вибірки b_ols також є студентом t з розташуванням b, шкалою se_b_ols та n-2 ступенями свободи. Таким чином, вони ідентичні, за винятком того, що b і b_ols були помінені, тому що стосується створення інтервалу, "est + - пов'язаний" довірчого інтервалу повертається до "est - + пов'язаного" у достовірному інтервалі.

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


Не так дивно насправді. Однією з причин використання числового методу для пошуку відповіді на проблему, яку можна вирішити аналітичним шляхом, є забезпечення правильного використання програмного забезпечення.
Рінгольд

1
f(β0,β1,,βp,σ)Пр(Y>10х)х
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.