如何清除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”对应的最后一部分。

在此先感谢!

+1

的ODS SELECT是标准的方法,但我看到你评论的那部分,所以我们可以假设,这并不工作? – Reeza

+0

Hi @Reeza!是的,不幸的是,它给出了每个分配的数据分区。另一方面,“GoodnessOfFit”表给出了这些表的摘要... –

如果你不想要从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

谢谢乔!做到了! –