※上記の広告は60日以上更新のないWIKIに表示されています。更新することで広告が下部へ移動します。

/*
方法 (1) 簡易版
  PR = ...;
  DV = 0; 
  IF PR >= 0.5 THEN DV = 1;

方法 (2)
  PR = ...;
  DV = 0;
  R = RANUNI();
  IF R <= PR THEN DV = 1;
*/

%LET NSIM = 1000; *** 1 群 (1 用量) あたりのシミュレーション回数 ***;
%LET SEED = 2601; *** 乱数の種 ***;

DATA p;
  *** Group = 1 ~ 9, それぞれ母確率 10%, ..., 90% に対応させる ***;
  DO Group = 1 TO 9;
    DO i = 1 TO &NSIM;
      *** +/- 50% のばらつきを持たせる ***;
      pr = Group / 10 + RANUNI(&SEED) - 0.5;

      *** pr: 確率 probability ***;
      *** 0 <= pr <= 1 にする ***;
      IF pr < 0 THEN pr = 0;
      IF pr > 1 THEN pr = 1;

      *** 方法 (1) 簡易版 ***;
      DV_simple = 0;
      *** pr >= 0.5 だったら「有効」とする ***;
      IF pr >= 0.5 THEN DV_simple = 1;

      DV = 0;
      *** 確率 pr に応じて有効/無効を生成する ***;
      IF RANUNI(&SEED) <= pr THEN DV = 1;

      OUTPUT;
    END;
  END;
RUN;

PROC FREQ DATA=p;
  TITLE1 '方法 (1) 簡易版';
  TABLES DV_simple * Group / NOPERCENT NOROW NOFREQ;
RUN;
PROC FREQ DATA=p;
  TITLE1 '方法 (2)';
  TABLES DV        * Group / NOPERCENT NOROW NOFREQ;
RUN;

TITLE1;