
Alexandre, Segue um CMR simples: # tamanho de amostra para medida de interesse que # é o erro absoluto ao estimar a média da população # erro = abs(média_estimada-média_verdadeira) pop.total <- rnorm(10000, mean=20, sd=15) # população m <- mean(20) # média verdadeira i <- unique(floor(2^seq(1, 12, by=0.5))); i # tamanhos de amostra nr <- 100 # número de execuções de reamostragem fun <- function(size, pop, m){ # função que calcula o erro a partir de uma amostra x <- sample(pop, size, replace=TRUE) # retorna a diferença entre estimado e real abs(mean(x)-m) } results1 <- sapply(i, function(j){ replicate(nr, fun(size=j, pop=pop.total, m=m)) }) str(results1) # matriz: colunas correspondem à i results2 <- colMeans(results1) # tira a média para cada i results2 plot(results2~i) plot(results2~log2(i)) # qual o tamanho de amostra para ter um erro no ponto # médio entre o máximo (quando n=1) e o mínimo (n->infinito, erro=0) n0 <- nls(results2~A*B^(-log2(i)+1), start=list(A=1, B=1)) coef(n0) perc <- 0.3 # erro tolerado de 30% do máximo (usuário define) xi <- -log(perc)/log(coef(n0)["B"])+1 # tamanho de amostra correspondente plot(results2~log2(i), xlim=c(1, max(log2(i))), ylim=c(0,max(results2, coef(n0)["A"])), xlab="Tamanho da amostra (log2 unidades)", ylab="Erro absoluto médio ao estimar a média") abline(v=1, lty=2) with(as.list(coef(n0)), curve(A*B^(-x+1), add=TRUE)) with(as.list(coef(n0)), abline(h=A*c(1,perc), v=xi, lty=2, col=2)) ceiling(2^xi) # tamanho de amostra à ser considerado À disposição. Walmes. ========================================================================== Walmes Marques Zeviani LEG (Laboratório de Estatística e Geoinformação, 25.450418 S, 49.231759 W) Departamento de Estatística - Universidade Federal do Paraná fone: (+55) 41 3361 3573 VoIP: (3361 3600) 1053 1173 e-mail: walmes@ufpr.br skype: walmeszeviani twitter: @walmeszeviani homepage: http://www.leg.ufpr.br/~walmes linux user number: 531218 ==========================================================================