Bootstrapping in R
Nichtparametrisches Bootstrapping
Das boot-Paket bietet umfangreiche Möglichkeiten für Bootstrapping und verwandte Resampling-Methoden. Du kannst eine einzelne Statistik (z. B. den Median) oder einen Vektor (z. B. die Regressionsgewichte) booten. In diesem Abschnitt lernst du die Grundlagen des nichtparametrischen Bootstrappings kennen.
Die wichtigste Bootstrapping-Funktion ist boot( ) und hat das folgende Format:
bootobject <- boot(data= , statistic= , R=, ...) where
parameter | Beschreibung |
data | Ein Vektor, eine Matrix oder ein Datenrahmen |
Statistik | Die Funktion sollte einen Indizes-Parameter enthalten, den die boot() -Funktion verwenden kann, um Fälle für jede Replikation auszuwählen (siehe Beispiele unten). |
R | Anzahl der Bootstrap-Wiederholungen |
... | Zusätzliche Parameter, die an die Funktion übergeben werden, die die Statistik von Interesse erstellt |
boot( ) ruft die statistische Funktion R mal auf. Jedes Mal wird ein Satz zufälliger Indizes mit Ersetzung aus den ganzen Zahlen 1:nrow(data) erzeugt. Diese Indizes werden in der Statistikfunktion verwendet, um eine Stichprobe auszuwählen. Die Statistiken werden für die Stichprobe berechnet und die Ergebnisse werden im Boot-Objekt gesammelt. Die Struktur des Bootobjekts umfasst
Element | Beschreibung |
t0 | Die beobachteten Werte der k-Statistik werden auf die ursprünglichen Daten angewendet. |
t | Eine R x k-Matrix, bei der jede Zeile ein Bootstrap-Replikat der k Statistiken ist. |
Du kannst auf diese als bootobject$t0 und bootobject$t zugreifen.
Sobald du die Bootstrap-Stichproben erstellt hast, kannst du die Ergebnisse mit print(bootobject) und plot(bootobject) untersuchen. Wenn die Ergebnisse vernünftig aussehen, kannst du die Funktion boot.ci( ) verwenden, um Konfidenzintervalle für die Statistik(en) zu erhalten.
Das Format ist
boot.ci(bootobjekt, conf=, type= ) wobei
parameter | Beschreibung |
bootobject | Das von der Boot-Funktion zurückgegebene Objekt |
conf | Das gewünschte Konfidenzintervall (Standard: conf=0,95) |
Typ | Der Typ des zurückgegebenen Konfidenzintervalls. Mögliche Werte sind "norm", "basic", "stud", "perc", "bca" und "all" (Standard: type="all") |
Bootstrapping einer Einzelstatistik (k=1)
Das folgende Beispiel generiert das bootstrapped 95% Konfidenzintervall für R-Quadrat in der linearen Regression von Meilen pro Gallone (mpg) auf Fahrzeuggewicht (wt) und Hubraum (disp). Die Datenquelle ist mtcars. Das Bootstrapped-Konfidenzintervall basiert auf 1000 Wiederholungen.
# Bootstrap 95% CI for R-Squared
library(boot)
# function to obtain R-Squared from the data
rsq <- function(formula, data, indices)
{
d <- data[indices,] # allows boot to select sample
fit <- lm(formula, data=d)
return(summary(fit)$r.square)
}
# bootstrapping with 1000 replications
results <- boot(data=mtcars, statistic=rsq,
R=1000, formula=mpg~wt+disp)
# view results
results
plot(results)
# get 95% confidence interval
boot.ci(results, type="bca")
Bootstrapping mehrerer Statistiken (k>1)
Im obigen Beispiel liefert die Funktion rsq eine Zahl und boot.ci ein einzelnes Konfidenzintervall. Die Statistikfunktion, die du bereitstellst, kann auch einen Vektor zurückgeben. Im nächsten Beispiel erhalten wir den 95%-KI für die drei Regressionskoeffizienten des Modells (Achsenabschnitt, Fahrzeuggewicht, Hubraum). In diesem Fall fügen wir plot( ) und boot.ci( ) einen Indexparameter hinzu, der angibt, welche Spalte in bootobject$t analysiert werden soll.
# Bootstrap 95% CI for regression coefficients
library(boot)
# function to obtain regression weights
bs <- function(formula, data, indices)
{
d <- data[indices,] # allows boot to select sample
fit <- lm(formula, data=d)
return(coef(fit))
}
# bootstrapping with 1000 replications
results <- boot(data=mtcars, statistic=bs,
R=1000, formula=mpg~wt+disp)
# view results
results
plot(results, index=1) # intercept
plot(results, index=2) # wt
plot(results, index=3) # disp
# get 95% confidence intervals
boot.ci(results, type="bca", index=1) # intercept
boot.ci(results, type="bca", index=2) # wt
boot.ci(results, type="bca", index=3) # disp
Weiter gehen
Die Funktion boot( ) kann sowohl nichtparametrisches als auch parametrisches Resampling erzeugen. Für den nichtparametrischen Bootstrap gibt es gewöhnliche, ausgewogene, antithetische und Permutationsverfahren. Für den nichtparametrischen Bootstrap wird eine geschichtete Wiederholungsstichprobe unterstützt. Es können auch Gewichte für das Importance Resampling angegeben werden.
Die Funktion boot.ci( ) nimmt ein Boot-Objekt und erzeugt 5 verschiedene Arten von zweiseitigen nichtparametrischen Konfidenzintervallen. Dazu gehören die Normalapproximation erster Ordnung, das Basis-Bootstrap-Intervall, das Studentized-Bootstrap-Intervall, das Bootstrap-Perzentil-Intervall und das angepasste Bootstrap-Perzentil-Intervall (BCa).
Weitere Informationen findest du in help(boot), help(boot.ci) und help(plot.boot).
Mehr lernen
Gute Informationsquellen sind Resampling Methods in R: The boot Package von Angelo Canty, Getting started with the boot package von Ajay Shah, Bootstrapping Regression Models vonJohn Fox und Bootstrap Methods and Their Applications von Davison und Hinkley.
Zum Üben
Probiere diese interaktive Übung mit dem Boot-Paket aus dem DataCamp-Kurs "Intro to Computational Finance with R" aus.