下面是我的程序:
data rpw;
pb=0.1;
do pa=pb to 1 by 0.1;
do j=1 to 3;
na=1; /*initial number of A*/
nb=1; /*initial number of B*/
retain seed1 123 seed2 345 seed3 678;
do i=1 to 100;
call ranuni(seed1,allo_p);
if allo_p<na/(na+nb) then do;
t='A';
call ranuni(seed2,succ_pa);
if succ_pa<pa then na=na+1;
else nb=nb+1;
end;
else do;
t='B';
call ranuni(seed3,succ_pb);
if succ_pb<pb then nb=nb+1;
else na=na+1;
end;
end;
allo_pa=na/(na+nb);
output;
end;
end;
run;
proc print;
var pa allo_pa;
run;
接下来是运行结果:
Obs pa allo_pa
1 0.1 0.57843
2 0.1 0.49020
3 0.1 0.51961
4 0.2 0.52941
5 0.2 0.53922
6 0.2 0.50980
7 0.3 0.55882
8 0.3 0.53922
9 0.3 0.55882
10 0.4 0.61765
11 0.4 0.54902
12 0.4 0.54902
13 0.5 0.63725
14 0.5 0.68627
15 0.5 0.62745
16 0.6 0.74510
17 0.6 0.70588
18 0.6 0.68627
19 0.7 0.81373
20 0.7 0.72549
21 0.7 0.78431
22 0.8 0.79412
23 0.8 0.78431
24 0.8 0.81373
25 0.9 0.92157
26 0.9 0.88235
27 0.9 0.92157
28 1.0 0.99020
29 1.0 0.97059
30 1.0 0.99020
我想做的是对每个pa,求allo_pa的方差,然后以pa为横轴,allo_pa的方差为纵轴作图,能不能在对pa的循环里加入means过程啊,我那样做的输出来的不是想要的结果。。。头疼死了,用的SAS9.0也不支持自定义函数。。。求大侠指点。。