## Ref: bootcor.r ## ############################################################################## ## PROGRAMA PARA ESTIMAR A PRECISAO DO ESTIMADOR DA CORRELACAO ## ## VIA BOOTSTRAP ## ############################################################################## bootstrap=function(n, dados) { ## n e o numero de amostras por bootstrap a partir da amostra inicial e ## ## dados e a amostra inicial ## if(ncol(dados) != 2) stop('dados deve ser uma matrix de 2 colunas') ## se o numero de colunas for diferente de 2 nao se calcula a correlacao ## x <- 1:nrow(dados) ## x e um vetor que contem o numero de pares correlacionados na amostra ## ## (em ordem crescente) ## z <-list() ## z e uma lista de objetos a ser construida ## estat<-cor(dados[,1],dados[,2]) ## estat recebe o valor da estatistica correlacao da amostra inicial x ## z$estat <-estat ## z$estat e um objeto da lista z que contem o valor da correlacao da ## ## amostra inicial ¨dados¨. ## 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 ## ## do vetor x, onde cada linha é uma amostra gerada por bootstrap do vetor ## ## x, cujos elementos correspondem as linhas da matriz ¨dados¨ ## bd<-NULL ## bd e um objeto NULL, que representa nada, o conjunto vazio ## for(i in 1:n) { y=data[i,] bd[i]=cor(dados[y,1],dados[y,2]) } ## bd, agora, e um vetor com dimensao igual a dimensao do vetor inicial x, ## ## o qual contem os valores das correlacoes p/ cada amostra gerada por ## ## bootstrap ## z$distn<-bd ## z$distn e um objeto da lista z que representa o vetor bd ## bias<-mean(bd)-estat z$bias <- bias ## z$bias e um objeto da lista z que contem o vicio, media das correlacoes ## ## calculadas p/ cada amostra gerada por bootstrap, em relacao a correlacao ## ## calculada sobre a amostra inicial ¨dados¨ ## z$se<-sqrt(var(bd)) ## z$se e um objeto da lista z que contem o erro padrao da correlacao ## ## da amostra inicial ¨dados¨ calculada por bootstrap ## z ## retorna a lista construida ## } ## FIM DA FUNCAO BOOTSTRAP dados=read.table('law.dat', head=T) n=200 w <- bootstrap(n, dados) w ############################################################################## ## GRAFICO DA FUNCAO DISTRIBUICAO EMPIRICA DA AMOSTRA INICIAL x ## ############################################################################## p=NULL ## cria um vetor p que posteriormente conterá os valores da função dist. ## ## "empírica" para a amostra inicial ## par(mfrow=c(1,3)) ## abre uma janela que conterá tres gráficos (um ao lado do outro) ## for (i in 1:n) p[i]=i/n tab1<-data.frame(1:n,p) with(tab1, plot(1:n, p, xlab="Valores", ylab="F(x) empirica")) ############################################################################## ## DIAGRAMA DE DISPERSAO DA AMOSTRA INICIAL ## ############################################################################## # par(mfrow=c(1,2)) ## abre uma janela que contera tres graficos (um ao lado do outro) ## plot(dados, xlab='LSAT',ylab='GPA', main='Diagrama de Dispersao da Amostra Inicial') ############################################################################## ## HISTOGRAMA DOS VALORES DAS ESTATISTICAS THETA GERADAS POR BOOTSTRAP ## ############################################################################## hist(w$distn,xlab='Correlacao',ylab='Frequencia',main="Distribuicao das Correlacoes Bootstrap")