You are on page 1of 24

Universidad San Francisco de Quito

Segundo Semestre 2009 – 2010

Aproximación al Método de Bootstrapping

Por

Juan Sebastián Araujo Dueñas

Introducción
El desarrollo en computadoras y softwares de los últimos años ha abierto las puertas a
nuevos métodos estadísticos más potentes y precisos, destacando todos aquellos que
emplean el remuestreo como principal herramienta de análisis. Dentro de este grupo,
aparece el bootstrapping que fue propuesto y estudiado inicialmente por Efron (1979) como
un método para la aproximación de la distribución de muestreo de un estadístico.

En cuanto a esto, la inferencia estadística tradicional emplea ciertas suposiciones acerca de


la distribución poblacional para determinar matemáticamente la distribución muestral de un
estadístico. De este modo, cuando la población distribuye N,   , y se estima el valor
2

N , 2
X̄ y s , se puede concluir que X̄  y s   n−1 . De igual manera, da por
2 2
2 n
hecho el cumplimiento del Teorema de Límite Central para tamaños de muestra
suficientemente grandes, sin definir acertadamente lo que "suficientemente grande"
significa. En muchas ocasiones por ejemplo, los sesgos que se observan en la distribución
poblacional, se transfieren a la distribución de los estadísticos incluso con tamaños de
muestra del orden de 1000.

Los métodos de remuestreo, por su parte, presentan varias ventajas. Primero, son más
flexibles en lo que referente a supuestos acerca de la población y permiten además, estimar
la distribución de un estadístico de manera empírica. Segundo, no exigen de tamaños de
muestra excesivamente grandes para ser precisos y confiables (en general se recomienda un
tamaño de muestra mínimo de 50). Tercero, tienen magnitudes de sesgo significativamente
más pequeñas que otros modelos de inferencia. Cuarto, son más fáciles de comprender y
aplicar debido a su mecanicidad y a que principalmente emplean tecnología de softwares.
Finalmente, son menos costosos y en la mayoría de las veces, más rápidos y efectivos que
otros.

¿Cómo funciona el Bootstrapping?

El método de bootstrapping surge de una muestra aleatoria de tamaño n que se toma de


una población con parámetro  . A partir de este punto, la implementación general se
realiza siguiendo los pasos detallados a continuación:

(1) Crear B muestras nuevas a partir de la muestra original utilizando para esto, muestreo
con reemplazo. Las muestras generadas se denominan Muestras Bootstrap y son de tamaño

1
Universidad San Francisco de Quito
Segundo Semestre 2009 – 2010

n al igual que la original.

(2) Calcular el estadístico de interés ̂ i de cada muestra bootstrap. Luego, definir la


distribución de los valores estimados creando así la Distribución Bootstrap.

(3) Utilizar la Distribución Bootstrap considerando que ésta contiene información relevante
en cuanto a la forma, centro y dispersión de la distribución muestral del estadístico.

Nótese que mediante este método se genera una analogía importante que facilita la
comprensión del modelo: "la muestra aleatoria es a la población así como la muestra
bootstrap es a dicha muestra aleatoria".

Ejemplo 1:
El siguiente caso representa el funcionamiento del método de bootstrapping. La tabla 1 presenta
una muestra de 24 determinaciones de cobre en pisos de productos integrales en partes por millón.

2.90 3.10 3.40 3.40 3.70 3.70


2.80 2.50 2.40 2.40 2.70 2.20
5.28 3.37 3.03 3.03 28.95 3.77
3.40 2.20 3.50 3.60 3.70 3.70
Tabla 1

La figura 1 presenta la distribución de la muestra, la cual tiene un claro sesgo hacia la derecha. La
línea roja por su parte, identifica el valor de la media de los datos.

Histogram of chem
20
15
Frequency

10
5
0

0 5 10 15 20 25 30

chem

Figura 1

2
Universidad San Francisco de Quito
Segundo Semestre 2009 – 2010

Se desea estimar el valor de la media X̄ mediante bootstrap. Para esto se ejecuta el siguiente
algoritmo en R usando B  1000 :

> library(MASS)
> data(chem)
> med=c()
> for (i in 1:1000){
+ m.boot=sample(chem,length(chem),replace=T)
+ m.med=mean(m.boot)
+ med=c(med,m.med)
+ }
> #Media Observada:
> mean(chem)
[1] 4.280417
> #"Media Bootstrap:
> mean(med)
[1] 4.33121
> #Distribución Bootstrap
> hist(med)
> lines(c(mean(chem),mean(chem)),c(0,350),col="red")
> lines(c(mean(med),mean(med)),c(0,350),col="blue")

Nótese que la media de la muestra original (4.28) es semejante a la obtenida usando bootstrap
(4.33). La figura 2 presenta además la distribución bootstrap, identificando la posición de los dos
estadísticos antes mencionados con líneas roja y azul respectivamente.

Histogram of med
350
300
250
Frequency

200
150
100
50
0

3 4 5 6 7 8 9

med

Figura 2

3
Universidad San Francisco de Quito
Segundo Semestre 2009 – 2010

La Distribución Bootstrap
Cuando se genera una distribución bootstrap, la cual posee características de forma, centro
y dispersión semejantes a la distribución muestral del estadístico ̂ , es posible calcular los
siguientes estimadores bootstrap considerando los ̂ i obtenidos:

(a) Media o Promedio Bootstrap el cual es un indicador del centro de la distribución:

B ̂∗
̂ ∗
∑ i1 i
E boot   
B

(b) Error Estándar Bootstrap el cual es un indicador de la dispersión de la distribución:

SE boot ̂ ∗   1 ∑ i1 ̂ ∗i − E boot ̂ ∗ 


B 2
B− 1

(c) Sesgo Bootstrap el cual es indicador de la forma de la distribución:

bias boot ̂ ∗   E boot ̂ ∗  − ̂

Cada uno de estos valores es también un estimador de la media, la desviación estándar y el


sesgo del estimador muestral que se está estudiando.

Ejemplo 1 (cont.):
Siguiendo con el ejemplo anterior de las determinaciones de cobre. Si se calculan la media y la
desviación estándar del promedio de los datos y se los compara con los estimadores bootstrap se
observa lo siguiente:

> #Media Observada:


> mean(chem)
[1] 4.280417
> #Media Bootstrap:
> mean(med)
[1] 4.33121
> #SE Media Observada:
> sd(chem)/sqrt(length(chem))
[1] 1.081326
> #SE Media Bootstrap:
> sd(med)
[1] 1.066086
> #Sesgo Bootstrap:
> mean(med)-mean(chem)
[1] 0.05079375

Los resultados obtenidos permiten concluir que en efecto, los valores de las medias y las
desviaciones estándar son considerablemente cercanos. Además, el sesgo bootstrap indica la

4
Universidad San Francisco de Quito
Segundo Semestre 2009 – 2010

existencia de la cola a la derecha notoria en la figura 2.

Como se mencionó líneas arriba, la distribución muestral del estadístico en algunos casos
suele mantener el sesgo propio de la población. Esto limita el cumplimiento, y
consecuentemente, la aplicación del Teorema de Límite Central en la inferencia tradicional.
Mediante la distribución bootstrap, es posible verificar gráficamente la afirmación anterior.
De igual manera, se facilita la toma de decisiones correctivas que faciliten la convergencia
a la normalidad de la distribución de muestreo del estadístico. El siguiente ejemplo ilustra
este concepto:

Ejemplo 2:
La tabla 2 presenta los precios en US$1000 de una muestra de tamaño 50 de propiedades en
Seattle durante el año 2002.
142 232 132.5 200 362
244.95 335 324.5 222 225
175 50 215 260 307
210.95 1370 215.5 179.8 217
197.5 146.5 116.7 449.9 266
265 256 684.5 257 570
149.4 155 244.9 66.407 166
296 148.5 270 252.95 507
705 1850 290 164.95 375
335 987.5 330 149.95 190
Tabla 2

Dado que la muestra no discriminó por tipo de propiedades (comerciales, residenciales o


industriales), es esperable que la cola derecha sea mayor que la izquierda producto del mayor
valor de las localidades dedicadas al comercio. En efecto, una inspección gráfica en las figuras 3 y
4 revela esto.

5
Universidad San Francisco de Quito
Segundo Semestre 2009 – 2010

Histogram of prop

25
20
15
Frequency

10
5
0

0 500 1000 1500 2000

prop

Figura 3

Normal Q-Q Plot


1500
Sample Quantiles

1000
500
0

-2 -1 0 1 2

Theoretical Quantiles

Figura 4

Si se realiza bootstrap para estimar el valor de la media y se genera la distribución pertinente (fig. 5
y fig. 6) usando R, se observa que el sesgo se mantiene incluso para un valor de B  1000 .

>
prop=c(142,232,132.5,200,362,244.95,335,324.5,222,225,175,50,
215,

6
Universidad San Francisco de Quito
Segundo Semestre 2009 – 2010

+
260,307,210.95,1370,215.5,179.8,217,197.5,146.5,116.7,449.9,2
66,
+
265,256,684.5,257,570,149.4,155,244.9,66.407,166,296,148.5,27
0,
+
252.95,507,705,1850,290,164.95,375,335,987.5,330,149.95,190)
> med=c()
> for (i in 1:1000){
+ m.boot=sample(prop,length(prop),replace=T)
+ m.med=mean(m.boot)
+ med=c(med,m.med)
+ }
> hist(med)
> qqnorm(med)

Histogram of med
150
Frequency

100
50
0

200 250 300 350 400 450

med

Figura 5

7
Universidad San Francisco de Quito
Segundo Semestre 2009 – 2010

Normal Q-Q Plot

450
400
Sample Quantiles

350
300
250

-3 -2 -1 0 1 2 3

Theoretical Quantiles

Figura 6

Algunas Aplicaciones en Inferencia

Intervalos de Confianza

Existen varias maneras de calcular Intervalos de Confianza cuando se emplea el método de


bootstrapping. La forma a emplear dependerá exclusivamente de la distribución bootstrap
resultante del proceso. Si la distribución mencionada no presenta un sesgo de considerable
magnitud y se observa una aproximación a la normal, se puede usar intervalos t o de
percentiles, en caso contrario es recomendable usar intervalos BC.

Intervalos t

Cuando se observa que la distribución bootstrap se aproxima a una normal es posible


calcular un intervalo de confianza con nivel de significancia  mediante la siguiente
fórmula:

I. C. 1−  E boot ̂ ∗   t n−1, 1−  ∗ SE boot


2

Intervalos de Percentiles

De igual manera, es posible calcular un intervalo con nivel de significancia  de


percentiles en caso de una aproximación a la normal de la distribución bootstrap. Para
 
hacerlo, se debe encontrar los cuantiles 2 100% y 1 − 2 100% , los cuales

8
Universidad San Francisco de Quito
Segundo Semestre 2009 – 2010

corresponden a la cota inferior y superior del intervalo respectivamente. A diferencia del


caso anterior, este intervalo de confianza no es balanceado.

Una forma de verificar la validez de estos dos casos presentados es comparándolos y


observando su parecido. Si sus valores difieren de manera considerable, entonces se deben
descartar y se procede a utilizar alguna de las siguientes opciones a continuación.

Intervalos BCa (de sesgo corregido y acelerado por sus siglas en inglés)

Este tipo de intervalo realiza una corrección por el sesgo en el caso anterior. Se lo obtiene
siguiendo estos pasos:

1 si ̂ ∗i ≤ ̂
I̂ ∗i  
0 si ̂ ∗  ̂
(1) Calcular el primer factor de corrección z ∗ tal que para i :

∑ i1
B
I̂ ∗i 
z ∗   −1
B 1

(2) Calcular el segundo factor de corrección a tal que para ̂ −i : Valor Jackniffe de i y
el promedio de todos ellos Θ −i :

∑ i1 ̂ −i − Θ −i
n 3

a 3
6 ∑ i1
n
̂ −i − Θ 2−i 2

(3) Calcular las cotas del intervalo con nivel de significancia  de la siguiente manera:

z ∗ − z 1− 2

L  B∗  z 
1 − a z ∗ − z 1− 2
z ∗  z 1− 2
U  B ∗  z∗ 
1 − a z ∗  z 1− 2
L≤≤U

Para que el intervalo BCa sea suficientemente confiable es recomendable que el tamaño de
B sea de al menos 1000.

Ejemplo 3:
Para llevar a cabo este ejemplo y los siguientes, se considerarán la funciones guardadas en la
librería "boot" de R. Retomando los datos del precio de las propiedades, se calcularán los distintos
tipos de intervalos de confianza estudiados.

9
Universidad San Francisco de Quito
Segundo Semestre 2009 – 2010

> #Función para calcular la media:


> med.boot=function(x,i){
+ mean(prop[i])
+ }
> #Generación de muestras bootstrap:
> boot.prop=boot(prop,med.boot,R=1000,stype="i")
> boot.prop

ORDINARY NONPARAMETRIC BOOTSTRAP


Call:
boot(data = prop, statistic = med.boot, R = 1000, stype =
"i")
Bootstrap Statistics :
original bias std. error
t1* 329.2571 1.732379 43.83978

> #Intervalos al 95% de Confianza:


> boot.ci(boot.prop,0.95)

BOOTSTRAP CONFIDENCE INTERVAL CALCULATIONS


Based on 1000 bootstrap replicates
CALL :
boot.ci(boot.out = boot.prop, conf = 0.95)
Intervals :
Level Normal Basic
95% (241.6, 413.4 ) (230.6, 408.6 )
Level Percentile BCa
95% (249.9, 427.9 ) (259.4, 456.1 )
Calculations and Intervals on Original Scale

Los resultados obtenidos indican que la distribución bootstrap no se aproxima a una normal dada la
diferencia entre el intervalo normal y el de percentiles. Nótese además, que el intervalo BCa
presenta una cota superior mucho mayor debido al sesgo antes estudiado.

Ejemplo 4:
Los datos galaxies en la librería MASS muestran la velocidad en Km/seg de distintas galaxias
observables desde el hemisferio norte. Realizando bootstrap con estos datos para obtener
información acerca de la varianza:

> data(galaxies)
> #Se divide la velocidad para mil
> gal=galaxies/1000
> var.boot=function(x,i){
+ var(x[i])
+ }
> #Bootstrap de la varianza de la velocidad
> boot.gal=boot(gal,var.boot,R=500)

10
Universidad San Francisco de Quito
Segundo Semestre 2009 – 2010

> boot.gal

ORDINARY NONPARAMETRIC BOOTSTRAP


Call:
boot(data = gal, statistic = var.boot, R = 500)
Bootstrap Statistics :
original bias std. error
t1* 20.82789 -0.04902143 4.787492

> plot(boot.gal)

Histogram of t
0.08

35
30
0.06

25
Density

t*
0.04

20
0.02

15
10
0.00

5 10 15 20 25 30 35 40 -3 -2 -1 0 1 2 3

t* Quantiles of Standard Normal

Figura 7

La figura 7 evidencia un leve sesgo positivo esperable dado que se está estudiando la distribución
de la varianza. Calculando luego los intervalos de confianza:

> #Intervalos de confianza al 95%


> boot.ci(boot.gal,0.95)

BOOTSTRAP CONFIDENCE INTERVAL CALCULATIONS


Based on 500 bootstrap replicates
CALL :
boot.ci(boot.out = boot.gal, conf = 0.95)
Intervals :
Level Normal Basic
95% (11.49, 30.26 ) (10.98, 29.45 )
Level Percentile BCa
95% (12.21, 30.68 ) (13.43, 32.34 )

11
Universidad San Francisco de Quito
Segundo Semestre 2009 – 2010

Nótese que el BCa resulta ser un intervalo más adecuado dada la cola derecha que presenta la
distribución bootstrap.

Ejemplo 5:
Los datos cats en la librería MASS presentan los pesos corporales y del cerebro de 144 gatos.
Realizando bootstrap para estudiar su covarianza se tiene que:

> cov.boot=function(x,i){
+ var(Hwt[i],Bwt[i])
+ }
> boot.cats=boot(cats,cov.boot,R=1000)
> boot.cats

ORDINARY NONPARAMETRIC BOOTSTRAP


Call:
boot(data = cats, statistic = cov.boot, R = 1000)
Bootstrap Statistics :
original bias std. error
t1* 0.9501127 -0.006945726 0.1231418

> boot.ci(boot.cats,0.95)

BOOTSTRAP CONFIDENCE INTERVAL CALCULATIONS


Based on 1000 bootstrap replicates
CALL :
boot.ci(boot.out = boot.cats, conf = 0.95)
Intervals :
Level Normal Basic
95% ( 0.7157, 1.1984 ) ( 0.6991, 1.1709 )
Level Percentile BCa
95% ( 0.7294, 1.2011 ) ( 0.7631, 1.2724 )

Análisis de Regresión Lineal

Cuando se realizan análisis de regresión lineal, es común suponer que los errores
distribuyen normal con varianza  2 constante. Estos supuestos sin embargo, no suelen
cumplirse en muchos casos prácticos. El método de bootstrapping permite realizar
estimaciones acerca de los coeficientes  de la regresión sin necesidad de asumir
normalidad u homocedasticidad. Existen entonces las siguientes maneras de llevar a cabo el
proceso asumiendo el modelo y  X   y una muestra de tamaño n:

Bootstrap de X Fijo

Este caso se aplica cuando se asume que la varianza de los errores es constante, pero se
sospecha que la normalidad de los mismos no se cumple. El método funciona en base al

12
Universidad San Francisco de Quito
Segundo Semestre 2009 – 2010

siguiente algoritmo:

(1) Calcular ̂ mediante OLS.


(2) Para i  1, . . . , B
(i) Definir Xboot  X
(ii) Remuestrear el vector de residuos ̂ .
̂
(iii) Definir y boot  Xboot   ̂ boot
(iv) Estime  boot dados los pares de valores y j,boot , Xpj,boot ∀j  1, . . . n .

Ejemplo 6:
Los datos Duncan en la librería "car" de R, presentan información socioeconómica al respecto de
45 individuos entrevistados. Interesa estudiar la relación lineal dada por la expresión:

prestige i   0   1 income i   2 education i  i

Corriendo entonces la regresión:

> library(car)
> data(Duncan)
> attach(Duncan)
> mod.duncan=lm(prestige~income+education)
> summary(mod.duncan)
Call:
lm(formula = prestige ~income + education)
Residuals:
Min 1Q Median 3Q Max
-29.5380 -6.4174 0.6546 6.6051 34.6412
Coefficients:
Estimate Std. Error t value Pr(>|t|)
(Intercept) -6.06466 4.27194 -1.420 0.163
income 0.59873 0.11967 5.003 1.05e-05 ***
education 0.54583 0.09825 5.555 1.73e-06 ***
---
Signif. codes: 0 `***' 0.001 `**' 0.01 `*' 0.05 `.' 0.1 ` ' 1
Residual standard error: 13.37 on 42 degrees of freedom
Multiple R-squared: 0.8282, Adjusted R-squared: 0.82
F-statistic: 101.2 on 2 and 42 DF, p-value: < 2.2e-16

La figura 8 muestra la distribución de los residuos. La figura 9 muestra el comportamiento de los


residuos en relación a la variable de respuesta. Nótese que existe asimetría en la figura pero no
hay evidencia clara de heterocedasticidad por lo que se realizará bootstrap de X fijo.

13
Universidad San Francisco de Quito
Segundo Semestre 2009 – 2010

Histogram of residuals(mod.duncan)

15
Frequency

10
5
0

-30 -20 -10 0 10 20 30 40

residuals(mod.duncan)

Figura 8

Residuals vs Fitted
40

17
20
Residuals

0
-20

0 20 40 60 80 100

Fitted values
lm(prestige ~ income + education)
Figura 9

> #Bootstrap de X fijo


> fit=fitted(mod.duncan)
> e=residuals(mod.duncan)

14
Universidad San Francisco de Quito
Segundo Semestre 2009 – 2010

> X=model.matrix(mod.duncan)
> boot.coef=function(x,i){
+ y=fit+e[i]
+ mod=lm(y ~X-1)
+ coefficients(mod)
+ }
> duncan.fix.boot=boot(Duncan,boot.coef,R=1000)
> duncan.fix.boot

ORDINARY NONPARAMETRIC BOOTSTRAP


Call:
boot(data = Duncan, statistic = boot.coef, R = 1000)
Bootstrap Statistics :
original bias std. error
t1* -6.0646629 0.131035157 4.19422747
t2* 0.5987328 -0.003759805 0.11859840
t3* 0.5458339 0.001182099 0.09433975

Los intervalos de confianza bootstrap de los coeficientes, indican si los coeficientes obtenidos se
pueden considerar significativos, tal que:

> boot.ci(duncan.fix.boot,index=1,0.95)

BOOTSTRAP CONFIDENCE INTERVAL CALCULATIONS


Based on 1000 bootstrap replicates
CALL :
boot.ci(boot.out = duncan.fix.boot, conf = 0.95, index = 1)
Intervals :
Level Normal Basic
95% (-14.080, 2.009 ) (-14.300, 1.739 )
Level Percentile BCa
95% (-13.869, 2.170 ) (-13.955, 2.082 )
> boot.ci(duncan.fix.boot,index=2,0.95)

BOOTSTRAP CONFIDENCE INTERVAL CALCULATIONS


Based on 1000 bootstrap replicates
CALL :
boot.ci(boot.out = duncan.fix.boot, conf = 0.95, index = 2)
Intervals :
Level Normal Basic
95% ( 0.3657, 0.8282 ) ( 0.3655, 0.8192 )
Level Percentile BCa
95% ( 0.3783, 0.8320 ) ( 0.3785, 0.8322 )
> boot.ci(duncan.fix.boot,index=3,0.95)

BOOTSTRAP CONFIDENCE INTERVAL CALCULATIONS


Based on 1000 bootstrap replicates

15
Universidad San Francisco de Quito
Segundo Semestre 2009 – 2010

CALL :
boot.ci(boot.out = duncan.fix.boot, conf = 0.95, index = 3)
Intervals :
Level Normal Basic
95% ( 0.3592, 0.7344 ) ( 0.3534, 0.7350 )
Level Percentile BCa
95% ( 0.3566, 0.7383 ) ( 0.3598, 0.7426 )

El intercepto sería entonces el único coeficiente no significativo en el modelo.

Bootstrap de X Aleatorio

Suponiendo ahora, que hay evidencia de heterocedasticidad en el modelo, es necesario


emplear otro método. el Bootstrap de X aleatorio permite estimar adecuadamente los
coeficientes de regresión en este escenario. Para generarlo se debe seguir el algoritmo a
continuación:

(1) Calcular ̂ mediante OLS.


(2) Para i  1, . . . , B
(i) Remuestrear los pares y j , Xpj ∀j  1, . . . n .
(ii) Estime  boot dados los pares de valores y j,boot , Xpj,boot ∀j  1, . . . n .

Es así que lo que se pretende calcular es un nuevo modelo definido por la ecuación
y boot  Xboot   e .

Ejemplo 7:
Los datos mtcars en la librería "boot", muestran información técnica al respecto de 32 vehículos
distintos. Interesa estudiar la relación lineal:

mpg i   0   1 wt i   2 disp i  i

Corriendo la regresión:

> data(mtcars)
> attach(mtcars)
> mod.mtcars=lm(mpg~wt+disp)
> summary(mod.mtcars)
Call:
lm(formula = mpg ~wt + disp)
Residuals:
Min 1Q Median 3Q Max
-3.4087 -2.3243 -0.7683 1.7721 6.3484
Coefficients:
Estimate Std. Error t value Pr(>|t|)
(Intercept) 34.96055 2.16454 16.151 4.91e-16 ***

16
Universidad San Francisco de Quito
Segundo Semestre 2009 – 2010

wt -3.35082 1.16413 -2.878 0.00743 **


disp -0.01773 0.00919 -1.929 0.06362 .
---
Signif. codes: 0 `***' 0.001 `**' 0.01 `*' 0.05 `.' 0.1 ` ' 1
Residual standard error: 2.917 on 29 degrees of freedom
Multiple R-squared: 0.7809, Adjusted R-squared: 0.7658
F-statistic: 51.69 on 2 and 29 DF, p-value: 2.744e-10

La figura 10 muestra que existe evidencia de heterocedasticidad por lo que se realizará un


bootstrap de X aleatorio para confirmar los valores de los coeficientes.

Residuals vs Fitted

18 20
6

17
4
Residuals

2
0
-2
-4

10 15 20 25

Fitted values
lm(mpg ~ wt + disp)
Figura 10

> #Bootstrap de X aleatorio


> boot.coef=function(x,i){
+ d=x[i,]
+ mod=lm(mpg~wt+disp,data=d)
+ coefficients(mod)
+ }
> mtcars.rand.boot=boot(mtcars,boot.coef,R=1000)
> mtcars.rand.boot
ORDINARY NONPARAMETRIC BOOTSTRAP
Call:
boot(data = mtcars, statistic = boot.coef, R = 1000)
Bootstrap Statistics :
original bias std. error
t1* 34.96055404 0.0288372977 2.440907162

17
Universidad San Francisco de Quito
Segundo Semestre 2009 – 2010

t2* -3.35082533 -0.0435788142 1.143319864


t3* -0.01772474 0.0002484925 0.008538405

Se obtienen así los estimadores bootstrap de los coeficientes y sus respectivos errores estándar.
Ahora estudiando su significancia:

> boot.ci(mtcars.rand.boot,index=1,0.95)

BOOTSTRAP CONFIDENCE INTERVAL CALCULATIONS


Based on 1000 bootstrap replicates
CALL :
boot.ci(boot.out = mtcars.rand.boot, conf = 0.95, index = 1)
Intervals :
Level Normal Basic
95% (30.09, 39.67 ) (29.93, 39.56 )
Level Percentile BCa
95% (30.36, 39.99 ) (29.92, 39.53 )
> boot.ci(mtcars.rand.boot,index=2,0.95)

BOOTSTRAP CONFIDENCE INTERVAL CALCULATIONS


Based on 1000 bootstrap replicates
CALL :
boot.ci(boot.out = mtcars.rand.boot, conf = 0.95, index = 2)
Intervals :
Level Normal Basic
95% (-5.447, -1.133 ) (-5.436, -1.174 )
Level Percentile BCa
95% (-5.528, -1.265 ) (-5.419, -1.131 )
> boot.ci(mtcars.rand.boot,index=3,0.95)

BOOTSTRAP CONFIDENCE INTERVAL CALCULATIONS


Based on 1000 bootstrap replicates
CALL :
boot.ci(boot.out = mtcars.rand.boot, conf = 0.95, index = 3)
Intervals :
Level Normal Basic
95% (-0.0341, -0.0019 ) (-0.0340, -0.0025 )
Level Percentile BCa
95% (-0.0330, -0.0014 ) (-0.0335, -0.0017 )

Los intervalos bootstrap indican que todos los coeficientes son significativos. Nótese que en el
resumen de la regresión, se muestra que el tercer coeficiente no es significativo para un  de
5%.

18
Universidad San Francisco de Quito
Segundo Semestre 2009 – 2010

Wild Bootstrap

Este método está definido según Beibold y Chen (1996) y Davidson y Flachaire (2001), y
supone que la distribución de los residuos es simétrica. El procedimiento especifica un
remuestreo en el que los nuevos valores de los residuos u j se obtienen mediante la
siguiente expresión de dos puntos:

−j ; con probabilidad 0.5


uj 
j ; con probabilidad 0.5
∀j ∈ 1, n

O bien:

5 − 1 j 5 1
− ; con probabilidad p 
2 2 5
uj 
5  1 j
; con probabilidad 1 − p
2
∀j ∈ 1, n

Se genera de esta manera, un nuevo modelo dado por y boot  X  u . Luego, se procede a
calcular los coeficientes bootstrap de forma semejante al caso de X fijo.

El Wild Bootstrap se aplica en los casos en que se sospecha de heterocedasticidad pero no


es posible definir una relación numérica entre la varianza de los residuos y los regresores o
los valores predichos.

Ejemplo 8:
Supoonga los datos VA de la librería "MASS" en R, que muestran un experimento médico en
enfermos de cáncer de pulmón realizado por Kalbfleisch & Prentice. Interesa estimar el modelo
lineal:

stime i   1 age i   2 Karn i   3 diag. time i  i

Corriendo la regresión:

> library(MASS)
> data(VA)
> attach(VA)
> mod.VA=lm(stime~age+Karn+diag.time-1)
> summary(mod.VA)

Call:
lm(formula = stime ~age + Karn + diag.time - 1)

19
Universidad San Francisco de Quito
Segundo Semestre 2009 – 2010

Residuals:
Min 1Q Median 3Q Max
-168.08 -80.47 -36.42 11.77 829.12
Coefficients:
Estimate Std. Error t value Pr(>|t|)
age -0.8402 0.5970 -1.407 0.162
Karn 2.8894 0.5387 5.364 3.47e-07 ***
diag.time 0.2327 1.1713 0.199 0.843
---
Signif. codes: 0 `***' 0.001 `**' 0.01 `*' 0.05 `.' 0.1 ` ' 1
Residual standard error: 146.9 on 134 degrees of freedom
Multiple R-squared: 0.4659, Adjusted R-squared: 0.454
F-statistic: 38.96 on 3 and 134 DF, p-value: < 2.2e-16

Mediante Wild Bootstrap se intentará averiguar si los valores estimados de los coeficientes son
adecuados:

> fit=fitted(mod.VA)
> e=residuals(mod.VA)
> X=model.matrix(mod.VA)
> wboot.coef=function(x,i){
+ s=sample(c(-1,1),1)
+ y=fit+e[i]*s
+ mod=lm(y ~X-1)
+ coefficients(mod)
+ }
> VA.wild.boot=boot(VA,wboot.coef,R=1000)
> VA.wild.boot

ORDINARY NONPARAMETRIC BOOTSTRAP


Call:
boot(data = VA, statistic = wboot.coef, R = 1000)
Bootstrap Statistics :
original bias std. error
t1* -0.8402197 0.01272943 0.5927433
t2* 2.8894421 -0.01153854 0.5271826
t3* 0.2326970 0.03326928 1.1980984

> boot.ci(VA.wild.boot,index=1,0.95)

BOOTSTRAP CONFIDENCE INTERVAL CALCULATIONS


Based on 1000 bootstrap replicates
CALL :
boot.ci(boot.out = VA.wild.boot, conf = 0.95)
Intervals :
Level Normal Basic
95% (-2.0147, 0.3088 ) (-2.0618, 0.3385 )

20
Universidad San Francisco de Quito
Segundo Semestre 2009 – 2010

Level Percentile BCa


95% (-2.0189, 0.3814 ) (-2.0673, 0.3384 )

> boot.ci(VA.wild.boot,index=2,0.95)

BOOTSTRAP CONFIDENCE INTERVAL CALCULATIONS


Based on 1000 bootstrap replicates
CALL :
boot.ci(boot.out = VA.wild.boot, conf = 0.95, index = 2)
Intervals :
Level Normal Basic
95% ( 1.868, 3.934 ) ( 1.901, 3.994 )
Level Percentile BCa
95% ( 1.785, 3.878 ) ( 1.756, 3.850 )

> boot.ci(VA.wild.boot,index=3,0.95)

BOOTSTRAP CONFIDENCE INTERVAL CALCULATIONS


Based on 1000 bootstrap replicates
CALL :
boot.ci(boot.out = VA.wild.boot, conf = 0.95, index = 3)
Intervals :
Level Normal Basic
95% (-2.1488, 2.5477 ) (-2.1425, 2.5366 )
Level Percentile BCa
95% (-2.0712, 2.6079 ) (-2.1147, 2.4725 )

Dados los intervalos de confianza se puede concluir que los coeficientes 1 y 3 no son significativos,
y sólo debería considerarse el correspondiente a la variable Karn.

Suavizamiento de Gráficos de Puntos (LOWESS)

Existen casos en que la información entregada por variables predictoras X y respuestas y


, se ajusta de forma más adecuada con una curva polinómica que con una línea de
regresión. En estas situaciones, interesa estudiar si la forma de la curva se debe a efectos
aleatorios de la muestra, o bien a características propias de la población. Esto puede ser
analizado por el método de bootstrapping. El siguiente ejemplo ilustra lo mencionado.

Ejemplo 9:
Suponga nuevamente los datos Duncan. La figura 11 muestra una gráfica de puntos de los
ingresos frente al prestigio. La línea de color rojo es una curva LOWESS.

21
Universidad San Francisco de Quito
Segundo Semestre 2009 – 2010

100
80
60
prestige

40
20
0

20 40 60 80

income

Figura 11

Interesa conocer si la forma de la curva se da por aleatoriedad de la muestra o si es una


característica poblacional distintiva. Usando bootrstrapping se observa lo siguiente:

> attach(Duncan)
> boot.line=function(x,i){
> dat=x[i,]
> attach(dat)
> lines(lowess(income,prestige,f=0.1),col="blue")
> }
> boot.lowess=boot(Duncan,boot.line,R=100)

La figura 12 indica que las curvas bootstrap generadas se comportan de forma distinta a la original.
Por lo tanto es posible concluir que la forma encontrada surge producto de la aleatoriedad de la
muestra.

22
Universidad San Francisco de Quito
Segundo Semestre 2009 – 2010

100
80
60
prestige

40
20
0

20 40 60 80

income

Figura 12

23
Universidad San Francisco de Quito
Segundo Semestre 2009 – 2010

Bibliografía
- MMDS, Cap. 18: Bootstrap Methods and Permutation Tests.

- MENDIETA, Gonzalo, Bootstrap, 2009.

- FOX, John, Bootstrapping Regression Models, 2002.

- DAVIDSON, Anthony, HINKLEY, D.V.,Bootstrap Methods and Their Application.

- DAVIDSON, Rusell, FLACHAIRE, Emmanuel, The Wild Bootstrap, Tamed at


Last.

24

You might also like