2014-06-12 43 views
0

我在SAS提供的logistic迴歸建模過程中遇到下列代碼來:SAS倒塌分類變量聚類分析

data dataset(drop=i); 
set data; 

array mi{*} mi_Ag mi_Inc 
mi_WR; 

array x{*} Ag Inc WR; 
do i=1 to dim(mi); 
mi{i}=(x{i}=.); 
end; 
run; 

我需要了解兩件事情:

1)有一列一旦這個數據步驟運行,創建標題爲「我」。這意味着什麼以及爲什麼會這樣。下降「我」基本上放棄它,但如果我不使用下降選項列留在數據集

2.)這一​​步是用1代替所有缺失的值,並用0休息。在做步驟中沒有明確規定需要做什麼時發生這種情況。在我眼中,「我i = 1變暗(mi); mi {i} =(x {i} =。);」應該簡單地將點放在mi(i)中,無論它在x(i)中找到點。

2部分:

雖然摺疊分類變量,下面的代碼已經被使用:

proc freq data=example1 noprint; 
    tables CLUSTER_CODE*TARGET_B/chisq; 
    output out=out_chi(keep=_pchi_) chisq; 
run; 

data ex_cutoff; 
    if _n_=1 then set out_chi; 
    set ex_cluster; 
    chisquare=_pchi_*rsquared; 
    degfree=numberofclusters-1; 
    logpvalue=logsdf('CHISQ',chisquare,degfree); 
run; 

什麼是Ñ = 1在做什麼?還有,爲什麼我們要創建chisquare = _pchi * rsquared。 pchi已經是chisquare所以與R square相乘的點是什麼?

謝謝

P.S.代碼來自SAS學習課程之一。希望我可以在這裏分享它用於討論/學習的目的。

回答

0

我是數組迭代器(在do循環中創建)。由於它並非真正意圖保存在數據集中,因此它被刪除,它只是一個迭代器(讓您一次遍歷數組中的一個元素,並在該迭代期間讓您引用單個元素)。

mi{i}=(x{i}=.);是這樣分配1/0:

x(i)=.是真或假。如果是true,則評估爲1。如果是false,則評估爲0。因此,當x(i)=是時是這樣。那麼m(i)被分配一個1;否則它會被分配一個0.這就是SAS如何處理布爾(真/假)值;許多其他語言也是如此(True爲非零,False爲零);當轉換爲數字時,True被轉換爲1(但是當轉換爲其他方式時,任何非零非缺失值爲'真')。

+0

謝謝喬 - 非常感謝。所以即時通訊感覺,如果我要測試=,任何時候在做的聲明。那麼它會像真/假(1/0)測試一樣行事? – Freewill

+0

與Do語句無關 - 任何時候它都在賦值(=)的右側。 – Joe