Précédent   Forum des professionnels en informatique > Logiciels > Solutions d'entreprise > Business Intelligence > SAS > SAS STAT
SAS STAT Forum d'entraide sur les fonctionnalités liées à la statistique sur SAS : statistique descriptive, test, régression, classification
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 06/04/2011, 14h24   #1
Membre habitué
 
Homme Julien
Ingénieur d'études / Biostatisticien
Inscription : décembre 2009
Messages : 304
Détails du profil
Informations personnelles :
Nom : Homme Julien
Localisation : France

Informations professionnelles :
Activité : Ingénieur d'études / Biostatisticien
Secteur : Industrie Pharmaceutique

Informations forums :
Inscription : décembre 2009
Messages : 304
Points : 101
Points : 101
Par défaut Option WARN de la proc FREQ : test sur la répartition

Bonjour, j'essai de récupérer dans un output le warning de la proc FREQ quand il juge que la répartition n'est pas bonne pour le test du chi2.

Sur le site du support SAS ((http://support.sas.com/documentation...eq_sect010.htm )
ils proposent l'option WARN et donc la syntaxe suivante:

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
 
DATA TRY;
INPUT X Y;
CARDS;
1 1
1 1
0 0
1 0
;
RUN;
 
PROC FREQ DATA = TRY;
TABLES X * Y / CHISQ(WARN=OUTPUT) ;
OUTPUT OUT = ANALYSE FISHER CHISQ;
RUN;
Seulement ça ne marche pas... quelqu'un sait-il où cette option se place en fait?

En vous remerciant d'avance.
joyeux_lapin13 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 06/04/2011, 15h16   #2
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
Bonjour Julien,
Si tu veux tester la dépendance entre tes 2 variables et recupérer la proba (khi-2) à comparer au seuil de 5%:


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
DATA TRY;
INPUT X Y;
CARDS;
1 1
1 1
0 0
1 0
;
RUN;
ODS OUTPUT Chisq=CRAMER;
PROC FREQ DATA = TRY;
TABLES X * Y / CHISQ ;
RUN;
 
DATA CRAMER;
SET CRAMER;
WHERE Statistic='Khi-2';
RENAME Prob=Warning;
RUN;
 
DATA _NULL_;
SET CRAMER;
CALL SYMPUT("Warning",Warning);
RUN;
 
%PUT Warning=&Warning.;
MEGAMIND2 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 06/04/2011, 16h19   #3
Membre habitué
 
Homme Julien
Ingénieur d'études / Biostatisticien
Inscription : décembre 2009
Messages : 304
Détails du profil
Informations personnelles :
Nom : Homme Julien
Localisation : France

Informations professionnelles :
Activité : Ingénieur d'études / Biostatisticien
Secteur : Industrie Pharmaceutique

Informations forums :
Inscription : décembre 2009
Messages : 304
Points : 101
Points : 101
Salut Brice, je pense m'être mal exprimé mais en fait ce que je cherche à faire c'est un test du chi2 ou de Fisher en fonction de ma répartition.

En outre j'arrive à récupérer les deux tests mais pour pouvoir décider si je vais choisir l'un ou l'autre il me faut pouvoir retourner le contenu du warning (vide si la répartition est ok, message

Citation:
WARNING: 100% of the cells have expected counts less
than 5. Chi-Square may not be a valid test.
si elle ne l'est pas).

Ci-dessus j'ai indiqué la syntaxe que recommande SAS pour récupérer ce message d'erreur en OUTPUT, sauf que moi quand je m'en sers ça veut pas marcher:

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
 
14         GOPTIONS ACCESSIBLE;
15         PROC FREQ DATA = TRY;
16         TABLES X * Y / CHISQ(WARN=OUTPUT) ;
                               _
                               22
                               200
ERROR 22-322: Syntax error, expecting one of the following: ;, AGREE, ALL, ALPHA, BDT, BIN, BINC, BINOMIAL, BINOMIALC, CELLCHI2, 
              CHISQ, CL, CMH, CMH1, CMH2, CONTENTS, CONV, CONVERGE, CROSSLIST, CUMCOL, DEVIATION, EXACT, EXPECTED, FISHER, FORMAT, 
              JT, KAPPA, LIST, MAXITER, MEASURES, MISSING, MISSPRINT, NOCOL, NOCUM, NOFREQ, NOPERCENT, NOPRINT, NOROW, NOSPARSE, 
              NOWARN, OUT, OUTCUM, OUTEXPECT, OUTPCT, PDIFF, PLCORR, PLOTS, PRINTKWT, RDIFF, RELRISK, RISKDIFF, RISKDIFFC, SCORE, 
              SCORES, SCOROUT, SPARSE, TABLE, TESTF, TESTP, TOTPCT, TREND.  
ERROR 200-322: The symbol IS NOT recognized AND will be ignored.
17         OUTPUT OUT = ANALYSE FISHER CHISQ;
18         RUN;
Ce que je n'arrive pas à comprendre... à moins que cette commande soit propre à la toute dernière version de SAS (j'ai Entreprise Guide 4.2).
joyeux_lapin13 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 06/04/2011, 16h52   #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
C'est bizzare, le nowarn fonctionne mais pas warn
ça doit sûrement marcher en 9.2
MEGAMIND2 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 06/04/2011, 16h57   #5
Membre habitué
 
Homme Julien
Ingénieur d'études / Biostatisticien
Inscription : décembre 2009
Messages : 304
Détails du profil
Informations personnelles :
Nom : Homme Julien
Localisation : France

Informations professionnelles :
Activité : Ingénieur d'études / Biostatisticien
Secteur : Industrie Pharmaceutique

Informations forums :
Inscription : décembre 2009
Messages : 304
Points : 101
Points : 101
C'est bien ce qui m'agace... surtout que j'aurais été curieux de voir le type d'information renvoyé par l'option, du genre s'il fournit également combien de cellule ont un nombre de valeurs inférieur à 5 pour vraiment opter pour un chi2 ou un fisher...
joyeux_lapin13 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 06/04/2011, 17h27   #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
Tu peux toutefois récupérer les effectifs du croisement des modalité de X avec Y et tu prends le max, tu stocks dans une macro variables et tu comparers cette valeur à 5 et si c'est > 5 -> fais un test de Khi-2 sinon Fischer ou Fisher je sais plus.


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
DATA TRY;
INPUT X Y;
CARDS;
1 1
1 1
0 0
1 0
;
RUN;
PROC FREQ DATA = TRY;
TABLES X * Y /chisq out=freq;
RUN;
 
proc transpose DATA=freq out=freq_t prefix=count;
var count;
run;
DATA freq_t;
SET freq_t;
max=max (of count1-count3);
run;
DATA _NULL_;
SET freq_t;
call symput("max",max);
run;
MEGAMIND2 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 06/04/2011, 17h38   #7
Membre habitué
 
Homme Julien
Ingénieur d'études / Biostatisticien
Inscription : décembre 2009
Messages : 304
Détails du profil
Informations personnelles :
Nom : Homme Julien
Localisation : France

Informations professionnelles :
Activité : Ingénieur d'études / Biostatisticien
Secteur : Industrie Pharmaceutique

Informations forums :
Inscription : décembre 2009
Messages : 304
Points : 101
Points : 101
LOL Brice, c'est ce que je viens de finir à l'instant tellement ça m'a saoulé:

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
 
/* Répartition des effectifs pour la variable en cours */
PROC FREQ DATA = ANALYSE;
TABLES Y * X/ LIST;
ODS OUTPUT LIST = FREQ;
RUN;
ODS OUTPUT CLOSE;
 
/* Etude des cellules pour voir si on va faire un test du chi2 ou de Fisher exact */
DATA FREQ;
SET FREQ;
IF (Frequency < 5) THEN Warning = 1;
ELSE Warning = 0;
CALL SYMPUT("Warning",Warning);
RUN;
Et avec un appel &Warning. dans un %IF je décide de si je garde le test du chi2 ou celui de Fisher.

L'avantage c'est qu'à long terme je vais pouvoir faire des scores avec mon warning pour mettre un seuil de cellule mal répartie et mieux décider le type de test.

Merci Brice pour ton intérêt à mon problème.
joyeux_lapin13 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 06/04/2011, 17h47   #8
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
JE me suis compliqué la vie avec une proc transpose et tout...
ta solution est plus sexy avec moins de lignes mais ça veut pas dire que la mienne est fausse
MEGAMIND2 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 07/04/2011, 06h51   #9
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 823
Points : 2 823
Je ne veux pas plomber l'ambiance, mais les Warnings sont déclenchés par la présence d'effectifs théoriques inférieurs à 5, pas d'effectifs observés. On devrait donc travailler avec l'option EXPECTED.
olivier.decourt est déconnecté   Envoyer un message privé Réponse avec citation 10
Vieux 07/04/2011, 08h15   #10
Membre habitué
 
Homme Julien
Ingénieur d'études / Biostatisticien
Inscription : décembre 2009
Messages : 304
Détails du profil
Informations personnelles :
Nom : Homme Julien
Localisation : France

Informations professionnelles :
Activité : Ingénieur d'études / Biostatisticien
Secteur : Industrie Pharmaceutique

Informations forums :
Inscription : décembre 2009
Messages : 304
Points : 101
Points : 101
Et aprés il dit qu'il veut pas plomber l'ambiance.... lol merci Olivier je vais rectifier mon programme de suite!
joyeux_lapin13 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 02h12.


 
 
 
 
Partenaires

Hébergement Web