Quando um intervalo de confiança "faz sentido", mas o intervalo credível correspondente não?


14

Geralmente, um intervalo de confiança com cobertura de 95% é muito semelhante a um intervalo credível que contém 95% da densidade posterior. Isso acontece quando o prior é uniforme ou quase uniforme no último caso. Assim, um intervalo de confiança geralmente pode ser usado para aproximar um intervalo confiável e vice-versa. É importante ressaltar que podemos concluir que a má interpretação muito difamada de um intervalo de confiança como um intervalo credível tem pouca ou nenhuma importância prática para muitos casos de uso simples.

Existem vários exemplos de casos em que isso não acontece, no entanto, todos parecem ser escolhidos pelos defensores das estatísticas bayesianas, na tentativa de provar que há algo errado com a abordagem freqüentista. Nestes exemplos, vemos que o intervalo de confiança contém valores impossíveis, etc., o que deve mostrar que eles não fazem sentido.

Não quero voltar atrás nesses exemplos ou em uma discussão filosófica sobre Bayesiana vs Frequentista.

Estou apenas procurando exemplos do oposto. Existem casos em que os intervalos de confiança e credibilidade são substancialmente diferentes e o intervalo fornecido pelo procedimento de confiança é claramente superior?

Para esclarecer: Trata-se da situação em que geralmente se espera que o intervalo credível coincida com o intervalo de confiança correspondente, ou seja, ao usar anteriores simples, uniformes, etc. Não estou interessado no caso em que alguém escolhe um prioritário arbitrariamente ruim.

EDIT: Em resposta à resposta de @JaeHyeok Shin abaixo, devo discordar de que o exemplo dele usa a probabilidade correta. Eu usei o cálculo bayesiano aproximado para estimar a distribuição posterior correta para teta abaixo em 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))

Este é o intervalo credível de 95%:

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

insira a descrição da imagem aqui

EDIT # 2:

Aqui está uma atualização após os comentários de @JaeHyeok Shin. Estou tentando mantê-lo o mais simples possível, mas o script ficou um pouco mais complicado. Principais mudanças:

  1. Agora, usando uma tolerância de 0,001 para a média (era 1)
  2. Aumento do número de etapas para 500k, para diminuir a tolerância
  3. Diminuiu o SD da distribuição da proposta para 1, para levar em conta a menor tolerância (era 10)
  4. Adicionada a probabilidade rnorm simples com n = 2k para comparação
  5. Adicionado o tamanho da amostra (n) como uma estatística resumida, defina a tolerância como 0,5 * n_target

Aqui está o código:

### 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)

Os resultados, em que hdi1 é minha "probabilidade" e hdi2 é o rnorm simples (n, theta, 1):

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

Portanto, depois de diminuir a tolerância suficientemente e às custas de muitas outras etapas do MCMC, podemos ver a largura de CrI esperada para o modelo rnorm.

insira a descrição da imagem aqui


Não é duplicado, mas tem uma relação estreita com stats.stackexchange.com/questions/419916/…
user158565 01/08/19

6
Geralmente, quando você tem um prévio informativo bastante errado, em um sentido informal, por exemplo, Normal (0,1) quando o valor real é -3,6, seu intervalo credível na ausência de muitos dados será bastante ruim quando visto de uma perspectiva freqüentista.
precisa saber é

@jbowman Isso é especificamente sobre o caso ao usar um uniforme anterior ou algo como N (0, 1e6).
Livid

Décadas atrás, o verdadeiro bayesiano telefonou para o estatístico que usava anteriormente não informativo como pseudo- (ou falso-) bayesiano.
User158565

@ user158565 Isto é offtopic, mas um anterior uniforme é apenas uma aproximação. Se p (H_0) = p (H_1) = p (H_2) = ... = p (H_n), todos os anteriores podem abandonar a regra de Bayes, facilitando a computação. Não é mais errado do que retirar pequenos termos de um denominador quando faz sentido.
Livid

Respostas:


6

Em um projeto experimental seqüencial, o intervalo credível pode ser enganoso.

(Isenção de responsabilidade: não estou argumentando que não é razoável - é perfeitamente razoável no raciocínio bayesiano e não é enganoso na perspectiva do ponto de vista bayesiano.)

Para um exemplo simples, digamos que temos uma máquina que nos fornece uma amostra aleatória X de N(θ,1) com θ desconhecido . Em vez de desenhar n iid amostras, extraímos amostras até nX¯n>kkN

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

Pθ(N<)=1θR

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

CEubumayes: =[X¯N-1,96N,X¯N+1,96N].
Entretanto, a partir da definição deN, sabemos que esse intervalo credível não contém0 0sekfor grande desde
0 0<X¯N-kNX¯N-1,96N
k0 0CEubumayes
infθPθ(θCEubumayes)=0 0,
0 0θ0 00,95
P(θCEubumayes|X1,...,XN)0,95.

Leve a mensagem para casa: Se você estiver interessado em ter uma garantia freqüentista, tenha cuidado ao usar ferramentas de inferência bayesiana que são sempre válidas para garantias bayesianas, mas nem sempre para garantias freqüentadoras.

(Aprendi esse exemplo com a impressionante palestra de Larry. Esta nota contém muitas discussões interessantes sobre a diferença sutil entre estruturas freqüentistas e bayesianas. Http://www.stat.cmu.edu/~larry/=stat705/Lecture14.pdf )

EDIT No ABC da Livid, o valor da tolerância é muito grande, portanto, mesmo para a configuração padrão em que amostramos um número fixo de observações, ele não fornece um CR correto. Eu não estou familiarizado com o ABC, mas se eu apenas alterei o valor de tol para 0,05, podemos ter um CR muito distorcido da seguinte maneira

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

insira a descrição da imagem aqui

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

Obviamente, a corrente não está bem estabilizada, mas mesmo se aumentarmos o comprimento da corrente, podemos obter um CR semelhante - inclinado para uma parte positiva.

NX¯Nk0 0<θk-k-kθ<0 0


"se definirmos um k suficientemente grande, o posterior de θ será aproximadamente N (X_N, 1 / N)" . Parece-me que, obviamente, Pr (X | theta)! = Normal (theta, 1). Ou seja, essa é a probabilidade errada para o processo que gerou sua sequência. Além disso, há um erro de digitação. No exemplo original, você para de amostrar quando sqrt (n) * abs (média (x))> k.
Livid

Eu=1Nϕ(XEu-θ)

Por favor, veja minha edição na pergunta. Ainda acho que seu intervalo credível não faz sentido porque usa uma probabilidade incorreta. Ao usar a probabilidade correta, como no meu código, obtemos um intervalo razoável.
Livid

k0 0<X¯N-k/NX¯N-1,96/Nkk>10

2×1,96/2000=0,0876

4

Como o intervalo credível é formado a partir da distribuição posterior, com base em uma distribuição anterior estipulada, você pode facilmente construir um intervalo credível muito ruim usando uma distribuição anterior muito concentrada em valores de parâmetros altamente implausíveis. Você pode criar um intervalo credível que não "faça sentido" usando uma distribuição anterior totalmente concentrada em valores de parâmetros impossíveis .


1
Ou melhor ainda, uma credibilidade construída por um prior que discorde do seu prior (mesmo que seja o de outra pessoa) tem boas chances de ser absurda para você. Isso não é incomum na ciência; Já tive pesquisadores dizendo que não querem incluir a opinião de especialistas, porque em suas observações, os especialistas sempre foram fortemente confiantes demais.
Cliff AB

1
Isso é especificamente sobre antecedentes uniformes ou "planos".
Livid

1
@ Livid: Você definitivamente deve incluir que está falando de priores planos na sua pergunta. Isso muda completamente tudo.
Cliff AB

1
@CliffAB Está nas duas primeiras frases, mas vou esclarecer, obrigado.
Livid

1

Se estamos usando um flat anterior, este é simplesmente um jogo em que tentamos criar um flat anterior em uma reparameterização que não faz sentido.

{0 0,1} {1}

É por isso que muitos bayesianos se opõem a priores planos.


Expliquei minha motivação claramente. Eu quero algo como os exemplos em que os intervalos de confiança incluem valores impossíveis, mas onde o intervalo credível se comporta bem. Se o seu exemplo depende de fazer algo sem sentido, como, por exemplo, escolher a probabilidade errada, então por que seria do interesse de alguém?
Livid

1
@ Vivo: a função de probabilidade é perfeitamente razoável. O plano anterior às probabilidades de log não é. E esse é todo o argumento que os bayesianos usam para dizer que você não deve usar priores planos; eles podem realmente ser extremamente informativos e, muitas vezes, não como o usuário pretendia!
Cliff AB

1
Aqui está Andrew Gelman discutindo algumas das questões dos priores planos.
Cliff AB

"O apartamento anterior às probabilidades de log não é". Eu quis dizer que colocar um plano antes nas probabilidades transformadas em log parece ser um absurdo para você, como usar a probabilidade errada. Desculpe, mas não estou familiarizado com este exemplo. O que esse modelo deveria fazer exatamente?
Livid

@ Vivo: pode parecer incomum, mas na verdade não é! Por exemplo, a regressão logística normalmente considera todos os parâmetros na escala de chances de log. Se você tivesse variáveis ​​fictícias para todos os seus grupos e usasse antecedentes simples nos seus parâmetros de regressão, encontraria exatamente esse problema.
Cliff AB
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.