[R-br] Geração de números aleatórios com amplitude determinada

Benilton Carvalho beniltoncarvalho em gmail.com
Terça Julho 29 00:18:05 BRT 2014


um exercicio pra matar saudade de recursao...

f <- function(n, menor, maior, x, s){
    obs <- rnorm(n, x, s)
    obs <- obs[obs > menor & obs < maior]
    nin <- length(obs)
    if (nin == n){
        return(obs)
    }else{
        return(c(obs, f(n-nin, menor, maior, x, s)))
    }
}

system.time(res <- f(10000, 2, 3, 0, 1))
##   user  system elapsed
##  0.063   0.001   0.064
length(res)
## [1] 10000
range(res)
## [1] 2.000013 2.999675


Em 28 de julho de 2014 23:34, FHRB Toledo <fernandohtoledo em gmail.com>
escreveu:

> Não seria o caso de você obter esses valores analiticamente, ao invés de
> usar simulação? Veja a documentação da função pnorm().
>
> att,
> FH
>
>
> 2014-07-28 21:14 GMT-05:00 Marcos Bissoli <mbissoli em gmail.com>:
>
>>  Boa noite a todos,
>>
>> Preciso gerar uma sequência de números aleatórios, de uma distribuição
>> normal. No entanto, a função <rnorm> não permite definir limites mínimo e
>> máximo para o vetor de dados. Assim, criei uma função para tal fim:
>>
>> >Gerador.Aleatorio <- function(n,menor,maior,x,s)
>> +{
>> +  dados <- rnorm(n,x,s)
>> +  while ((min(dados)<menor)|(max(dados)>maior))
>> +  {
>> +    dados <- rnorm(n,x,s)
>> +  }
>> +  dados <- dados
>> +  print(dados)
>> +}
>>
>> Onde:
>> - n é o número de valores que quero gerar
>> - menor é o limite mínimo do vetor
>> - maior é o limite máximo do vetor
>> - x é a média do vetor
>> - s é o desvio padrão do vetor
>>
>> O problema é que, como usei um laço ("loop"), o custo de tempo
>> computacional dessa função tornou-a simplesmente impraticável. Até 100
>> valores eu consegui gerar. Mas agora tentei com 284 e já jantei, fumei,
>> tratei de assuntos familiares e... Nada! E minha demanda, na verdade, é
>> para gerar mais de 1500 valores, simulando estudo epidemiológico
>> observacional, a partir de valores já descritos em um estudo piloto que
>> realizei (ou seja, eu tenho já estimativas de n, mínimo, máximo, média e
>> desvio padrão).
>>
>> Há alguma função, pacote ou sintaxe que torne isso possível? E qual
>> seriam esses "limites do custo computacional"?
>>
>> Grato desde já por qualquer ajuda.
>>
>> Abraços fraternos,
>>
>> --
>> MARCOS BISSOLI
>> Faculdade de Nutrição
>> Universidade Federal de Alfenas
>>
>> E-mail: mbissoli em gmail.com
>> Twitter: #mbissoli
>> Facebook: https://www.facebook.com/MarcosBissoli
>>
>> Alfenas, Minas Gerais, Brasil
>>
>>
>> *****Pense na Natureza antes de Imprimir*****
>> Divulgue ON-LINE
>>
>> Eu apoio a ENEN "na luta por um Brasil sem fome"
>>
>> "por ĉiu popolo ties propran lingvon, por ĉiuj popoloj la esperantan"
>> (para cada povo sua própria língua, para todos os povos o Esperanto)
>>
>> E nunca votarei no PSDB/DEM!
>>
>> _______________________________________________
>> 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.
>



-- 

[image: Benilton Carvalho on about.me]

Benilton Carvalho
about.me/benilton
  <http://about.me/benilton>
-------------- Próxima Parte ----------
Um anexo em HTML foi limpo...
URL: <http://listas.inf.ufpr.br/pipermail/r-br/attachments/20140729/ebc338e9/attachment.html>


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