proc glmselect培训和测试

时间:2016-09-06 20:08:37

标签: sas

查看此代码:

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声明。这是否意味着analyzeData被分区为使用一半的analysisData进行训练,另一半用于测试'例如,验证如何确定候选模型的选定自变量如何执行?换句话说,testData从未用于培训,正如我所料。

PS:

顺便说一下,如何从具有80/20%分割的originalDataset创建analysisData和testData?

1 个答案:

答案 0 :(得分:1)

我相信你是对的。查看PARTITION声明中的文档: http://support.sas.com/documentation/cdl/en/statug/68162/HTML/default/viewer.htm#statug_glmselect_syntax10.htm

  

请求输入数据集中指定比例的观察值随机分配训练和验证角色。您可以使用TEST =和VALIDATE =子选项指定测试和验证的比例。如果同时指定TEST =和VALIDATE =子选项,则指定分数的总和必须小于1,并将观察的剩余部分分配给训练角色。如果在PROC GLMSELECT语句中指定TESTDATA =数据集,则不能在PARTITION语句中指定TEST =子选项。如果在PROC GLMSELECT语句中指定VALDATA =数据集,则不能在PARTITION语句中指定VALIDATE =子选项。

analysisData中的一半数据将用于验证,一半用于培训。 testData中的数据将用于测试。

PS答案:查看您链接到的示例中的数据步骤。它使用随机均匀和2/3在分析和测试之间分割大约(2 / 3,1 / 3)的数据。将该语句中的分数更改为.8以获得所需内容。或者,使用文档中概述的PARTITION语句。