Saltar al contenido principal
Documentos
Gestión de datos en RGráficos en RR DocumentaciónInterfaz REstadística en RIntroducción de datos en R

Bootstrapping en R

Bootstrapping no paramétrico

El paquete boot proporciona amplias facilidades para el bootstrapping y los métodos de remuestreo relacionados. Puedes hacer bootstrap de un único estadístico (por ejemplo, una mediana), o de un vector (por ejemplo, pesos de regresión). Esta sección te iniciará en el bootstrapping no paramétrico básico.

La función principal de arranque es boot( ) y tiene el siguiente formato:

bootobject <- boot(datos= , estadístico= , R=, ...) where

   
parameter description
data Un vector, matriz o marco de datos
estadística Una función que produzca los k estadísticos que se van a someter a bootstrap (k=1 si se va a someter a bootstrap un único estadístico). La función debe incluir un parámetro de índices que la función boot( ) pueda utilizar para seleccionar los casos de cada réplica (véanse los ejemplos a continuación).
R Número de réplicas bootstrap
... Parámetros adicionales que se pasan a la función que produce la estadística de interés

boot( ) llama a la función estadística R veces. Cada vez, genera un conjunto de índices aleatorios, con sustitución, a partir de los enteros 1:n filas(datos). Estos índices se utilizan en la función estadística para seleccionar una muestra. Los estadísticos se calculan sobre la muestra y los resultados se acumulan en el objeto boot. La estructura bootobject incluye

   
elemento description
t0 Los valores observados de la estadística k aplicados a los datos originales.
t Una matriz R x k en la que cada fila es una réplica bootstrap de los k estadísticos.

Puedes acceder a ellos como bootobject$t0 y bootobject$t.

Una vez generadas las muestras bootstrap, se pueden utilizar print(bootobject) y plot(bootobject) para examinar los resultados. Si los resultados parecen razonables, puedes utilizar la función boot.ci( ) para obtener intervalos de confianza para la(s) estadística(s).

El formato es

boot.ci(bootobject, conf=, type= ) donde

   
parameter description
bootobject El objeto devuelto por la función de arranque
conf El intervalo de confianza deseado (por defecto: conf=0,95)
tipo El tipo de intervalo de confianza devuelto. Los valores posibles son "norm", "basic", "stud", "perc", "bca" y "all" (por defecto: type="all")

Bootstrapping de una sola estadística (k=1)

El siguiente ejemplo genera el intervalo de confianza del 95% bootstrapped para R-cuadrado en la regresión lineal de las millas por galón (mpg) sobre el peso del coche (wt) y la cilindrada (disp). La fuente de datos es mtcars. El intervalo de confianza bootstrapped se basa en 1000 réplicas.

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

resultados bootstrap 

Bootstrapping de varias estadísticas (k>1)

En el ejemplo anterior, la función rsq devolvía un número y boot.ci devolvía un único intervalo de confianza. La función estadística que proporciones también puede devolver un vector. En el siguiente ejemplo obtenemos el IC del 95% para los coeficientes de regresión de los tres modelos (intercepto, peso del coche, desplazamiento). En este caso, añadimos un parámetro de índice a plot( ) y boot.ci( ) para indicar qué columna de bootobject$t hay que analizar.

# 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

bootstrap intercepción bootstrap b1 bootstrap b2 

Ir más lejos

La función boot( ) puede generar remuestreos tanto no paramétricos como paramétricos. Para el bootstrap no paramétrico, los métodos de remuestreo incluyen el ordinario, el equilibrado, el antitético y el de permutación. Para el bootstrap no paramétrico, se admite el remuestreo estratificado. También se pueden especificar pesos de remuestreo de importancia.

La función boot.ci( ) toma un objeto boot y genera 5 tipos diferentes de intervalos de confianza no paramétricos de dos caras. Entre ellos están la aproximación normal de primer orden, el intervalo bootstrap básico, el intervalo bootstrap studentizado, el intervalo percentil bootstrap y el intervalo percentil bootstrap ajustado (BCa).

Consulta help(boot), help(boot.ci) y help(plot.boot ) para obtener más detalles.

Saber más

Una buena fuente de información es Resampling Methods in R (Métodos de remuestreo en R): The boot Package por Angelo Canty, Getting started with the boot package por Ajay Shah, Bootstrapping Regression ModelsporJohn Fox, y Bootstrap Methods and Their Applications por Davison y Hinkley.

Practicar

Prueba este ejercicio interactivo con el paquete boot del curso Introducción a las Finanzas Computacionales con R de DataCamp.

Aprende lo esencial de R

Domina los fundamentos del análisis de datos en R, incluyendo vectores, listas y marcos de datos, y practica R con conjuntos de datos reales.
Empieza a aprender R gratis