Geração de números aleatórios com amplitude determinada

29 Jul
2014
29 Jul
'14
02:14
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@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!

29 Jul
29 Jul
02:34
Novo assunto: [R-br] Geração de números aleatórios com amplitude determinada
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@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@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@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. >

03:18
Novo assunto: [R-br] Geração de números aleatórios com amplitude determinada
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@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@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@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@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@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>
4034
Idade (dias atrás)
4034
Última atividade (dias atrás)
2 comentários
3 participantes
participantes (3)
-
Benilton Carvalho
-
FHRB Toledo
-
Marcos Bissoli