Sas ODS类型3过程调查选择

Sas ODS类型3过程调查选择,sas,ods,Sas,Ods,我尝试使用以下宏写入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 fo

我尝试使用以下宏写入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; 
%let class1=X1 X2
%让新变量=X3 X4(&U)
选项mprint mlogic symbolgen;
%宏LogitBoot(数据=,dv=,iv=,类=,n=);
proc-sql-noprint;
创建表logit\u结果
(iv char(10),prob num格式=6.4,
sig1 num格式=4.,sig2 num格式=4。,
sig3 num格式=4.,sig4 num格式=4.);
选择计数(*)进入:样本来源&数据;
退出
%i=1%到&n;
proc surveyselect data=training method=urs out=&data.\u tmp n=&sample
无印;
跑
过程逻辑数据=&data.\u tmp描述;
频率数;
阶级&阶级;
模型&dv=&iv;
ods输出类型3=型号tmp;
跑
proc-sql;
插入到logit\u结果中
选择
upcase(效应)为iv,ProbChiSq为prob,
当ProbChiSq 0.01、ProbChiSq 0.05和ProbChiSq 0.1时,则1其他0结束为sig4
从模型tmp;
退出
%结束;
过程汇总数据=logit\U结果nway;
第四类;
output out=out\U表格(drop=\U type\UURENAME=(\U freq\UU=count))
总和(sig1)=总和(sig2)=总和(sig3)=总和(sig4)=;
跑
%修复逻辑根;
%LogitBoot(数据=培训,dv=目标,类=&class1,iv=&new_var,n=2); 但我一直得到以下警告:

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


有人能帮忙吗?

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

尝试
ModelANOVA
表。文档中对其进行了如下描述:

联合或3型效应试验


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

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

尝试
ModelANOVA
表。文档中对其进行了如下描述:

联合或3型效应试验


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

根据文档类型3不是合适的ods表名(),对不起,我的坏消息,我实际上是将其用于过程逻辑,但它仍然无法生成。您可以发布示例数据和工作代码吗?当前代码的顶部有额外的PROC语句。没有对其定义的宏的任何调用。另外,你需要在程序运行之前而不是之后设置ODS输出。嗨,汤姆,我已经编辑了我的帖子,你现在可以看一下吗?根据文档,type3不是一个合适的ODS表名()对不起,我很糟糕,我实际上是在程序逻辑中使用它,但它仍然不能生成示例数据和工作代码吗?当前代码的顶部有额外的PROC语句。没有对其定义的宏的任何调用。另外,你需要在程序运行之前而不是之后设置ODS输出。嗨,汤姆,我已经编辑了我的帖子,你现在可以看一下吗?谢谢!!我想出来了。需要使用“ref=”语句指定模型中使用的不同级别的类变量&它将生成类型3分析。如果您将此注释作为答案发布,可能会对其他人有所帮助。您可以详细说明需要更改的原始代码行。@user6016731这是不正确的,请参阅communities.sas.com上我的文章来说明这一点。DomPazz解决方案是正确的。谢谢!!我想出来了。需要使用“ref=”语句指定模型中使用的不同级别的类变量&它将生成类型3分析。如果您将此注释作为答案发布,可能会对其他人有所帮助。您可以详细说明需要更改的原始代码行。@user6016731这是不正确的,请参阅communities.sas.com上我的文章来说明这一点。DomPazz解决方案是正确的。