перекрестная проверка в SAS

#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

Дополнительная информация здесь

Надеюсь, это поможет.