Saltar al contenido principal
LibreTexts Español

10.3: R y Bootstrapping

  • Page ID
    149951
  • \( \newcommand{\vecs}[1]{\overset { \scriptstyle \rightharpoonup} {\mathbf{#1}} } \) \( \newcommand{\vecd}[1]{\overset{-\!-\!\rightharpoonup}{\vphantom{a}\smash {#1}}} \)\(\newcommand{\id}{\mathrm{id}}\) \( \newcommand{\Span}{\mathrm{span}}\) \( \newcommand{\kernel}{\mathrm{null}\,}\) \( \newcommand{\range}{\mathrm{range}\,}\) \( \newcommand{\RealPart}{\mathrm{Re}}\) \( \newcommand{\ImaginaryPart}{\mathrm{Im}}\) \( \newcommand{\Argument}{\mathrm{Arg}}\) \( \newcommand{\norm}[1]{\| #1 \|}\) \( \newcommand{\inner}[2]{\langle #1, #2 \rangle}\) \( \newcommand{\Span}{\mathrm{span}}\) \(\newcommand{\id}{\mathrm{id}}\) \( \newcommand{\Span}{\mathrm{span}}\) \( \newcommand{\kernel}{\mathrm{null}\,}\) \( \newcommand{\range}{\mathrm{range}\,}\) \( \newcommand{\RealPart}{\mathrm{Re}}\) \( \newcommand{\ImaginaryPart}{\mathrm{Im}}\) \( \newcommand{\Argument}{\mathrm{Arg}}\) \( \newcommand{\norm}[1]{\| #1 \|}\) \( \newcommand{\inner}[2]{\langle #1, #2 \rangle}\) \( \newcommand{\Span}{\mathrm{span}}\)\(\newcommand{\AA}{\unicode[.8,0]{x212B}}\)

    Todas las generalidades como desviación estándar y media se toman normalmente de la muestra pero pretenden representar a toda la población estadística. Por lo tanto, es posible que estas estimaciones puedan estar seriamente equivocadas. Se diseñaron técnicas estadísticas como bootstrapping para minimizar el riesgo de estos errores. Bootstrap se basa únicamente en la muestra dada pero trata de estimar toda la población.

    La idea de bootstrap se inspiró en Buerger y Raspe “Las aventuras milagrosas del barón Munchausen”, donde el personaje principal se saca (junto con su caballo) de un pantano por su cabello (Figura\(\PageIndex{1}\)). El bootstrap estadístico fue promovido activamente por Bradley Efron desde la década de 1970, pero no se utilizó con frecuencia hasta la década de 2000 porque es computacionalmente intensivo. En esencia, bootstrap es la estrategia de re-muestreo que reemplaza parte de la muestra con la submuestra propia. En R, podemos simplemente muestrear () nuestros datos con el reemplazo.

    munchhausen-karl-friedrich-hieronymus-von-1151720-2221797-german-officer-BHK9DG.jpg
    Figura\(\PageIndex{1}\) El barón Munchausen se saca del pantano. (Ilustración de Gustave Doré.)

    Primero, arrancaremos la media (Figura\(\PageIndex{2}\)) usando el paquete de arranque avanzado:

    Código\(\PageIndex{1}\) (R):

    library(boot) 
    ## Statistic to be bootstrapped:
    ave.b <- function (data, indices){ 
    d <- data[indices] 
    return(mean(d)) }
    (result.b <- boot(data=trees$Height, statistic=ave.b, R=100))

    (Tenga en cuenta que aquí y en muchos otros lugares en este libro el número de réplicas es de 100. Para los fines de trabajo, sin embargo, recomendamos que sea de al menos 1,000.)

    Código\(\PageIndex{2}\) (R):

    library(boot)
    ave.b <- function (data, indices){ 
    d <- data[indices] 
    return(mean(d)) }
    result.b <- boot(data=trees$Height, statistic=ave.b, R=100)
    plot(result.b)

    El arranque del paquete permite calcular el intervalo de confianza del 95%:

    Código\(\PageIndex{3}\) (R):

    library(boot)
    aave.b <- function (data, indices){ 
    d <- data[indices] 
    return(mean(d)) }
    result.b <- boot(data=trees$Height, statistic=ave.b, R=100)
    boot.ci(result.b, type="bca")

    Paquete bootstrap más básico bootstraps de una manera más sencilla. Para demostrarlo, utilizaremos el archivo de datos spur.txt. Estos datos son el resultado de mediciones de longitud de espolón en 1511 flores de orquídea Dactylorhiza. La longitud del espolón es importante porque solo los polinizadores con partes de la boca comparables a la longitud del espolón pueden polinizar con éxito estas flores.

    Código\(\PageIndex{4}\) (R):

    spur <- scan("data/spur.txt")
    library(bootstrap)
    result.b2 <- bootstrap(x=spur, 100, function(x) mean(x))
    ## Median of bootstrapped values:
    median(result.b2$thetastar)
    ## Confidence interval:
    quantile(result.b2$thetastar, probs=c(0.025, 0.975))
    Screen Shot 2019-02-01 a las 9.22.11 PM.png
    Figura Representación\(\PageIndex{2}\) gráfica de la mediana de la muestra de arranque.

    Jackknife es similar al bootstrap pero en ese caso las observaciones estarán sacando de la muestra una por una sin reemplazo:

    Código\(\PageIndex{5}\) (R):

    spur <- scan("data/spur.txt")
    result.j <- jackknife(x=spur, function(x) mean(x))
    ## Median of jackknifed values:
    median(result.j$jack.values)
    ## Standard error:
    result.j$jack.se
    ## Confidence interval:
    quantile(result.j$jack.values, probs=c(0.025, 0.975))

    Esto es posible arrancar la desviación estándar y la media de estos datos incluso sin ningún paquete adicional, con para ciclo y muestra ():

    Código\(\PageIndex{6}\) (R):

    spur <- scan("data/spur.txt")
    boot <- 100
    tt <- matrix(ncol=2, nrow=boot)
    for (n in 1:boot)
    {
    spur.sample <- sample(spur, length(spur), replace=TRUE)
    tt[n, 1] <- mean(spur.sample)
    tt[n, 2] <- sd(spur.sample)
    }
    (result <- data.frame(spur.mean=mean(spur), spur.sd=sd(spur), boot.mean=mean(tt[, 1]), boot.sd=mean(tt[, 2])))

    (Alternativamente, tt podría ser un marco de datos vacío, pero de esta manera toma más tiempo de computadora, lo cual es importante para bootstrap. Lo que hicimos anteriormente, es la pre-asignación, forma útil de ahorrar tiempo y memoria.)

    En realidad, la distribución de longitud de espolón no sigue la ley normal (compruébelo usted mismo) Es mejor entonces estimar la mediana y mediana de la desviación absoluta (en lugar de la media y la desviación estándar), o la mediana y el rango del 95%:

    Código\(\PageIndex{7}\) (R):

    dact <- scan("data/dact.txt")
    quantile(dact, c(0.025, 0.5, 0.975))
    apply(replicate(100, quantile(sample(dact, length(dact), replace=TRUE), c(0.025, 0.5, 0.975))), 1, mean)

    (Tenga en cuenta el uso de la función replicate (), este es otro miembro de la familia apply ().)

    Este enfoque permite también arrancar casi cualquier medida. Permítanos, por ejemplo, arrancar el intervalo de confianza del 95% para K de Lyubishchev:

    Código\(\PageIndex{8}\) (R):

    sleep.K.rep <- replicate(100, K(extra ~ group, data=sleep[sample(1:nrow(sleep), replace=TRUE), ]))
    quantile(sleep.K.rep, c(0.025, 0.975))

    Bootstrap y jackknife están relacionados con numerosas técnicas de remuestreo. Hay múltiples paquetes R (como monedas) que proporcionan pruebas de remuestreo y procedimientos relacionados:

    Código\(\PageIndex{9}\) (R):

    library(coin)
    wilcox_test(V1 ~ V2, data=subset(grades, V2 %in% c("A1", "B1")), conf.int=TRUE)

    Bootstrap también es ampliamente utilizado en el aprendizaje automático. Arriba había un ejemplo de la función Jclust () del conjunto asmisc.r. También hay BootA (), Bootrf () y BootKnN () para boorstrap resultados no supervisados y supervisados.

    ) plantas. Utilice los métodos bootstrap y remuestreo.


    This page titled 10.3: R y Bootstrapping is shared under a Public Domain license and was authored, remixed, and/or curated by Alexey Shipunov via source content that was edited to the style and standards of the LibreTexts platform; a detailed edit history is available upon request.