这个问题与SAS有关。我需要随机生成一个变量,让它称之为物种,"其中60%的病例为1,其余40%的病例为0。 x_1有15,000个案例(其中x_1是随机的,均匀分布的变量)需要分配1或0.它必须使用if-then-do语句生成,对吧?到目前为止,我有:
data species_list;
set work.species_list;
if x_1 <= 0.6 then do;
Species = 1;
end;
else if x_1 > 0.6 then do;
Species = 0;
end;
run;
这部分很容易。但是,我需要将1和0随机分配给15,000个案例,而不是基于某些不平等。
答案 0 :(得分:2)
如果x_1
是随机的,均匀分布的变量,那么这个不等式确实“随机”地分配它们(无论如何都可以用计算机完成)。
从我的记忆中,你的不平等会或多或少地起作用。它并不完美;最有可能你的随机数的下限为0,上限为0.999999,所以它不会给完美 60/40分割,尽管有15000,你可能会看到一个相当接近的匹配。
更好的方法是使用proc surveyselect
。这不需要您的x_1
变量。
proc surveyselect data=species_list out=species_out samprate=0.6 outall seed=12345;
run;
那将抽样60%并给他们一个1,剩下的40%将是0.简单就是馅饼。
答案 1 :(得分:1)
如果要在SAS中生成随机变量,可以使用rand
函数。
您可以使用:
Species = ifn(rand("uniform") <= 0.6, 1, 0);
或:
x_1 = rand("uniform");
if x_1 <= 0.6 then Species = 1;
else Species = 0;
取决于哪一个更容易理解。
rand(dist [, parameters])
生成一个从多个发行版之一生成的随机数。ifn(condition, trueValue, falseValue)
将返回其第二个或第三个(数字)参数,具体取决于条件的计算结果是true还是false。do; end;
中。call streaminit
向PRNG提供种子。