Précédent   Forum des professionnels en informatique > Logiciels > Solutions d'entreprise > Business Intelligence > SAS > ODS et reporting
ODS et reporting Forum d'entraide sur les fonctionnalités de reporting de SAS : gérer les sorties et graphiques de SAS
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 12/01/2012, 13h37   #1
Invité de passage
 
Inscription : janvier 2012
Messages : 7
Détails du profil
Informations forums :
Inscription : janvier 2012
Messages : 7
Points : 1
Points : 1
Par défaut Isoler des valeurs sur un graphe

Bonjour,
à la suite d'une proc reg, j'ai sorti le graphe des résidus et je voudrais identifier 2 individus qui ont des valeurs extrêmes. Comment dois-je faire ?

Merci d'avance,
Mélaine
nuguem est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 12/01/2012, 14h16   #2
Membre Expert
 
Inscription : mars 2005
Messages : 1 011
Détails du profil
Informations forums :
Inscription : mars 2005
Messages : 1 011
Points : 1 259
Points : 1 259
Envoyer un message via Yahoo à bahraoui
Bonjour,

Tu ne peux pas transférer les résultats dans une table SAS?

Cordialement
__________________
Consultez les FAQs et les anciens postes avant de poser vos questions. Merci
bahraoui est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 12/01/2012, 15h58   #3
Invité de passage
 
Inscription : janvier 2012
Messages : 7
Détails du profil
Informations forums :
Inscription : janvier 2012
Messages : 7
Points : 1
Points : 1
à priori je peux le faire, mais comment repérer ensuite les données qui m'intéresse ?
nuguem est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 12/01/2012, 16h01   #4
Membre Expert
 
Inscription : mars 2005
Messages : 1 011
Détails du profil
Informations forums :
Inscription : mars 2005
Messages : 1 011
Points : 1 259
Points : 1 259
Envoyer un message via Yahoo à bahraoui
un tri de la table est récupéré les deux premières lignes
Code :
1
2
3
4
5
6
 
proc sql (outobs=2);
SELECT 
FROM 
ORDER BY DESC var ;
quit;
__________________
Consultez les FAQs et les anciens postes avant de poser vos questions. Merci
bahraoui est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 12/01/2012, 16h09   #5
Invité de passage
 
Inscription : janvier 2012
Messages : 7
Détails du profil
Informations forums :
Inscription : janvier 2012
Messages : 7
Points : 1
Points : 1
ok, donc si j'ai bien compris, j'applique l'ods trace, puis ods output, puis sur la table créée, je fais la requête sql que tu m'as indiqué ?
nuguem est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 12/01/2012, 16h22   #6
Membre Expert
 
Inscription : mars 2005
Messages : 1 011
Détails du profil
Informations forums :
Inscription : mars 2005
Messages : 1 011
Points : 1 259
Points : 1 259
Envoyer un message via Yahoo à bahraoui
effectivement.
Le tri déplacera les deux valeurs au début de la table.
outobs => tu n’acceptes que deux lignes dans ta table de sortie.
__________________
Consultez les FAQs et les anciens postes avant de poser vos questions. Merci
bahraoui est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 12/01/2012, 16h41   #7
Invité de passage
 
Inscription : janvier 2012
Messages : 7
Détails du profil
Informations forums :
Inscription : janvier 2012
Messages : 7
Points : 1
Points : 1
Merci !

par contre, j'ai un problème avec l'ods output : elle ne reconnait pas le nom de la sortie créée par l'ods trace. j'ai exécuté le code suivant :

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
ods trace ON ;
proc reg DATA=biomasse ;
model dmbark = age d130 h h2 / selection = forward slentry=0.05 ;
plot residual.*predicted. ;
run ;
ods trace off ;
 
ods output Reg7=données_prédiction_dmbark ;
proc reg DATA=biomasse ;
model dmbark = age d130 h h2 / selection = forward slentry=0.05 ;
plot residual.*predicted. ;
run ;
ods output close ;
et la sortie du journal me donne :

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
Sortie ajoutée :
-------------
Nom :       Reg7
Libellé :      RESIDUAL*PRED
Nom données :  GRSEG
Chemin :       Reg.MODEL1.Plots.Reg7
-------------
56   ods trace off ;
57   ods output Reg7=données_prédiction_dmbark ;
 
AVERTISSEMENT: Sortie 'Reg7' non créée. Assurez-vous que le nom, le libellé ou le chemin de l'objet est correctement
               orthographié. Vérifiez également que les options de procédure appropriées sont utilisées pour générer l'objet de
               sortie demandé. Par exemple, vérifiez que l'option NOPRINT n'est pas utilisée.
AVERTISSEMENT: L'instruction ODS SELECT/EXCLUDE/OUTPUT en cours a été effacée car la fin d'une procédure a été détectée. Les
               causes probables sont : une procédure interactive toujours en cours (tapez quit; pour terminer la procédure) ou un
               groupe run sans sortie.
NOTE: La procédure REG a utilisé (Durée totale du processus) :
      temps réel                   23.57 secondes
      temps processeur   1.06 secondes
 
 
58   proc reg DATA=biomasse ;
59   model dmbark = age d130 h h2 / selection = forward slentry=0.05 ;
60   plot residual.*predicted. ;
61   run ;
 
NOTE: Graph's name, REG, changed to REG8. REG is already used or not a valid SAS name.
62   ods output close ;
je ne vois pas où est l'erreur ?
nuguem est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 12/01/2012, 16h43   #8
Membre Expert
 
Inscription : mars 2005
Messages : 1 011
Détails du profil
Informations forums :
Inscription : mars 2005
Messages : 1 011
Points : 1 259
Points : 1 259
Envoyer un message via Yahoo à bahraoui
tu as des "é" dans le nom de ta table!!!
__________________
Consultez les FAQs et les anciens postes avant de poser vos questions. Merci
bahraoui est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 12/01/2012, 16h58   #9
Invité de passage
 
Inscription : janvier 2012
Messages : 7
Détails du profil
Informations forums :
Inscription : janvier 2012
Messages : 7
Points : 1
Points : 1
oups !
mais ça ne change rien, j'ai toujours le même message d'erreur dans le journal...
nuguem est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 12/01/2012, 17h15   #10
Membre Expert
 
Inscription : mars 2005
Messages : 1 011
Détails du profil
Informations forums :
Inscription : mars 2005
Messages : 1 011
Points : 1 259
Points : 1 259
Envoyer un message via Yahoo à bahraoui
bizarre
regarde le lien ci-dessous si il ne contient pas les sorties que tu cherches

http://support.sas.com/documentation...eg_sect051.htm
__________________
Consultez les FAQs et les anciens postes avant de poser vos questions. Merci
bahraoui est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 12/01/2012, 17h23   #11
Membre Expert
 
Inscription : mars 2005
Messages : 1 011
Détails du profil
Informations forums :
Inscription : mars 2005
Messages : 1 011
Points : 1 259
Points : 1 259
Envoyer un message via Yahoo à bahraoui
La sortie est associée a ton graphique!!!
Je donne un exemple si qq a une idée

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
DATA hsb25;
  INPUT id female race ses schtype $ prog
        READ WRITE math science socst;
DATALINES;
 147 1 1 3 pub 1 47  62  53  53  61
 108 0 1 2 pub 2 34  33  41  36  36
  18 0 3 2 pub 3 50  33  49  44  36
 153 0 1 2 pub 3 39  31  40  39  51
  50 0 2 2 pub 2 50  59  42  53  61
  51 1 2 1 pub 2 42  36  42  31  39
 102 0 1 1 pub 1 52  41  51  53  56
  57 1 1 2 pub 1 71  65  72  66  56
 160 1 1 2 pub 1 55  65  55  50  61
 136 0 1 2 pub 1 65  59  70  63  51
  88 1 1 1 pub 1 68  60  64  69  66
 177 0 1 2 pri 1 55  59  62  58  51
  95 0 1 1 pub 1 73  60  71  61  71
 144 0 1 1 pub 2 60  65  58  61  66
 139 1 1 2 pub 1 68  59  61  55  71
 135 1 1 3 pub 1 63  60  65  54  66
 191 1 1 1 pri 1 47  52  43  48  61
 171 0 1 2 pub 1 60  54  60  55  66
  22 0 3 2 pub 3 42  39  39  56  46
  47 1 2 3 pub 1 47  46  49  33  41
  56 0 1 2 pub 3 55  45  46  58  51
 128 0 1 1 pub 1 39  33  38  47  41
  36 1 2 3 pub 2 44  49  44  35  51
  53 0 2 2 pub 3 34  37  46  39  31
  26 1 4 1 pub 1 60  59  62  61  51
;
RUN;
ods trace ON;
proc reg DATA=hsb25;
  model WRITE = female math / selection = forward slentry=0.05 ;;
  plot residual.*predicted. ;
run;
quit;
ods trace off;
 
 
ods output reg=sortie;
 
proc reg DATA=hsb25;
  model WRITE = female math / selection = forward slentry=0.05 ;;
  plot residual.*predicted. ;
run;
quit;
 
ods output close;
__________________
Consultez les FAQs et les anciens postes avant de poser vos questions. Merci
bahraoui est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 12/01/2012, 17h28   #12
Expert Confirmé
 
Avatar de olivier.decourt
 
Homme Olivier Decourt
Formateur en informatique
Inscription : avril 2008
Messages : 1 467
Détails du profil
Informations personnelles :
Nom : Homme Olivier Decourt
Âge : 34
Localisation : France

Informations professionnelles :
Activité : Formateur en informatique
Secteur : Conseil

Informations forums :
Inscription : avril 2008
Messages : 1 467
Points : 2 828
Points : 2 828
Reg7 est un objet graphique, on ne peut pas le "pomper" avec ODS OUTPUT.
Par contre, tu peux obtenir tes prédictions et tes résidus avec une instruction OUTPUT OUT dans la proc REG. Les mots-clés sont P et R, à faire suivre de noms de variables à ta convenance.
olivier.decourt est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 12/01/2012, 22h48   #13
Invité de passage
 
Inscription : janvier 2012
Messages : 7
Détails du profil
Informations forums :
Inscription : janvier 2012
Messages : 7
Points : 1
Points : 1
voici ce que j'ai essayé de faire avec l'instruction output out :

Code :
1
2
3
4
5
6
7
8
9
proc reg DATA=biomasse ;
model dmbark = age d130 h h2 / selection = forward slentry=0.05 ;
output out r=residu p=predit ;
run ;
 
proc sql;
SELECT 'residu'
WHERE ('residu'>1.5);
quit;
malheureusement, cela ne fonctionne pas, la table residu n'est pas créée. voici le journal :


Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
151  proc reg DATA=biomasse ;
152  model dmbark = age d130 h h2 / selection = forward slentry=0.05 ;
153  output out r=residu p=predit ;
                -
                73
                 -
                 200
NOTE : l'instruction précédente a été supprimée.
ERREUR 73-322: = requis.
ERREUR 200-322: Le symbole n'est pas reconnu et sera ignoré.
154  run ;
 
155
 
NOTE: La TABLE WORK.RESIDU a 0 observations et 0 VARIABLES.
AVERTISSEMENT: TABLE WORK.RESIDU non remplacée car nouveau fichier incomplet.
NOTE: La procédure REG a utilisé (Durée totale du processus) :
      temps réel                   0.07 secondes
      temps processeur   0.06 secondes
 
 
156  proc sql;
157  SELECT 'residu'
158  WHERE ('residu'>1.5);
     -----
     22
     76
ERREUR 22-322: Erreur de syntaxe ; syntaxe requise : !, !!, &, *, **, +, ',', -, /, <, <=, <>, =, >, >=, ?, AND, BETWEEN,
               CONTAINS, EQ, EQT, GE, GET, GT, GTT, LE, LET, LIKE, LT, LTT, NE, NET, OR, ^=, |, ||, ~=.
 
ERREUR 76-322: Erreur de syntaxe ; l'instruction sera ignorée.
 
159  quit;
NOTE: Le Système SAS a interrompu le traitement de cette étape en raison d'erreurs.
NOTE: La procédure SQL a utilisé (Durée totale du processus) :
      temps réel                   0.00 secondes
      temps processeur   0.01 secondes
nuguem est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 13/01/2012, 07h23   #14
Expert Confirmé
 
Avatar de olivier.decourt
 
Homme Olivier Decourt
Formateur en informatique
Inscription : avril 2008
Messages : 1 467
Détails du profil
Informations personnelles :
Nom : Homme Olivier Decourt
Âge : 34
Localisation : France

Informations professionnelles :
Activité : Formateur en informatique
Secteur : Conseil

Informations forums :
Inscription : avril 2008
Messages : 1 467
Points : 2 828
Points : 2 828
Il faut indiquer le nom de la table à créer après OUT, comme tu le fais habituellement dans ton ODS OUTPUT.
Code :
output out=work.sorties r=residu p=predit ;
Le SQL ensuite sera quelque chose comme
Code :
1
2
3
4
5
proc sql;
SELECT residu
FROM work.sorties
WHERE (residu>1.5);
quit;
olivier.decourt est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 13/01/2012, 16h27   #15
Invité de passage
 
Inscription : janvier 2012
Messages : 7
Détails du profil
Informations forums :
Inscription : janvier 2012
Messages : 7
Points : 1
Points : 1
enfin ! ça marche !
merci beaucoup pour votre réactivité et votre aide vous m'avez tirée d'un mauvais pas, merci bien

bonne continuation !
nuguem est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 23h17.


 
 
 
 
Partenaires

Hébergement Web