如何清除Proc单变量中的“结果”以仅显示特定表格
问题描述:
为了从一系列分布(对数正态分布,指数分布,伽马值)中获得p值,并且已经达到了该值,我一直在使用UNIVARIATE过程下面的问题:如何清除Proc单变量中的“结果”以仅显示特定表格
我用下面的代码获取的拟合检验善良的p值各分布:
ods select all/*ParameterEstimates GoodnessOfFit*/;
proc univariate data=results.Parametros_Prueba_1;
var Monto_1.;
histogram/
lognormal (l=1 color=red SHAPE=&ParamLOGN2_1 SCALE=&ParamLOGN1_1)
gamma (l=1 color=red SHAPE=&ParamGAM1_1 SCALE=&ParamGAM2_1)
exponential (l=2 SCALE=&ParamEXP1_1);
ods output GoodnessOfFit=results.Goodness_1;
run;
proc print data=results.Goodness_1;
运行上面的代码中,我得到了“结果”之后,给我直方图图形和其他关于测试的描述性信息。我正在寻找一种方法来获得这个“结果”打印,只显示最后一行添加的“proc print”对应的最后一部分。
在此先感谢!
答
如果你不想要从PROC UNIVARIATE
输出到屏幕(结果窗口),那么最简单的答案是:
ods select none;
proc univariate ... ;
run;
ods select all;
proc print ... ;
run;
ods select none;
告诉ODS不作任何ODS输出任何责任。尽管如此,您仍然可以获得ODS OUTPUT。
ods select none;
proc univariate data=sashelp.class;
var height;
histogram name='univhist'/
lognormal (l=1 color=red )
gamma (l=1 color=red )
exponential (l=2 );
ods output GoodnessOfFit=Goodness_1;
run;
ods select all;
proc print data=Goodness_1;
run;
现在,你会注意到你没有得到你的直方图;那一个更难。不幸的是,每次运行它时都会更改它的名称,即使您使用NAME =选项,它也只会在第一次运行时才起作用。您需要使用PROC GREPLAY
来删除它。
proc greplay nofs igout=work.gseg;
delete 'univhist';
run; quit;
(假设UNIVHIST
是指定它的名字。)
+0
谢谢乔!做到了! –
的ODS SELECT是标准的方法,但我看到你评论的那部分,所以我们可以假设,这并不工作? – Reeza
Hi @Reeza!是的,不幸的是,它给出了每个分配的数据分区。另一方面,“GoodnessOfFit”表给出了这些表的摘要... –