“Statisticians, like artists, have the bad habit of falling in love with their models.”
– George Box
5.1. Introdução
O método bootstrap, proposto por Bradley Efron em 1979 (Efron 1979), é uma técnica estatística baseada em reamostragem com reposição a partir da amostra observada, \(\mathbf{x} = (x_1, \dots, x_n)\), com o propósito de estimar o erro-padrão de um estimador \(\hat{\theta} = s(\mathbf{x})\), mesmo em situações em que a distribuição populacional subjacente é desconhecida ou não possui uma forma analítica tratável. A ideia central fundamenta-se no princípio plug-in, segundo o qual a distribuição populacional \(F\) — cuja expressão funcional exata é, em geral, desconhecida — é substituída por sua estimativa empírica \(\widehat{F}_n\). Essa abordagem permite gerar réplicas amostrais, denominadas amostras bootstrap, sobre as quais o estimador é reavaliado, obtendo-se assim uma aproximação empírica da distribuição amostral de \(\hat{\theta}\).
5.2. Princípio Plug-in
O princípio plug-in — também conhecido como princípio da substituição — constitui o fundamento teórico do método bootstrap. A ideia central consiste em estimar uma quantidade de interesse populacional \(\theta = t(F)\), onde \(F\) denota a função de distribuição da população, por meio da aplicação da mesma funcional \(t\) à distribuição empírica \(\widehat{F}_n\), obtida a partir da amostra observada, fornecendo uma aproximação adequada de \(F\).
Definição 5.1 (Estimativa Plug-in - Efron e Tibshirani 1994). Seja \(\mathbf{x} = (x_1, \dots, x_n)\) uma amostra aleatória i.i.d. extraída de uma população com distribuição desconhecida \(F\), e seja \(\theta = t(F)\) uma quantidade de interesse. A estimativa plug-in de \(\theta\) é definida por: \[\begin{align}\\
\hat{\theta}_n = t(\widehat{F}_n)\\\\
\end{align}\] em que \(\widehat{F}_n\) denota a função de distribuição empírica associada à amostra observada. Ressalta-se que a estimativa plug-in \(\hat{\theta}_n\) nem sempre coincide com a estimativa usual, \(\hat{\theta} = s(\mathbf{x})\), obtida por métodos analíticos tradicionais.
Exemplo 5.1. Considere um estudo sobre a durabilidade de componentes em uma linha de produção, onde se investiga o tempo de vida das peças. Suponha que os tempos de vida seguem uma distribuição exponencial com parâmetro de taxa \(\lambda\), ou seja, \(X \sim \text{Exp}(\lambda)\). O objetivo do estudo é estimar a mediana populacional \(\theta\), que está relacionada ao parâmetro \(\lambda\) por meio da equação: \[\begin{align}\\
\theta = \frac{\ln(2)}{\lambda}\\\\
\end{align}\] em que \(\theta\) representa o tempo em que 50% das peças falham antes e 50% falham depois desse valor. Suponha que uma amostra de \(n = 1000\) observações, representando os tempos até a falha das peças, tenha sido coletada. O problema consiste em estimar \(\theta\) com base nesses dados, uma vez que o parâmetro \(\lambda\) é desconhecido. Para tal, exploraremos duas abordagens de estimação: a de máxima verossimilhança (MLE), e o estimador plug-in.
Estimador de Máxima Verossimilhança (MLE): Para a distribuição exponencial, o estimador de \(\lambda\) por máxima verossimilhança é dado por: \[\begin{align}\\
\hat{\lambda}_{\text{MLE}} = \frac{1}{\bar{x}}\\\\
\end{align}\] em que \(\bar{x}\) é a média amostral. Após estimar \(\hat{\lambda}_{\text{MLE}}\), a mediana populacional pode ser estimada substituindo \(\hat{\lambda}_{\text{MLE}}\) na equação de \(\theta\), nos levando ao estimador: \[\begin{align}\\
\hat{\theta}_{\text{MLE}} = \frac{\ln(2)}{\hat{\lambda}_{\text{MLE}}} = \bar{x} \cdot \ln(2)\\\\
\end{align}\] Esse estimador pressupõe que os dados seguem a distribuição exponencial e utiliza a média amostral para estimar o parâmetro \(\lambda\).
Estimador Plug-in (Mediana Empírica): Em contraste, o estimador plug-in da mediana é obtido diretamente a partir da amostra observada, sem fazer suposições sobre a distribuição dos dados. O estimador plug-in da mediana populacional, \(\hat{\theta}_n\), é simplesmente a mediana da amostra: \[\begin{align}\\
\hat{\theta}_n = \operatorname{med}(\mathbf{x})\\\\
\end{align}\] Este é um estimador não-paramétrico, pois não depende de suposições sobre a forma da distribuição dos dados, utilizando a mediana empírica como uma estimativa direta para a mediana populacional.
Para ilustrar tais estimadores, realizaremos uma simulação na qual os dados são gerados a partir de uma distribuição exponencial com parâmetro \(\lambda = 2\). Em seguida, serão calculados os dois estimadores para a mediana populacional: o estimador de máxima verossimilhança (MLE) e o estimador plug-in. O Código 5.1 apresenta, em ambiente R, uma rotina que implementa esse procedimento.
Código 5.1. Simulação do cálculo dos estimadores de máxima verossimilhança (MLE) e plug-in.
# ------------------------# Princípio Plug-in x MLE# ------------------------# --- 0. Pacotes necessários ---library(knitr)# --- 1. Gerar uma amostra aleatória de uma distribuição exponencial ---set.seed(2025)n <-1000lambda <-2x <-rexp(n, rate = lambda)# --- 2. Estimativa da mediana com base no MLE ---lambda_mle <-1/mean(x)mediana_mle <-log(2) / lambda_mle# --- 3. Estimador da mediana empírica (plug-in) ---mediana_obs <-median(x)# --- 4. Resultados ---res <-data.frame(row.names =c('Estimador Plug-in (Mediana Empírica)', 'Estimador de Máxima Verossimilhança (MLE)'),Estimativa =c(round(mediana_obs, 4), round(mediana_mle, 4)))kable(res, align ='c', escape =FALSE, format ='html',col.names =c('Estimador', 'Estimativa'))
Observação 5.1. No contexto do bootstrap, \(\widehat{F}_n\) é uma distribuição empírica discreta que atribui probabilidade \(1/n\) a cada uma das observações da amostra \(\mathbf{x} = (x_1, \dots, x_n)\). A geração de amostras com reposição a partir de \(\widehat{F}_n\) possibilita a construção de múltiplas pseudoamostras, que mimetizam o processo de amostragem original sob a suposição de que \(\widehat{F}_n\) é uma aproximação válida de \(F\). A cada pseudoamostra é aplicada a mesma estatística \(s(\cdot)\), permitindo a obtenção de uma distribuição empírica da estatística de interesse \(\hat{\theta}\). Esse procedimento fornece uma base não-paramétrica para a estimação de propriedades inferenciais como erro-padrão, viés, intervalos de confiança e quantis, sem necessidade de pressupostos sobre a forma funcional de \(F\). Tal característica confere ao bootstrap uma notável flexibilidade e aplicabilidade, sobretudo em cenários em que os métodos paramétricos se mostram inadequados ou impraticáveis.
5.3. Amostra Bootstrap
No conceito mais geral, uma amostra bootstrap é uma amostra gerada a partir da amostra original por meio de um processo de reamostragem com reposição. Isso significa que, ao selecionar as observações para formar a amostra bootstrap, cada valor da amostra original pode ser escolhido mais de uma vez ou, eventualmente, nenhum vez. Em outras palavras, uma amostra bootstrap é uma versão aleatorizada da amostra original, com o mesmo tamanho da amostra original, mas onde a seleção de elementos é feita com reposição. Este processo de reamostragem, em particular, permite simular repetidas amostragens da população subjacente, a partir da qual os dados foram originalmente extraídos, utilizando apenas a amostra observada.
Definição 5.2 (Amostra Bootstrap - Efron 1982; Efron e Tibshirani 1994; Shao e Tu 2012). Seja \(\hat{F}_n\) a distribuição empírica associada à uma amostra \(\mathbf{x} = (x_1, \dots, x_n)\), onde cada valor observado \(x_i\) tem uma probabilidade \(1/n\) de ser selecionado. A amostra bootstrap é então definida como uma nova amostra aleatória de tamanho \(n\), denotada por \(\mathbf{x}^* = (x_1^*, \dots, x_n^*)\), que é obtida com reposição da distribuição empírica \(\hat{F}_n\). A notação com o asterisco, \(\mathbf{x}^*\), é usada para indicar que a amostra \(\mathbf{x}^*\) não é idêntica à amostra original \(\mathbf{x}\), mas sim uma versão reamostrada, obtida através do processo de amostragem com reposição.
Exemplo 5.2. Suponha que tenhamos coletado uma amostra de dados representando a pressão arterial de 10 pacientes de um hospital: \[\begin{align}\\
\mathbf{x} = (130, 145, 120, 155, 140, 135, 150, 125, 160, 145)\\\\
\end{align}\] O objetivo é explorar o método bootstrap, que nos permite criar novas amostras aleatórias a partir da amostra original para realizar inferências sobre a população de onde os dados foram extraídos. Para tal, serão geradas novas amostras, em particular, de tamanho 10 com reposição a partir dessa amostra original. É válido destacar que cada vez que reamostramos a amostra original, as novas amostras bootstrap poderão conter elementos repetidos, ou não conter certos elementos, o que é uma característica essencial da amostragem com reposição. O Código 5.2 apresenta, em ambiente R, uma rotina que implementa esse procedimento, na qual foram geradas 10 amostras bootstrap para ilustrar a estimação.
Código 5.2. Implementação em R do método bootstrap para gerar 10 amostras aleatórias com reposição a partir da amostra contendo as pressões arteriais de 10 pacientes de um determinado hospital..
# ---------------------------------------------------------# Geração de Amostras Bootstrap: Dados de Pressão Arterial# ---------------------------------------------------------# --- 1. Definir semente para garantir reprodutibilidade ---set.seed(2025)# --- 2. Definir a amostra original ---x <-c(130, 145, 120, 155, 140, 135, 150, 125, 160, 145)# --- 3. Função para gerar amostras bootstrap ---gen_bootstrap_samples <-function(original_sample, n_iterations){ bootstrap_samples <-list() # Lista para armazenar as amostrasfor (i in1:n_iterations) {# Gerando uma amostra bootstrap com reposição x_star <-sample(original_sample, size =length(original_sample), replace =TRUE)# Armazenando a amostra bootstrap gerada bootstrap_samples[[i]] <- x_star }return(bootstrap_samples)}# --- 4. Gerar amostras bootstrap ---n_iterations <-10bootstrap_samples <-gen_bootstrap_samples(x, n_iterations)# --- 5. Exibir as amostras bootstrap ---for (i in1:n_iterations) {cat("Amostra Bootstrap nº", i, ": ", bootstrap_samples[[i]], "\n")}
A replicação bootstrap é um procedimento no método bootstrap que consiste em gerar múltiplas versões alternativas da estatística original, a partir dos próprios dados observados. A ideia central é recriar, por meio de reamostragem com reposição, várias amostras simuladas que preservam as características da amostra inicial. Em cada uma dessas amostras simuladas, a mesma função estatística aplicada à amostra original é recalculada, produzindo um conjunto de valores que representam possíveis variações da estatística de interesse. Matematicamente, tem-se a definição.
Definição 5.3 (Replicação Bootstrap - Efron 1982; Efron e Tibshirani 1994; Shao e Tu 2012). Seja \(\mathbf{x} = (x_1, \dots, x_n)\) uma amostra aleatória i.i.d., e \(\hat{\theta} = s(\mathbf{x})\) um estimador de interesse, obtido pela aplicação de uma função \(s(\cdot)\) sobre a amostra. Denote por \(\hat{F}_n\) a distribuição empírica associada a \(\mathbf{x}\), isto é, a distribuição que atribui probabilidade \(1/n\) a cada ponto observado da amostra. A partir de \(\hat{F}_n\), considere uma amostra bootstrap \(\mathbf{x}^* = (x_1^*, \dots, x_n^*)\). A replicação bootstrap do estimador \(\hat{\theta}\) é obtida pela aplicação da mesma função \(s(\cdot)\) à amostra reamostrada, resultando em \(\hat{\theta}^* = s(\mathbf{x}^*)\). Este procedimento, naturalmente, pode ser repetido \(B\) vezes, produzindo um conjunto de replicações bootstrap \(\hat{\theta}_1^, \dots, \hat{\theta}_B^*\).
Figura 5.1.. Ilustração do conceito de replicação bootstrap.
Fonte: Bootstrap Replication | Efron, B., & Tibshirani, R. J. (1994). An Introduction to the Bootstrap. Chapman and Hall/CRC.
Exemplo 5.3 (Tempo de Resposta de um Servidor Web). Uma equipe de engenharia de software está monitorando o tempo de resposta (em milissegundos) de um servidor web durante um pico de acessos. Foram coletados os tempos de resposta de 50 requisições consecutivas, com o objetivo de estimar o tempo médio de resposta do servidor. A distribuição real dos tempos de resposta é desconhecida e pode ser assimétrica, com outliers, ou sujeita a outras irregularidades. A amostra coletada foi: \[\begin{align}\\
\mathbf{x} &= (170{.}7,\ 139{.}0,\ 165{.}9,\ 186{.}0,\ 204{.}8,\ 116{.}8,\ 107{.}8,\ 189{.}8,\ 167{.}1,\ 144{.}5,\ 141{.}2,\ 152{.}7,\ 154{.}8,\\
&\phantom{--}152{.}2,\ 133{.}8,\ 177{.}7,\ 129{.}6,\ 145{.}5,\ 150{.}4,\ 144{.}1,\ 176{.}3,\ 172{.}1,\ 188{.}3,\ 150{.}6,\,174{.}1,\ 144{.}8\\
&\phantom{--}149{.}4,\ 129{.}2,\ 183{.}2,\ 133{.}3,\ 137{.}7,\ 123{.}6,\ 168{.}3,\ 102{.}2,\ 180{.}3,\ 96{.}4,\ 181{.}6,\ 167{.}7,\ 113{.}6\\
&\phantom{--}184{.}3,\ 167{.}3,\ 148{.}1,\ 98{.}8,\ 171{.}1,\ 117{.}7,\ 99{.}1,\ 131{.}7,\ 147{.}6,\ 120{.}6,\ 172{.}4)\\\\
\end{align}\] Para inferir sobre o comportamento do tempo médio de resposta, \(\hat{\theta} = \bar{x}\), sem suposições paramétricas, a equipe decide aplicar o método bootstrap, com o intuito de apenas em ilustrar a replicação bootstrap de \(\hat{\theta}\). Para tal, foram consideradas as etapas:
1ª Etapa: Define-se uma estatística \(\hat{\theta} = s(\mathbf{x}) = \bar{x}\), referente a média dos tempos de resposta;
2ª Etapa: Constrói-se a distribuição empírica \(\hat{F}_n\), que atribui probabilidade \(1/50\) a cada valor observado;
3ª Etapa: Gera-se uma amostra bootstrap \(\mathbf{x}^*\) de tamanho 50, com reposição, a partir de \(\mathbf{x}\);
4ª Etapa: Aplica-se novamente a função \(s(\cdot)\) sobre \(\mathbf{x}^*\), obtendo uma replicação bootstrap \(\hat{\theta}^* = s(\mathbf{x}^*)\).
O Código 5.3 apresenta, em ambiente R, uma rotina que descreve esse procedimento.
Código 5.3.</span Cálculo da replicação bootstrap para análise do tempo de resposta de um servidor web.
# -----------------------------------------------------------# Replicação Bootstrap: Tempo de Resposta de um Servidor Web# -----------------------------------------------------------# --- 0. Pacotes necessários ---library(knitr)# --- 1. Definir a amostra referente aos tempos de resposta ---x <-c(170.7, 139.0, 165.9, 186.0, 204.8, 116.8, 107.8, 189.8, 167.1, 144.5,141.2, 152.7, 154.8, 152.2, 133.8, 177.7, 129.6, 145.5, 150.4, 144.1,176.3, 172.1, 188.3, 150.6, 149.4, 129.2, 183.2, 133.3, 137.7, 123.6,168.3, 102.2, 180.3, 96.4, 181.6, 167.7, 184.3, 167.3, 148.1, 98.8,171.1, 117.7, 99.1, 131.7, 147.6, 120.6, 172.4, 113.6, 174.1, 144.8)# --- 2. Calcular a estatística de interesse: média amostral ---theta_hat <-mean(x)# --- 3. Construção de uma replicação bootstrap ---set.seed(42) # Reprodutibilidadex_star <-sample(x, size =length(x), replace =TRUE) # Reamostragem com reposiçãotheta_star <-mean(x_star) # Aplicação da função s(·) à amostra bootstrap# --- 4. Resultados ---res <-data.frame(row.names =c("Estimativa original (θ = s(x))", "Replicação bootstrap (θ* = s(x*))"),Estimativa =c(round(theta_hat, 2), round(theta_star, 2)))kable(res,align ='c',escape =FALSE,format ='html',col.names =c('Estimativa'))
O estimador bootstrap emerge como uma extensão natural da ideia de replicação bootstrap, funcionando como uma forma de sintetizar a informação gerada por múltiplas amostras simuladas. Ao considerar a coleção de valores da estatística recalculada em cada amostra bootstrap, é possível construir uma estimativa agregada que represente o comportamento esperado da estatística no contexto da população original. Matematicamente, tem-se a definição.
Definição 5.4 (Estimador Bootstrap - Efron 1982; Efron e Tibshirani 1994; Shao e Tu 2012). Seja uma amostra observada \(\mathbf{x} = (x_1, x_2, \ldots, x_n)\) proveniente de uma distribuição desconhecida \(F\). O estimador bootstrap de uma estatística \(\hat{\theta} = s(X)\) é definido como a média das estatísticas calculadas em amostras bootstrap, \(\mathbf{x}^* = (x_{1}^{*}, x_{2}^{*}, \ldots, X_{n}^{*})\), geradas a partir da distribuição empírica \(\hat{F}_n\), ou seja, \[\begin{align}\\
\hat{\theta}_{\text{boot}} = \frac{1}{B} \sum_{b=1}^B \hat{\theta^*}^{(b)}\\\\
\end{align}\] em que \(\hat{\theta^*}^{(b)} = s(X^*_b)\) é a estatística calculada na \(b\)-ésima amostra bootstrap \(x^*_b\), obtida por reamostragem com reposição da amostra original \(\mathbf{x}\), e \(B\) indica o total de réplicas bootstrap utilizadas.
Exemplo 5.4. Um pesquisador deseja estimar a pressão arterial média sistólica de uma população de adultos em uma determinada clínica. Por limitações operacionais, foi coletada uma amostra simples de \(n = 10\) pacientes, cujas medidas observadas da pressão arterial sistólica (em mmHg) são:
A estatística de interesse é a média amostral da pressão arterial, \(\hat{\theta} = \bar{X}\). Como a população é desconhecida e a amostra pequena, o pesquisador opta por aplicar o método bootstrap para estimar a distribuição amostral da média e, consequentemente, obter um estimador bootstrap \(\hat{\theta}_{\text{boot}}\) mais robusto. Para isso, utiliza-se o seguinte procedimento:
1ª Etapa: Gerar \(B = 1000\) amostras bootstrap, cada uma de tamanho \(n=10\), por reamostragem com reposição da amostra original.
2ª Etapa: Calcular a média amostral para cada amostra bootstrap, obtendo \(\hat{\theta^*}^{(b)}\), \(b=1, \ldots, B\).
3ª Etapa: Calcular o estimador bootstrap da média como a média das \(\hat{\theta^*}^{(b)}\).
O Código 5.4 apresenta, em ambiente R, uma rotina que descreve esse procedimento.
Código 5.4. Estimativa bootstrap da pressão arterial média sistólica de uma população de adultos em uma determinada clínica.
Em muitas situações, nosso interesse está centrado na precisão do estimador \(\hat{\theta} = s(\mathbf{x})\), obtido a partir de uma amostra \(\mathbf{x} = (x_1, \dots, x_n)\), frequentemente medida pelo erro-padrão. Por exemplo, em um estudo clínico sobre a eficácia de um novo medicamento, podemos estimar o efeito médio do medicamento \(\hat{\theta}\) como a média amostral \(\bar{x}\) da redução dos sintomas em 50 pacientes. A precisão dessa estimativa é de extrema importância, pois qualquer erro na média pode levar a conclusões imprecisas sobre a eficácia do tratamento. No entanto, em muitos casos, o cálculo exato do erro-padrão é complexo ou inviável devido à distribuição desconhecida dos dados. Nesses cenários, métodos computacionais, como o bootstrap, tornam-se ferramentas essenciais. No bootstrap, a estimativa do erro-padrão de \(\hat{\theta}\), denotada por \(\text{se}_F(\hat{\theta})\), é obtida por meio de replicações bootstrap da estatística \(\hat{\theta}\), utilizando reamostragens com reposição da amostra \(\mathbf{x}\).
Definição 5.5 (Estimativa Bootstrap do Erro-Padrão - Efron 1982; Efron e Tibshirani 1994; Shao e Tu 2012). Seja \(\mathbf{x} = (x_1, \dots, x_n)\) uma amostra aleatória de tamanho \(n\) proveniente de uma distribuição \(F\), e \(\hat{\theta} = s(\mathbf{x})\) um estimador de interesse, obtido pela aplicação de uma função \(s(\cdot)\) sobre a amostra \(\mathbf{x}\). A distribuição empírica \(\hat{F}_n\) associada à amostra \(\mathbf{x}\) é dada por: \[\begin{align}\\
\hat{F}_n = \frac{1}{n} \sum_{i=1}^n \delta_{x_i}(\cdot),\\\\
\end{align}\] em que \(\delta_{x_i}(\cdot)\) é a medida de Dirac concentrada no ponto \(x_i\), ou seja, uma distribuição que atribui peso \(1/n\) a cada observação \(x_i\). A estimativa bootstrap do erro-padrão de \(\hat{\theta}\), denotada por \(\text{se}_B(\hat{\theta})\), é dada por: \[\begin{align}\\
\text{se}_B(\hat{\theta}) \approx \sqrt{\frac{1}{B-1} \sum_{b=1}^B \left( \hat{\theta^*}^{(b)} - \hat{\theta}^* \right)^2},\\\\
\end{align}\] em que \(B\) é o número total de amostras bootstrap geradas, \(\hat{\theta^*}^{(b)} = s\left(\mathbf{x^*}^{(b)}\right)\) é a replicação bootstrap do estimador, calculada a partir da amostra bootstrap \(\mathbf{x^*}^{(b)}\), e \(\hat{\theta^*} = \frac{1}{B} \sum_{b=1}^B \hat{\theta^*}^{(b)}\) é a média das \(B\) replicações bootstrap.
Figura 5.2.. Ilustração do processo de estimação do erro-padrão via bootstrap.
Fonte: Bootstrap Standard Error | Efron, B., & Tibshirani, R. J. (1994). An Introduction to the Bootstrap. Chapman and Hall/CRC.
Exemplo 5.5 (Peso de Recém-Nascidos). Imagine um estudo realizado em uma maternidade, no qual se deseja estimar o peso médio dos recém-nascidos em uma determinada região. O objetivo do estudo é entender as tendências de peso ao longo de um determinado período e se há variações significativas dependendo de fatores como cuidados pré-natais, dieta materna ou condições ambientais. Para isso, uma amostra de 20 recém-nascidos foi selecionada aleatoriamente. O peso de cada bebê foi registrado em gramas, resultando na seguinte amostra de pesos: \[\begin{align}\\
\mathbf{x} &= (3331{.}608, 3549{.}913, 2809{.}252, 2671{.}465, 3383{.}177, 3945{.}721, 3672{.}601,\\
&\phantom{--}3922{.}416, 4647{.}278, 4088{.}246, 3718{.}874, 3724{.}443, 3925{.}457, 3112{.}920,\\
&\phantom{--}3495{.}621, 3651{.}779, 3240{.}194, 3867{.}347, 3431{.}015, 4163{.}725)\\\\
\end{align}\] O principal interesse da pesquisa é estimar o peso médio dos recém-nascidos na região, que seria uma boa representação do valor esperado da população de nascimentos. O estimador utilizado para isso é a média amostral \(\hat{\theta} = \bar{x}\), calculada a partir dos 20 dados observados. Entretanto, além de calcular a média, o estudo também precisa avaliar a precisão (erro-padrão) dessa estimativa. Para tal, será considerado o método bootstrap, seguindo as etapas:
1ª Etapa: Calcular o estimador da média a partir da amostra original. A média amostral \(\hat{\theta}\) é dada por: \[\begin{align}\\
\hat{\theta} = \frac{1}{n} \sum_{i=1}^{n} x_i\\\\
\end{align}\] em que \(x_i\) são os pesos dos 20 recém-nascidos observados e \(n = 20\) é o tamanho da amostra. A média amostral, portanto, é uma estimativa pontual do peso médio da população de recém-nascidos.
2ª Etapa: Gerar amostras bootstrap \(\mathbf{x}^*\) de tamanho 20, com reposição, a partir de \(\mathbf{x}\). Em particular, serão geradas \(B = 1000\) amostras bootstrap.
3ª Etapa: Para cada uma das amostras geradas, será cálculado uma nova média \(\hat{\theta^*}^{(b)}\), que representa a replicação do estimador \(\hat{\theta}\) para a amostra \(b\)-ésima.
4ª Etapa: Após a geração das amostras bootstrap e o cálculo das respectivas médias \(\hat{\theta^*}^{(b)}\) para cada uma delas, podemos estimar o erro-padrão \(\hat{\text{se}}_B\) como o desvio-padrão das médias \(\hat{\theta^*}^{(b)}\): \[\begin{align}\\
\hat{\text{se}}_B = \sqrt{\frac{1}{B-1} \sum_{b=1}^{B} \left( \hat{\theta^*}^{(b)} - \hat{\theta}^* \right)^2}\\\\
\end{align}\] em que \(\hat{\theta}^*\) é a média das \(B = 1000\) médias bootstrap.
O Código 5.5 apresenta, em ambiente R, uma rotina que descreve esse procedimento.
Código 5.5. Estimativa bootstrap do erro-padrão correspondente ao peso médio dos recém-nascidos considerados no exemplo.
# --------------------------------------------------------------# Estimativa Bootstrap do Erro-padrão do Peso de Recém-Nascidos# --------------------------------------------------------------# --- 0. Pacotes necessários ---library(knitr)library(ggplot2)# --- 1. Definir a amostra referente aos pesos dos recém-nascidos ---x <-c(3331.608, 3549.913, 2809.252, 2671.465, 3383.177, 3945.721, 3672.601,3922.416, 4647.278, 4088.246, 3718.874, 3724.443, 3925.457, 3112.920,3495.621, 3651.779, 3240.194, 3867.347, 3431.015, 4163.725)# --- 2. Calcular a estatística de interesse: média amostral e erro padrão ---theta_hat <-mean(x)erro_padrao <-sd(x)/sqrt(length(x))# --- 3. Construção das amostras bootstrap ---set.seed(42) theta_star <-c()for(i in1:1000){ theta_star[i] <-mean(sample(x, size =length(x), replace =TRUE))}# --- 4. Estimativa bootstrap para média e erro-padrão ---estimativa_boot <-mean(theta_star)erro_padrao_boot <-sd(theta_star)# --- 5. Resultados ---res <-data.frame(row.names =c("Média Amostral", "Erro-Padrão da Média Amostral", "Estimativa Bootstrap da Média Amostral", "Erro-Padrão Bootstrap da Média Amostral"),Estimativa =round(c(theta_hat, erro_padrao, estimativa_boot, erro_padrao_boot), 4))kable(res,align ='c',escape =FALSE,format ='html',col.names =c('Estimativa'))
Estimativa
Média Amostral
3617.6526
Erro-Padrão da Média Amostral
103.8767
Estimativa Bootstrap da Média Amostral
3618.8879
Erro-Padrão Bootstrap da Média Amostral
98.9013
# --- 6. Ilustração gráfica da distribuição amostral da média via bootstrap ---par(mar =c(4, 4, 6, 1))hist(theta_star,prob =TRUE,main ='',xlab ='Médias das Amostras Bootstrap',ylab ='Densidade',ylim =c(0, 0.006))abline(v =mean(theta_star), lty =2, col ='red')legend('topright',legend ='Estimativa da Média Amostral (Bootstrap)',col ='red',lty =2,bty ='n')
Figura 5.3.. Histograma da distribuição amostral da média via método bootstrap correspondente à amostra dos pesos dos recém-nascidos considerados no exemplo.
Uma alternativa ao processo descrito anteriormente é trabalhar diretamente com a função np.boot do pacote nptest, que permite realizar o bootstrap de maneira rápida e eficiente, sem a necessidade de escrever o código manualmente para as replicações. Esta função, em particular, tem como argumentos principais:
x: vetor referente à entrada dos dados.
statistics: a estatística amostral de interesse.
R: número de replicações do método bootstrap.
O Código 5.6 apresenta, em ambiente R, uma rotina que descreve o uso dessa função.
Código 5.6. Estimativa bootstrap do erro-padrão correspondente ao peso médio dos recém-nascidos considerados no exemplo, usando o pacote nptest.
# -----------------------------------------------------------------------# Estimativa Bootstrap do Erro-padrão do Peso de Recém-Nascidos (nptest)# -----------------------------------------------------------------------# --- 0. Pacotes necessários ---library(nptest)library(knitr)# --- 1. Definir a amostra referente aos pesos dos recém-nascidos ---x <-c(3331.608, 3549.913, 2809.252, 2671.465, 3383.177, 3945.721, 3672.601,3922.416, 4647.278, 4088.246, 3718.874, 3724.443, 3925.457, 3112.920,3495.621, 3651.779, 3240.194, 3867.347, 3431.015, 4163.725)# --- 2. Aplicação da função np.boot do pacote nptest para estimação bootstrap da média ---npbs <-np.boot(x = x, statistic = mean, R =1000)npbs
# --- 6. Ilustração gráfica da distribuição amostral da média via nptest ---par(mar =c(4,4,6,1))hist(npbs$boot.dist, prob =TRUE,main ='',xlab ='Médias das Amostras Bootstrap',ylab ='Densidade',ylim =c(0, 0.006))abline(v =mean(theta_star), lty =2, col ='red')legend('topright',legend ='Estimativa da Média Amostral (Bootstrap)',col ='red',lty =2,bty ='n')
Figura 5.4.. Histograma da distribuição amostral da média via método bootstrap correspondente à amostra dos pesos dos recém-nascidos considerados no exemplo, usando o pacote ‘nptest’.
Em inferência estatística, a avaliação da qualidade de um estimador \(\hat{\theta}\) é frequentemente baseada em medidas como o viés e o erro quadrático médio (EQM). No contexto do método bootstrap, tais quantidades são geralmente desconhecidas, pois dependem da distribuição verdadeira \(F\), a qual é acessível apenas por meio da amostra observada. No entanto, o bootstrap permite estimar empiricamente tais medidas por meio da distribuição gerada a partir das replicações da estatística de interesse.
Definição 5.6 (Viés e Erro Quadrático Médio no Bootstrap - Efron 1982; Efron e Tibshirani 1994; Shao e Tu 2012). Seja \(\hat{\theta^*}^{(1)}, \ldots, \hat{\theta^*}^{(B)}\) as replicações bootstrap da estatística \(\hat{\theta}\), obtidas a partir de \(B\) amostras geradas da distribuição empírica \(\hat{F}_n\), e \(\hat{\theta}_{\text{boot}}\) o estimador bootstrap. A estimativa bootstrap do viés de \(\hat{\theta}\) é dada por: \[\begin{align}\\
\widehat{\text{Viés}}_{\text{boot}} = \frac{1}{B} \sum_{b=1}^B \hat{\theta^*}^{(b)} - \hat{\theta} = \hat{\theta}_{\text{boot}} - \hat{\theta}\\\\
\end{align}\] Por outro lado, a estimativa bootstrap do erro quadrático médio de \(\hat{\theta}\) é dada por: \[\begin{align}\\
\widehat{\text{EQM}}_{\text{boot}} = \frac{1}{B} \sum_{b=1}^B \left( \hat{\theta^*}^{(b)} - \hat{\theta} \right)^2 + \left(\widehat{\text{Viés}}_{\text{boot}}\right)^2\\\\
\end{align}\]
Exemplo 5.6 (Estimativa do Viés e EQM via Bootstrap da Mediana de Dados Assimétricos). Considere um estudo sobre o tempo de espera em um serviço de urgência hospitalar, cujo objetivo é estimar a mediana do tempo de atendimento \((\theta = \text{mediana}(T))\). Suponha-se que os tempos de espera seguem uma distribuição exponencial com média 1, ou seja, \(T \sim \text{Exp}(1)\), o que caracteriza uma distribuição assimétrica à direita, e que uma amostra aleatória simples de tamanho \(n = 25\) é coletada, representando os tempos observados, e que a mediana amostral correspondente é denotada por:
Como a distribuição amostral de \(\hat{\theta}\) é desconhecida e sensível à assimetria dos dados, aplica-se o método bootstrap não-paramétrico para avaliar empiricamente a variabilidade e o viés da estimativa. O procedimento consiste em gerar \(B = 2000\) reamostragens com reposição da amostra observada e, para cada reamostragem \(b = 1, \ldots, B\), calcular a mediana correspondente \(\hat{\theta^*}^{(b)}\). Com essas replicações, estima-se o viés bootstrap como a diferença média entre as estatísticas reamostradas e o valor original \(\hat{\theta}\), e o erro quadrático médio bootstrap (EQM) como a média dos quadrados dos desvios entre \(\hat{\theta^*}^{(b)}\) e \(\hat{\theta}\), ajustada pelo viés estimado, conforme estabelecido na Definição 5.4. Essas medidas, em particular, oferecem uma avaliação empírica da precisão da mediana estimada em contextos com pequenas amostras e forte assimetria. Como a mediana teórica da distribuição exponencial é \(\log(2) \approx 0{.}693\), a comparação entre \(\hat{\theta}\) e esse valor, juntamente com a análise do viés bootstrap, permite identificar possíveis tendências sistemáticas — como uma subestimação recorrente da mediana verdadeira. O Código 5.7 apresenta, em ambiente R, uma rotina que descreve esse procedimento.
Código 5.7. Estimativa bootstrap do viés e do erro quadrático médio de \(\hat\theta\) referente a mediana amostral do tempo de espera em um serviço de urgência hospitalar.
# -------------------------------------------------------------------------------------------------------------------# Viés e Erro Quadrático Médio no Bootstrap da Mediana Amostral do Tempo de Espera em Serviço de Urgência Hospitalar# -------------------------------------------------------------------------------------------------------------------# --- 0. Pacotes necessários ---library(knitr)# --- 1. Definir os parâmetros da simulação ---set.seed(123) # Reprodutibilidaden <-25# Tamanho da amostraB <-2000# Número de reamostragens bootstraplambda <-1# Parâmetro da distribuição exponencialtheta_verdadeiro <-log(2) # Mediana populacional da Exp(1)# --- 2. Gerar a amostra original: tempos de espera em serviço de urgência com distribuição exponencial com λ = 2 ---amostra <-rexp(n, rate = lambda)# --- 3. Estimativa pontual da mediana amostral ---theta_hat <-median(amostra)# --- 4. Procedimento bootstrap ---theta_boot <-numeric(B)for (b in1:B){ reamostra <-sample(amostra, size = n, replace =TRUE) theta_boot[b] <-median(reamostra)}theta_boot_med <-mean(theta_boot)# --- 5. Cálculo do viés e erro quadrático médio (EQM) ---viés_boot <-mean(theta_boot) - theta_hatvar_boot <-mean((theta_boot - theta_hat)^2)EQM_boot <- var_boot + viés_boot# --- 6. Resultados ---res <-data.frame(row.names =c("Estimativa Pontual da Mediana","Estimativa Bootstrap da Mediana","Mediana Populacional","Estimativa do Viés (bootstrap)","Estimativa do EQM (bootstrap)"),Estimativa =round(c(theta_hat, theta_boot_med, theta_verdadeiro, viés_boot, EQM_boot), 4))kable(res,align ='c',escape =FALSE,format ='html',col.names =c('Estimativa'))
Diferentemente do bootstrap não-paramétrico, que baseia a reamostragem exclusivamente na redistribuição dos dados observados, o método paramétrico pressupõe que os dados seguem uma distribuição de probabilidade plenamente especificada, cujos parâmetros são previamente estimados a partir da amostra original. No procedimento paramétrico, gera-se um grande número de amostras sintéticas simuladas sob o modelo probabilístico ajustado, replicando, assim, o mecanismo estocástico que se supõe ter gerado os dados observados. Para cada amostra simulada, recalcula-se o estimador de interesse, obtendo-se uma distribuição empírica que permite estimar características como viés, variância e quantis necessários para a construção de intervalos de confiança. A principal vantagem desse método é a incorporação explícita do conhecimento sobre a distribuição subjacente dos dados, o que pode resultar em estimativas mais eficientes, sobretudo em amostras pequenas ou moderadas. Entretanto, a validade do método depende fortemente da adequação do modelo paramétrico escolhido, tornando imprescindível a verificação prévia do ajuste do modelo às características empíricas dos dados.
Definição 5.7 (Bootstrap Paramétrico - Efron 1982; Efron e Tibshirani 1994; Shao e Tu 2012). Seja \(\mathbf{x} = (x_1, \dots, x_n)\) uma amostra aleatória proveniente de uma distribuição \(F_\theta\), parametrizada por \(\theta\), e seja \(\hat{\theta} = s(\mathbf{x})\) um estimador de interesse obtido por meio de uma função estatística \(s(\cdot)\). No , em vez de reamostrar da distribuição empírica \(\hat{F}_n\), assume-se um modelo paramétrico para \(F\), cuja forma funcional é conhecida, mas cujos parâmetros são desconhecidos. Esses parâmetros são estimados a partir da amostra observada, originando a distribuição estimada \(F_{\hat{\theta}}\). A estimativa bootstrap do erro-padrão de \(\hat{\theta}\), baseada em \(B\) replicações bootstrap simuladas a partir de \(F_{\hat{\theta}}\), é dada por: \[\begin{align}\\
\hat{\text{se}}_B = \sqrt{\frac{1}{B-1} \sum_{b=1}^B \left( \hat{\theta}^{*(b)} - \hat{\theta}^* \right)^2},\\\\
\end{align}\] em que:
\(B\) é o número de replicações bootstrap,
\(\hat{\theta}^{*(b)} = s(\mathbf{x}^{*(b)})\) é a réplica bootstrap da estatística, obtida a partir da amostra simulada \(\mathbf{x}^{*(b)} \sim F_{\hat{\theta}}\),
\(\hat{\theta}^* = \frac{1}{B} \sum_{b = 1}^B \hat{\theta}^{*(b)}\) é a média das replicações bootstrap da estatística.
Exemplo 5.7. Considere um experimento em que se observa o número de sucessos em \(k = 15\) tentativas repetidas de um mesmo processo binomial, cuja probabilidade de sucesso \(\theta\) é desconhecida. Suponha que uma amostra de \(n = 6\) observações desse experimento tenha produzido os seguintes resultados: 3, 5, 7, 9, 11 e 13 sucessos. Nosso objetivo é estimar o valor de \(\theta\) com base nessa amostra. Um estimador natural para esse fim é o estimador de máxima verossimilhança (MLE), dado por: \[\begin{align}\\
\hat{\theta} = \frac{\bar{x}}{k},\\\\
\end{align}\] onde \(\bar{x}\) é a média aritmética das observações da amostra. Além de obter uma estimativa pontual para \(\theta\), também estamos interessados em quantificar a precisão dessa estimativa. Para isso, utilizamos o método de bootstrap paramétrico, que procede da seguinte forma:
1ª Etapa: Assume-se que a distribuição verdadeira dos dados pode ser razoavelmente aproximada pela distribuição \(\text{Binomial}(k, \hat{\theta})\), em que \(\hat{\theta}\) é a estimativa obtida a partir da amostra observada.
2ª Etapa: A partir dessa distribuição teórica ajustada, geram-se \(B\) amostras independentes, cada uma com \(n\) observações, simuladas da distribuição binomial com parâmetros \(k\) e \(\hat{\theta}\).
3ª Etapa: Para cada uma das \(B\) amostras geradas, calcula-se a estatística de interesse (neste caso, uma nova estimativa \(\hat{\theta}^{*(b)}\)).
4ª Etapa: As \(B\) réplicas da estatística são então utilizadas para estimar o erro-padrão de \(\hat{\theta}\) por meio da seguinte expressão: \[\begin{align}\\
\hat{\text{se}}_B = \sqrt{\frac{1}{B-1} \sum_{b=1}^{B} \left( \hat{\theta}^{*(b)} - \hat{\theta}^* \right)^2},\\\\
\end{align}\] em que \(\hat{\theta}^* = \frac{1}{B} \sum_{b=1}^{B} \hat{\theta}^{*(b)}\) é a média das estimativas bootstrap.
O Código 5.8 apresenta, em ambiente R, uma rotina que descreve esse procedimento.
Código 5.8. Ilustração do bootstrap paramétrico para estimar o erro-padrão do parâmetro \(\theta\) da distribuição binomial em questão.
# -------------------------------------------------------------------# Bootstrap Paramétrico: Erro-Padrão do MLE da Distribuição Binomial# -------------------------------------------------------------------# --- 0. Pacotes necessários ---library(knitr)# --- 1. Definir os parâmetros e a amostra original ---k <-15amostra <-c(3, 5, 7, 9, 11, 13)n <-length(amostra)# --- 2. Estimativa de máxima verossimilhança para θ ---theta_hat <-mean(amostra) / k# --- 3. Geração de amostras bootstrap paramétricas ---set.seed(123)B <-1000theta_boot <-replicate(B, {x_star <-rbinom(n, size = k, prob = theta_hat)mean(x_star) / k})theta_b_hat <-mean(theta_boot)# --- 4. Estimativa bootstrap do erro-padrão ---se_boot <-sd(theta_boot)# --- 5. Resultados ---res <-data.frame(row.names =c("Estimativa MLE de θ","Estimativa Bootstrap de θ","Erro-Padrão Bootstrap"),Estimativa =round(c(theta_hat, theta_b_hat, se_boot), 4))kable(res,align ='c',escape =FALSE,format ='html',col.names =c('Estimativa'))
Exemplo 5.8 (Modelo de Regressão Linear). Um modelo de regressão linear possui, em sua forma escalar, a seguinte estrutura: \[\begin{align}\\
y_i = \beta_0 + \sum_{j=1}^p \beta_j x_{ij} + \epsilon_i\\\\
\end{align}\] em que \(y_i\), para \(i = 1, \dots, n\), são as observações da variável resposta; \(x_{ij}\) representam as observações das variáveis preditoras; \(\beta_k\), com \(k = 0, \dots, p\), são os parâmetros de regressão; e os erros \(\epsilon_i \sim N(0, \sigma^2)\) são assumidos como independentes e homocedásticos. A partir desse modelo, obtém-se que a média condicional de \(y_i\) dado \(\mathbf{x}_i = (x_{i1}, \dots, x_{ip})^\top\) é: \[\begin{align}\\
E[y_i \mid \mathbf{x}_i] = \beta_0 + \sum_{j=1}^p \beta_j x_{ij}\\\\
\end{align}\] e a variância condicional de \(y_i\) dado \(\mathbf{x}_i\) é \(\text{Var}(y_i \mid \mathbf{x}_i) = \sigma^2\). Por simplicidade, o modelo pode ser reescrito na forma matricial: \[\begin{align}\\
\mathbf{y} = \mathbf{X} \beta + \epsilon \quad \rightarrow \quad
\begin{bmatrix} y_1 \\ y_2 \\ \vdots \\ y_n \end{bmatrix} =
\begin{bmatrix} 1 & x_{11} & \dots & x_{1p} \\
1 & x_{21} & \dots & x_{2p} \\
\vdots & \vdots & \ddots & \vdots \\
1 & x_{n1} & \dots & x_{np}
\end{bmatrix}
\begin{bmatrix} \beta_0 \\ \beta_1 \\ \vdots \\ \beta_p \end{bmatrix} +
\begin{bmatrix} \epsilon_1 \\ \epsilon_2 \\ \vdots \\ \epsilon_n \end{bmatrix}\\\\
\end{align}\] de modo que \(E(\mathbf{y} \mid \mathbf{X}) = \mathbf{X} \beta\) e \(\text{Cov}(\mathbf{y} \mid \mathbf{X}) = \sigma^2 \mathbf{I}_n\), onde \(\mathbf{I}_n\) é a matriz identidade de ordem \(n\). Os parâmetros são estimados pelo método dos mínimos quadrados ordinários, o qual consiste em minimizar: \[\begin{align}\\
Z^2 = \lVert \mathbf{y} - \mathbf{X} \beta \rVert^2\\\\
\end{align}\] em que \(\lVert \cdot \rVert\) representa a norma Euclidiana. A solução deste problema leva ao estimador dos mínimos quadrados ordinários para o vetor de parâmetros \(\beta\): \[\begin{align}\\
\hat{\beta} = (\mathbf{X}^\top \mathbf{X})^{-1} \mathbf{X}^\top \mathbf{y}\\\\
\end{align}\] Se os pressupostos do modelo forem válidos, o valor esperado do vetor de coeficientes é: \[\begin{align}\\
E[\hat{\beta}] &= E[(\mathbf{X}^\top \mathbf{X})^{-1} \mathbf{X}^\top \mathbf{y}] \\\\
&= (\mathbf{X}^\top \mathbf{X})^{-1} \mathbf{X}^\top \mathbf{X} E[\mathbf{y}] = \beta\\\\
\end{align}\] uma vez que \(E[\mathbf{y}] = \mathbf{X} \beta\). Assim, \(\hat{\beta}\) é um estimador não-viciado para o vetor de parâmetros \(\beta\). Por sua vez, a matriz de covariância de \(\hat{\beta}\) é dada por: \[\begin{align}\\
\text{Cov}(\hat{\beta}) &= \text{Cov}((\mathbf{X}^\top \mathbf{X})^{-1} \mathbf{X}^\top \mathbf{y}) \\\\
&= (\mathbf{X}^\top \mathbf{X})^{-1} \text{Cov}(\mathbf{y}) \mathbf{X} (\mathbf{X}^\top \mathbf{X})^{-1} \\\\
&= \sigma^2 (\mathbf{X}^\top \mathbf{X})^{-1}\\\\
\end{align}\] pois \(\text{Cov}(\mathbf{y}) = \sigma^2 \mathbf{I}_n\). Nesse modelo, o uso do método bootstrap tem aplicação especialmente relevante na análise de resíduos. Para tanto, seguem-se as etapas descritas a seguir:
1º Passo: Criar uma amostra bootstrap independente \(\hat{\epsilon}_i^*\) a partir de \(\{\hat{\epsilon}_1, \dots, \hat{\epsilon}_n \}\) e defina \(y_i^* = \hat{y}_i + \hat{\epsilon}_i^*\) para \(i=1, \dots, n\).
2º Passo: Calcular a estatística \(\hat{\beta}^* = (\mathbf{X}^\top \mathbf{X})^{-1} \mathbf{X}^\top \mathbf{y}^*\), onde \(\mathbf{y}^* = (y_1^*, \dots, y_n^*)^\top\) é uma amostra bootstrap do vetor referente à variável resposta.
3º Passo: Repita os passos anteriores um total de \(B\) vezes para formar a distribuição bootstrap de \(\hat{\beta}\).
Para ilustrar estas etapas, serão considerados dois casos: erros homocedásticos e erros heterocedásticos. As rotinas apresentadas a seguir, implementadas no ambiente R, descrevem ambas as situações, sendo o Código 5.9 referente ao caso homocedástico e o Código 5.10 ao caso heterocedástico.
Código 5.9. Implementação do bootstrap paramétrico em regressão linear sob a hipótese de erros homocedásticos.
# -----------------------------------------------------------------# Bootstrap Paramétrico: Regressão Linear com Erros Homocedásticos# -----------------------------------------------------------------# --- 0. Pacotes necessários ---library(nptest)library(knitr)# --- 1. Gerar dados aleatórios do modelo de regressão linear com β₀ = 0 e β₁ = 1 ---set.seed(1)n <-1000x <-seq(0, 1, length.out = n)y <- x +rnorm(n)# --- 2. Preparar os dados para o bootstrap dos resíduos da regressão ---xmat <-cbind(1, x)xinv <-solve(crossprod(xmat)) %*%t(xmat)fit <- xmat %*% xinv %*% ydata <-list(fit = fit, resid = y - fit, xinv = xinv, x = x)# --- 3. Definir a estatística de interesse (coeficientes do modelo) ---statfun <-function(x, data) { ynew <- data$fit + data$resid[x] coef <-as.numeric(data$xinv %*% ynew)names(coef) <-c("(Intercept)", "x")return(coef)}# --- 4. Definir a função de reamostragem 'jackknife' (necessária para np.boot) ---jackfun <-function(x, data){ ynew <- data$fit[x] + data$resid[x] xmat <-cbind(1, data$x[x]) xinv <-solve(crossprod(xmat)) %*%t(xmat) coef <-as.numeric(xinv %*% ynew)names(coef) <-c("(Intercept)", "x")return(coef)}# --- 5. Aplicar o método bootstrap usando a função np.boot do pacote nptest ---res <-np.boot(x =1:n, statistic = statfun, data = data, jackknife = jackfun)# --- 6. Resultados ---res
Nonparametric Bootstrap of Multivariate Statistic
using R = 9999 bootstrap replicates
(Intercept) x
t0: 0.0353 0.9061
SE: 0.0649 0.1111
Bias: 0.0000 0.0003
95% BCa Confidence Intervals:
(Intercept) x
lower -0.0920 0.6883
upper 0.1639 1.1270
Código 5.10. Implementação do bootstrap paramétrico em regressão linear sob a hipótese de erros heterocedásticos.
# -------------------------------------------------------------------# Bootstrap Paramétrico: Regressão Linear com Erros Heterocedásticos# -------------------------------------------------------------------# --- 0. Pacotes necessários ---library(nptest)library(knitr)# --- 1. Gerar dados aleatórios do modelo de regressão linear com β₀ = 0 e β₁ = 1 # assumindo agora que os erros possuem variâncias heterocedásticas, dadas por:# σ² = 1 + 4*(x - 0.5)² ---set.seed(1)n <-1000x <-seq(0, 1, length.out = n)y <- x +rnorm(n, sd =sqrt(1+4* (x -0.5)^2))data <-data.frame(x = x, y = y)# --- 2. Definir a estatística de interesse (coeficientes do modelo) ---statfun <-function(x, data) { xmat <-cbind(1, data$x[x]) xinv <-solve(crossprod(xmat)) %*%t(xmat) coef <-as.numeric(xinv %*% data$y[x])names(coef) <-c("(Intercept)", "x")return(coef)}# --- 3. Aplicar o método bootstrap usando a função np.boot do pacote nptest ---res <-np.boot(x =1:n, statistic = statfun, data = data)# --- 4. Resultados ---res
Nonparametric Bootstrap of Multivariate Statistic
using R = 9999 bootstrap replicates
(Intercept) x
t0: 0.0486 0.8848
SE: 0.0748 0.1368
Bias: 0.0005 -0.0007
95% BCa Confidence Intervals:
(Intercept) x
lower -0.0983 0.6208
upper 0.1928 1.1555
Seja \(Q(\mathbf{X} \mid \theta)\) uma quantidade pivotal qualquer. Para cada \(\alpha \in (0, 1)\), existem constantes \(a\) e \(b\), independentes de \(\theta\), tais que \[\begin{align}\\
P_\theta\left(a \leqslant Q(\mathbf{X} \mid \theta) \leqslant b\right) \geqslant 1 - \alpha\\\\
\end{align}\]
Dessa forma, para cada \(\theta_0 \in \Theta\), o conjunto \[\begin{align}\\
C(\mathbf{x}) = \left\{ \theta_0 : a \leqslant Q(\mathbf{x} \mid \theta_0) \leqslant b \right\}\\\\
\end{align}\]
define um conjunto de confiança com nível \(100(1 - \alpha)\%\) para \(\theta_0 \in \Theta\), também denominado intervalo de confiança de \(100(1 - \alpha)\%\). O valor de \(\alpha\) corresponde, nesse contexto, ao nível de significância associado ao intervalo. No caso da média populacional, por exemplo, uma quantidade pivotal comum é dada por \[\begin{align}\\
Q(\mathbf{X} \mid \mu, \sigma) = \frac{\overline{X} - \mu}{\sigma / \sqrt{n}}\\\\
\end{align}\] a qual segue uma distribuição normal padrão sob a suposição de normalidade dos dados e conhecimento de \(\sigma\). Com base nessa quantidade pivotal, um intervalo de confiança de \(100(1 - \alpha)\%\) para a média \(\mu\) é expresso por: \[\begin{align}\\
C(\mathbf{x}) = IC_{100(1 - \alpha)\%}(\mu) = \left[ \overline{X} - z_{(1 - \alpha / 2)} \frac{\sigma}{\sqrt{n}}, \; \overline{X} + z_{(1 - \alpha / 2)} \frac{\sigma}{\sqrt{n}} \right]\\\\
\end{align}\] em que \(z_{(1 - \alpha / 2)}\) representa o quantil da distribuição normal padrão correspondente ao nível de confiança especificado. No contexto do método bootstrap, no entanto, a forma de cálculo dos intervalos de confiança sofre algumas modificações essenciais, especialmente pelo fato de que, em geral, não se dispõe de uma quantidade pivotal com distribuição conhecida. Em vez disso, a ideia central é utilizar a distribuição empírica da estatística de interesse, obtida a partir das reamostragens com reposição dos dados observados, para aproximar a incerteza associada ao estimador. Nesse cenário, diversos métodos de construção de intervalos de confiança via bootstrap foram propostos, cada um com características próprias e distintos níveis de precisão. Entre os principais, destacam-se os seguintes cinco tipos: aproximação normal, percentil, básico (ou pivotal), bootstrap-t (Student), e bias-corrected and accelerated (BCA).
Definição 5.8 (Aproximação Normal). Considere um parâmetro \(\theta\) e seu estimador \(\hat{\theta}\), obtido a partir de uma amostra \(\mathbf{x} = (x\_1, \dots, x\_n)\). Suponha que realizamos \(B\) reamostragens bootstrap e, para cada uma, calculamos a estatística correspondente \(\hat{\theta}_b^*\), com \(b = 1, \dots, B\). O erro-padrão bootstrap do estimador, neste caso, é então definido por: \[\begin{align}\\
se_B(\hat{\theta}) = \sqrt{ \frac{1}{B - 1} \sum_{b = 1}^{B} (\hat{\theta^*}^{(b)} - \bar{\theta}^*)^2 }\\\\
\end{align}\] em que \(\bar{\theta}^* = \frac{1}{B} \sum_{b=1}^B \hat{\theta}_b^*\) é a média das estimativas bootstrap. Logo, o intervalo de confiança normal via bootstrap para \(\theta\) com nível de confiança \(100(1 - \alpha)%\) é dado por: \[\begin{align}\\
IC^{\text{Normal}}_{100(1 - \alpha)\%}(\theta) = \left[ \hat{\theta} - z_{1 - \alpha/2} \cdot se_B(\hat{\theta}),\ \hat{\theta} + z_{1 - \alpha/2} \cdot se_B(\hat{\theta}) \right]\\\\
\end{align}\] em que \(z_{1 - \alpha/2}\) é o quantil superior da distribuição normal padrão. Isto é, o intervalo de confiança normal via bootstrap é obtido “trocando-se” a estimativa do erro-padrão clássica pela estimativa do erro-padrão bootstrap.
Exemplo 5.9. Suponha que um engenheiro coletou uma amostra de tamanho reduzido, composta por cinco observações referentes ao tempo (em minutos) necessário para que um processo de fabricação atinja a temperatura ideal de operação. Os dados observados são:
Devido ao pequeno tamanho amostral e à ausência de informações prévias acerca da distribuição populacional subjacente, o engenheiro opta por utilizar o método bootstrap para estimar a média populacional \(\mu\) e construir um intervalo de confiança com nível de 95%. O procedimento adotado baseia-se na geração de \(B=1000\) reamostragens com reposição a partir da amostra original, em cada uma das quais calcula-se a média amostral correspondente. A estimativa pontual para \(\mu\) é obtida pela média da amostra original, enquanto o erro-padrão do estimador é estimado pela variabilidade das médias calculadas nas reamostragens bootstrap. Com base nesses resultados, constrói-se o intervalo de confiança aproximado utilizando a distribuição normal padrão, conforme a equação:
onde \(\hat{\mu}\) é a média amostral, \(se_B\) é o erro-padrão estimado pelo bootstrap, e \(z_{1 - \alpha/2}\) representa o quantil da distribuição normal padrão associado ao nível de confiança desejado (para 95%, \(z_{0.975} \approx 1.96\)). O Código 5.11 apresenta, em ambiente R, uma implementação detalhada desse procedimento.
Código 5.11. Implementação do procedimento bootstrap para cálculo do intervalo de confiança, baseado na aproximação normal, para o tempo médio do processo de fabricação até atingir a temperatura ideal de operação.
# -----------------------------------------------------# Intervalo de Confiança Bootstrap: Aproximação Normal# -----------------------------------------------------# --- 0. Pacotes necessários ---library(knitr)library(ggplot2)# --- 1. Definir a amostra e parâmetros ---x <-c(2.1, 3.5, 4.0, 5.6, 7.8)n <-length(x)B <-1000theta_hat <-mean(x)# --- 2. Reamostragem bootstrap da média ---set.seed(123)media_boot <-replicate(B, {x_star <-sample(x, size = n, replace =TRUE)mean(x_star)})# --- 3. Estimativas bootstrap da média e erro-padrão ---theta_boot <-mean(media_boot)se_boot <-sd(media_boot)# --- 4. Função para calcular intervalo de confiança bootstrap por aproximação normal ---ic_boot_normal <-function(estimator, se, alpha =0.05) { z_alpha <-qnorm(1- alpha/2) IC_inf <- estimator - z_alpha * se IC_sup <- estimator + z_alpha * sereturn(c(Limite_Inferior = IC_inf, Limite_Superior = IC_sup))}# --- 5. Cálculo do intervalo de confiança ---IC_normal <-ic_boot_normal(theta_hat, se_boot, alpha =0.05)IC_inferior <- IC_normal[1]IC_superior <- IC_normal[2]# --- 6. Resultados ---res <-data.frame(Estimativa =round(theta_hat, 4),Erro_Padrao =round(se_boot, 4),Limite_Inferior_IC =round(IC_inferior, 4),Limite_Superior_IC =round(IC_superior, 4),row.names ="Média Amostral")kable(res,align ='c',escape =FALSE,format ='html',col.names =c("Estimativa", "Erro-Padrão Bootstrap", "Limite Inferior (IC 95%)", "Limite Superior (IC 95%)"))
Figura 5.5.. Histograma da distribuição bootstrap e intervalo de confiança de 95%, baseado na aproximação normal, para o tempo médio do processo de fabricação até atingir a temperatura ideal de operação.
Definição 5.9 (Percentil). Este método se baseia diretamente na distribuição empírica da estatística de interesse gerada pelas reamostragens bootstrap. Dado um número fixo de reamostragens \(B\), geram-se as estimativas \(\hat{\theta}_1^*, \hat{\theta}_2^*, \dots, \hat{\theta}_B^*\). A partir dessa amostra empírica, define-se o intervalo de confiança de \(100(1 - \alpha)%\) como: \[\begin{align}\\
IC^{\text{Percentil}}_{100(1 - \alpha)\%}(\theta) = \left[ \hat{\eta_{\theta^*}}_{\alpha/2},\ \hat{\eta_{\theta^*}}_{(1 - \alpha/2)} \right]\\\\
\end{align}\] em que \(\hat{\eta_{\theta^*}}_{\gamma}^*\) representa o quantil de ordem \(\gamma\) da distribuição bootstrap de \(\hat{\theta}^*\).
Exemplo 5.10. Um analista ambiental monitora a concentração de um poluente em amostras de água coletadas em uma bacia hidrográfica. A amostra observada, composta por seis medidas, é dada por:
proveniente de uma população com média desconhecida \(\mu\). Diante da incerteza quanto à distribuição dos dados e visando evitar pressupostos paramétricos, o analista opta por construir um intervalo de confiança para \(\mu\) utilizando o método bootstrap do percentil. Esse procedimento consiste em gerar \(B\) reamostragens com reposição a partir da amostra original. Para cada reamostragem, calcula-se a média amostral, formando o conjunto:
A estimativa pontual para a média populacional \(\mu\) é dada pela média amostral da amostra original, enquanto o erro-padrão é estimado pela variabilidade das médias das reamostragens bootstrap. Assim, o intervalo de confiança com nível de confiança \((1-\alpha) \cdot 100%\) é construído por meio dos quantis empíricos de ordem \(\alpha/2\) e \(1 - \alpha/2\) da distribuição amostral das médias bootstrap, ou seja:
onde \(\hat{q}_{p}\) denota o quantil empírico de ordem \(p\) do conjunto \({\overline{x}_1^*, \ldots, \overline{x}_B^*}\). O Código 5.12 apresenta, em ambiente R, uma implementação detalhada desse procedimento.
Código 5.12. Implementação do procedimento bootstrap para cálculo do intervalo de confiança baseado no método do percentil, aplicado à concentração média do poluente.
# --------------------------------------------# Intervalo de Confiança Bootstrap: Percentil# --------------------------------------------# --- 0. Pacotes necessários ---library(knitr)library(ggplot2)# --- 1. Definir a amostra e parâmetros ---x <-c(4.1, 5.3, 3.8, 4.7, 5.0, 4.9)n <-length(x)B <-1000theta_hat <-mean(x)# --- 2. Reamostragem bootstrap da média ---set.seed(123)media_boot <-replicate(B, mean(sample(x, size = n, replace =TRUE)))# --- 3. Estimativas bootstrap da média e erro-padrão ---theta_boot <-mean(media_boot)se_boot <-sd(media_boot)# --- 4. Função para calcular intervalo de confiança bootstrap por percentil ---ic_boot_percentil <-function(bootstrap_values, alpha =0.05) { IC_inf <-quantile(bootstrap_values, probs = alpha/2) IC_sup <-quantile(bootstrap_values, probs =1- alpha/2)return(c(Limite_Inferior = IC_inf, Limite_Superior = IC_sup))}# --- 5. Cálculo do intervalo de confiança ---IC_percentil <-ic_boot_percentil(media_boot, alpha =0.05)IC_inferior <- IC_percentil[1]IC_superior <- IC_percentil[2]# --- 6. Resultados ---res <-data.frame(Estimativa =round(theta_hat, 4),Erro_Padrao =round(se_boot, 4),Limite_Inferior_IC =round(IC_inferior, 4),Limite_Superior_IC =round(IC_superior, 4),row.names ="Média Amostral")kable(res,align ='c',escape =FALSE,format ='html',col.names =c("Estimativa", "Erro-Padrão Bootstrap", "Limite Inferior (IC 95%)", "Limite Superior (IC 95%)"))
Figura 5.6.. Histograma da distribuição bootstrap e intervalo de confiança de 95%, baseado no método do percentil, aplicado à concentração média do poluente.
Definição 5.10 (Básico). O método bootstrap básico (também conhecido como percentil reverso) parte do pressuposto de que a distribuição do erro da estimativa \(\hat{\theta}^* - \hat{\theta}\), obtida via reamostragem, pode ser usada para construir intervalos de confiança para o parâmetro \(\theta\). A ideia central é inverter a lógica do método percentil, refletindo os quantis em torno da estimativa observada. Neste caso, dado um conjunto de estimativas bootstrap \(\hat{\theta}_1^*, \dots, \hat{\theta}_B^*\), define-se o intervalo de confiança de \(100(1 - \alpha)%\) como: \[\begin{align}\\
IC^{\text{Básico}}_{100(1 - \alpha)\%}(\theta) = \left[ 2\hat{\theta} - \hat{\eta_{\theta^*}}_{(1 - \alpha/2)},\ 2\hat{\theta} - \hat{\eta_{\theta^*}}_{\alpha/2} \right]\\\\
\end{align}\] em que \(\hat{\eta_{\theta^*}}_{\gamma}\) representa o quantil de ordem \(\gamma\) da distribuição bootstrap de \(\hat{\theta}^* - \hat\theta\).
Exemplo 5.11. Um pesquisador clínico investiga o tempo médio de resposta ao tratamento, em minutos, em um grupo de pacientes com determinada condição médica. A amostra aleatória observada é composta pelos tempos:
obtida de uma população com média desconhecida \(\mu\). Considerando o pequeno tamanho amostral e a ausência de pressupostos paramétricos rigorosos acerca da distribuição dos tempos de resposta, o pesquisador opta por utilizar o método bootstrap para construir um intervalo de confiança para \(\mu\). Em particular, escolhe-se o intervalo bootstrap básico (também denominado percentil reverso), caracterizado por ser simétrico em torno da estimativa pontual original. O procedimento envolve a geração de \(B=1000\) reamostragens com reposição a partir da amostra original. Para cada reamostragem, calcula-se a média amostral correspondente, gerando a distribuição bootstrap das médias, a qual é utilizada para determinar os quantis que, ao serem refletidos em relação à estimativa pontual, definem os limites inferior e superior do intervalo de confiança. Formalmente, denotando por \(\hat{\mu}\) a média amostral original e por \({\overline{x}_1^*, \ldots, \overline{x}_B^*}\) as médias das reamostragens, o intervalo bootstrap básico com nível de confiança \((1-\alpha) \cdot 100%\) é dado por:
onde \(\hat{q}_{p}^*\) representa o quantil empírico de ordem \(p\) da distribuição bootstrap. Neste caso, tem-se que a estimativa pontual para \(\mu\) é a média amostral da amostra original, e o erro-padrão é estimado a partir da variabilidade das médias bootstrap. O Código 5.13 apresenta, em ambiente R, uma rotina que descreve esse procedimento.
Código 5.13. Implementação do procedimento bootstrap para cálculo do intervalo de confiança básico (percentil reverso) aplicado ao tempo médio de resposta ao tratamento de pacientes com determinada condição médica.
Figura 5.7.. Histograma da distribuição bootstrap e intervalo de confiança de 95% básico (percentil reverso) aplicado ao tempo médio de resposta ao tratamento de pacientes com determinada condição médica.
Definição 5.11 (t de Student). O método bootstrap t de Student é uma abordagem baseada na construção empírica da distribuição do erro padronizado da estimativa, definida por meio da estatística: \[\begin{align}\\
t^* = \dfrac{\hat{\theta}^* - \hat{\theta}}{\hat{\sigma}^*/\sqrt{n}}\\\\
\end{align}\] em que \(\hat{\theta}^*\) é a estimativa bootstrap do parâmetro \(\theta\), e \(\hat{\sigma}^*\) representa a estimativa bootstrap do erro padrão da estatística de interesse. Esse método busca capturar a variabilidade relativa de \(\hat{\theta}^*\) em torno de \(\hat{\theta}\), com base na distribuição empírica dos valores \(t_1^*, t_2^*, \dots, t_B^*\) obtidos por reamostragem. O intervalo de confiança para \(\theta\) com nível de confiança \(100(1 - \alpha)\%\) é então definido como: \[\begin{align}\\
IC^{t}_{100(1 - \alpha)\%}(\theta) = \left[ \hat{\theta} - t^*_{(1 - \alpha/2)} \cdot \dfrac{\hat{\sigma}}{\sqrt{n}},\ \hat{\theta} - t^*_{(\alpha/2)} \cdot \dfrac{\hat{\sigma}}{\sqrt{n}} \right]\\\\
\end{align}\] em que \(\hat{\sigma}\) é o erro padrão amostral calculado a partir dos dados originais e \(t^*_\gamma\) denota o quantil de ordem \(\gamma\) da distribuição bootstrap do estatístico \(t^*\).
Exemplo 5.12. Um pesquisador visa estimar o tempo médio, em minutos, que usuários levam para concluir uma tarefa específica em um aplicativo de internet banking, tal como realizar uma transferência entre contas. Para tanto, foi coletada uma amostra aleatória de tamanho \(n=6\), composta pelos tempos registrados durante testes com usuários reais:
Dada a reduzida dimensão amostral e a ausência de pressupostos acerca da distribuição populacional, o pesquisador opta por construir um intervalo de confiança para a média populacional \(\mu\) utilizando o método bootstrap combinado com a distribuição \(t\) de Student. Essa abordagem, em particular, permite incorporar a variabilidade relativa à estimativa por meio da estatística \(t\) padronizada. Sendo assim, o procedimento consiste em gerar \(B=1000\) reamostragens com reposição a partir da amostra original. Para cada reamostragem, calcula-se a média amostral e o desvio padrão correspondente, a partir dos quais é obtida a estatística \(t\) padronizada definida por:
onde \(\overline{x}^*\) e \(s^*\) são a média e o desvio padrão da reamostragem, respectivamente, e \(\hat{\mu}\) é a média da amostra original. Neste caso, a estimativa pontual para \(\mu\) é dada pela média amostral original, enquanto o erro-padrão é estimado via bootstrap. Os quantis empíricos da distribuição bootstrap das estatísticas \(t^*\) são então utilizados para construir os limites do intervalo de confiança com nível de confiança \((1-\alpha) \cdot 100%\). O Código 5.14 apresenta, em ambiente R, uma rotina detalhada desse procedimento.
Código 5.14. Implementação do procedimento bootstrap para cálculo do intervalo de confiança do tipo t de Student, aplicado à avaliação do tempo médio que usuários levam para concluir uma tarefa em um aplicativo de internet banking.
# -----------------------------------------------# Intervalo de Confiança Bootstrap: t de Student# -----------------------------------------------# --- 0. Pacotes necessários ---library(knitr)library(ggplot2)# --- 1. Definir a amostra e parâmetros ---x <-c(12.4, 11.9, 13.1, 12.7, 12.0, 13.4) # tempos em minutosn <-length(x)B <-1000theta_hat <-mean(x)sigma_hat <-sd(x)# --- 2. Reamostragem bootstrap das estatísticas ---set.seed(123)boot_stats <-replicate(B, { sample_i <-sample(x, size = n, replace =TRUE) mean_i <-mean(sample_i) sd_i <-sd(sample_i)c(mean = mean_i, sd = sd_i)})# --- 3. Cálculo das estatísticas t* bootstrap ---t_star <- (boot_stats["mean", ] - theta_hat) / (boot_stats["sd", ] /sqrt(n))# --- 4. Estimativas bootstrap da média e erro-padrão ---theta_boot <-mean(boot_stats["mean", ])se_boot <-sd(boot_stats["mean", ])# --- 5. Função para calcular intervalo de confiança bootstrap via t de Student ---ic_boot_t_student <-function(t_values, estimator, sigma_hat, n, alpha =0.05) { t_inf <-quantile(t_values, 1- alpha/2) t_sup <-quantile(t_values, alpha/2) IC_inf <- estimator - t_inf * (sigma_hat /sqrt(n)) IC_sup <- estimator - t_sup * (sigma_hat /sqrt(n))return(c(Limite_Inferior = IC_inf, Limite_Superior = IC_sup))}# --- 6. Cálculo do intervalo de confiança ---IC_t_student <-ic_boot_t_student(t_star, theta_hat, sigma_hat, n, alpha =0.05)IC_inferior <- IC_t_student[1]IC_superior <- IC_t_student[2]# --- 7. Resultados ---res <-data.frame(Estimativa =round(theta_hat, 4),Erro_Padrao =round(se_boot, 4),Limite_Inferior_IC =round(IC_inferior, 4),Limite_Superior_IC =round(IC_superior, 4),row.names ="Média Amostral")kable(res,align ='c',escape =FALSE,format ='html',col.names =c("Estimativa","Erro-Padrão Bootstrap","Limite Inferior (IC 95%)","Limite Superior (IC 95%)"))
Estimativa
Erro-Padrão Bootstrap
Limite Inferior (IC 95%)
Limite Superior (IC 95%)
Média Amostral
12.5833
0.224
11.9839
13.3766
# --- 8. Gráfico: Histograma da distribuição bootstrap da média com intervalo de confiança ---lines_df <-data.frame(x =c(IC_inferior, IC_superior, theta_boot, theta_hat),tipo =c("IC 95%", "IC 95%", "Estimativa Bootstrap", "Média Amostral"))ggplot(data.frame(media_boot = boot_stats["mean", ]), aes(x = media_boot)) +geom_histogram(aes(y = ..density..), bins =30, fill ="lightblue", color ="white") +geom_vline(data = lines_df, aes(xintercept = x, color = tipo, linetype = tipo), size =1, key_glyph ="path") +scale_color_manual(values =c("IC 95%"="red","Estimativa Bootstrap"="blue","Média Amostral"="green")) +scale_linetype_manual(values =c("IC 95%"="dashed","Estimativa Bootstrap"="solid","Média Amostral"="dashed")) +labs(title ='', x =expression(hat(theta)^"*"), y ="Density", color =NULL, linetype =NULL) +theme_minimal() +theme(legend.position ="right",axis.title.x =element_text(margin =margin(t =15)),axis.title.y =element_text(margin =margin(r =15)))
Figura 5.8.. Histograma da distribuição bootstrap e intervalo de confiança de 95% do tipo t de Student, aplicado à avaliação do tempo médio que usuários levam para concluir uma tarefa em um aplicativo de internet banking.
Definição 5.12 (Intervalo BCA). O método bootstrap Bias-Corrected and Accelerated (BCA) é uma abordagem avançada para construção de intervalos de confiança, que ajusta tanto o viés da estimativa quanto a assimetria da distribuição empírica da estatística de interesse. O intervalo BCA é definido com base nos quantis corrigidos da distribuição bootstrap das estimativas \(\hat{\theta}^*\), utilizando dois parâmetros: o fator de correção de viés \(z_0\) e o fator de aceleração \(\hat{a}\). O intervalo de confiança BCA com nível de confiança \(100(1 - \alpha)\%\) é dado por:
com \(\Phi(\cdot)\) denotando a função de distribuição acumulada da normal padrão, \(z_\gamma\) o quantil de ordem \(\gamma\) da normal padrão, \(z_0 = \Phi^{-1}(r/B)\), sendo \(r\) o número de reamostragens \(\hat{\theta}^*_b\) menores que \(\hat{\theta}\), e \(\hat{a}\) estimado a partir de técnicas de jackknife por:
onde \(\theta_{(i)}\) é a estimativa da estatística de interesse quando a \(i\)-ésima observação é removida da amostra, e \(\bar{\theta}_{(\cdot)}\) é a média dessas estimativas.
Exemplo 5.13. Uma pesquisadora da área de políticas públicas investiga o impacto de um programa de alfabetização de adultos em comunidades rurais. O objetivo é estimar o tempo médio, em minutos, que os participantes levam para completar uma tarefa de leitura funcional, tal como compreender uma instrução simples escrita em uma ficha de atendimento do serviço de saúde local. Foi selecionada uma amostra aleatória de tamanho \(n=6\), cujos tempos observados para a realização da tarefa são:
Dada a reduzida dimensão amostral e a ausência de pressupostos paramétricos sobre a distribuição dos tempos na população, opta-se pela utilização do método bootstrap BCA (Bias-Corrected and Accelerated) para a construção do intervalo de confiança para a média populacional \(\mu\). Neste caso, o procedimento consiste em gerar \(B=1000\) reamostragens com reposição a partir da amostra original, calcular a média em cada reamostragem e, a partir da distribuição empírica resultante, construir o intervalo BCA com nível de confiança de 95%. A estimativa pontual para \(\mu\) corresponde à média amostral da amostra original, enquanto o erro-padrão é estimado via bootstrap. O Código 5.15 apresenta, em ambiente R, uma rotina que descreve detalhadamente esse procedimento.
Código 5.15. Implementação do procedimento bootstrap para cálculo do intervalo de confiança BCA (Bias-Corrected and Accelerated) aplicado ao tempo médio para completar uma leitura funcional.
# --------------------------------------# Intervalo de Confiança Bootstrap: BCA# --------------------------------------# --- 0. Pacotes necessários ---library(knitr)library(ggplot2)# --- 1. Definir a amostra e parâmetros ---x <-c(12.4, 11.9, 13.1, 12.7, 12.0, 13.4) # tempos em minutosn <-length(x)B <-1000theta_hat <-mean(x)sigma_hat <-sd(x)# --- 2. Reamostragem bootstrap da média ---set.seed(123)theta_star <-replicate(B, mean(sample(x, size = n, replace =TRUE)))# --- 3. Cálculo de z0 (correção de viés) ---r <-sum(theta_star < theta_hat)z0 <-qnorm(r / B)# --- 4. Cálculo do fator de aceleração a_hat via jackknife ---theta_jack <-sapply(1:n, function(i) mean(x[-i]))theta_bar <-mean(theta_jack)num <-sum((theta_bar - theta_jack)^3)den <-6* (sum((theta_bar - theta_jack)^2))^(3/2)a_hat <- num / den# --- 5. Estimativas bootstrap da média e erro-padrão ---theta_boot <-mean(theta_star)se_boot <-sd(theta_star)# --- 6. Função para cálculo do intervalo de confiança BCA ---ic_boot_bca <-function(bootstrap_values, estimator, z0, a_hat, alpha =0.05) { z_alpha1 <-qnorm(alpha/2) z_alpha2 <-qnorm(1- alpha/2) alpha1 <-pnorm(z0 + (z0 + z_alpha1)/(1- a_hat * (z0 + z_alpha1))) alpha2 <-pnorm(z0 + (z0 + z_alpha2)/(1- a_hat * (z0 + z_alpha2))) IC_inf <-quantile(bootstrap_values, alpha1) IC_sup <-quantile(bootstrap_values, alpha2)return(c(Limite_Inferior = IC_inf, Limite_Superior = IC_sup))}# --- 7. Cálculo do intervalo de confiança ---IC_bca <-ic_boot_bca(theta_star, theta_hat, z0, a_hat, alpha =0.05)IC_inferior <- IC_bca[1]IC_superior <- IC_bca[2]# --- 8. Resultados ---res <-data.frame(Estimativa =round(theta_hat, 4),Erro_Padrao =round(se_boot, 4),Limite_Inferior_IC =round(IC_inferior, 4),Limite_Superior_IC =round(IC_superior, 4),row.names ="Média Amostral")kable(res,align ='c',escape =FALSE,format ='html',col.names =c("Estimativa", "Erro-Padrão Bootstrap", "Limite Inferior (IC 95%)", "Limite Superior (IC 95%)"))
Estimativa
Erro-Padrão Bootstrap
Limite Inferior (IC 95%)
Limite Superior (IC 95%)
Média Amostral
12.5833
0.224
12.1589
13.0167
# --- 9. Gráfico: Histograma da distribuição bootstrap com intervalo de confiança ---lines_df <-data.frame(x =c(IC_inferior, IC_superior, theta_boot, theta_hat),tipo =c("IC 95%", "IC 95%", "Estimativa Bootstrap", "Média Amostral"))ggplot(data.frame(media_boot = theta_star), aes(x = media_boot)) +geom_histogram(aes(y = ..density..), bins =30, fill ="lightblue", color ="white") +geom_vline(data = lines_df, aes(xintercept = x, color = tipo, linetype = tipo), size =1, key_glyph ="path") +scale_color_manual(values =c("IC 95%"="red","Estimativa Bootstrap"="blue","Média Amostral"="green")) +scale_linetype_manual(values =c("IC 95%"="dashed","Estimativa Bootstrap"="solid","Média Amostral"="dashed")) +labs(title ='', x =expression(hat(theta)^"*"), y ="Density", color =NULL, linetype =NULL) +theme_minimal() +theme(legend.position ="right",axis.title.x =element_text(margin =margin(t =15)),axis.title.y =element_text(margin =margin(r =15)))
Figura 5.9.. Histograma da distribuição bootstrap e intervalo de confiança de 95% do tipo BCA (Bias-Corrected and Accelerated) aplicado ao tempo médio para completar uma leitura funcional.
A avaliação do desempenho dos métodos de construção de intervalos de confiança via bootstrap é fundamental para determinar sua eficácia em aplicações práticas, sobretudo em situações nas quais os pressupostos clássicos — como normalidade dos dados — não são plenamente satisfeitos. Diferentes abordagens, como os intervalos bootstrap do tipo normal, percentil, básico, t de Student e BCA (bias-corrected and accelerated), apresentam propriedades distintas em relação ao viés, à simetria e à sensibilidade à forma da distribuição amostral. A escolha do método pode, portanto, impactar significativamente a precisão e a confiabilidade dos intervalos construídos. Para comparar sistematicamente esses métodos, recorre-se a estudos de Simulação de Monte Carlo, nos quais replicações sucessivas de um experimento simulado permitem estimar a frequência com que os intervalos incluem o valor verdadeiro do parâmetro de interesse — por exemplo, a média populacional \(\mu\). Neste contexto, uma métrica central de avaliação é a taxa de cobertura empírica (\(\widehat{C}\)), definida como a proporção de replicações em que o intervalo de confiança contém o valor verdadeiro de \(\mu\). Idealmente, essa taxa deve se aproximar do nível nominal estipulado, como 95%. Esse tipo de análise permite identificar métodos sub ou super conservadores, além de avaliar a robustez dos procedimentos frente a distribuições assimétricas ou tamanhos amostrais reduzidos.
Exemplo 5.14 (Desempenho dos Intervalos de Confiança). Para ilustrar o desempenho dos diferentes métodos de construção de intervalos de confiança via bootstrap, será conduzido um estudo de simulação Monte Carlo com \(N = 100\) replicações independentes, utilizando recursos do pacote nptest no ambiente R. O objetivo central é avaliar a capacidade dos intervalos de capturar o verdadeiro valor da média populacional \(\mu\) sob condições de assimetria, por meio da estimação de \(\mu\) de uma variável aleatória com distribuição qui-quadrado com um grau de liberdade \(\chi^2_1\). Essa distribuição foi escolhida por sua assimetria positiva acentuada, o que possibilita examinar a robustez dos métodos bootstrap diante da violação da suposição de simetria na distribuição da estatística de interesse.
Sabendo-se que \(\mu = E(X) = 1\) e \(\text{Var}(X) = 2\), serão considerados diferentes tamanhos amostrais — \(n \in \{10, 20, \ldots, 100\}\) — com o propósito de investigar o impacto do tamanho da amostra na acurácia e estabilidade dos intervalos construídos. Para cada amostra simulada, serão geradas \(B = 1000\) reamostragens bootstrap com reposição, a partir das quais serão construídos intervalos de confiança com nível nominal de 95% utilizando cinco abordagens distintas: método normal, método percentil, método básico, intervalo baseado na estatística t de Student e o intervalo BCA (bias-corrected and accelerated).
Em cada configuração de \(n\), serão calculadas duas métricas principais: (i) a taxa de cobertura empírica\(\widehat{C}\), definida como a proporção de replicações nas quais o intervalo de confiança contém o valor verdadeiro de \(\mu\), e (ii) o tempo computacional médio exigido para a construção dos intervalos sob cada método. Essas medidas permitirão comparar os métodos quanto à sua acurácia estatística e eficiência computacional. O Código 5.16 apresenta, em ambiente R, uma rotina que descreve esse experimento.
Código 5.16. Implementação do procedimento bootstrap para avaliação da performance dos intervalos de confiança bootstrap para a média \(\mu\) de uma variável aleatória com distribuição qui-quadrado de um grau de liberdade, \(\chi^2_1\).
# ----------------------------------------------------------------------------# Desempenho dos Intervalos de Confiança Bootstrap: Distribuição Qui-Quadrado# ----------------------------------------------------------------------------# --- 0. Pacotes necessários ---library(nptest)library(parallel)library(knitr)library(ggplot2)library(patchwork) library(tidyr)library(dplyr)# --- 1. Configuração do cluster para processamento paralelo ---cl <-makeCluster(detectCores())# --- 2. Parâmetros da simulação ---theta <-1# parâmetro de interesse: média da distribuição Qui-Quadradomethods <-c("norm", "basic", "perc", "stud", "bca")longmeth <-c("normal", "basic", "percent", "student", "bca")nobs <-seq(10, 100, 10)nrep <-100# --- 3. Inicialização dos data.frames para resultados ---coverage <- runtimes <-data.frame(normal =rep(NA, length(nobs)),basic =rep(NA, length(nobs)), percent =rep(NA, length(nobs)),student =rep(NA, length(nobs)),bca =rep(NA, length(nobs)))# --- 4. Função estimadora do erro-padrão para IC bootstrap-t ---sdfun <-function(x) sd(x) /sqrt(length(x))# --- 5. Simulação Monte Carlo para cada tamanho amostral ---for (idx inseq_along(nobs)) { n <- nobs[idx] cover <-data.frame(normal =rep(NA, nrep),basic =rep(NA, nrep), percent =rep(NA, nrep),student =rep(NA, nrep),bca =rep(NA, nrep)) rtime <- coverfor (i in1:nrep) {set.seed(i) x <-rchisq(n, df =1)for (j inseq_along(methods)) {set.seed(12345) tic <-proc.time() bs <-np.boot(x, mean, level =0.95, method = methods[j], sdfun = sdfun, parallel =TRUE, cl = cl) toc <-proc.time() - tic ci <- bs[[longmeth[j]]] cover[i, j] <- (ci[1] < theta) & (ci[2] > theta) rtime[i, j] <- toc[3] } } coverage[idx, ] <-colMeans(cover) runtimes[idx, ] <-colMeans(rtime)}# --- 6. Preparação dos dados para ggplot2 ---coverage_long <- coverage %>%mutate(Sample_Size = nobs) %>%pivot_longer(cols =-Sample_Size, names_to ="Method", values_to ="Coverage")runtimes_long <- runtimes %>%mutate(Sample_Size = nobs) %>%pivot_longer(cols =-Sample_Size, names_to ="Method", values_to ="Runtime")# --- 7. Gráfico de taxa de cobertura ---plot_coverage <-ggplot(coverage_long, aes(x = Sample_Size, y = Coverage, color = Method, linetype = Method)) +geom_line(size =1) +geom_point(size =2) +geom_hline(yintercept =0.95, linetype ="dashed", color ="black") +scale_x_continuous(breaks = nobs) +scale_y_continuous(limits =c(0.78, 1)) +labs(x ="Sample Size (n)", y ="Coverage Rate", title ="") +theme_minimal() +theme(legend.position ="bottom",axis.title.x =element_text(margin =margin(t =15)),axis.title.y =element_text(margin =margin(r =15)))# --- 8. Gráfico de tempo de execução ---plot_runtime <-ggplot(runtimes_long, aes(x = Sample_Size, y = Runtime, color = Method, linetype = Method)) +geom_line(size =1) +geom_point(size =2) +scale_x_continuous(breaks = nobs) +scale_y_continuous(limits =c(0, max(runtimes_long$Runtime)*1.1)) +labs(x ="Sample Size (n)", y ="Runtime (sec)", title ="") +theme_minimal() +theme(legend.position ="bottom",axis.title.x =element_text(margin =margin(t =15)),axis.title.y =element_text(margin =margin(r =15)))# --- 9. Composição dos gráficos lado a lado ---(plot_coverage + plot_runtime) +plot_layout(guides ='collect') &theme(legend.position ="bottom")# --- 10. Finalizar cluster ---stopCluster(cl)
Figura 5.10.. Resultados da simulação Monte Carlo avaliando o desempenho de diferentes métodos de intervalo de confiança bootstrap para a média da distribuição Qui-Quadrado com um grau de liberdade. À esquerda, apresenta-se a taxa de cobertura dos intervalos em função do tamanho da amostra, considerando os métodos: aproximação normal, básico, percentil, t de Student e BCA. A linha tracejada horizontal indica o nível nominal de cobertura de 95%. À direita, está o tempo médio de execução (em segundos) para cada método, também em função do tamanho da amostra. As cores e tipos de linha correspondem aos métodos de intervalo de confiança analisados.
Cinlar, Erhan. 2013. Introduction to Stochastic Processes. Courier Corporation.
Dobrow, Robert P. 2016. Introduction to Stochastic Processes with R. John Wiley & Sons.
Efron, Bradley. 1979. «Bootstrap Methods: Another Look at the Jackknife». The Annals of Statistics 7 (1): 1–26.
———. 1982. The Jackknife, the Bootstrap and Other Resampling Plans. SIAM.
Efron, Bradley, e Robert J Tibshirani. 1994. An Introduction to the Bootstrap. Chapman; Hall/CRC.
Hoel, Paul G, Sidney C Port, e Charles J Stone. 1986. Introduction to Stochastic Processes. Waveland Press.
Lawler, Gregory F. 2018. Introduction to Stochastic Processes. Chapman; Hall/CRC.
Markov, Andrei Andreevich. 1906. «Rasprostranenie zakona bol’shih chisel na velichiny, zavisyaschie drug ot druga». Izvestiya Fiziko-matematicheskogo obschestva pri Kazanskom universitete 15 (135-156): 18.
Meyn, Sean P, e Richard L Tweedie. 2012. Markov Chains and Stochastic Stability. Springer Science & Business Media.
Shao, Jun, e Dongsheng Tu. 2012. The Jackknife and Bootstrap. Springer Science & Business Media.