Bootstrap:Uma Tecnica de Minimizacao de Vies de um Estimador
Ana Carla de Carvalho CorreiaMaria Helynne Lima SilvaMichel Alves dos Santos
Universidade Federal de AlagoasInstituto de Computacao
Maceio – AL, 31 de Maio de 2011
Bradley Efron Historia do Bootstrap Implementacao da Tecnica Graficos
Bradley Efron
Nasceu em 24 de maio de 1938
Participou do California Institute of Technology, graduando-se emMatematica em 1960
Doutorado em Universidade de Stanford
Suspenso por um ano por seu envolvimento com o Chaparral Stanford
Ana, Helynne e Michel (UFAL) Bootstrap Estatıstica Computacional 2 / 11
Bradley Efron Historia do Bootstrap Implementacao da Tecnica Graficos
Bradley Efron
Nasceu em 24 de maio de 1938
Participou do California Institute of Technology, graduando-se emMatematica em 1960
Doutorado em Universidade de Stanford
Suspenso por um ano por seu envolvimento com o Chaparral Stanford
Ana, Helynne e Michel (UFAL) Bootstrap Estatıstica Computacional 2 / 11
Bradley Efron Historia do Bootstrap Implementacao da Tecnica Graficos
Bradley Efron
Nasceu em 24 de maio de 1938
Participou do California Institute of Technology, graduando-se emMatematica em 1960
Doutorado em Universidade de Stanford
Suspenso por um ano por seu envolvimento com o Chaparral Stanford
Ana, Helynne e Michel (UFAL) Bootstrap Estatıstica Computacional 2 / 11
Bradley Efron Historia do Bootstrap Implementacao da Tecnica Graficos
Bradley Efron
Nasceu em 24 de maio de 1938
Participou do California Institute of Technology, graduando-se emMatematica em 1960
Doutorado em Universidade de Stanford
Suspenso por um ano por seu envolvimento com o Chaparral Stanford
Ana, Helynne e Michel (UFAL) Bootstrap Estatıstica Computacional 2 / 11
Bradley Efron Historia do Bootstrap Implementacao da Tecnica Graficos
Bootstrap
Metodo generico para estimar variabilidade em estatıstica
Originalmente proposto por Efron em (1979)
Publicado no Annals of Statistics“A decada do Bootstrap”
Dependencia do uso de computadores
Popularizacao com os progressos da informatica nas ultimas decadasdo seculo XX
[3]
Ana, Helynne e Michel (UFAL) Bootstrap Estatıstica Computacional 3 / 11
Bradley Efron Historia do Bootstrap Implementacao da Tecnica Graficos
Bootstrap
Metodo generico para estimar variabilidade em estatıstica
Originalmente proposto por Efron em (1979)
Publicado no Annals of Statistics“A decada do Bootstrap”
Dependencia do uso de computadores
Popularizacao com os progressos da informatica nas ultimas decadasdo seculo XX
[3]
Ana, Helynne e Michel (UFAL) Bootstrap Estatıstica Computacional 3 / 11
Bradley Efron Historia do Bootstrap Implementacao da Tecnica Graficos
Bootstrap
Metodo generico para estimar variabilidade em estatıstica
Originalmente proposto por Efron em (1979)
Publicado no Annals of Statistics“A decada do Bootstrap”
Dependencia do uso de computadores
Popularizacao com os progressos da informatica nas ultimas decadasdo seculo XX
[3]
Ana, Helynne e Michel (UFAL) Bootstrap Estatıstica Computacional 3 / 11
Bradley Efron Historia do Bootstrap Implementacao da Tecnica Graficos
Bootstrap
Metodo generico para estimar variabilidade em estatıstica
Originalmente proposto por Efron em (1979)
Publicado no Annals of Statistics“A decada do Bootstrap”
Dependencia do uso de computadores
Popularizacao com os progressos da informatica nas ultimas decadasdo seculo XX
[3]
Ana, Helynne e Michel (UFAL) Bootstrap Estatıstica Computacional 3 / 11
Bradley Efron Historia do Bootstrap Implementacao da Tecnica Graficos
Bootstrap
Metodo generico para estimar variabilidade em estatıstica
Originalmente proposto por Efron em (1979)
Publicado no Annals of Statistics“A decada do Bootstrap”
Dependencia do uso de computadores
Popularizacao com os progressos da informatica nas ultimas decadasdo seculo XX
[3]
Ana, Helynne e Michel (UFAL) Bootstrap Estatıstica Computacional 3 / 11
Bradley Efron Historia do Bootstrap Implementacao da Tecnica Graficos
Bootstrap
Metodo generico para estimar variabilidade em estatıstica
Originalmente proposto por Efron em (1979)
Publicado no Annals of Statistics“A decada do Bootstrap”
Dependencia do uso de computadores
Popularizacao com os progressos da informatica nas ultimas decadasdo seculo XX
[3]
Ana, Helynne e Michel (UFAL) Bootstrap Estatıstica Computacional 3 / 11
Bradley Efron Historia do Bootstrap Implementacao da Tecnica Graficos
Bootstrap
Algumas utilizacoes:
Estimar o vies e a variancia de estimadores ou testes de hipotesescalibrados
Baseia-se na construcao de distribuicoes por reamostragem, comreposicao da amostra original
Tem por base que o pesquisador pode tratar sua amostra como sefosse a populacao que deu origem aos dados
Possibilita estimar caracterısticas da populacao como media,variancia, percentis, etc.
[4]
Ana, Helynne e Michel (UFAL) Bootstrap Estatıstica Computacional 4 / 11
Bradley Efron Historia do Bootstrap Implementacao da Tecnica Graficos
Bootstrap
Algumas utilizacoes:
Estimar o vies e a variancia de estimadores ou testes de hipotesescalibrados
Baseia-se na construcao de distribuicoes por reamostragem, comreposicao da amostra original
Tem por base que o pesquisador pode tratar sua amostra como sefosse a populacao que deu origem aos dados
Possibilita estimar caracterısticas da populacao como media,variancia, percentis, etc.
[4]
Ana, Helynne e Michel (UFAL) Bootstrap Estatıstica Computacional 4 / 11
Bradley Efron Historia do Bootstrap Implementacao da Tecnica Graficos
Bootstrap
Algumas utilizacoes:
Estimar o vies e a variancia de estimadores ou testes de hipotesescalibrados
Baseia-se na construcao de distribuicoes por reamostragem, comreposicao da amostra original
Tem por base que o pesquisador pode tratar sua amostra como sefosse a populacao que deu origem aos dados
Possibilita estimar caracterısticas da populacao como media,variancia, percentis, etc.
[4]
Ana, Helynne e Michel (UFAL) Bootstrap Estatıstica Computacional 4 / 11
Bradley Efron Historia do Bootstrap Implementacao da Tecnica Graficos
Bootstrap
Algumas utilizacoes:
Estimar o vies e a variancia de estimadores ou testes de hipotesescalibrados
Baseia-se na construcao de distribuicoes por reamostragem, comreposicao da amostra original
Tem por base que o pesquisador pode tratar sua amostra como sefosse a populacao que deu origem aos dados
Possibilita estimar caracterısticas da populacao como media,variancia, percentis, etc.
[4]
Ana, Helynne e Michel (UFAL) Bootstrap Estatıstica Computacional 4 / 11
Bradley Efron Historia do Bootstrap Implementacao da Tecnica Graficos
Bootstrap
Algumas utilizacoes:
Estimar o vies e a variancia de estimadores ou testes de hipotesescalibrados
Baseia-se na construcao de distribuicoes por reamostragem, comreposicao da amostra original
Tem por base que o pesquisador pode tratar sua amostra como sefosse a populacao que deu origem aos dados
Possibilita estimar caracterısticas da populacao como media,variancia, percentis, etc.
[4]
Ana, Helynne e Michel (UFAL) Bootstrap Estatıstica Computacional 4 / 11
Bradley Efron Historia do Bootstrap Implementacao da Tecnica Graficos
Bootstrap
Metodo nao-parametrico:
Cada amostra de tamanho n e obtida amostrando, com reposicao, osdados originais, onde a estimacao dos parametros e realizada para cadaamostra, sendo este processo repetido B vezes
Na simulacao parametrica:
Os dados sao gerados da distribuicao de probabilidade dos dados
Ana, Helynne e Michel (UFAL) Bootstrap Estatıstica Computacional 5 / 11
Bradley Efron Historia do Bootstrap Implementacao da Tecnica Graficos
Estimadores utilizados
Reduzindo o vies de tres estimadores:1 Metodo por analogia θ1, baseado no primeiro momento amostral2 Metodo por analogia θ2, baseado no segundo momento amostral3 Estimador de Maxima Verossimilhanca θmv
θ1 = 2n
Pni=1 xi
θ2 =q
3n
Pni=1 x2
i
θmv = max(x1, x2, ..., xn)
Ana, Helynne e Michel (UFAL) Bootstrap Estatıstica Computacional 6 / 11
Bradley Efron Historia do Bootstrap Implementacao da Tecnica Graficos
Estimadores utilizados
Reduzindo o vies de tres estimadores:1 Metodo por analogia θ1, baseado no primeiro momento amostral2 Metodo por analogia θ2, baseado no segundo momento amostral3 Estimador de Maxima Verossimilhanca θmv
θ1 = 2n
Pni=1 xi
θ2 =q
3n
Pni=1 x2
i
θmv = max(x1, x2, ..., xn)
Ana, Helynne e Michel (UFAL) Bootstrap Estatıstica Computacional 6 / 11
Bradley Efron Historia do Bootstrap Implementacao da Tecnica Graficos
Estimadores utilizados
Reduzindo o vies de tres estimadores:1 Metodo por analogia θ1, baseado no primeiro momento amostral2 Metodo por analogia θ2, baseado no segundo momento amostral3 Estimador de Maxima Verossimilhanca θmv
θ1 = 2n
Pni=1 xi
θ2 =q
3n
Pni=1 x2
i
θmv = max(x1, x2, ..., xn)
Ana, Helynne e Michel (UFAL) Bootstrap Estatıstica Computacional 6 / 11
Bradley Efron Historia do Bootstrap Implementacao da Tecnica Graficos
Estimadores utilizados
Reduzindo o vies de tres estimadores:1 Metodo por analogia θ1, baseado no primeiro momento amostral2 Metodo por analogia θ2, baseado no segundo momento amostral3 Estimador de Maxima Verossimilhanca θmv
θ1 = 2n
Pni=1 xi
θ2 =q
3n
Pni=1 x2
i
θmv = max(x1, x2, ..., xn)
Ana, Helynne e Michel (UFAL) Bootstrap Estatıstica Computacional 6 / 11
Bradley Efron Historia do Bootstrap Implementacao da Tecnica Graficos
Reducao do custo computacional
Substituindo o comando for pela funcao lapply
b o o t s t r a p <− f u n c t i o n (X, B, f u n c ){t <− f u n c (X)t bs <− 2∗ t − mean ( u n l i s t ( l a p p l y ( 1 : B, f u n c t i o n ( i ) i<− f u n c ( sample (X, r e p l a c e=TRUE)
) ) ) )r e t u r n ( t bs )
}
m o n t e c a r l o <− f u n c t i o n ( n ){e1 <− e2 <− emv <− e1B <− e2B <− emvB <− v e c t o r ( mode=” numer ic ” , l e n g t h =1e2 )l a p p l y ( 1 : 1 e2 , f u n c t i o n ( r ){ X <−r u n i f ( 1 0 )
e1 [ r ] <<− U t1 (X)e2 [ r ] <<− U t2 (X)emv [ r ] <<− U tmv (X)e1B [ r ] <<− b o o t s t r a p (X, n ,U t1 )e2B [ r ] <<− b o o t s t r a p (X, n ,U t2 )emvB [ r ] <<− b o o t s t r a p (X, n ,U tmv )
})}
[2]
Ana, Helynne e Michel (UFAL) Bootstrap Estatıstica Computacional 7 / 11
Bradley Efron Historia do Bootstrap Implementacao da Tecnica Graficos
Estimador: θ1, N ∈ [3,1000] com intercalacoes de 5 , B = 200Estimador: θ1, B ∈ [3,1000] com intercalacoes de 5 , N = 10
[1]
Ana, Helynne e Michel (UFAL) Bootstrap Estatıstica Computacional 8 / 11
Bradley Efron Historia do Bootstrap Implementacao da Tecnica Graficos
Estimador: θ2, N ∈ [3,1000] com intercalacoes de 5 , B = 200Estimador: θ2, B ∈ [3,1000] com intercalacoes de 5 , N = 10
Ana, Helynne e Michel (UFAL) Bootstrap Estatıstica Computacional 9 / 11
Bradley Efron Historia do Bootstrap Implementacao da Tecnica Graficos
Estimador: θmv , N ∈ [3,1000] com intercalacoes de 5 , B = 200Estimador: θmv , B ∈ [3,1000] com intercalacoes de 5 , N = 10
Ana, Helynne e Michel (UFAL) Bootstrap Estatıstica Computacional 10 / 11
Bradley Efron Historia do Bootstrap Implementacao da Tecnica Graficos
Referencias
The lapply function.
Package ‘lattice’.
Paulo Henrique Ferreira da Silva and Francisco Louzada Neto.Medidas do valor preditivo de modelos de classificacao aplicados adados de credito.
Edson Zangiacomi Martinez and Francisco Louzada-Neto.Estimacao intervalar via bootstrap.BRAZILIAN JOURNAL OF MATHEMATICS AND STATISTICS,19:217–251, 2001.
Ana, Helynne e Michel (UFAL) Bootstrap Estatıstica Computacional 11 / 11
File: /media/SAMSUNG/10-CoursesAndD…011]/00.bootstrap.evaluation.r Page 1 of 10
#------------------------------------------------------------------------------# About : Exemplo de comparação entre algoritmos quadráticos e loglineares# Author : Michel A. dos Santos, Maria Helynne e Ana Carla# Date : 30/05/2011 - Maio - 2011#------------------------------------------------------------------------------#------------------------------------------------------------------------------# Carregamento das bibliotecas necessárias para processamento do script#------------------------------------------------------------------------------# Definindo o nome das bibliotecas que devem ser carregadaspkg = c('lattice')
# Carregando bibliotecasprint('Carregando bibliotecas necessárias para execução do script...')for (idx_pkg in 1:length(pkg)){ myimg.msgerr <- paste('A seguinte biblioteca não pôde ser carregada: ', pkg[idx_pkg])if (!require(pkg[idx_pkg], character.only = TRUE)) stop(myimg.msgerr)
} #------------------------------------------------------------------------------# Configurações iniciais do script e inicialização de variáveis: #------------------------------------------------------------------------------#------------------------------------------------------------------------------# Variável de configuração que verifica se os gráficos devem ser salvos #------------------------------------------------------------------------------my.save.result <- TRUE
#------------------------------------------------------------------------------# Variável de configuração que verifica se o dataframe deve ser salvo #------------------------------------------------------------------------------my.data.frame.save.result <- TRUE
#------------------------------------------------------------------------------# Variável de configuração que verifica se os resultados devem ser vistos # através de uma grade. #------------------------------------------------------------------------------my.view.grid.results <- FALSE
#------------------------------------------------------------------------------# Variáveis de controle do problema (variáveis globais)#------------------------------------------------------------------------------
File: /media/SAMSUNG/10-CoursesAndD…011]/00.bootstrap.evaluation.r Page 2 of 10
valor1 <- 0 # Método por analogia | Primeiro momento amostral valor2 <- 0 # Método por analogia | Segundo momento amostralvalormv <- 0 # Máxima verossimilhança
#------------------------------------------------------------------------------# Definição das funções e estruturas implementadas para o problema.#------------------------------------------------------------------------------# Estimador - Teta 1 - Primeiro momento amostralMyU_T1 <- function(X) { return ( 2*mean(X) ) }
# Estimador - Teta 2 - Segundo momento amostralMyU_T2 <- function(X) { return (sqrt(3*mean(X^2))) }
# Estimador - Máxima VerossimilhançaMyU_TMV <- function(X) { return ( max(X) ) }
# Definição da função que calcula o erro quadrático médio (MSE) MyMeanSquaredError <- function(X) { return( (mean(X)-1)^2 + var(X) ) }
# Bootstrap sem o uso de looping de maneira explícitaNotExplicitlyIterativeBootstrap <- function(X, B, func){ t <- func(X) t_bs <- 2*t - mean(unlist(lapply(1:B, function(i) i<- func(sample(X,replace=TRUE))))) return (t_bs)} # Montecarlo sem o uso explicito de looping NotExplicitlyIterativeMontecarlo <- function(number.of.observations = 10, number.of.bootstrap.iterations = 200, length.of.my.vector = 100){ n <- number.of.observations # Número de observações em runif MyNobi <- number.of.bootstrap.iterations # Número de iterações no bootstrap MyLen <- length.of.my.vector # Tamanho do vetor de estimadores
# Criando vetores numéricos e1 <- e2 <- emv <- e1B <- e2B <- emvB <- vector(mode="numeric",length=MyLen)
lapply(1:MyLen, function(r){ X <-runif(n) e1[r] <<- MyU_T1(X)
File: /media/SAMSUNG/10-CoursesAndD…011]/00.bootstrap.evaluation.r Page 3 of 10
e2[r] <<- MyU_T2(X) emv[r] <<- MyU_TMV(X) e1B[r] <<- NotExplicitlyIterativeBootstrap(X, MyNobi, MyU_T1) e2B[r] <<- NotExplicitlyIterativeBootstrap(X, MyNobi, MyU_T2) emvB[r] <<- NotExplicitlyIterativeBootstrap(X, MyNobi, MyU_TMV) }) valor1 <<- ( 1 - (MyMeanSquaredError(e1B) / MyMeanSquaredError(e1)) )*100 valor2 <<- ( 1 - (MyMeanSquaredError(e2B) / MyMeanSquaredError(e2)) )*100 valormv <<- ( 1 - (MyMeanSquaredError(emvB) / MyMeanSquaredError(emv)))*100} # Bootstrap com uso de looping de maneira explícitaExplicitlyIterativeBootstrap <- function(X, B, func){ t <- func(X) vecB <- vector(mode="numeric",length=B) for (b in 1:B) vecB[b] <- func(sample(X,replace=TRUE)) t_bs <- 2*t - mean(vecB)
return (t_bs)} # Montecarlo com uso explicito de looping ExplicitlyIterativeMontecarlo <- function(number.of.observations = 10, number.of.bootstrap.iterations = 200, length.of.my.vector = 100){ n <- number.of.observations # Número de observações em runif MyNobi <- number.of.bootstrap.iterations # Número de iterações no bootstrap MyLen <- length.of.my.vector # Tamanho do vetor de estimadores
e1 <- e2 <- emv <- e1B <- e2B <- emvB <- vector(mode="numeric",length=MyLen) for (r in 1:MyLen) { X <- runif(n) e1[r] <- MyU_T1(X) e2[r] <- MyU_T2(X) emv[r] <- MyU_TMV(X)
File: /media/SAMSUNG/10-CoursesAndD…011]/00.bootstrap.evaluation.r Page 4 of 10
e1B[r] <- ExplicitlyIterativeBootstrap(X, MyNobi, MyU_T1) e2B[r] <- ExplicitlyIterativeBootstrap(X, MyNobi, MyU_T2) emvB[r] <- ExplicitlyIterativeBootstrap(X, MyNobi, MyU_TMV) }
MyMeanSquaredError(e1) MyMeanSquaredError(e2) MyMeanSquaredError(emv) MyMeanSquaredError(e1B) MyMeanSquaredError(e2B) MyMeanSquaredError(emvB)} #++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++# MAIN - Começo da execução do código.#++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
# Capturando o tempo de inicio da atividade.MyStartTime = Sys.time()
# Executando método montecarlo para um determinado número Nprint("Executando Montecarlo explicitamente iterativo...")my.number.of.observations <- 100my.number.of.bootstrap.iterations <- 200my.length.of.my.vector <- 100ExplicitlyIterativeMontecarlo(my.number.of.observations, my.number.of.bootstrap.iterations, my.length.of.my.vector)
# Capturando o tempo de término das atividade.MyEndTime = Sys.time()
# Visualizando o tempo para processamento do métodoMyMatrixTime <- matrix(c("MyStartTime",MyStartTime, "MyEndTime", MyEndTime, "Total Time:", MyEndTime - MyStartTime), ncol=2, byrow=TRUE)print(MyMatrixTime)if (my.view.grid.results) View( MyMatrixTime, title="Processing Time for Explicit Iterative Montecarlo" ) # Capturando o tempo de inicio da atividade.MyStartTime = Sys.time()
# Executando método montecarlo para um determinado número Nprint("Executando Montecarlo não explicitamente iterativo...")
File: /media/SAMSUNG/10-CoursesAndD…011]/00.bootstrap.evaluation.r Page 5 of 10
my.number.of.observations <- 100my.number.of.bootstrap.iterations <- 200my.length.of.my.vector <- 100NotExplicitlyIterativeMontecarlo(my.number.of.observations, my.number.of.bootstrap.iterations, my.length.of.my.vector)
# Capturando o tempo de término das atividade.MyEndTime = Sys.time()
# Visualizando o tempo para processamento do métodoMyMatrixTime <- matrix(c("MyStartTime",MyStartTime, "MyEndTime", MyEndTime, "Total Time:", MyEndTime - MyStartTime), ncol=2, byrow=TRUE)print(MyMatrixTime)if (my.view.grid.results) View( MyMatrixTime, title="Processing Time for Not Explicit Iterative Montecarlo" ) #------------------------------------------------------------------------------# Produção de amostras obtidas através do método bootstrap. A partir daqui # iremos armazenar o data.frame referente as amostras obtidas através do método# bootstrap e os gráficos gerados a partir do montante de dados final. #------------------------------------------------------------------------------# Estipulando vetor de comparações utilizado no bootstrapmy.start.of.sequence <- 3 # Valor inicial do número de iteraçõesmy.end.of.sequence <- 100 # Parâmetro final de iterações B do bootstrap my.jump.of.sequence <- 5 # Valor do salto dado dentro da seqüênciaMyB = c(seq(my.start.of.sequence, my.end.of.sequence, my.jump.of.sequence))
# Exibindo informações relativas ao parâmetro Bprint("")print("Exibindo informações relativas ao parâmetro B")print(paste("Início do intervalo de avaliação:", my.start.of.sequence))print(paste("Fim do intervalo de avaliação:", my.end.of.sequence))print(paste("Incremento do intervalo de avaliação:", my.jump.of.sequence))print("")
# Exeutando o método montecarlo pela primeira vezprint("Obtendo os B valores necessários para efetivação do método...")print(paste("Avaliação com B igual a:", my.start.of.sequence))NotExplicitlyIterativeMontecarlo(my.number.of.observations, my.start.of.sequence, my.length.of.my.vector)
# Amostras para os dados processados transformadas em vetorespE1 = c(valor1)
File: /media/SAMSUNG/10-CoursesAndD…011]/00.bootstrap.evaluation.r Page 6 of 10
pE2 = c(valor2)pE3 = c(valormv)
# Executando Montecarlo tomando por base os valores de uma sequência.for (i in seq(my.start.of.sequence + my.jump.of.sequence, my.end.of.sequence, my.jump.of.sequence)){ print(paste("Avaliação com B igual a:", i)) NotExplicitlyIterativeMontecarlo(my.number.of.observations, i, my.length.of.my.vector)
pE1 = c(pE1, valor1) pE2 = c(pE2, valor2) pE3 = c(pE3, valormv)} # Criando um dataframe com os dados adquiridosmy.data.frame <- data.frame(MyB, pE1, pE2, pE3)
# Exibindo valores do dataframeprint(my.data.frame)if (my.view.grid.results) View(my.data.frame, title="Valores Adquiridos - Usando Montecarlo") #------------------------------------------------------------------------------# Inicio da plotagem#------------------------------------------------------------------------------#------------------------------------------------------------------------------# Iniciando dispositivo de saída caso os resultados devam ser salvos em disco #------------------------------------------------------------------------------if (my.save.result){ save.name <- paste('saved.result.01[',my.end.of.sequence,'].pdf', sep='') pdf(file = save.name, onefile = TRUE)} # PLOT CONFIGmy.col <- 'black'my.type <- c("p","r")my.pch <- 20my.scales <- list(x = list( relation = "free", limits = c(1, my.end.of.sequence*1.5)), y = list( relation = "free", limits = c(-50, 50)))my.xlab <- "B"my.ylab <- expression(paste('Estimativa bootstrap do erro quadrático médio para o estimador ', theta[1]))
File: /media/SAMSUNG/10-CoursesAndD…011]/00.bootstrap.evaluation.r Page 7 of 10
# PLOTmyplot01 <- xyplot(pE1~MyB, col = my.col, type = my.type, data = my.data.frame, scales = my.scales, xlab = my.xlab, ylab = my.ylab, pch=my.pch)
if (!my.save.result) x11()print(myplot01)
#------------------------------------------------------------------------------# Encerrando dispositivo de saída caso os resultados devam ser salvos em disco #------------------------------------------------------------------------------if (my.save.result) { dev.off() } #------------------------------------------------------------------------------# Iniciando dispositivo de saída caso os resultados devam ser salvos em disco #------------------------------------------------------------------------------if (my.save.result){ save.name <- paste('saved.result.02[',my.end.of.sequence,'].pdf', sep='') pdf(file = save.name, onefile = TRUE)} # PLOT CONFIGmy.col <- 'red'my.type <- c("p","r")my.pch <- 20my.scales <- list(x = list( relation = "free", limits = c(1, my.end.of.sequence*1.5)), y = list( relation = "free", limits = c(-50, 50)))my.xlab <- "B"my.ylab <- expression(paste('Estimativa bootstrap do erro quadrático médio para o estimador ', theta[2]))# PLOTmyplot02 <- xyplot(pE2~MyB, col = my.col, type = my.type, data = my.data.frame, scales = my.scales, xlab = my.xlab, ylab = my.ylab, pch=my.pch)
if (!my.save.result) x11()print(myplot02)
#------------------------------------------------------------------------------# Encerrando dispositivo de saída caso os resultados devam ser salvos em disco #------------------------------------------------------------------------------if (my.save.result) { dev.off() }
File: /media/SAMSUNG/10-CoursesAndD…011]/00.bootstrap.evaluation.r Page 8 of 10
#------------------------------------------------------------------------------# Iniciando dispositivo de saída caso os resultados devam ser salvos em disco #------------------------------------------------------------------------------if (my.save.result){ save.name <- paste('saved.result.03[',my.end.of.sequence,'].pdf', sep='') pdf(file = save.name, onefile = TRUE)} # PLOT CONFIGmy.col <- 'green'my.type <- c("p","r")my.pch <- 20my.scales <- list(x = list( relation = "free", limits = c(1, my.end.of.sequence*1.5)), y = list( relation = "free", limits = c(-50, 50)))my.xlab <- "B"my.ylab <- expression(paste('Estimativa bootstrap do erro quadrático médio para o estimador ', theta[mv]))# PLOTmyplot03 <- xyplot(pE3~MyB, col = my.col, type = my.type, data = my.data.frame, scales = my.scales, xlab = my.xlab, ylab = my.ylab, pch=my.pch)
if (!my.save.result) x11()print(myplot03)
#------------------------------------------------------------------------------# Encerrando dispositivo de saída caso os resultados devam ser salvos em disco #------------------------------------------------------------------------------if (my.save.result) { dev.off() } #------------------------------------------------------------------------------# Abrindo uma nova janela no X para que não ocorra sobreposição das demais#------------------------------------------------------------------------------if (!my.save.result) x11(title="Confrontando as Estimativas Obtidas") #------------------------------------------------------------------------------# Iniciando dispositivo de saída caso os resultados devam ser salvos em disco #------------------------------------------------------------------------------if (my.save.result){ save.name <- paste('saved.result.04[',my.end.of.sequence,'].pdf', sep='') pdf(file = save.name, onefile = TRUE)
File: /media/SAMSUNG/10-CoursesAndD…011]/00.bootstrap.evaluation.r Page 9 of 10
} # PLOT CONFIGmy.col <- 'black'my.ylab <- expression(paste('Estimativa para ', theta[1]))# PLOTmyplot01 <- xyplot(pE1~MyB, col = my.col, type = my.type, data = my.data.frame, scales = my.scales, xlab = my.xlab, ylab = my.ylab, pch=my.pch)
# PLOT CONFIGmy.col <- 'red'my.ylab <- expression(paste('Estimativa para ', theta[2]))# PLOTmyplot02 <- xyplot(pE2~MyB, col = my.col, type = my.type, data = my.data.frame, scales = my.scales, xlab = my.xlab, ylab = my.ylab, pch=my.pch)
# PLOT CONFIGmy.col <- 'green'my.ylab <- expression(paste('Estimativa para ', theta[mv]))# PLOTmyplot03 <- xyplot(pE3~MyB, col = my.col, type = my.type, data = my.data.frame, scales = my.scales, xlab = my.xlab, ylab = my.ylab, pch=my.pch)
#PLOTprint(myplot01, position=c(0.1,0.1,1,1),split=c(1,1,2,2),more=T)print(myplot02, position=c(0.1,0.1,1,1),split=c(1,2,2,2),more=T)print(myplot03, position=c(0.1,0.1,1,1),split=c(2,1,2,2),more=F)
#------------------------------------------------------------------------------# Encerrando dispositivo de saída caso os resultados devam ser salvos em disco #------------------------------------------------------------------------------if (my.save.result) { dev.off() } #------------------------------------------------------------------------------# Escrevendo os dados obtidos em disco#------------------------------------------------------------------------------if (my.data.frame.save.result){ my.file.name <- paste('Dados.Gerados.Em.',format(Sys.time(), "[Data.%F][Hora.%H.%M.%S]."),'[B.',my.start.of.sequence,'.',my.end.of.sequence,'.',my.jump.of.sequence,']','.txt', sep='') write.table(my.data.frame, file=my.file.name)
File: /media/SAMSUNG/10-CoursesAndD…011]/00.bootstrap.evaluation.r Page 10 of 10
} #------------------------------------------------------------------------------# Exibindo mensagem de finalização do script#------------------------------------------------------------------------------print('Fim do script ............ [OK]')
B
Est
imat
iva
para
θ 1−4
0−2
00
2040
0 500 1000 1500
q
q
q
qqqqqqqqq
qqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqq
qqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqq
qqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqq
B
Est
imat
iva
para
θ 2−4
0−2
00
2040
0 500 1000 1500
q
q
qqq
q
q
q
qqqqq
qqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqq
qqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqq
B
Est
imat
iva
para
θ mv
−40
−20
020
40
0 500 1000 1500
q
q
q
qqqq
q
qqqq
q
q
q
qqqq
q
q
qqqq
q
q
q
qqqq
q
q
q
q
q
q
q
q
q
q
qqq
q
qqqq
q
q
q
q
qqqq
qqq
q
q
qqq
q
q
q
qqq
q
q
qqq
q
q
q
q
q
q
qqqq
q
q
q
q
q
q
qqqq
qqqqqq
qqq
qqqq
qqqqq
q
q
q
qqqqq
q
qqq
q
q
qqqq
q
qqqqqq
q
qqqq
q
q
qqq
B
Est
imat
iva
para
θ 1−4
0−2
00
2040
0 500 1000 1500 2000
q
q
q
q
q
qqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqq
qqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqq
qqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqq
qqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqq
qqqqqqqqqqqqqq
B
Est
imat
iva
para
θ 2−4
0−2
00
2040
0 500 1000 1500 2000
q
q
qqqqq
qqq
qqqq
q
q
qqqqqqqqqqqqqqqqqqqqqq
qqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqq
qqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqq
qqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqq
qqq
B
Est
imat
iva
para
θ mv
−40
−20
020
40
0 500 1000 1500 2000
q
q
q
qqqqq
q
qqqq
q
q
q
q
q
qqq
q
q
q
qqqqqqq
q
q
q
q
q
q
q
q
qqq
qqqqq
q
qqqqqq
q
qqqq
q
qqq
q
q
q
qqq
q
qqqqqq
qqqqq
q
qqqqqq
q
q
q
qqqq
q
qqqq
q
qqq
q
q
q
qqq
q
qqqqq
q
q
q
q
qqq
qqqq
q
qqqq
q
q
q
qqq
qqq
q
q
qqq
q
q
q
q
q
q
q
q
q
q
qqqq
q
q
q
q
q
qqqq
qqqqqq
q
q
qqqqq
qqqqqqq
q
qqq
q
q
q
qqq
q
q
q
q
q
q
qqq
qqq
q
q
q
q
q
q
q
q
qqqq
qqq
q
qqq
B
Est
imat
iva
para
θ 1−4
0−2
00
2040
0 1000 2000 3000 4000 5000
q
q
q
qqqq
q
qqq
q
qqqqqq
qqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqq
qqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqq
qqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqq
qqqqqqqqqqqqqqqqqqqqqqqqqqqq
B
Est
imat
iva
para
θ 2−4
0−2
00
2040
0 1000 2000 3000 4000 5000
q
q
q
qqqqqqqqqqqqqqqq
qqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqq
qqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqq
B
Est
imat
iva
para
θ mv
−40
−20
020
40
0 1000 2000 3000 4000 5000
qqqq
q
q
qqqqqq
qqqq
q
q
q
qqq
q
qqqqq
q
q
q
qqqq
q
q
qqqqq
q
qqqq
q
q
q
q
qqqq
qqqq
q
q
q
qqqq
qqq
qqq
q
q
q
qqqqqq
qqqq
q
q
q
q
q
qqqq
q
qqqq
q
q
q
q
q
q
q
qqqqqqqqq
q
q
q
qqqq
q
qqqqqqqq
q
qqqq
q
qqq
q
qqqqq
q
qqq
qqqq
q
qqq
q
q
q
qqq
q
q
q
q
q
qqq
q
q
qqq
qqq
q
qqq
q
q
q
q
q
q
q
q
q
q
q
q
q
q
qqq
qqqq
qqqq
q
qqqqqq
q
q
q
q
q
q
q
q
q
q
qqq
q
q
q
qqq
qqq
q
qqqqqq
q
q
q
q
q
q
q
qqqqq
q
q
qqq
qqqqqq
q
qqq
q
qqq
qqqqqq
qqq
q
q
q
q
qqqqqqq
q
q
q
q
q
q
q
q
q
q
qqq
q
q
q
q
qqqq
q
qqqqqq
q
q
q
q
q
q
q
qqqq
qqqq
qqqqq
qqq
q
q
q
qqqq
q
q
q
qqqqqq
q
qqq
qqqqq
q
q
q
qqqqq
q
q
q
q
q
q
qqq
q
q
qqq
q
q
q
qqqqqq
q
qqq
qqq
q
q
qqq
qqqqqq
q
q
qqqqqq
q
q
q
q
qqqqqq
q
q
q
q
q
q
qqq
q
q
q
q
q
q
q
q
q
q
q
qqqq
q
q
q
qqqq
q
q
q
q
q
qqqqq
qqq
q
qqqq
q
q
q
q
qqq
q
q
qqq
q
qqq
q
q
q
q
q
q
q
qqq
q
qqqq
q
qqqqqq
q
qqqq
q
q
q
q
q
q
qqqq
qqq
B
Est
imat
iva
para
θ 1−4
0−2
00
2040
0 5000 10000
q
q
q
q
q
qqqqqqqqqqqqqqq
qqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqq
qqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqq
B
Est
imat
iva
para
θ 2−4
0−2
00
2040
0 5000 10000
q
q
q
qqq
qqqqqqqq
q
qqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqq
qqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqq
B
Est
imat
iva
para
θ mv
−40
−20
020
40
0 5000 10000
q
q
qqq
q
qqq
q
q
q
qqqq
q
q
qqq
qqq
qqqq
q
qqq
q
q
q
q
q
qqq
q
q
qqq
q
q
q
qqqq
q
q
q
q
qqq
q
q
q
q
q
q
q
q
q
qqq
q
q
q
q
q
qqqqqqqq
qqq
qqqqq
q
q
q
q
qqq
q
q
q
q
q
q
q
q
q
q
q
q
q
q
q
q
q
q
q
q
qqq
q
qqqqq
qqq
q
q
q
qqq
qqqq
q
q
q
qqq
q
qqq
q
qqqq
q
q
q
q
q
q
q
qqqqqqq
q
q
qqqqqq
q
qqq
q
qqq
q
q
q
q
q
qqqqqqqqqq
q
q
q
q
qqqq
q
q
q
q
q
q
qqqq
qqqqqq
q
q
qqqqq
q
qqqq
qqq
q
q
q
qqqq
q
q
q
q
q
qqq
q
qqqqq
q
qqqqqq
q
qqq
q
q
q
qqqqq
qqq
q
q
qqq
q
q
q
q
qqqq
q
q
qqq
q
q
q
qqqqq
q
q
q
q
qqqqqq
q
qqq
q
q
qqq
q
q
q
q
q
q
qqq
q
q
q
q
q
qqq
q
q
qqqqq
q
q
qqqq
q
q
q
q
q
q
q
qqq
q
qqq
q
q
qqq
q
q
q
q
qqq
qqqq
q
q
qqq
q
qqqqq
q
q
q
q
q
q
qqq
qqq
q
q
q
q
q
q
qqq
qqqq
q
q
q
q
q
qqqq
qqq
qqqqqq
q
qqq
qqqq
q
q
q
q
q
qqqqq
qqqqq
q
qqqqqqq
q
q
qqq
q
q
q
q
q
qqq
q
qqqqqqq
qqqqqqqqq
q
q
q
q
q
q
q
q
q
q
q
q
q
q
q
qqqq
qqqqq
qqq
q
q
qqqqq
q
q
q
q
q
q
q
q
qqq
qqqqq
qqq
q
q
qqqqq
q
q
q
q
q
q
q
q
q
q
q
qqq
q
q
qqq
q
qqqq
q
q
q
q
qqq
q
q
qqqqq
qqq
qqq
q
qqq
q
qqq
q
q
qqq
q
q
q
q
q
q
q
q
q
q
q
q
q
q
qqq
q
q
q
q
q
q
q
q
q
q
qqq
qqq
q
q
q
q
q
q
qqq
qqqq
q
q
q
q
qqq
q
qqq
qqq
q
q
qqq
qqq
q
q
qqq
qqq
qqq
q
q
q
q
q
q
q
q
q
qqqqqq
qqq
q
q
q
qqqqqq
q
q
q
q
qqqqq
qqqq
qqq
q
q
q
q
qqq
q
qqq
q
qqqq
qqqq
q
q
q
q
q
q
q
q
q
q
q
q
q
qqq
qqqqqqqqq
qqqq
qqq
q
q
qqqqqq
qqq
q
q
qqqqq
q
q
q
q
q
qqqqq
q
qqqq
q
q
qqqq
q
q
qqqqqqqq
q
qqqq
q
q
q
qqq
q
q
q
q
q
q
q
q
qqqqqq
q
q
q
q
q
qqqq
q
qqqqq
q
q
qqqqqq
q
q
qqqqqqq
q
q
q
qqqqqq
q
q
q
qqq
q
q
q
q
qqq
q
q
q
q
q
q
qqqqq
qqq
q
q
q
q
q
q
q
q
q
q
qqq
q
q
qqqqqq
q
q
q
qqq
qqqqqqq
qqq
q
q
q
q
q
q
qqq
q
qqq
qqqq
q
q
q
q
q
qqq
qqq
q
q
qqq
qqqqqq
q
q
qqqqq
q
q
qqq
q
q
q
qqq
q
q
q
q
qqqq
q
q
qqq
q
qqq
q
q
qqqqqq
q
qqqq
qqqq
q
q
q
qqqqq
q
qqqq
qqqq
q
qqq
q
q
q
q
q
qqqqqqq
qqqq
q
qqqq
q
q
q
qqq
q
q
q
q
qqq
q
q
q
q
q
q
qqqqq
q
q
q
q
q
q
q
qqq
qqq
q
q
qqqq
q
q
q
q
q
qqqqq
q
q
q
q
q
q
q
q
qqqqqqqq
q
q
qqqq
q
q
qqqq
q
qqqqq
q
q
q
q
q
q
q
q
qqqqqq
q
q
qqq
q
qqq
q
q
qqq
qqqqqq
qqq
q
q
qqq
q
qqqqq
q
q
q
q
q
qqqqq
q
q
q
q
q
q
qqq
qqqqq
q
q
qqq
qqqqqqqq
q
q
q
qqq
q
q
q
qqqqqq
q
q
qqqqq
q
q