2016-09-06 2 views
0

Глядя на этот код:прок glmselect обучение и тестирование

ods graphics on; 

proc glmselect data=analysisData testdata=testData 
       seed=1 plots(stepAxis=number)=(criterionPanel ASEPlot); 
    partition fraction(validate=0.5); 
    class c1 c2 c3(order=data); 
    model y = c1|c2|c3|x1|x2|x3|x4|x5|x5|x6|x7|x8|x9|x10 
      |x11|x12|x13|x14|x15|x16|x17|x18|x19|x20 @2 
     /selection=stepwise(choose = validate 
           select = sl) 
      hierarchy=single stb; 
run; 

Взятые из here. Я понимаю, что вы четко определяете данные обучения (analysisData) и тестирования (testData). То, что я не совсем понимаю, - это утверждение PARTITION. Означает ли это, что анализ данных разбит на разделы, чтобы использовать одну половину аналитических данных для обучения, а другую половину для «тестирования» aka validation, чтобы определить, как, например, выполняют выбранные независимые переменные модели-кандидата? Другими словами, testData никогда не используется для обучения, как и следовало ожидать.

PS:

Btw, как я могу создать analysisData и Testdata из originalDataset с 80/20% расколоть?

ответ

1

Я считаю, что вы правы. Посмотрите документацию на PARTITION заявление: http://support.sas.com/documentation/cdl/en/statug/68162/HTML/default/viewer.htm#statug_glmselect_syntax10.htm

запросы, указанные пропорции наблюдений в наборе входных данных случайным образом распределены на обучение и проверки роли. Вы определяете пропорции для тестирования и проверки с помощью подстановок TEST = и VALIDATE =. Если вы укажете как TEST =, так и VALIDATE = suboptions, тогда сумма указанных фракций должна быть меньше единицы, а оставшаяся часть наблюдений будет назначена роли обучения. Если вы укажете набор данных TESTDATA = в инструкции PROC GLMSELECT, то вы также не можете указать подпрограмму TEST = в инструкции PARTITION. Если вы укажете в инструкции PROC GLMSELECT набор данных VALDATA =, то вы также не можете указать VOCIDATE = suboption в инструкции PARTITION.

Так что половина данных в analysisData будет использоваться в валидации, а половина - в обучении. Данные в testData будут использованы для тестирования.

PS Ответ: Посмотрите на Шаг данных в примере, к которому вы привязались. Он использует случайную единицу и 2/3 для разделения данных приблизительно (2/3, 1/3) между анализом и тестом. Измените фракцию в этом выражении на .8, чтобы получить то, что вы хотите. В качестве альтернативы используйте заявление PARTITION, как указано в документации.

Смежные вопросы