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
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
Bonjour,
Tu ne peux pas transférer les résultats dans une table SAS?
Cordialement
à priori je peux le faire, mais comment repérer ensuite les données qui m'intéresse ?
un tri de la table est récupéré les deux premières lignes
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6 proc sql (outobs=2); select from order by desc var ; quit;
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é ?
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.
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 :
et la sortie du journal me donne :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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 ;
je ne vois pas où est l'erreur ?
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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 ;
tu as des "é" dans le nom de ta table!!!
oups !
mais ça ne change rien, j'ai toujours le même message d'erreur dans le journal...
bizarre
regarde le lien ci-dessous si il ne contient pas les sorties que tu cherches
http://support.sas.com/documentation...eg_sect051.htm
La sortie est associée a ton graphique!!!
Je donne un exemple si qq a une idée
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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;
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.
voici ce que j'ai essayé de faire avec l'instruction output out :
malheureusement, cela ne fonctionne pas, la table residu n'est pas créée. voici le journal :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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;
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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
Il faut indiquer le nom de la table à créer après OUT, comme tu le fais habituellement dans ton ODS OUTPUT.
Le SQL ensuite sera quelque chose comme
Code : Sélectionner tout - Visualiser dans une fenêtre à part output out=work.sorties r=residu p=predit ;
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5 proc sql; SELECT residu FROM work.sorties WHERE (residu>1.5); quit;
enfin ! ça marche !
merci beaucoup pour votre réactivité et votre aidevous m'avez tirée d'un mauvais pas, merci bien
bonne continuation !
Partager