2011-10-01 158 views
0

我已經將我的數據分成SAS中的5倍。所以,我有SAS中的交叉驗證

S1,S2,S3,S4,S5

我想知道什麼是通過每個褶皺的迭代進行交叉驗證的最佳途徑。例如,第一次迭代我想用s1作爲測試集,s2,3,4,5作爲訓練集,第二次迭代用s2作爲測試,s1,3,4,5作爲訓練等。

SAS中的什麼樣的循環可以實現這個目標?

謝謝!

+0

這取決於你所說的'交叉驗證'。你能詳細說明嗎? – sasfrog

回答

2

可能最好是調用宏來使它更容易調用。

%Macro Validate(cur,i) ; 
%Do j = 1 %to 5 ; 

    %If &j <> &i %THEN 

    %DO; 

    Data &Cur._&j. ; 

    Set &cur S&j. ; 

    <validation steps> 

    Run; 

    %END; 

%End; 

%mend Validate ; 

Data _null_ ; 

Do i = 1 to 5 ; 

Call Execute("%Validate(s"||strip(i)||","||strip(i)||");"); 

End; 

Run; 
2

Proc gmlselect使用多種方法執行k次交叉驗證以選擇最佳模型。它是在9.1的實驗,但在生產中發佈9.2+

更多信息here

希望這有助於。