2016-02-22 112 views
-1

由於某些原因,當SAS進行比例風險迴歸時,它包括那些被指定爲的觀察值。作爲結果中的一個組。我懷疑它與我如何創建我的變量有關(並且SAS認爲我的數字變量是字符),但我無法弄清楚我做錯了什麼。我使用的SAS 9.4SAS迴歸缺失值

data final; set final; 
if edu_d = 'hs less' then edu_regress = 1; 
else if edu_d = 'hs' then edu_regress = 1; 
else if edu_d = 'some college' then edu_regress = 2; 
else if edu_d = 'college plus' then edu_regress = 3; 
else if edu_d = 'missing' then edu_regress=.; 
run; 

然後我跑我的迴歸:

proc phreg data=final; 
class edu_regress; 
model fuptime*dc(0)=edu_regress/rl; 
run; 

和輸出如下:

edu_regress . 1 0.10963 0.12941 0.7177 0.3969 1.116 0.866 1.438 
edu_regress 1 1 0.22514 0.10949 4.2278 0.0398 1.252 1.011 1.552 
edu_regress 2 1 0.21706 0.11410 3.6190 0.0571 1.242 0.993 1.554 

哪裏。是一個類別,而不是視爲缺失。

我敢肯定,我正在犯一個菜鳥的錯誤,但我無法弄清楚。

+0

我建議你添加列標題到你的輸出。我假設參數,DF,Parameter_Estimate等? – Quentin

+0

請發佈最終數據集中的proc內容。 – Reeza

+1

我測試了這個樣本數據,並且不能在SAS 9.4上覆制問題,除非它是一個字符變量。我認爲你是正確的,你的變量實際上是字符,你可以通過PROC CONTENTS來驗證。 – Reeza

回答

0

我會清除你的輸出,並重新運行代碼,並檢查日誌和輸出。

當我閱讀文檔時,爲了將缺少的值視爲一個類別,您需要在您的CLASS語句中使用/missing,這在代碼中未顯示。沒有這一點,我認爲缺失值應該被自動排除。

當我運行一個CLASS變量的缺失值PHREG時,我在日誌中得到了一條關於由於缺失值而被刪除的觀測值的記錄,輸出結果顯示所用觀測值的數量少於觀測值的數目讀。

+0

非常感謝您的回答!我確實有那個我不知道如何處理的錯誤信息,但現在我已經知道了。 –

0

如果SAS認爲edu_regress是字符,如果它已經在數據集上作爲字符,那麼這是可能的。這是不要做data x; set x;的原因之一,而是建立一個新的數據集。當你按現在的方式運行數據到字符轉換時,你應該在datastep中看到註釋,如果這確實是問題。

無論如何,一種調整方法是使用CALL MISSING。它將變量設置爲正確丟失,無論類型如何。

data final; 
    set final; 
    if edu_d = 'hs less' then edu_regress = 1; 
    else if edu_d = 'hs' then edu_regress = 1; 
    else if edu_d = 'some college' then edu_regress = 2; 
    else if edu_d = 'college plus' then edu_regress = 3; 
    else if edu_d = 'missing' then call missing(edu_Regress); 
run; 
+0

謝謝!這工作 –