sas - military - Escoja aleatoriamente los números en una secuencia y guárdelos como observaciones basadas en distribuciones de frecuencia predefinidas
sas software (1)
Me gustaría seleccionar aleatoriamente números de una secuencia de 1: 8 y guardar los números seleccionados como observaciones de una nueva variable en un conjunto de datos SAS. Cada número del 1 al 8 tendrá la misma posibilidad de ser elegido (0.125). Entonces, una vez que se genera la nueva variable y ejecuto proc freq en la variable, obtendré una distribución de frecuencias cercana al 12.5% para cada número en la secuencia.
El equivalente R es algo como esto usando la función sample ():
x <- sample(1:8, 1000, replace=T,
prob=c(.125, .125, .125, .125, .125, .125, .125, .125))
Pero, ¿cómo puedo hacer eso en SAS? ¡Muchas gracias!
SAS tiene la función rand , que puede producir cualquiera de una serie de distribuciones. La distribución uniform
suena como lo que quieres. Eso produce 0: 1, por lo que solo lo modificará para que sea 1: 8.
data want;
call streaminit(7); *initialize random stream, pick whatever positive seed you want;
do _n_=1 to 1000; *do 1000 times;
x = ceil(rand(''Uniform'')*8);
output;
end;
run;
Otro método es el método ''Tabla'', que es más directamente similar a la función r
.
data want;
call streaminit(7);
do _n_ = 1 to 1000;
x = rand(''Table'',.125,.125,.125,.125,.125,.125,.125,.125);
output;
end;
run;
proc freq data=want;
table x;
run;
Sin embargo, en este caso, Uniform
debería funcionar igual de bien.
Tenga en cuenta que este método (Uniforme) está muy ligeramente sesgado en el extremo superior: porque no puede producir 1, 8 ocurrirá con mucha menos frecuencia que 1 a 7. (1 es 0 <x <= 1, 5 es 4 <x < = 5, pero 8 es 7 <x <8). Si estás produciendo 1000 números que no van a tener un efecto significativo en las cosas (estamos viendo un rango de números de 2 ^ 63, por lo que los 8 faltantes serían extremadamente infrecuentes), pero si estás produciendo muchos números ( del orden de 1e15 o menos) comienza a notarse, y el método de tabla es superior, o usa 9 en lugar de 8 y descarta los 9s.