Foro de debate

hola , gracias por las respuestas anteriores aqui tengo otra pregunta.

Re: hola , gracias por las respuestas anteriores aqui tengo otra pregunta.

de Manuel Muñoz Márquez -
Número de respuestas: 0

Buenas

En primer lugar, el primer argumento de rnorm es n, que es el número de valores a generar. Por tanto, el primer argumento debería ser 5 y no 1:5, ya que 1:5 es la secuencia del 1 al 5.

Si lo que quieres es quitar los valores negativos, tienes varias opciones:

1. Generar una secuencia más larga y luego quedarte con los no negativos

> x <- rnorm(10, 10, 5)
> x
 [1]  7.035322 15.281940 11.388629  2.988579  8.082712 19.618089  7.113353
 [8]  8.614583 20.033697 10.984796
> x <- x[x >= 0]
> x
 [1]  7.035322 15.281940 11.388629  2.988579  8.082712 19.618089  7.113353
 [8]  8.614583 20.033697 10.984796
> x <- x[1:5]
> x
[1]  7.035322 15.281940 11.388629  2.988579  8.082712

2. Otra opción es definir tu propia función generadora

> myrnorm <- function(n, mean = 0, sd = 1) {
+ x <- rnorm(n = n, mean = mean, sd = sd)
+ x <- x[x >= 0]
+ while(length(x) < n) {
+ x <- c(x, rnorm(n = n - length(x), mean = mean, sd = sd))
+ x <- x[x >= 0]
+ }
+ x
+ }
> myrnorm(5, 10, 5)
[1] 17.75030 14.33300 13.35682 20.09813 11.59465

 

3. Estas distribuciones se conocen como normales truncadas Usar la función rtruncnorm del pquete truncnorm. En este caso sería

rtruncnorm(5, 0, Inf, 5, 10)

 

Algo que se le puede pasar por la cabeza a alguien es simplemente tomar valor absoluto, esa opción generaría valores no normales.

 

P,D,; Sugerencia, usa como título del mensaje algo que haga referencia a su contenido