[R-br] Amostragem em um vetor

Fernando Souza nandodesouza em gmail.com
Quinta Setembro 28 16:37:54 -03 2017


Uma solução.

O comando retorna um dataframe contendo uma coluna com as médias e outra
com os desvios. A partir daí fazer os graficos fica a seu sabor.

populacao <- rchisq(100000, df = 10)
tamanhoAmostra <- c(6,14,16,18,20)

##x:dados a serem amostrados
##n= tamanho da amostra
##r =número de repetições. deve ser um valor inteiro
amostra <- function(x,n,r){
     a <- list() ##guarda as amostras
     rptn <- list() ##guarda a repetição da amostragem

    for(i in 1:length(n)){
         z <- 1
         while(z <= r){

            rptn[[z]] <- sample(x,size = n[i])
            names(rptn)[z] <- paste0("repetição",z)
            z = z + 1
        }

       a[,i] <- rptn

    }


   return(a)

}
amostrados <- amostra(populacao,tamanhoAmostra,2)

#install.packages("plyr")
library(plyr)


resultado <- ldply (amostrados,function(x){
   media <- mean(c(x$repetição1,x$repetição2))
   desvio <- sd(c(x$repetição1,x$repetição2))
   resposta <- data.frame(media,desvio)
   return(resposta)

})

##você pode converter o dataframe para matrix
as.matrix(resultado)


Em 28 de setembro de 2017 15:45, FHRB Toledo via R-br <
r-br em listas.c3sl.ufpr.br> escreveu:

> Isso tem bastante cara de um exercício de classe. De qualquer forma, segue
> uma versão funcionando que se aproxima muito da sua explicação:
>
> > library(plyr)
> > library(ggplot2)
>
> > R <- 1E4 # tamanho da populacao
> > S <- 1E3 # quantidade de amostras
> > T <- 2:50 # tamanho das amostras
> > names(T) <- T # nomeando vetor
>
> > pop <- rnorm(R) # populacao
>
> > ## cavalor de forca... : gera os dados
> > sampler <- function(t, s, p) ldply(t, .id = 'size',
>                                      function(ts) t(sapply(lapply(1:S,
>
> function(ss) sample(x = p,
>
> size = t,
>
> replace = TRUE)),
>                                                            function(x)
> c(mu = mean(x), sigma = sd(x)))))
>
> > ## resume por tamanho de amostras
> > dados <- mutate(ddply(sampler(T, S, pop), .(size),
>                         summarize, muBar = mean(mu), sigmaBar =
> mean(sigma)),
>                   size = as.numeric(as.character(size)))
>
> > ## media das medias
> > ggplot(dados, mapping = aes(x = size, y = muBar)) + geom_point()
>
> > ## media dos desvios
> > ggplot(dados, mapping = aes(x = size, y = sigmaBar)) + geom_point()
>
> Vale a pena revisar e testar tudo novamente, sobre as saídas como matriz,
> deixo isso para suas adaptações.
>
> att,
> FH
>
> 2017-09-27 19:24 GMT-05:00 Andre Oliveira via R-br <
> r-br em listas.c3sl.ufpr.br>:
>
>> Vou tentar explicar melhor!
>>
>> " para cada  tam repetir  nam (vezes)"
>>
>>
>> Seria repetir as amostragens:
>>
>> amostras de 2 em 2  um número k vezes. (Teria aqui k desvios-padrão e k
>> medias). salvar media dos desvios e media das media!
>>
>> amostras de 3 em 3  um número k vezes. (Teria aqui k desvios-padrão e k
>> medias). salvar media dos desvios e media das media!
>>
>>
>> amostras de 4 em 4  um número k vezes. (Teria aqui k desvios-padrão e k
>> medias). salvar media dos desvios e media das media!
>>
>> ............................................................
>> ............................................................
>> ............................................................
>> ....................
>>
>>
>> amostras de j em j  um número k vezes. (Teria aqui k desvios-padrão e k
>> medias). salvar media dos desvios e media das media!
>>
>>
>> Plotar os vetores salvos!
>>
>> André Oliveira Souza. Graduação em Matemática, mestrado em estatística
>> aplicada.Instituto Federal de Educação, Ciência e Tecnologia do Espirito
>> Santo.  IFES
>>
>>
>> Em Quarta-feira, 27 de Setembro de 2017 15:02, Fernando Souza <
>> nandodesouza em gmail.com> escreveu:
>>
>>
>> Acredito que isso deva te ajudar. Não entendi muito bem o que quis dizer
>> com  " para cada  tam repetir  nam (vezes)" , por isso o código abaixo
>> não faz nenhuma repetição dos valores amostrados , porém acredito que é
>> fácil de ajustar.
>>
>> populacao <- rchisq(100000, df = 10)
>> tamanho <- c(6,14,16,18,20) # diferentes tamanhos para amostrar
>>
>> amostra <- function(x,n){
>>     a <- list()
>>
>>     for(i in 1:length(n)){
>>
>>         a[[i]] <- sample(x,size = n[i])
>>
>>
>>         }
>>    return(a)
>>
>> }
>> amostrados <- amostra(populacao,tamanho)
>>
>> #install.packages("plyr")
>> library(plyr)
>>
>> resultado <- ldply (amostrados,function(x){
>>    media <- mean(x)
>>    desvio <- sd(x)
>>
>>    resposta <- data.frame(media,desvio)
>>    return(resposta)
>>
>> })
>>
>> ##você pode converter o dataframe para matrix
>> as.matrix(resultado)
>>
>>
>> Em 26 de setembro de 2017 22:42, Andre Oliveira via R-br <
>> r-br em listas.c3sl.ufpr.br> escreveu:
>>
>> Boa noite,
>> preciso de amostrar em um vetor de nome populacao amostras de tamanho n,
>> com n variando de tamanhos  [2; tam] e para cada  tam repetir  nam
>> (vezes) e assim pegar a estimativas de media e dos desvios -padrão das
>> amostras.
>>
>>
>> Para cada amostra obtida extrair desvio padrão, média e guardar em uma
>> matriz com vazia com NAs!  Ao final plotar a média dos desvios e a media
>> das medias em função de cada n.
>>
>> Tentei fazer,  mas sem sucesso! Caso alguém pude ajudar ficarei grato!
>>
>>
>> ############################## ##############################
>> #########################
>>
>> n=10
>> populacao <- rchisq(100000, df = n)
>> mu=n
>> s=sqrt(2*n)
>> mu
>> s
>>
>> par(mfrow = c(1, 3))
>> hist(populacao, prob=T, main="Y ~ Quiquadrado(GL=10)",xlab=" ",
>> yla="Densidade",col=" limegreen")
>>
>> amostragem<-function( populacao, tam, nam)
>>   {
>>    SD<-NULL
>>    media<-NULL
>>     X <-matrix(NA, tam, 2)
>>     {
>>     for(i in 2:nam)
>>     amostra<-sample(populacao,tam)
>>     SD[i]=sd(amostra)
>>     media[i]<-mean(amostra)
>>    X[i,] <- c(mean(SD), mean(media))
>>     }
>> print(cbind(mean(SD),mean( media))
>> print(X)
>> plot.ts(SD, pch=19, type = "p", xlab="Número de folhas amostrada",
>> ylab="Estimativa da Variabiliade", lty=2,xaxp=c(0,150,10))
>> plot.ts(media, pch=19, type = "p", xlab="Número de folhas amostrada",
>> ylab="Estimativa da média", lty=2,xaxp=c(0,150,10))
>> }
>>
>>
>> amostragem(populacao, 150, 50000)
>>  ############################# ##############################
>> ############################## ##
>>
>> obg
>>
>> ______________________________ _________________
>> R-br mailing list
>> R-br em listas.c3sl.ufpr.br
>> https://listas.inf.ufpr.br/ cgi-bin/mailman/listinfo/r-br
>> <https://listas.inf.ufpr.br/cgi-bin/mailman/listinfo/r-br>
>> Leia o guia de postagem (http://www.leg.ufpr.br/r-br- guia
>> <http://www.leg.ufpr.br/r-br-guia>) e forneça código mínimo reproduzível.
>>
>>
>>
>>
>> --
>> =========================================
>> Fernando Souza
>> Zootecnista, DSc. Produção e Alimentação Animal
>> Celular: (31)99796-8781 (Vivo)
>> E-mail:nandodesouza em gmail.com <e-mail%3Anandodesouza em gmail.com>
>> Lattes: http://lattes.cnpq.br/6519538815038307
>> Blog: https://producaoanimalcomr.wordpress.com/
>> ==========================================
>>
>>
>>
>> _______________________________________________
>> R-br mailing list
>> R-br em listas.c3sl.ufpr.br
>> https://listas.inf.ufpr.br/cgi-bin/mailman/listinfo/r-br
>> Leia o guia de postagem (http://www.leg.ufpr.br/r-br-guia) e forneça
>> código mínimo reproduzível.
>>
>
>
> _______________________________________________
> R-br mailing list
> R-br em listas.c3sl.ufpr.br
> https://listas.inf.ufpr.br/cgi-bin/mailman/listinfo/r-br
> Leia o guia de postagem (http://www.leg.ufpr.br/r-br-guia) e forneça
> código mínimo reproduzível.
>



-- 
=========================================
Fernando Souza
Zootecnista, DSc. Produção e Alimentação Animal
Celular: (31)99796-8781 (Vivo)
E-mail:nandodesouza em gmail.com <e-mail%3Anandodesouza em gmail.com>
Lattes: http://lattes.cnpq.br/6519538815038307
Blog: https://producaoanimalcomr.wordpress.com/
==========================================
-------------- Próxima Parte ----------
Um anexo em HTML foi limpo...
URL: <http://listas.inf.ufpr.br/pipermail/r-br/attachments/20170928/d1af72f6/attachment.html>


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