Wann ist ein Konfidenzintervall „sinnvoll“, das entsprechende glaubwürdige Intervall jedoch nicht?

14

Es ist häufig der Fall, dass ein Konfidenzintervall mit 95% Deckung einem glaubwürdigen Intervall sehr ähnlich ist, das 95% der posterioren Dichte enthält. Dies geschieht, wenn der Prior im letzteren Fall gleichförmig oder nahezu gleichförmig ist. Daher kann ein Konfidenzintervall häufig verwendet werden, um ein glaubwürdiges Intervall zu approximieren und umgekehrt. Wichtig ist, dass wir daraus schließen können, dass die häufig missverstandene Fehlinterpretation eines Konfidenzintervalls als glaubwürdiges Intervall für viele einfache Anwendungsfälle wenig bis gar keine praktische Bedeutung hat.

Es gibt eine Reihe von Beispielen für Fälle, in denen dies nicht der Fall ist, jedoch scheinen sie alle von Befürwortern der Bayes'schen Statistik ausgewählt worden zu sein, um zu beweisen, dass etwas mit dem frequentistischen Ansatz nicht in Ordnung ist. In diesen Beispielen sehen wir, dass das Konfidenzintervall unmögliche Werte usw. enthält, die zeigen sollen, dass sie Unsinn sind.

Ich möchte nicht auf diese Beispiele oder eine philosophische Diskussion von Bayesian vs Frequentist zurückkommen.

Ich suche nur Beispiele für das Gegenteil. Gibt es Fälle, in denen das Konfidenzintervall und das glaubwürdige Intervall erheblich voneinander abweichen und das vom Konfidenzverfahren bereitgestellte Intervall eindeutig überlegen ist?

Zur Verdeutlichung: Hierbei handelt es sich um die Situation, in der normalerweise erwartet wird, dass das glaubwürdige Intervall mit dem entsprechenden Konfidenzintervall übereinstimmt, dh wenn flache, einheitliche usw. Prioren verwendet werden. Ich interessiere mich nicht für den Fall, dass jemand einen willkürlich falschen Prior wählt.

EDIT: Als Antwort auf @JaeHyeok Shins Antwort unten muss ich nicht zustimmen, dass sein Beispiel die richtige Wahrscheinlichkeit verwendet. Ich habe die ungefähre Bayes'sche Berechnung verwendet, um die korrekte hintere Verteilung für Theta unten in R zu schätzen:

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

Dies ist das zu 95% glaubwürdige Intervall:

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

Bildbeschreibung hier eingeben

EDIT # 2:

Hier ist ein Update nach @JaeHyeok Shins Kommentaren. Ich versuche es so einfach wie möglich zu halten, aber das Skript wurde etwas komplizierter. Hauptänderungen:

  1. Jetzt mit einer Toleranz von 0,001 für den Mittelwert (es war 1)
  2. Die Anzahl der Schritte wurde auf 500.000 erhöht, um eine geringere Toleranz zu berücksichtigen
  3. Der SD der Angebotsverteilung wurde auf 1 gesenkt, um eine geringere Toleranz zu berücksichtigen (10).
  4. Zum Vergleich wurde die einfache Normalwahrscheinlichkeit mit n = 2k hinzugefügt
  5. Die Stichprobengröße (n) wurde als zusammenfassende Statistik hinzugefügt. Setzen Sie die Toleranz auf 0,5 * n_Ziel

Hier ist der Code:

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

Die Ergebnisse, bei denen hdi1 meine "Wahrscheinlichkeit" und hdi2 das einfache rnorm (n, theta, 1) ist:

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

Nach einer ausreichenden Verringerung der Toleranz und auf Kosten vieler weiterer MCMC-Schritte können wir die erwartete CrI-Breite für das Normalmodell sehen.

Bildbeschreibung hier eingeben

Livid
quelle
Nicht duplizieren, aber in enger Beziehung zu stats.stackexchange.com/questions/419916/…
user158565
6
Im Allgemeinen ist Ihr glaubwürdiges Intervall bei Abwesenheit vieler Daten ziemlich schlecht, wenn Sie einen informativen Prior haben, der im informellen Sinne völlig falsch ist, z. B. Normal (0,1), wenn der tatsächliche Wert -3,6 beträgt aus einer frequentistischen Perspektive betrachtet.
Bogenschütze
@jbowman Hierbei handelt es sich speziell um den Fall, dass ein Uniform-Prior oder etwas wie N (0, 1e6) verwendet wird.
Livid
Vor Jahrzehnten nannte der echte Bayesianer den Statistiker, der den nicht informativen Prior als Pseudo- (oder Fake-) Bayesianer verwendete.
user158565
@ user158565 Dies ist offtopic, aber ein einheitlicher Prior ist nur eine Annäherung. Wenn p (H_0) = p (H_1) = p (H_2) = ... = p (H_n), können alle Prioren aus der Bayes-Regel herausfallen, was die Berechnung erleichtert. Es ist nicht mehr falsch, als kleine Terme von einem Nenner zu streichen, wenn es Sinn macht.
Livid

Antworten:

6

In einem sequentiellen Versuchsplan kann das glaubwürdige Intervall irreführend sein.

(Haftungsausschluss: Ich behaupte nicht, dass es nicht vernünftig ist - es ist absolut vernünftig im Bayesianischen Denken und es ist nicht irreführend in der Perspektive des Bayesianischen Standpunkts.)

Nehmen wir als einfaches Beispiel an, wir haben eine Maschine, die uns eine Zufallsstichprobe X aus N(θ,1) mit unbekanntem θ . Anstatt n iid Samples zu zeichnen, zeichnen wir Samples bis nX¯n>kkN

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

Aus dem Gesetz des iterierten Logarithmus kennen wir für jedes . Diese Art von Stop-Regel wird häufig bei sequentiellen Tests / Schätzungen verwendet, um die Anzahl der zu schlussfolgernden Stichproben zu verringern.Pθ(N<)=1θR

Das Likelihood-Prinzip zeigt, dass der posterior von nicht durch die Stoppregel beeinflusst wird und somit für jeden vernünftigen glatten Prior (z. B. , wenn wir ein ausreichend großes . der hintere Teil von ist ungefähr und daher wird das glaubwürdige Intervall ungefähr als Aus der Definition von wissen wir jedoch, dass dieses glaubwürdige Intervall keine enthält, wenn seitdem groß ist θπ(θ)θN(0,10))kθN(X¯N,1/N)

CIbayes:=[X¯N1.96N,X¯N+1.96N].
N0k
0<X¯NkNX¯N1.96N
für . Daher wird die Abdeckung von frequentistischen ist Null , da und wird erreicht, wenn ist . Im Gegensatz dazu ist die Bayes'sche Abdeckung immer ungefähr gleich da k0CIbayes
infθPθ(θCIbayes)=0,
0θ00.95
P(θCIbayes|X1,,XN)0.95.

Nachricht zum Mitnehmen: Wenn Sie an einer Frequenzgarantie interessiert sind, sollten Sie mit der Verwendung von Bayes-Inferenz-Tools vorsichtig sein, die immer für Bayes-Garantien gültig sind, jedoch nicht immer für Frequenzgarantien.

(Ich habe dieses Beispiel aus Larrys großartigem Vortrag gelernt. Diese Notiz enthält viele interessante Diskussionen über den subtilen Unterschied zwischen frequentistischen und bayesianischen Frameworks. Http://www.stat.cmu.edu/~larry/=stat705/Lecture14.pdf )

BEARBEITEN In Livids ABC ist der Toleranzwert zu groß, sodass selbst bei der Standardeinstellung, bei der wir eine feste Anzahl von Beobachtungen abtasten, kein korrekter CR angezeigt wird. Ich bin nicht mit ABC vertraut, aber wenn ich nur den tol-Wert auf 0,05 ändere, können wir eine sehr verzerrte CR haben, wie folgt

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

Bildbeschreibung hier eingeben

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

Natürlich ist die Kette nicht gut stabilisiert, aber selbst wenn wir die Kettenlänge erhöhen, können wir ähnliche CR erhalten - zum positiven Teil verdreht.

Tatsächlich denke ich, dass die Ablehnungsregel basierend auf der mittleren Differenz in dieser Einstellung nicht gut geeignet ist, da mit hoher Wahrscheinlichkeit nahe bei wenn und nahe bei wenn .NX¯Nk0<θkkkθ<0

JaeHyeok Shin
quelle
"Wenn wir k groß genug einstellen, ist der hintere Teil von θ ungefähr N (X_N, 1 / N)" . Mir scheint, dass Pr (X | Theta)! = Normal (Theta, 1) ist. Das heißt, das ist die falsche Wahrscheinlichkeit für den Prozess, der Ihre Sequenz generiert hat. Es gibt auch einen Tippfehler. Im ursprünglichen Beispiel beenden Sie die Stichprobenerfassung, wenn sqrt (n) * abs (mean (x))> k ist.
Livid
Danke für Kommentare. Sogar unter der Stoppregel wird die Wahrscheinlichkeit als . Es ist also dasselbe wie das Produkt von N normalen Beobachtungen, obwohl N jetzt zufällig ist. Dieses Beispiel gilt weiterhin für die aktuelle Stoppregel, obwohl das von Ihnen erwähnte das ursprüngliche und historische Beispiel ist. Es gibt eine interessante Geschichte darüber, wie häufig und bayesianisch über diese Stoppregel diskutiert wurde. Sie können sehen , zum Beispiel errorstatistics.com/2013/04/06/...i=1Nϕ(Xiθ)
JaeHyeok Shin
Bitte sehen Sie meine Bearbeitung in der Frage. Ich denke immer noch, dass Ihr glaubwürdiges Intervall keinen Sinn ergibt, weil es eine falsche Wahrscheinlichkeit verwendet. Bei Verwendung der richtigen Wahrscheinlichkeit wie in meinem Code erhalten wir ein angemessenes Intervall.
Livid
Danke für das ausführliche Experiment. In Ihrer Einstellung ist zu klein, um die Ungleichungen zu erfüllen . Man beachte, dass größer als 1,96 sein muss, und um den Approximationsfehler zu kompensieren, denke ich, dass eine sichere Wahl wäre. k0<X¯Nk/NX¯N1.96/Nkk>10
JaeHyeok Shin
Könnten Sie auch noch einmal überprüfen, ob dieses ABC-Computing für den Standardfall funktioniert? Ich habe die \ code {like} -Funktion ersetzt, um eine feste Anzahl von Beobachtungen zu zeichnen (n = 2000). Dann sollte die theoretische Länge von CR ungefähr aber ich bekomme immer sehr breiteres CR (Länge ca. 2). Ich finde das Toleranzniveau zu groß. 2×1.96/2000=0.0876
JaeHyeok Shin
4

Da das glaubwürdige Intervall aus der posterioren Verteilung auf der Grundlage einer festgelegten vorherigen Verteilung gebildet wird, können Sie leicht ein sehr schlechtes glaubwürdiges Intervall erstellen, indem Sie eine vorherige Verteilung verwenden, die sich stark auf hochgradig unplausible Parameterwerte konzentriert. Sie können ein glaubwürdiges Intervall erstellen, das keinen "Sinn" ergibt, indem Sie eine vorherige Verteilung verwenden, die sich ausschließlich auf unmögliche Parameterwerte konzentriert .

Setzen Sie Monica wieder ein
quelle
1
Oder noch besser, ein glaubwürdiger Prior, der nicht mit Ihrem Prior übereinstimmt (obwohl es der Prior eines anderen ist), hat gute Chancen, für Sie absurd zu sein. Dies ist in der Wissenschaft nicht ungewöhnlich. Ich habe Forscher sagen lassen, dass sie die Meinung von Experten nicht einschließen wollen, weil die Experten in ihren Beobachtungen immer stark übermütig waren.
Cliff AB
1
Hier geht es speziell um einheitliche oder "flache" Prioritäten.
Livid
1
@Livid: Sie sollten auf jeden Fall in Ihre Frage aufnehmen, dass Sie über flache Vorgänger sprechen. Das ändert alles komplett.
Cliff AB
1
@CliffAB Es ist in den ersten beiden Sätzen, aber ich werde klarstellen, danke.
Livid
1

Wenn wir einen Flat-Prior verwenden, ist dies einfach ein Spiel, in dem wir versuchen, einen Flat-Prior in einer Umparametrierung zu finden, die keinen Sinn ergibt.

Angenommen, wir möchten auf eine Wahrscheinlichkeit schließen. Wenn wir die Wahrscheinlichkeitswahrscheinlichkeit vorab pauschalieren, beträgt unser zu 95% glaubwürdiges Intervall für die tatsächliche Wahrscheinlichkeit die beiden Punkte bevor wir überhaupt die Daten sehen! Wenn wir einen einzelnen positiven Datenpunkt erhalten und ein zu 95% glaubwürdiges Intervall konstruieren, ist dies jetzt der einzelne Punkt .{0,1} {1}

Aus diesem Grund lehnen viele Bayesianer flache Priors ab.

Cliff AB
quelle
Ich habe meine Motivation ziemlich klar erklärt. Ich möchte so etwas wie die Beispiele, in denen Konfidenzintervalle unmögliche Werte enthalten, das glaubwürdige Intervall sich jedoch gut verhält. Wenn es in Ihrem Beispiel darauf ankommt, etwas Unsinniges zu tun, wie z. B. die falsche Wahrscheinlichkeit zu wählen, warum ist es dann für jemanden von Interesse?
Livid
1
@Livid: Die Wahrscheinlichkeitsfunktion ist völlig in Ordnung . Die Flat vor dem Log-Odds geht nicht. Und dies ist die Gesamtheit des Arguments, das Bayesian verwendet, um zu sagen, dass Sie keine flachen Priors verwenden sollten. Sie können tatsächlich sehr informativ sein und oft nicht so, wie der Benutzer es beabsichtigt hat!
Cliff AB
1
Hier ist Andrew Gelman, der einige der Probleme von Flat Priors bespricht.
Cliff AB
"Die Wohnung vor dem Log-Odds ist nicht." Ich habe gemeint, dass es für Sie Unsinn ist, eine Wohnung vor log-transformierten Gewinnchancen zu setzen, als würde man die falsche Wahrscheinlichkeit verwenden. Entschuldigung, aber ich kenne dieses Beispiel nicht. Was soll dieses Modell genau leisten?
Livid
@Livid: es mag ungewöhnlich erscheinen, aber es ist wirklich nicht! Beispielsweise werden bei der logistischen Regression in der Regel alle Parameter der Log-Odds-Skala berücksichtigt. Wenn Sie Dummy-Variablen für alle Ihre Gruppen hätten und flache Prioritäten für Ihre Regressionsparameter verwenden würden, stoßen Sie auf genau dieses Problem.
Cliff AB