如何清除Proc Univariate的“结果”以仅显示特定的表

时间:2017-08-24 15:20:38

标签: sas statistics distribution resultset proc

我一直在使用UNIVARIATE proccedure来获取一系列分布(对数正态,指数,伽玛)的p值,并且已经达到了以下问题:

我使用以下代码来获取每个发行版的拟合优度测试的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 个答案:

答案 0 :(得分:0)

如果您不想从PROC UNIVARIATE输出到屏幕(结果窗口),那么最简单的答案是:

ods select none;
proc univariate ... ;
run;
ods select all;
proc print ... ;
run;

ods select none;告诉ODS不要做任何ODS输出。尽管如此,你仍然可以获得你的ODS输出。

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是您指定的名称。)