## Ref: boot1.r ## ############################################################################## ## PROGRAMA PARA CALCULAR O ERRO PADRÃO DE UMA ESTIMATIVA VIA BOOTSTRAP ## ## AUTOR: GUERINO PIROLLO JUNIOR ## ## ## ## OBS: Estando no xemacs, execute as linhas da funcao bootstrap com os ## ## comandos ctrl-c ctrl-n. As 3 ultimas linhas deverao ser digitadas ## ## no R. Apos dar enter na linha bootstrap vc digitara a opcao dese- ## ## jada com os respectivos ¨enter¨ conforme explicado a seguir em ## ## ¨cat¨). ## ############################################################################## bootstrap=function(x, n) { ## x é um vetor que contem uma amostra inicial e n é o numero de amostras ## ## geradas por bootstrap, a partir da amostra inicial x ## cat("Escolha a estatística para a qual você deseja calcular o erro padrão:","\n") cat("digite 1 para media amostral ","\n") cat("digite 2 para mediana amostral ","\n") cat("digite 3 para a variancia amostral ") k=scan() if(k==1) theta=mean if(k==2) theta=median if(k==3) theta=var 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<-bd ## 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 da matriz ## ## data) gerada por bootstrap, conforme o parâmetro "1" ## ## BD é identico ao vetor bd, porém será usado na construcao do histograma ## estat<-theta(x) ## estat recebe o valor da estatística theta da amostra inicial x ## z$estat<-estat ## z$estat é um objeto da lista z que contem o vlr da estatistica theta da ## ## amostra inicial x ## z$distn<-bd ## z$distn é um objeto da lista z que representa o vetor bd ## bias<-mean(bd)-estat ## z$bias é um objeto da lista z que contem o vicio, media das estatisticas ## ## theta calculadas p/ cada amostra gerada por 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 da estatistica theta## ## calculada por bootstrap ## { ############################################################################## ## GRAFICO DA FUNCAO DISTRIBUICAO EMPIRICA DA AMOSTRA INICIAL x ## ############################################################################## x=sort(x); p=NULL ## ordena x de forma crescente, cria um vetor p que posteriormente conterá ## ## os valores da função distribuição "empírica" para a amostra inicial ## par(mfrow=c(1,3)) ## abre uma janela que conterá três gráficos (um ao lado do outro) ## for (i in 1:length(x)) p[i]=i/length(x) tab1<-data.frame(x,p) with(tab1, plot(x, p, xlab="Valores", ylab="F(x) empirica")) ############################################################################## ## HISTOGRAMA DA AMOSTRA INICIAL x ## ############################################################################## hist(x, xlab="Distribuicao da Amostra Inicial") ############################################################################## ## HISTOGRAMA DOS VALORES DAS ESTATISTICAS THETA GERADAS POR BOOTSTRAP ## ############################################################################## hist(BD, xlab="Distribuicao Bootstrap da Estimativa") } z ## retorna a lista construida } x <- rnorm(30,0,1) n=15 bootstrap(x,n)