【问题标题】:ODS Type 3 Proc SurveyselectODS Type 3 Proc Surveyselect
【发布时间】:2017-01-06 12:56:49
【问题描述】:

我正在尝试使用以下宏编写 ods 输出:

   %let class1=X1   X2
   %let &new_var=X3 X4

   options mprint mlogic symbolgen;
%macro LogitBoot(data = , dv = , iv = ,class=, n = );
proc sql noprint;
create table logit_result
(iv char(10), prob num format = 6.4,
sig1 num format = 4., sig2 num format = 4.,
sig3 num format = 4., sig4 num format = 4.);
select count(*) into :sample from &data;
quit;
%do i = 1 %to &n;

proc surveyselect data = training method = urs out = &data._tmp n = &sample
noprint;
run;
proc logistic data = &data._tmp desc;
freq numberhits;
class &class;
model &dv = &iv;
ods output type3 = model_tmp;
run;
proc sql;
 insert into logit_result
 select
 upcase(effect) as iv, ProbChiSq as prob,
 case when ProbChiSq <= 0.01 then 1 else 0 end as sig1,
 case when ProbChiSq > 0.01 and ProbChiSq <= 0.05 then 1 else 0 end as sig2,
 case when ProbChiSq > 0.05 and ProbChiSq <= 0.1 then 1 else 0 end as sig3,
 case when ProbChiSq > 0.1 then 1 else 0 end as sig4
 from model_tmp;
 quit;
%end;
proc summary data = logit_result nway;
class iv;
output out = out_table (drop = _type_ rename = (_freq_ = count))
sum(sig1) = sum(sig2) = sum(sig3) = sum(sig4) = ;
run;
%mend LogitBoot; 

%LogitBoot(data =training, dv = Target, class=&class1,iv =&new_var, n = 2); 但我不断收到以下警告:

警告:未创建输出“type3”。确保输出对象名称、标签或路径拼写正确。另外,验证 适当的过程选项用于生成请求的输出对象。例如,验证 不使用 NOPRINT 选项。

有人可以帮忙吗?

【问题讨论】:

  • 根据文档 type3 不是一个合适的 ods 表名 (support.sas.com/documentation/cdl/en/statug/63962/HTML/default/…)
  • 对不起,我实际上将它用于 proc 逻辑,但它仍然没有生成
  • 你能发布示例数据和工作代码吗?您当前的代码顶部有额外的 PROC 语句。对它定义的宏没有任何调用。此外,您需要在 proc 运行之前而不是之后设置 ODS OUTPUT。
  • 嗨,汤姆,我已经编辑了我的帖子,您现在可以看一下吗?

标签: sas ods


【解决方案1】:

在较新版本的 SAS 中,type3 表已被删除。您可以在最新的文档here 中看到这一点。

试试ModelANOVA 表。它在文档中被描述为

效果的联合或类型 3 测试

我没有旧版本的 SAS 可供测试,因此我无法告诉您表结构是否相同。如果没有,您将不得不适当地修改您的代码。

【讨论】:

  • 谢谢!!我想到了。模型中使用的类变量的不同级别需要使用“ref=”语句来指定&它会生成Type 3分析。
  • 如果您发布此评论作为答案,它可能会对其他人有所帮助。您可以详细说明需要更改的原始代码行。
  • @user6016731 这是不正确的,请参阅我在 community.sas.com 上的帖子来说明这一点。 DomPazz 解决方案是正确的。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2022-07-12
  • 2014-09-16
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多