SAS中的交叉验证

时间:2011-10-01 19:34:55

标签: sas

我在SAS中将数据拆分为5倍。所以我有

S1,S2,S3,S4,S5

我想知道迭代每个折叠以执行交叉验证的最佳方法是什么。例如,第一次迭代我想使用s1作为我的测试集,s2,3,4,5作为训练集,第二次迭代使用s2作为测试,s1,3,4,5作为训练等。

SAS中的哪种循环可以实现这一目标?

谢谢!

2 个答案:

答案 0 :(得分: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;

答案 1 :(得分:2)

Proc gmlselect使用多种方法执行k-folds交叉验证,以选择最佳模型。它在9.1中是实验性的,但在9.2 +

的生产中发布

更多信息here

希望得到这个帮助。