terça-feira, 22 de setembro de 2009

A técnica de bootstrap

Na meteorologia (e em várias outras áreas) é comum nos depararmos com um conjunto de dados com comportamento distinto das distribuições teóricas, como a Distribuição Normal, por exemplo.

Um problema surge nestes casos: como aferir se a estimação de um parâmetro destes dados é representativa da população, ou seja, que teste de hipótese aplicar nestas situações. A transformação dos dados (mais conhecida como reexpressão dos dados) pode ser uma saída, fazendo com que os dados se aproximem de uma distribuição teórica. Por exemplo, dados de chuva são, geralmente, positivos e altamente concentrados nos valores mais baixos, facilmente descritos por distribuições exponenciais. Entretanto, alguns testes levam em conta, implicitamente, uma "normalidade" nos dados. Pode-se reexpressar estes dados, levando-os a uma distribuição normal, por meio da transformação logarítimica [Wilks 2006, pág. 47].

O analista pode optar, o que normalmente ocorre, por trabalhar com seus dados originais, ou seja, sem transformação alguma. É neste momento que muito cuidado deve ser tomado ao se aferir a representatividade de uma estimação. A aplicação de testes a dados que não seguem a distribuição assumida pelos primeiros pode levar a erros na rejeição ou aceitação da hipótese nula (Erros Tipo I e II, ver Wilks [2006], pág. 133).

Um alternativa aos testes paramétricos (aqueles que levam em consideração algum tipo de distribuição) é o teste não paramétrico. Há vários testes não paramétricos conhecidos, como o teste de Mann-Kendall, usado para identificação de tendências em uma série de dados e o teste de Mann-Whitney, usada para testar se duas amostras foram retiradas de populações com médias iguais, entre vários outros.

Com a maior facilidade tecnológica dos dias de hoje, uma outra abordagem ao teste não paramétrico tem ganhado cada vez mais espaço: os testes de reamostragem, que inclui o Bootstrap. A técnica do Bootstrap realiza uma reamostragem dos dados, com substituição, com o objetivo principal de obter uma distribuição do parâmetro em teste. Para maiores informações a respeito desta técnica, veja o Capítulo 5, Seção 3.4 de Wilks [2006].

O objetivo deste "post" é mostrar como usar o Bootstrap de uma maneira bem simples, usando o R (http://www.r-project.org/), um software gratuito destinado a aplicações estatísticas. Veja o script abaixo:

-------------------- INÍCIO DO SCRIPT ---------------------

# dados de precipitacao (em pol)
p <- c(0.44,1.18,2.69,2.08,3.66,1.72,2.82,0.72,1.46,1.30, 1.35,0.54,2.74,1.13,2.50,1.72,2.27,2.82,1.98,2.44,2.53,2, 1.12,2.13,1.36,4.9,2.94,1.75,1.69,1.88,1.31,1.76,2.17,2.38, 1.16,1.39,1.36,1.03,1.11,1.35,1.44,1.84,1.69,3,1.36,6.37, 4.55, 0.52,0.87,1.51)

teste_sign <- 0.025 # alpha/2, nivel de significancia.
iBoot <- 10000 # numero de reamostragens
p_log <- log(p) # logaritmo da chuva
sd_p_log <- sd(p_log) # desvio padrao dos dados originais
sd_precip_boot <- array(0, c(iBoot)) # desvios padroes reamostras

# loop que faz a reamostragem e calcula o desvio padrao dela
for (i in 1:iBoot) {
dummy <- sample(p_log,replace=T) # reamost. c/ subst.
sd_precip_boot[i] <- sd(dummy) # SD da reamostragem
rm(dummy) # apaga reamostragem
}

# calula quantis em funcao do nivel do teste de significancia
# definido na variavel 'teste_sign'
quantis <- quantile(sd_precip_boot,prob=seq(0.,1.,teste_sign))
nQuantis <- NROW(quantis) # nro de quantis calculados

# plota distribuicao (histograma) dos desvios padroes calculados
# das reamostragens
png("testeBootWilks.png",width=600,height=800) # cria PNG

# desenha histograma com 100 classes
hist(sd_precip_boot, main="Exemplo 5.10 de Wilks [2006]", xlab="desvio padrão", ylab="frequência", breaks=100)
abline(v=quantis[2],lty=2,lwd=2) # lim. inf. interv. confianca
abline(v=quantis[nQuantis-1],lty=2,lwd=2) # lim. sup. interv. confianca abline(v=sd_p_log,lty=1,lwd=2) # desvio padrao dados originais

dev.off() # fecha grafico

---------------- FIM DO SCRIPT ------------------------
As linhas tracejadas dão o Intervalo de Confiança obtido com o Bootstrap dos dados de chuva. Entre estas duas linhas está uma linha cheia, mostrando o valor do desvio padrão do logaritmo das precipitações da amostra original. Resultado: temos 95% de confiança de que o desvio padrão do logaritmo das precipitações está entre 0,41 e 0,65.

Numa pesquisa rápida nas funções disponíveis no R é possível encontrar funções que fazem diretamente o Bootstrap. Todavia, preferi mostrá-lo desta forma por ser mais didático, pois permite um entendimento melhor do processo.

Este método também pode ser aplicado a duas amostras. Mostrarei esta aplicação num "post" posterior.

Abraços,

REFERÊNCIAS:

Wilks (2006), Statistical Methods in the Atmospheric Sciences, Academic Press, 648 pp.

LEITURAS RECOMENDADAS:

LÚCIO, P. S., I. V. LEANDRO e T. P. Paula (2006), Bootstrap aplicado à avaliação de incertezas estatísticas no prognósticos de quantis extremos de precipitação, XIV Congresso Brasileiro de Meteorologia, Florianópolis, SC. Disponível em: http://www.criatividadecoletiva.net/cbm-files/14-eee1d97e2f1534538b995b911f9082b6.pdf



Um comentário:

  1. Mateus;

    Parabéns, não apaga pois um dia alguém vai precisar da sua aula gratuita. É isso aí!

    ResponderExcluir