#sas
#sas
Вопрос:
Я разделил свои данные на 5 сгибов в SAS. Итак, у меня есть
s1, s2, s3, s4, s5
Мне было интересно, каков наилучший способ перебора каждого из сгибов для выполнения перекрестной проверки. Например, на первой итерации я хочу использовать s1 в качестве моего тестового набора и s2, 3, 4, 5 в качестве обучающих наборов, на второй итерации использовать s2 в качестве теста и s1,3,4,5 в качестве обучения и т.д.
какой цикл в SAS достигнет этой цели?
Спасибо!
Комментарии:
1. Это зависит от того, что вы подразумеваете под «перекрестной проверкой». Можете ли вы уточнить?
Ответ №1:
Вероятно, лучше всего вызвать макрос, чтобы упростить вызов.
%Macro Validate(cur,i) ;
%Do j = 1 %to 5 ;
%If amp;j <> amp;i %THEN
%DO;
Data amp;Cur._amp;j. ;
Set amp;cur Samp;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
Дополнительная информация здесь
Надеюсь, это поможет.