Коли інтервал довіри "має сенс", але відповідний достовірний інтервал не робить?


14

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

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

Я не хочу повертатися до цих прикладів або філософської дискусії Баєсіана проти Частота.

Я просто шукаю приклади навпаки. Чи існують випадки, коли довірчі та достовірні інтервали істотно відрізняються, а інтервал, передбачений процедурою довіри, явно перевершує?

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

EDIT: У відповідь на відповідь @JaeHyeok Shin нижче, я повинен погодитися, що його приклад використовує правильну ймовірність. Я використав приблизну байєсівську обчислення, щоб оцінити правильний задній розподіл для тети нижче в R:

### Methods ###
# Packages
require(HDInterval)

# Define the likelihood
like <- function(k = 1.2, theta = 0, n_print = 1e5){
  x    = NULL
  rule = FALSE
  while(!rule){
    x     = c(x, rnorm(1, theta, 1))
    n     = length(x)
    x_bar = mean(x)

    rule = sqrt(n)*abs(x_bar) > k

    if(n %% n_print == 0){ print(c(n, sqrt(n)*abs(x_bar))) }
  }
  return(x)
}

# Plot results
plot_res <- function(chain, i){
    par(mfrow = c(2, 1))
    plot(chain[1:i, 1], type = "l", ylab = "Theta", panel.first = grid())
    hist(chain[1:i, 1], breaks = 20, col = "Grey", main = "", xlab = "Theta")
}


### Generate target data ### 
set.seed(0123)
X = like(theta = 0)
m = mean(X)


### Get posterior estimate of theta via ABC ###
tol   = list(m = 1)
nBurn = 1e3
nStep = 1e4


# Initialize MCMC chain
chain           = as.data.frame(matrix(nrow = nStep, ncol = 2))
colnames(chain) = c("theta", "mean")
chain$theta[1]  = rnorm(1, 0, 10)

# Run ABC
for(i in 2:nStep){
  theta = rnorm(1, chain[i - 1, 1], 10)
  prop  = like(theta = theta)

  m_prop = mean(prop)


  if(abs(m_prop - m) < tol$m){
    chain[i,] = c(theta, m_prop)
  }else{
    chain[i, ] = chain[i - 1, ]
  }
  if(i %% 100 == 0){ 
    print(paste0(i, "/", nStep)) 
    plot_res(chain, i)
  }
}

# Remove burn-in
chain = chain[-(1:nBurn), ]

# Results
plot_res(chain, nrow(chain))
as.numeric(hdi(chain[, 1], credMass = 0.95))

Це 95% надійний інтервал:

> as.numeric(hdi(chain[, 1], credMass = 0.95))
[1] -1.400304  1.527371

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

ЗРІД №2:

Ось оновлення після коментарів @JaeHyeok Shin. Я намагаюсь зробити це максимально просто, але сценарій трохи складніше. Основні зміни:

  1. Зараз використовуємо допуск 0,001 для середнього (це було 1)
  2. Збільшена кількість кроків до 500 тис. Для врахування меншої толерантності
  3. Зменшила скорочення розподілу пропозицій до 1, щоб зменшити допуск (було 10)
  4. Додано просту ймовірність простої рнорми з n = 2k для порівняння
  5. Додано розмір вибірки (n) як підсумкову статистику, встановити допуск до 0,5 * n_target

Ось код:

### Methods ###
# Packages
require(HDInterval)

# Define the likelihood
like <- function(k = 1.3, theta = 0, n_print = 1e5, n_max = Inf){
  x    = NULL
  rule = FALSE
  while(!rule){
    x     = c(x, rnorm(1, theta, 1))
    n     = length(x)
    x_bar = mean(x)
    rule  = sqrt(n)*abs(x_bar) > k
    if(!rule){
     rule = ifelse(n > n_max, TRUE, FALSE)
    }

    if(n %% n_print == 0){ print(c(n, sqrt(n)*abs(x_bar))) }
  }
  return(x)
}


# Define the likelihood 2
like2 <- function(theta = 0, n){
  x = rnorm(n, theta, 1)
  return(x)
}



# Plot results
plot_res <- function(chain, chain2, i, main = ""){
    par(mfrow = c(2, 2))
    plot(chain[1:i, 1],  type = "l", ylab = "Theta", main = "Chain 1", panel.first = grid())
    hist(chain[1:i, 1],  breaks = 20, col = "Grey", main = main, xlab = "Theta")
    plot(chain2[1:i, 1], type = "l", ylab = "Theta", main = "Chain 2", panel.first = grid())
    hist(chain2[1:i, 1], breaks = 20, col = "Grey", main = main, xlab = "Theta")
}


### Generate target data ### 
set.seed(01234)
X    = like(theta = 0, n_print = 1e5, n_max = 1e15)
m    = mean(X)
n    = length(X)
main = c(paste0("target mean = ", round(m, 3)), paste0("target n = ", n))



### Get posterior estimate of theta via ABC ###
tol   = list(m = .001, n = .5*n)
nBurn = 1e3
nStep = 5e5

# Initialize MCMC chain
chain           = chain2 = as.data.frame(matrix(nrow = nStep, ncol = 2))
colnames(chain) = colnames(chain2) = c("theta", "mean")
chain$theta[1]  = chain2$theta[1]  = rnorm(1, 0, 1)

# Run ABC
for(i in 2:nStep){
  # Chain 1
  theta1 = rnorm(1, chain[i - 1, 1], 1)
  prop   = like(theta = theta1, n_max = n*(1 + tol$n))
  m_prop = mean(prop)
  n_prop = length(prop)
  if(abs(m_prop - m) < tol$m &&
     abs(n_prop - n) < tol$n){
    chain[i,] = c(theta1, m_prop)
  }else{
    chain[i, ] = chain[i - 1, ]
  }

  # Chain 2
  theta2  = rnorm(1, chain2[i - 1, 1], 1)
  prop2   = like2(theta = theta2, n = 2000)
  m_prop2 = mean(prop2)
  if(abs(m_prop2 - m) < tol$m){
    chain2[i,] = c(theta2, m_prop2)
  }else{
    chain2[i, ] = chain2[i - 1, ]
  }

  if(i %% 1e3 == 0){ 
    print(paste0(i, "/", nStep)) 
    plot_res(chain, chain2, i, main = main)
  }
}

# Remove burn-in
nBurn  = max(which(is.na(chain$mean) | is.na(chain2$mean)))
chain  = chain[ -(1:nBurn), ]
chain2 = chain2[-(1:nBurn), ]


# Results
plot_res(chain, chain2, nrow(chain), main = main)
hdi1 = as.numeric(hdi(chain[, 1],  credMass = 0.95))
hdi2 = as.numeric(hdi(chain2[, 1], credMass = 0.95))


2*1.96/sqrt(2e3)
diff(hdi1)
diff(hdi2)

Результати, де hdi1 - це моя "ймовірність", а hdi2 - проста rnorm (n, theta, 1):

> 2*1.96/sqrt(2e3)
[1] 0.08765386
> diff(hdi1)
[1] 1.087125
> diff(hdi2)
[1] 0.07499163

Тож після достатнього зниження допуску та за рахунок багатьох інших кроків MCMC ми можемо побачити очікувану ширину CrI для моделі rnorm.

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


Не дублює, але має тісний зв’язок із stats.stackexchange.com/questions/419916/…
користувач158565

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

@jbowman Це стосується конкретного випадку, коли використовується рівномірний попередній або щось подібне до N (0, 1e6).
Livid

Десятиліття тому справжній байєсів називав статистиком, який використовував неінформативні попередні в якості псевдо- (або фальшивих) баєсів.
користувач158565

@ user158565 Це офтопік, але рівномірне попереднє - лише наближення. Якщо p (H_0) = p (H_1) = p (H_2) = ... = p (H_n), то всі пріорі можуть випасти з правила Байєса, що полегшує обчислення. Це не більше неправильно, ніж викидати невеликі терміни з знаменника, коли це має сенс.
Livid

Відповіді:


6

У послідовному експериментальному дизайні достовірний інтервал може вводити в оману.

(Відмова: Я не стверджую, що це не розумно - це цілком розумно в байесівських міркуваннях і не вводить в оману з точки зору байєсівської точки зору.)

XN(θ,1)θнnX¯n>kkN

N=inf{n1:nX¯n>k}.

Pθ(N<)=1θR

θπ(θ)θN(0,10))kθN(X¯N,1/N)

CIbayes:=[X¯N1.96N,X¯N+1.96N].
N0k
0<X¯NkNX¯N1.96N
k0CIbayes
infθPθ(θCIbayes)=0,
0θ00.95
P(θCIbayes|X1,,XN)0.95.

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

(Я дізнався цей приклад з дивовижної лекції Ларрі. Ця примітка містить багато цікавих дискусій про тонку різницю між частотними та байєсівськими рамками. Http://www.stat.cmu.edu/~larry/=stat705/Lecture14.pdf )

EDIT У ABC Livid значення допуску занадто велике, тому навіть для стандартних параметрів, де ми відбираємо фіксовану кількість спостережень, воно не дає правильної CR. Я не знайомий з ABC, але якщо я змінив лише значення tol на 0,05, ми можемо мати дуже перекошений CR наступним чином

> X = like(theta = 0)
> m = mean(X)
> print(m)
[1] 0.02779672

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

> as.numeric(hdi(chain[, 1], credMass = 0.95)) [1] -0.01711265 0.14253673

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

NX¯Nk0<θkkkθ<0


"якщо ми встановимо досить великий k, задня частина θ дорівнює приблизно N (X_N, 1 / N)" . Мені здається, що очевидно Pr (X | theta)! = Нормальний (theta, 1). Тобто, це неправильна ймовірність процесу, який генерував вашу послідовність. Також є друкарська помилка. У оригінальному прикладі ви зупиняєте вибірку, коли sqrt (n) * abs (середнє (x))> k.
Livid

i=1Nϕ(Xiθ)

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

k0<X¯Nk/NX¯N1.96/Nkk>10

2×1.96/2000=0.0876

4

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


1
Або ще краще, що довіра, побудована попередньою особою, яка не погоджується з вашим попереднім (навіть якщо це чужий пріоритет), має хороші шанси на те, щоб бути дурним для вас. Це не рідкість у науці; У мене були дослідники, які говорять, що вони не хочуть включати думку експертів, оскільки, за їхніми спостереженнями, експерти завжди сильно переконані.
Cliff AB

1
Мова йде конкретно про рівномірні, або «плоскі» пріори.
Livid

1
@Livid: Ви обов'язково повинні включити, що ви говорите про плоскі пріори у своєму питанні. Це повністю все змінює.
Cliff AB

1
@CliffAB Це в перших двох реченнях, але я уточню, дякую.
Livid

1

Якщо ми раніше використовуємо квартиру, це просто гра, в якій ми намагаємось придумати квартиру до репараметризації, яка не має сенсу.

{0,1} {1}

Ось чому багато байєсів заперечують проти плоских приорів.


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

1
@Livid: функція ймовірності цілком розумна. Плоским перед на лог-шансів немає. І це вся суть аргументу, який Баєсій використовує, щоб сказати, що не слід використовувати плоскі пріори; вони насправді можуть бути надзвичайно інформативними та часто не такими, як планував користувач!
Cliff AB

1
Ось Ендрю Гельман обговорював деякі питання плоских пріорів.
Cliff AB

Msgstr "" "Попередня кількість квартир в журналі відсутня." Я мав на увазі, що ставити квартиру попередньо на коефіцієнти, трансформовані журналом, здається вам нісенітницею, як використання неправильної ймовірності. Вибачте, але я не знайомий з цим прикладом. Що саме ця модель повинна робити?
Livid

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