在模拟二项分布中找不到sas变量

时间:2015-11-21 08:31:15

标签: sas

我是SAS的新手,我想知道如何在创建二项分布时解决变量未发现的问题?

DATA additional (KEEP=X);
  DO REPEAT = 1 TO 1000;
    CALL STREAMINIT(1234);

    DO I=1 TO 1000;
      X=RAND("BINOMIAL",0.6,10); /*NUMBER OF WINS IN TEN TOSSES*/
    END;

    IF X GE 5 THEN WINNER + 1;
    ELSE LOSER + 1;
    OUTPUT;
  END;
RUN;
PROC PRINT DATA=additional;
  VAR WINNER LOSER;
RUN; 

我正在创建一个二项式随机变量,如果x大于5则为胜利者计算一个,如果小于5则为失败者计算一个,问题是要求找到多少次获胜者和多少次是输家。我一直在变量找不到错误。我是否在生成二项分布时出错了。

/ 进一步编辑 /这是我给出的问题。

你得到10美元。让变量货币= 10。 你玩了10次游戏。你赢得比赛的概率是0.4, 你输掉一场比赛的概率是0.6。 如果你赢了一场比赛,你就赢了1美元。如果你输了一场比赛,你将失去1美元。因此,如果 你赢了第一场比赛,钱就变成了11.但是如果你失去了第一场比赛 游戏,钱变成了9。 你玩了10次游戏后,金额就是你的金额 回家吧。如果你最终得到至少10美元,称自己为胜利者。 否则,称自己为失败者。将变量结果定义为胜利者 或失败者。

(a)写一个数据步骤来生成随机数并模拟你的 结果1000次。这样我就可以轻松检查你的输出,使用 1234作为随机数发生器的种子。 (你不 需要向我展示1000个结果。)

(b)写一个proc步骤,以显示你是多少次获胜者,以及 你是多少次失败者。

1 个答案:

答案 0 :(得分:0)

不完全明白您想要进行模拟。从您的代码中,您只需保留1000条记录,由于您的第一个循环结束位置,这些记录都保留在最后一个循环中; call streaminit应该是第一行;你只保留X,你不能得到赢家和输家。

我想也许你可以试试这个。

DATA additional;
CALL STREAMINIT(1234);
DO REPEAT= 1 TO 1000;  *numbers of sample;
DO I=1 TO 100;         *size of sample;
X=RAND("BINOMIAL",0.6,10); /*NUMBER OF WINS IN TEN TOSSES*/
IF X GE 5 THEN results='WINNER';
ELSE results='LOSER';
OUTPUT;
END;
END;
RUN;

proc freq data=additional;
by repeat;
table results;
run;

编辑:您似乎想知道最终结果,您可以通过将结果更改为数字变量从上面的代码中获取结果。这是修改后的代码,如果获胜为+1,则输出为-1。

DATA additional;
CALL STREAMINIT(1234);
DO REPEAT= 1 TO 100;  *numbers of sample;
DO I=1 TO 10;         *size of sample;
X=RAND("BINOMIAL",0.6,10); /*NUMBER OF WINS IN TEN TOSSES*/
IF X GE 5 THEN results+1;
ELSE results=results-1;
OUTPUT;
END;
results=0;
END;
RUN;


proc freq data=additional;
by repeat;
table results;
run;