2015-11-21 50 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; 

我創建一個二項式隨機變量,如果x是偉大超過5然後計算一個贏家,如果低於5然後計算一個失敗者,問題是要求找到多少時間都是贏家以及輸家有多少次。我一直在獲取變量未找到錯誤。我是否在生成二項分佈時做錯了什麼?

/進一步編輯 /這是我給的問題。

給您10美元。讓可變貨幣= 10。 您玩10次遊戲。你贏得比賽的概率是0.4, ,你輸掉比賽的概率是0.6。 如果你贏了一場比賽,你贏了$ 1。如果你輸了一場比賽,你會輸掉1美元。因此,如果你贏得第一場比賽,錢就變成了11,但是如果你輸掉了第一場比賽,錢就變成9了。 當你玩了10次遊戲之後,錢就是你回家的金額。如果最終獲得至少10美元,則稱自己爲贏家。 否則,稱自己爲失敗者。將變量結果定義爲贏者 或輸家。 (a)編寫數據步驟以生成隨機數並模擬您的結果1000次。爲了能夠輕鬆檢查您的輸出,請使用 1234作爲隨機數生成器的種子。 (您不需要 需要向我顯示1000個結果。)

(b)編寫一個proc步驟來顯示您是多少次勝利者,並且 您是失敗者的次數。

+0

由於您告訴第一個數據步驟它應該只保留變量X,所以您不能告訴PROC PRINT打印變量WINNER和LOSER,因爲它們沒有寫入數據集。 – Tom

+0

您是否期望輸出1,000個觀測值或1,000,000個觀測值?您當前的循環將生成1000個X值並忽略其中的前999個值。 – Tom

+0

謝謝湯姆!是的,我試圖獲得1000次觀察的輸出。 – ljwa

回答

0

不完全理解您想要使用模擬。從您的代碼中,您只保留1000條記錄,因爲您的第一個循環結束位置,所有記錄都保留在最後一個循環;調用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; 

編輯:看來,你想知道最後的結果,你可以通過改變結果的數值變量從上面的代碼中得到它。這裏是修改後的代碼,如果win是+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

非常感謝聖林!對不起,我沒有具體說明給出的問題,並導致了一些誤解。我編輯了這個問題。所以我試圖找到這個隨機生成二項式分佈的頻率。 – ljwa