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

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

Повторяя это многократно, байесовский доверительный интервал неизменно шире, чем классический. Так это из-за приоров, которые я выбрал?

Ringold
источник

Ответы:

9

«Проблема» в предшествующем сигма. Попробуйте менее информативные настройки

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

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

update(10000)

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

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

conjugateprior
источник
@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; > == шире

suncoolsu
источник
Я добавил код, используя 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, дает вероятный интервал, который слишком широк по сравнению с точным аналитическим вероятным интервалом. Вероятно, это хорошая вещь (хотя мы хотели бы, чтобы приближение было лучше), что приближенное байесовское решение выглядит более консервативным, чем точное байесовское решение.

probabilityislogic
источник
Не так уж и странно. Одной из причин использования численного метода для поиска ответа на проблему, которая может быть решена аналитически, является обеспечение правильного использования программного обеспечения.
Рингольд
1
е(β0,β1,...,βп,σ)Pr(Y>10|Икс)Икс