Доверительные интервалы для параметров регрессии: байесовский или классический


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)

в вашем файле JAGS. Тогда обновите кучу

update(10000)

захватите параметры и суммируйте интересующее вас количество. Это должно сравниться с классической версией.

Пояснение: Обновление просто для того, чтобы убедиться, что вы идете туда, куда идете, независимо от того, какой выбор вы выбрали ранее, хотя цепочки моделей, подобных этой, с диффузными априорами и случайными начальными значениями, сходятся дольше. В реальных задачах вы проверяете конвергенцию, прежде чем что-то суммировать, но конвергенция не является главной проблемой в вашем примере, я не думаю.


@Ringold, что сработало? Приор на сигму или обновление? Или оба? Вы тестировали их отдельно?
любопытно

должно быть sigma <- pow(tau, -1/2)илиsigma <- 1/sqrt(tau)
Любопытно

@ Томас, совершенно верно. Опечатка исправлена.
конъюнктурный

Хотя, честно говоря, это может быть источником разницы, так как это в оригинальном коде ...
сопряженная собственность

6

Если вы берете образец из задней части б | y и вычислите lims (как вы определяете), он должен быть таким же, как (b - delta, b + delta). В частности, если вы вычислите апостериорное распределение b | y под плоским априором, это то же самое, что и классическое выборочное распределение b.

За более подробной информацией обращайтесь к: Gelman et al. (2003). Байесовский анализ данных. CRC Press. Раздел 3.6

Редактировать:

Рингольд, наблюдаемое вами поведение согласуется с байесовской идеей. Байесовский доверительный интервал (CI) обычно шире классических. И причина в том, что, как вы правильно догадались, гиперприоры приняли во внимание изменчивость из-за неизвестных параметров.

Для простых сценариев, подобных этим (НЕ В ОБЩЕМ):

Baysian CI> Эмпирический байесовский CI> Классический CI; > == шире


Я добавил код, используя JAGS, где я, кажется, получаю другой ответ. Где моя ошибка? Это происходит из-за приоры?
Рингольд

Теперь я в замешательстве. Сначала вы сказали, что заднее распределение b | y под плоским априором такое же, как и в классическом распределении выборки b. Тогда вы сказали, что байесовский КИ шире, чем классический. Как это может быть шире, если распределения одинаковы?
Рингольд

Извините - я должен был сказать, что @CP предложил в его комментариях. Теоретически, b | y при плоском априорном и классическом CI одинаковы, но вы не можете сделать это практически в 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 - это просто инструмент численного интегрирования, который позволяет использовать байесовские методы в более сложных задачах, которые трудно поддаются анализу, точно так же, как Ньютон-Рэпсон или Фишер Скоринг представляют собой численные методы для решения классических задач, которые трудно поддаются решению.

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

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


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

1
е(β0,β1,...,βп,σ)Pr(Y>10|Икс)Икс
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.