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
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:
- Jetzt mit einer Toleranz von 0,001 für den Mittelwert (es war 1)
- Die Anzahl der Schritte wurde auf 500.000 erhöht, um eine geringere Toleranz zu berücksichtigen
- Der SD der Angebotsverteilung wurde auf 1 gesenkt, um eine geringere Toleranz zu berücksichtigen (10).
- Zum Vergleich wurde die einfache Normalwahrscheinlichkeit mit n = 2k hinzugefügt
- 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.
Antworten:
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 ZufallsstichprobeX aus N(θ,1) mit unbekanntem θ . Anstatt n iid Samples zu zeichnen, zeichnen wir Samples bis n−−√X¯n>k k N N=inf{n≥1:n−−√X¯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¯N−1.96N−−√,X¯N+1.96N−−√]. N 0 k 0<X¯N−kN−−√≪X¯N−1.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
k≫0 CIbayes infθPθ(θ∈CIbayes)=0, 0 θ 0 0.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
> 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 .N−−√X¯N k 0<θ≪k −k −k≪θ<0
quelle
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 .
quelle
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.
quelle