[R-br] Teste para decisão do número ótimo de amostra

Walmes Zeviani walmeszeviani em gmail.com
Quarta Março 20 18:31:09 BRT 2013


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 em ufpr.br
skype: walmeszeviani
twitter: @walmeszeviani
homepage: http://www.leg.ufpr.br/~walmes
linux user number: 531218
==========================================================================
-------------- Próxima Parte ----------
Um anexo em HTML foi limpo...
URL: <http://listas.inf.ufpr.br/pipermail/r-br/attachments/20130320/971350f5/attachment.html>


Mais detalhes sobre a lista de discussão R-br