Quando un intervallo di confidenza "ha senso" ma l'intervallo credibile corrispondente no?


14

Accade spesso che un intervallo di confidenza con una copertura del 95% sia molto simile a un intervallo credibile che contiene il 95% della densità posteriore. Ciò accade quando il priore è uniforme o quasi uniforme in quest'ultimo caso. Pertanto, un intervallo di confidenza può essere spesso utilizzato per approssimare un intervallo credibile e viceversa. È importante sottolineare che, da ciò, possiamo concludere che l'interpretazione erroneamente diffamata di un intervallo di confidenza come intervallo credibile ha poca o nessuna importanza pratica per molti semplici casi d'uso.

Esistono numerosi esempi di casi in cui ciò non accade, tuttavia sembrano essere tutti criptati dai sostenitori delle statistiche bayesiane nel tentativo di dimostrare che c'è qualcosa di sbagliato nell'approccio frequentista. In questi esempi, vediamo che l'intervallo di confidenza contiene valori impossibili, ecc. Che dovrebbero dimostrare che sono assurdità.

Non voglio tornare indietro su quegli esempi o su una discussione filosofica tra Bayesiano e Frequentista.

Sto solo cercando esempi del contrario. Vi sono casi in cui gli intervalli di confidenza e credibilità sono sostanzialmente diversi e l'intervallo fornito dalla procedura di confidenza è chiaramente superiore?

Per chiarire: si tratta della situazione in cui ci si aspetta che l'intervallo credibile coincida con l'intervallo di confidenza corrispondente, cioè quando si usano priori piatti, uniformi, ecc. Non mi interessa il caso in cui qualcuno scelga un precedente arbitrariamente negativo.

EDIT: In risposta alla risposta di @JaeHyeok Shin di seguito, non sono d'accordo sul fatto che il suo esempio usi la probabilità corretta. Ho usato il calcolo bayesiano approssimativo per stimare la corretta distribuzione posteriore per theta di seguito in 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))

Questo è l'intervallo credibile del 95%:

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

inserisci qui la descrizione dell'immagine

EDIT # 2:

Ecco un aggiornamento dopo i commenti di @JaeHyeok Shin. Sto cercando di renderlo il più semplice possibile ma lo script è diventato un po 'più complicato. Principali modifiche:

  1. Ora usando una tolleranza di 0,001 per la media (era 1)
  2. Aumento del numero di passaggi a 500k per tenere conto di una tolleranza inferiore
  3. Diminuito il sd della distribuzione della proposta a 1 per tenere conto della tolleranza inferiore (era 10)
  4. Aggiunta la semplice probabilità rnorm con n = 2k per il confronto
  5. Aggiunta la dimensione del campione (n) come statistica riassuntiva, impostare la tolleranza su 0,5 * n_target

Ecco il codice:

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

I risultati, dove hdi1 è la mia "probabilità" e hdi2 è la semplice rnorm (n, theta, 1):

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

Quindi, dopo aver abbassato sufficientemente la tolleranza, e a spese di molti altri passaggi MCMC, possiamo vedere la larghezza CrI prevista per il modello rnorm.

inserisci qui la descrizione dell'immagine


Non duplicato, ma ha una stretta relazione con stats.stackexchange.com/questions/419916/…
user158565

6
Generalmente, quando si dispone di un precedente informativo che è del tutto errato, in senso informale, ad esempio Normale (0,1) quando il valore effettivo è -3,6, l'intervallo credibile in assenza di molti dati sarà piuttosto scarso quando guardato da una prospettiva frequentista.
jbowman

@jbowman Si tratta in particolare del caso in cui si utilizza un precedente uniforme o qualcosa di simile a N (0, 1e6).
Livido

Decenni fa, il vero bayesiano chiamava lo statistico che usava un precedente non informativo come pseudo- (o falso) bayesiano.
user158565

@ user158565 È offtopico ma un precedente uniforme è solo un'approssimazione. Se p (H_0) = p (H_1) = p (H_2) = ... = p (H_n) allora tutti i priori possono abbandonare la regola di Bayes rendendo più semplice il calcolo. Non è più sbagliato che far cadere piccoli termini da un denominatore quando ha senso.
Livido

Risposte:


6

In un disegno sperimentale sequenziale, l'intervallo credibile può essere fuorviante.

(Dichiarazione di non responsabilità: non sto sostenendo che non sia ragionevole - è perfettamente ragionevole nel ragionamento bayesiano e non è fuorviante nella prospettiva del punto di vista bayesiano.)

Per un semplice esempio, supponiamo che abbiamo una macchina che ci fornisce un campione casuale X da N(θ,1) con sconosciuto θ . Invece di disegnare n campioni iid, disegniamo i campioni fino nX¯n>kper unkfisso. Cioè, il numero di campioni è un tempo di arrestoNdefinito da

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

Dalla legge di logaritmo iterato, sappiamo Pθ(N<)=1 per ogni θR . Questo tipo di regola di arresto viene comunemente utilizzato nei test / stime sequenziali per ridurre il numero di campioni da dedurre.

Il principio di verosimiglianza mostra che il posteriore di θ non è influenzato dall'interruzione della regola e quindi per qualsiasi ragionevole precedente π(θ) regolare (ad esempio, θN(0,10)) , se impostiamo un k abbastanza grande , il posteriore di θ è approssimativamente N(X¯N,1/N) e quindi l'intervallo credibile è approssimativamente dato come

CIbayes:=[X¯N1.96N,X¯N+1.96N].
Tuttavia, dalla definizione diN, sappiamo che questo intervallo credibile non contiene0sekè grande da
0<X¯NkNX¯N1.96N
perk0. Pertanto, la copertura frequentista diCIbayesè zero poiché
infθPθ(θCIbayes)=0,
e0è raggiunto quandoθè 0. Al contrario, la copertura bayesiana è sempre approssimativamente uguale a0.95poiché
P(θCIbayes|X1,,XN)0.95.

Messaggio da portare a casa: se sei interessato ad avere una garanzia da frequentatore, dovresti fare attenzione a usare gli strumenti di inferenza bayesiani che sono sempre validi per le garanzie bayesiane ma non sempre per quelle da frequentatore.

(Ho imparato questo esempio dalla fantastica lezione di Larry. Questa nota contiene molte interessanti discussioni sulla sottile differenza tra i quadri frequentista e bayesiano. Http://www.stat.cmu.edu/~larry/=stat705/Lecture14.pdf )

EDIT Nell'ABC di Livid, il valore di tolleranza è troppo grande, quindi anche per l'impostazione standard in cui campioniamo un numero fisso di osservazioni, non fornisce un CR corretto. Non ho familiarità con ABC, ma se ho cambiato solo il valore tol a 0,05, possiamo avere un CR molto distorto come segue

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

inserisci qui la descrizione dell'immagine

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

Naturalmente, la catena non è ben stabilizzata ma anche se aumentiamo la lunghezza della catena, possiamo ottenere CR simile - inclinato rispetto alla parte positiva.

NX¯Nk0<θkkkθ<0


"se impostiamo un k abbastanza grande, il posteriore di θ è approssimativamente N (X_N, 1 / N)" . Mi sembra che ovviamente Pr (X | theta)! = Normale (theta, 1). Cioè, questa è la probabilità sbagliata per il processo che ha generato la tua sequenza. Inoltre, c'è un refuso. Nell'esempio originale si interrompe il campionamento quando sqrt (n) * abs (media (x))> k.
Livido

i=1Nϕ(Xiθ)

Si prega di vedere la mia modifica nella domanda. Penso ancora che il tuo intervallo credibile non abbia senso perché utilizza una probabilità errata. Quando si utilizza la probabilità corretta come nel mio codice, si ottiene un intervallo ragionevole.
Livido

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

2×1.96/2000=0.0876

4

Poiché l'intervallo credibile si forma dalla distribuzione posteriore, sulla base di una distribuzione precedente stipulata, è possibile costruire facilmente un intervallo credibile molto cattivo utilizzando una distribuzione precedente fortemente concentrata su valori di parametro altamente non plausibili. È possibile creare un intervallo credibile che non "abbia senso" utilizzando una distribuzione precedente interamente concentrata su valori di parametro impossibili .


1
O meglio, un credibile costruito da un priore che non è d'accordo con il tuo priore (anche se è il priore di qualcun altro) ha buone probabilità di essere assurdo nei tuoi confronti. Questo non è raro nella scienza; Alcuni ricercatori hanno detto che non vogliono includere l'opinione degli esperti, perché nelle loro osservazioni gli esperti sono sempre stati fortemente fiduciosi.
Cliff AB,

1
Si tratta in particolare di priori uniformi o "piatti".
Livido

1
@Livido: dovresti assolutamente includere che stai parlando di priori piatti nella tua domanda. Questo cambia completamente tutto.
Cliff AB,

1
@CliffAB È nelle prime due frasi, ma chiarirò, grazie.
Livido

1

Se stiamo usando un precedente flat, questo è semplicemente un gioco in cui proviamo a trovare un precedente flat in una riparametrizzazione che non ha senso.

{0,1} {1}

Questo è il motivo per cui molti bayesiani si oppongono ai priori piatti.


Ho spiegato la mia motivazione abbastanza chiaramente. Voglio qualcosa come gli esempi in cui gli intervalli di confidenza includono valori impossibili, ma in cui l'intervallo credibile si comporta bene. Se il tuo esempio dipende dal fare qualcosa di insensato, come ad esempio la scelta della probabilità sbagliata, allora perché dovrebbe interessare qualcuno?
Livido

1
@Livid: la funzione di verosimiglianza è perfettamente ragionevole. Il piatto precedente sulle probabilità del registro non lo è. E questa è l'intera argomentazione che Bayesian usa per dire che non dovresti usare priori piatti; possono effettivamente essere estremamente istruttivi e spesso non come previsto dall'utente!
Cliff AB,

1
Ecco Andrew Gelman che discute alcune delle questioni dei priori piatti.
Cliff AB,

"Il piatto precedente sulle probabilità del registro non lo è." Intendevo dire che mettere un piatto precedente sulle probabilità trasformate in tronchi sembra essere una sciocchezza per te, come usare la probabilità sbagliata. Siamo spiacenti, ma non ho familiarità con questo esempio. Cosa dovrebbe fare esattamente questo modello?
Livido

@Livido: può sembrare insolito, ma in realtà non lo è! Ad esempio, la regressione logistica in genere considera tutti i parametri nella scala delle probabilità del log. Se avessi variabili fittizie per tutti i tuoi gruppi e utilizzassi priori flat sui parametri di regressione, incontreresti esattamente questo problema.
Cliff AB,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.