2015-11-21 2 views
0

Я новичок в 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; 

Я создаю биномиальную случайную величину, если х является большим, чем 5, то считается один для победителя, если затем менее 5 отсчитывает один для проигравшего, вопроса с просьбой нашла сколько раз победители и сколько раз проиграли. Я продолжал получать переменную, не найденную ошибку. Я делаю что-то неправильно с созданием биномиального распределения.

/Дальнейшее редактирование/это проблема, которую я даю.

Вам предоставляется 10 долларов США. Пусть переменная money = 10. Вы играете в игру 10 раз. Вероятность того, что вы выиграете игру, равна 0.4, , и вероятность того, что вы потеряете игру, равна 0,6. Если вы выиграли игру, вы выиграли 1 доллар. Если вы проиграете игру, вы потеряете 1 доллар. Так что если вы выигрываете первую игру, деньги становятся 11. Но если вы проиграете первую игру , деньги станут 9. После того, как вы сыграли в игру 10 раз, деньги - это сумма, которую вы Идите домой с. Если у вас будет не менее 10 долларов, назовите себя победителем. В противном случае назовите себя проигравшим. Определите переменный результат как победитель или проигравший.

(a) Напишите шаг данных для генерации случайных чисел и имитируйте результат 1000 раз. Чтобы я мог легко проверить ваши выходы, используйте 1234 как ваше семя для генератора случайных чисел. (Вам не нужно необходимо показать мне результаты в 1000.)

(b) Напишите шаг процесса, чтобы показать, сколько раз вы победитель, и сколько раз вы проиграли.

+0

Так как вы сказали, первый шаг данных, он должен только сохранить переменную X вы не можете сказать, PROC PRINT для печати переменных победителей и проигравших, поскольку они не были записаны в наборе данных. – Tom

+0

Ожидаете ли вы вывести 1000 наблюдений или 1 000 000? Ваш текущий цикл будет генерировать 1000 значений X и игнорировать первые 999 из них. – Tom

+0

спасибо Том! да, я пытаюсь получить вывод 1000 наблюдений. – ljwa

ответ

0

Непонятно, что вы хотите делать с симуляцией. Из ваших кодов вы просто сохраняете 1000 записей, которые все сохраняются в последнем цикле из-за вашей первой конечной позиции цикла; stream streamit должна быть первой строкой; вы сохраняете только 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; 

Edit: Похоже, что вы хотите знать окончательные результаты, вы можете получить его из выше коды, изменяя результаты как числовые переменные. Вот модифицированные коды, если выигрыш равен +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; 
+0

Большое спасибо Shenglin! жаль, что я не указал проблему, которая была дана, и это вызвало некоторые недоразумения. Я отредактировал проблему. Поэтому я пытаюсь найти частоту этого случайного генерирующего биномиального распределения. – ljwa

Смежные вопросы