【问题标题】:SAS Proc Logistic: Test statement does not recognize categorical variables?SAS Proc Logistic:测试语句不识别分类变量?
【发布时间】:2017-06-23 23:30:33
【问题描述】:

我试图比较两个模型,其中较小的模型是我假设的最佳模型,而较大的模型是包含所有变量的完整模型。我想使用 proclogistic 中的“测试语句”来比较模型,以确定是否有任何其他变量可能很重要。问题是测试似乎没有识别我的分类变量(d),如下所示:

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;

【问题讨论】:

    标签: testing sas proc


    【解决方案1】:

    From the SAS documentation:

    拦截和类变量参数名称应按照 OUTEST= 数据集中的参数名称一节中的说明进行指定。

    因此,根据您的代码,您可以将测试语句指定为:

    test1: test c=d1=0;
    

    您应该检查您的 OUTEST 数据集以获取确切名称。不幸的是,这确实意味着您运行 proc 两次,但这很容易。

    【讨论】:

    • 那么是否有更有效的方法可以实现相同的结果,但使其更加自动化,因此我不必手动检查重新编码的名称。有没有办法从外部数据集中自动引用它?
    • 我相信它使用的是变量名+级别。即,如果您有一个级别为 1/2/3 的变量,变量名称为 D,参考级别为 1,那么新变量将为 D2/D3。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-07-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多