software military inglaterra estadistica check andalucia airline sas

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.