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 16/11/2011, 16h33   #1
Nouveau Membre du Club
 
Inscription : juillet 2010
Messages : 73
Détails du profil
Informations forums :
Inscription : juillet 2010
Messages : 73
Points : 32
Points : 32
Par défaut Proc report et calculs d'intervalle de confiance

Bonjour,


J'ai deux variables Q1 (caractère) et ancien (numérique).

Q1 : 1,2,3
ancien : 1 à 100 avec un format num (0-1; 1-3; 3 et +);

Je voudrais faire un tableau croisé de ancien (0-1,1-3,3 +) en ligne croisé par Q1 (1 2 3) en colonne. Dans ce tableau n'apparaitrait que les pourcentage en colonne avec les intervalles de confiance à 95% et 99%.

J'ai essayé la tabulate je n'ai pas réussi J'ai essayé avec une report ss plus de succès.

Voici mon code :

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
PROC REPORT DATA = test_corr NOWD ;
COLUMNS recod anciennete anciennete=et ic ;
DEFINE recod / GROUP ACROSS;
DEFINE anciennete / GROUP  ;
DEFINE anciennete/ ANALYSIS MEAN FORMAT=5.1 ;
DEFINE et / ANALYSIS STDERR NOPRINT ;
DEFINE ic / COMPUTED "Intervalle de confiance à 95%" ;
COMPUTE ic / CHARACTER LENGTH=15 ;
ic = CAT("[",
PUT(anciennete.mean-et*PROBIT(.975), 5.1),
" ; ",
PUT(anciennete.mean+et*PROBIT(.975), 5.1),
"]") ;
ENDCOMP ;
format anciennete ancien. recod $nps.  ;
RUN ;
Quelqu'un aurait-il une solution ?
mohamed_ est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 16/11/2011, 17h28   #2
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
Bonjour.
Dans ton code ANCIENNETE est à la fois une variable GROUP et une variable ANALYSIS. Ca ne peut pas coller, il faudrait un alias de plus.
Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
PROC FORMAT ;
  VALUE age
    LOW-14 = "Petits"
	OTHER  = "Ados" ;
RUN ;
PROC REPORT DATA=sashelp.class NOWD ;
  COLUMNS sex age age=m age=et ic ;
  DEFINE sex / GROUP ;
  DEFINE age / GROUP FORMAT=age. ;
  DEFINE m / ANALYSIS MEAN NOPRINT ;
  DEFINE et / ANALYSIS STDERR NOPRINT ;
  DEFINE ic / COMPUTED "Intervalle de confiance à 95%" ;
COMPUTE ic / CHARACTER LENGTH=15 ;
ic = CAT("[",
PUT(m-et*PROBIT(.975), 5.1),
" ; ",
PUT(m+et*PROBIT(.975), 5.1),
"]") ;
ENDCOMP ;
RUN ;
Mais on ne peut pas mélanger ça avec un ACROSS.
Il faudrait avoir fait tous les calculs avant : genre une proc MEANS qui crée une table, tu finis les calculs d'intervalle de confiance (ou tu fais 2 proc MEANS en changeant ALPHA pour avoir les IC à 95% et 99%) dans une étape DATA, et ensuite, proc REPORT.
Quelque chose comme :
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
PROC FORMAT ;
  VALUE age
    LOW-14 = "Petits"
	OTHER  = "Ados" ;
RUN ;
PROC MEANS DATA=sashelp.class NOPRINT NWAY ;
  VAR age ;
  CLASS age sex ;
  FORMAT age age. ;
  OUTPUT OUT=work.stats N=n MEAN=m STDERR=et ;
RUN ;
DATA work.stats ;
  SET work.stats ;
  inf95 = m-et*PROBIT(1-.05/2) ;
  sup95 = m+et*PROBIT(1-.05/2) ;
  inf99 = m-et*PROBIT(1-.01/2) ;
  sup99 = m+et*PROBIT(1-.01/2) ;
RUN ;
PROC REPORT DATA=work.stats NOWD ;
  COLUMNS ("Sexe" sex) age,(("Intervalle de confiance à 95%"
				   inf95 sup95)
                   ("Intervalle de confiance à 99%"
				   inf99 sup99)
                   ("% colonne" n));
  DEFINE sex / GROUP " " ;
  DEFINE age / ACROSS FORMAT=age. " " ;
  DEFINE inf95 / FORMAT=5.1 ANALYSIS SUM " " ;
  DEFINE sup95 / FORMAT=5.1 ANALYSIS SUM " " ;
  DEFINE inf99 / FORMAT=5.1 ANALYSIS SUM " " ;
  DEFINE sup99 / FORMAT=5.1 ANALYSIS SUM " " ;
  DEFINE n / ANALYSIS PCTSUM FORMAT=NLPCTN12. " ";
RUN ;
Bon courage.
Olivier
olivier.decourt est déconnecté   Envoyer un message privé Réponse avec citation 10
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



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


 
 
 
 
Partenaires

Hébergement Web