2017-08-24 4 views
1

J'ai utilisé la procédure UNIVARIATE pour obtenir la valeur p d'une série de distributions (lognormale, exponentielle, gamma) et j'ai atteint la problème suivant:Comment effacer "Résultats" de Proc Univarié pour afficher uniquement une table spécifique

J'utilise le code suivant pour obtenir les p-valeurs de la bonté de tests propres à chacune des distributions:

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; 

Après avoir exécuté le code précédent je reçois les « Résultats » qui me donne le graphique de l'histogramme et d'autres informations descriptives sur les tests. Je cherche un moyen d'obtenir cette impression "Résultats" pour ne montrer que la dernière partie correspondant au "proc print" ajouté sur la dernière ligne.

Merci d'avance!

+1

L'ODS SELECT est la méthode standard, mais je vois que vous avez commenté cette partie, donc peut-on supposer que cela ne fonctionne pas ? – Reeza

+0

Salut @Reeza! oui, malheureusement, il donne les données partitionnées pour chaque distribution. D'autre part le tableau "GoodnessOfFit" donne le résumé de ces tableaux ... –

Répondre

0

Si vous voulez pas de sortie à l'écran (fenêtre de résultats) à partir PROC UNIVARIATE, la réponse la plus simple est la suivante:

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

ods select none; dit ODS de ne pas faire que ce soit une sortie ODS. Vous obtiendrez toujours votre ODS OUTPUT bien que cela arrive après.

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; 

Maintenant, vous remarquerez que vous n'obtenez pas votre histogramme; celui-là est plus dur. Il change malheureusement son nom à chaque fois que vous l'exécutez, et même si vous utilisez l'option NAME =, cela ne fonctionne que la première fois qu'il est exécuté. Vous devez utiliser PROC GREPLAY pour le supprimer.

proc greplay nofs igout=work.gseg; 
    delete 'univhist'; 
run; quit; 

(En supposant UNIVHIST est le nom que vous lui attribuez.)

+0

Thanks Joe! ça l'a fait! –