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>
4119
Idade (dias atrás)
4119
Última atividade (dias atrás)
2 comentários
3 participantes
participantes (3)
-
Benilton Carvalho -
FHRB Toledo -
Marcos Bissoli