Diese Verwechslung zwischen Bootstrap-Prozeduren und Monte-Carlo-Prozeduren wiederholt sich immer wieder. Vielleicht ist dies also ein ebenso guter Ort, um sie anzugehen. (Die Beispiele vonR
Codebeispiele können auch bei den Hausaufgaben hilfreich sein.)
Betrachten Sie diese Implementierung des Bootstraps in R
:
boot <- function(x, t) { # Exact bootstrap of procedure t on data x
n <- length(x) # Must lie between 2 and 7 inclusive.
if (n > 7) {
stop("Sample size exceeds 7; use an approximate method instead.")
}
p <- c(n, 1:(n-1))
a <- rep(x, n^(n-1))
dim(a) <- rep(n, n)
y <- as.vector(a)
while (n > 1) {
n <- n-1
a <- aperm(a, p)
y <- cbind(as.vector(a), y)
}
apply(y, 1, t)
}
Ein kurzer Blick bestätigt, dass dies deterministisch ist Berechnung ist: Es werden keine zufälligen Werte generiert oder verwendet. (Ich werde die Details seines Innenlebens interessierten Lesern überlassen, um es selbst herauszufinden.)
Die Argumente boot
sind ein Stapel numerischer Daten im Array x
und ein Verweis t
auf eine Funktion (die genau wie auf Arrays angewendet werden kann x
), um einen einzelnen numerischen Wert zurückzugeben. Mit anderen Worten, t
ist eine Statistik . Es generiert alle möglichen Muster mit Ersatz aus x
und gilt t
für jedes von ihnen, wodurch für jedes dieser Muster eine Nummer erzeugt wird: das ist der Bootstrap auf den Punkt gebracht. Der Rückgabewert ist ein Array , die die genaue Bootstrap Verteilung der t
für die Probe ,x
.
Lassen Sie uns als winziges Beispiel den Mittelwert für ein Beispiel booten x
= c(1,3)
:
> boot(c(1,3), mean)
> [1] 1 2 2 3
2(1,3)(1,1)(1,3)(3,1)(3,3)boot
t
t
1223jeweils wie in der Ausgabe gezeigt.
(1,3,3,4,7)
hist(boot(c(1,3,3,4,7), sd))
5
> set.seed(17)
> quantile(boot(runif(5, min=0, max=10), sd), .95)[1]
95%
3.835870
Das Ergebnis für diese bestimmte Zufallsstichprobe ist 3,83587. Dies ist definitiv: Wenn Sie boot
erneut mit demselben Datensatz anrufen würden, wäre die Antwort genau dieselbe. Aber wie könnte sich die Antwort bei verschiedenen Zufallsstichproben ändern? Finden Sie es heraus, indem Sie diesen Vorgang einige Male wiederholen und ein Histogramm der Ergebnisse zeichnen:
> boot.sd <- replicate(100, quantile(boot(runif(5, min=0, max=10), sd), .95)[1])
> hist(boot.sd)
01010/12−−√≈2.887
> length(boot.sd[boot.sd >= 10/sqrt(12)]) / length(boot.sd)
[1] 0.75
Aber das ist bei weitem nicht die nominellen 95%, die wir angegeben haben (und auf die wir gehofft haben)! Dies ist ein Wert der Simulation: Sie vergleicht unsere Hoffnungen mit dem, was wirklich vor sich geht. (Warum die Diskrepanz? Ich glaube, das liegt daran, dass das Bootstrapping einer SD mit wirklich kleinen Samples nicht gut funktioniert.)
Rezension
Bootstrap-Statistiken sind konzeptionell genauso wie alle anderen Statistiken wie Mittelwert oder Standardabweichung. Die Berechnung dauert in der Regel sehr lange. (Siehe Warnmeldung im boot
Code!)
Die Monte-Carlo-Simulation kann nützlich sein, um zu untersuchen, wie sich eine Bootstrap-Statistik aufgrund der Zufälligkeit beim Abrufen von Stichproben ändert. Die bei einer solchen Simulation beobachtete Variation ist auf Variation in den Proben zurückzuführen, nicht auf Variation im Bootstrap.
nnn
Der Bootstrap ist insofern eine Monte-Carlo-Technik, als er eine Art Zufallsstichprobe beinhaltet. Wenn Sie den Bootstrap zweimal mit demselben Datensatz ausführen, erhalten Sie unterschiedliche Antworten. Je mehr Beispiele Sie in Ihrem Bootstrap verwenden, desto weniger Variationen erhalten Sie.
Die Abdeckung bezieht sich auf die Variation der Ergebnisse für verschiedene Datensätze aus derselben hypothetischen Stichprobenverteilung.
quelle
Ich bin mir auch nicht sicher, was genau unter " Monte-Carlo- Variation" per se zu verstehen ist. Sicherlich sollte es möglich sein zu sehen, wie stark die Iterationen variieren, beispielsweise beim Wert der oberen (oder unteren) Grenze (Hinweis). Vielleicht möchten sie, dass Sie dies nur für den Monte Carlo tun und nicht für den Bootstrap? Das ist jedoch keine Voraussetzung für eine Übung. Es kann am besten sein, nur zu fragen, was mit diesem Satz gemeint ist.
quelle
Mein Verständnis dieser Hausaufgabe ist, dass Sie aufgefordert werden, eine Monte-Carlo-Simulation für eine bestimmte statistische Technik durchzuführen. Das heißt, Sie simulieren eine Reihe von zufälligen Datensätzen, wenden diese Technik auf diesen Datensatz an und speichern die Zahlen, um sie später auf bequeme Weise zusammenzufassen (Mittelwerte, simulierte Wahrscheinlichkeiten usw.).
Bei der fraglichen Technik handelt es sich nun um den Bootstrap, in dem eine Monte-Carlo-Simulation enthalten ist (es sei denn, Sie haben, wie bereits gezeigt, aufgefordert, den genauen Bootstrap durchzuführen, was höchst unwahrscheinlich ist). Als Ergebnis Ihrer Simulationen speichern Sie möglicherweise den Stichprobenmittelwert, die Stichprobenstandardabweichung und die Grenzen des Konfidenzintervalls für den vom Bootstrap erhaltenen Mittelwert.
quelle