## Ref: boot.r ## ## PROGRAMA PARA ESTIMAR A PRECISAO DO ESTIMADOR MEDIA VIA BOOTSTRAP ## ## ## ## OBS: No caso do estimador MEDIANA ou VARIANCIA substituir na linha ## ## de comando 'source('theta1.r')','theta1' por 'theta2' ou 'theta3' ## bootstrap=function(x, n) { ## x é um vetor que contem uma amostra inicial e n é o numero de amostras ## ## por bootstrap a partir da amostra inicial ## source('theta1.r') ## O Script theta(i).txt, para i=1,2,3,... , que contem a funcao theta, é ## ## carregado do diretório especificado acima ## z<-list() ## z é uma lista de objetos a ser construida ## data<-matrix(sample(x, size=length(x)*n, replace=T), nrow=n) ## data é uma matriz de n linhas e tantas colunas quantas forem o tamanho ## ## da amostra inicial x, onde cada linha é uma amostra gerada por bootstrap ## ## a partir da amostra inicial x ## bd<-apply(data, 1, theta) ## bd é um vetor com dimensao igual a dimensão da amostra inicial x, o qual ## ## contem os valores da estatistica theta p/ cada amostra (linha [conforme o## ## parâmetro "1"] da matriz data) gerada por bootstrap, ## estat<-theta(x) ## estat recebe o valor da estatísitca tetha da amostra inicial x ## z$estat<-estat ## z$estat é um objeto da lista z que contem o vlr da estatistica theta ## ## para a amostra inicial x ## z$distn<-bd ## z$distn é um objeto da lista z que representa o vetor bd ## z$bias<-mean(bd)-estat ## z$bias é um objeto da lista z que contem o vicio, media das estatisticas ## ## theta calculada p/ cada amostra de bootstrap em relaçao a estatistica ## ## theta calculada sobre a amostra inicial ## z$se<-sqrt(var(bd)) ## z$se é um objeto da lista z que contem o erro padrão das estatisticas ## ## theta calculadas sobre cada amostra de bootstrap ## z ## retorna a lista construida ## } x <- rnorm(30,0,1) n=15 ## forcecendo os dados de entrada da funcao bootstrap ## w <- bootstrap(x,n) w ## executando a funcao bootstrap e armazenando os resultados em w ## ############################################################################## ## GRAFICO DA FUNCAO DISTRIBUICAO EMPIRICA ## ############################################################################## x=sort(x); p=NULL # ordena o vetor x de forma crescente e cria um vetor p for (i in 1:length(x)) p[i]=(i)/length(x) tab1<-data.frame(x,p) par(mfrow=c(1,3)) with(tab1, plot(x, p, xlab="Valores", ylab="F(x) empirica")) ############################################################################## ## HISTOGRAMA DA AMOSTRA INICIAL x ## ############################################################################## hist(x, xlab='x', ylab='Frequencia', main="Distribuicao dos Valores da Amostra Inicial") ############################################################################## ## HISTOGRAMA DOS VALORES DA ESTATISTICA THETA POR BOOTSTRAP ## ############################################################################## hist(w$distn, xlab='Media',ylab='Frequencia', main="Distribuicao das medias bootstrap")