2017-06-23 61 views
2

我想比较两个模型,其中较小的一个是我推测为最好的模型,然后较大的一个是具有所有变量的完整模型。我希望使用proc logistic中的“测试语句”来比较模型,以确定是否有任何附加变量可能具有重要意义。问题是,测试似乎并没有被承认我的分类变量(d),如下图所示:SAS Proc Logistic:测试语句不能识别分类变量?

proc logistic data = test; 
class d (param = ref ref = '0'); 
model y (event = '1') = a b c d; 
test1: test c=d=0; 
run; 

This is the image of the error showing in the log

所以基本上我测试,看看是否有可能是C或d能成为模型中的重要预测因子。

此外,我不知道如果我正确使用“测试语句”,所以任何意见,将不胜感激。

以下是测试数据可以使用:

data test (drop=i); 
do i=1 to 1000; 
a=round(uniform(1)*4,.01); 
b=round(uniform(1)*10,.01); 
c=round(uniform(1)*7.5,.01); 
if b<2 then d=1; 
else d=0; 
if i<500 then y=1; 
else y=0; 
output; 
end; 
stop; 
run; 

回答

2

From the SAS documentation:如在部分参数名称在OUTEST =数据集描述

截距和CLASS的变量参数名称应该被指定。

因此,考虑到你的代码,你可以指定你的测试语句:

test1: test c=d1=0; 

您应该检查OUTEST数据集,虽然得到确切的名称。不幸的是,这意味着你运行两次proc,但这很简单。

+0

所以有可能是一种更有效的方式,我可以达到相同的结果,但使其更加自动化,所以我不必手动检查记录的名称。就像有没有办法从最后的数据集自动引用它? – NicChik

+0

我相信这是使用变量名称+级别。也就是说,如果你有一个变量的级别为1/2/3,变量名称为D,参考级别为1,那么新变量就是D2/D3。 – Reeza