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 28/04/2011, 13h22   #1
Invité de passage
 
Inscription : mai 2008
Messages : 8
Détails du profil
Informations forums :
Inscription : mai 2008
Messages : 8
Points : 1
Points : 1
Par défaut Stocker les résultats d'une ANOVA

Bonjour,

Voici mon problème :
Je dispose d'une table contenant 4 variables :
la premiere est un numero de 1 à 30
la seconde de 1 à 4
la troisieme de 1 à 4
la 4eme contient des valeurs quelconques

Je veux faire 30 ANOVA sur les variables 2,3 et 4 : une pour chaque valeur de la variable 1. C'est-à-dire que là ou la variable 1 vaut 1 je fais une anova sur les variables 2,3 et 4, là ou la variable 1 vaut 2 je fais une anova sur les variables 2,3 et 4, ...
De plus je veux stocker les statistiques F obtenues dans une meme table

Comment dois-je m'y prendre ?

Je sais faire l'anova pour une valeur de la premiere variable particuliere, mais je ne vais pas m'amuser à tout faire à la main.
Je ne sais pas stocker uniquement la variable F, mais un ensemble de statistiques (dont certaines ne m'interesse pas)

Voyez plutot :
Code :
1
2
3
4
5
PROC ANOVA DATA=Biblio.Jeu1 outstat= Biblio.Jeu1_F;
     WHERE(var1=1);
     CLASS var2 var3;
     MODEL var4=var2 var3 var2*var3;
RUN;
Voilà ce que j'arrive à faire

J'espère que j'ai été à peu près clair
Notez que je débute sous SAS...

Merci de votre précieuse collaboration
vince3001 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 28/04/2011, 13h56   #2
Membre Expert
 
Homme
Biostatisticien
Inscription : juin 2009
Messages : 1 143
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : Irlande

Informations professionnelles :
Activité : Biostatisticien
Secteur : Industrie Pharmaceutique

Informations forums :
Inscription : juin 2009
Messages : 1 143
Points : 1 760
Points : 1 760
En triant au préalable tes données par var via une proc sort, le plus simple est de faire un by var 1 dans ta proc anova. Ca t'évitera d'avoir à ecrire 30 fois ton code en changeant ton where à chaque étape.

Une solution pour sélectionner les "classes" consiste à taper un ods trace on, ce qui te permet de repérer celles qui t'intéresse. Tu n'as juste ensuite qu'a relancer le code en spécifiant la syntaxe qui te permet d'aller ou tu veux.

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
ods trace ON;
PROC ANOVA DATA=Biblio.Jeu1 outstat= Biblio.Jeu1_F;
     BY var1;
     CLASS var2 var3;
     MODEL var4=var2 var3 var2*var3;
RUN;
ods trace off;
 
 
/*place ici ton ods*/
PROC ANOVA DATA=Biblio.Jeu1 outstat= Biblio.Jeu1_F;
     BY var1;
     CLASS var2 var3;
     MODEL var4=var2 var3 var2*var3;
RUN;
Manoutz est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 28/04/2011, 14h26   #3
Invité de passage
 
Inscription : mai 2008
Messages : 8
Détails du profil
Informations forums :
Inscription : mai 2008
Messages : 8
Points : 1
Points : 1
merci beaucoup pour ta réponse

l'ods que tu me propose de placer dans le code est à utilisé si je voulais récupérer les données produites sous forme d'un pdf ou autre, mais vu qu'elles sont stockées dans la table Biblio.Jeu1_F cela ne semble pas indispensable, n'est-ce pas ?
vince3001 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 28/04/2011, 15h11   #4
Membre Expert
 
Avatar de MEGAMIND2
 
Homme Brice Beare
Paris
Inscription : janvier 2011
Messages : 956
Détails du profil
Informations personnelles :
Nom : Homme Brice Beare
Localisation : France, Paris (Île de France)

Informations professionnelles :
Activité : Paris

Informations forums :
Inscription : janvier 2011
Messages : 956
Points : 1 366
Points : 1 366
Tu peux stocker ta variable var1 dans une macro variable, puis faire une anova pour chaque
valeur prise par var1 ie de 1, à 30.
En tu indexes ta table des stats par i: Biblio.Jeu_F&i
Après tu pourrais te débrouiller à fusionner si tu les veux dans une même table.
Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
 
DATA _NULL_;
SET TABLE;/* Nom de ta table*/
CALL SYMPUT("NB",_N_);/* ici NB=30*/
CALL SYMPUT("var"!!LEFT(_N_),var1);/* var1=1 var2=2, ..., var30=30*/
RUN;
 
%MACRO ANALYSE_ANOVA;
%DO i=1 %TO &NB.;
 
PROC ANOVA DATA=Biblio.Jeu1 outstat= Biblio.Jeu_F&i;
      WHERE(var1="&&var1&");
     CLASS var2 var3;
     MODEL var4=var2 var3 var2*var3;
RUN;
%END;
 
%MEND ANALYSE_ANOVA;
 
%ANALYSE_ANOVA;
MEGAMIND2 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 28/04/2011, 16h43   #5
Membre Expert
 
Homme
Biostatisticien
Inscription : juin 2009
Messages : 1 143
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : Irlande

Informations professionnelles :
Activité : Biostatisticien
Secteur : Industrie Pharmaceutique

Informations forums :
Inscription : juin 2009
Messages : 1 143
Points : 1 760
Points : 1 760
Les possibilités de l'ods sont très variées. J'utilise ici une méthode assez ancienne.


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
DATA FERTILIZER;
INPUT   FEEDTYPE   WEIGHTGAIN;
DATALINES;
1   46.20
1   55.60
1   53.30
1   44.80
1   55.40
1   56.00
1   48.90
2   51.30
2   52.40
2   54.60
2   52.20
2   64.30
2   55.00
;
run;
DATA  FERTILIZER;SET FERTILIZER;
GROUP=floor(ranuni(-3)*3);
run;
 
 
PROC SORT DATA=FERTILIZER;BY FEEDTYPE;
ods trace ON;
PROC   anova; class GROUP;model WEIGHTGAIN=GROUP;   BY   FEEDTYPE;
TITLE   'Summary   statistics by group';
RUN; ods trace off;
 
ods output ModelANOVA=infomodele FitStatistics=fitmodele;
PROC   anova; class GROUP;model WEIGHTGAIN=GROUP;   BY   FEEDTYPE;
TITLE   'Summary   statistics by group';
RUN;
a la fin de la première proc anova, regarde ta log. tu peux ainsi choisir les sorties que tu conserver sous forme de fichier (en comparant avec la fenêtre sortie). Reste à les préciser dans ta deuxième anova.

Cette solution me parait plus simple et plus optimisée que celle de mégamind (mais elle fonctionne, c'est l'essentiel).
Manoutz est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 28/04/2011, 16h48   #6
Membre Expert
 
Avatar de MEGAMIND2
 
Homme Brice Beare
Paris
Inscription : janvier 2011
Messages : 956
Détails du profil
Informations personnelles :
Nom : Homme Brice Beare
Localisation : France, Paris (Île de France)

Informations professionnelles :
Activité : Paris

Informations forums :
Inscription : janvier 2011
Messages : 956
Points : 1 366
Points : 1 366
De proche en proche, on arrivera à converger un jour Manoutz
MEGAMIND2 est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 08h33.


 
 
 
 
Partenaires

Hébergement Web