Fiche de TP5 - Pagesperso

Transcription

Fiche de TP5 - Pagesperso
IUT de Caen - Département STID
Responsable : Alain LUCAS
Licence professionelle - Biostatistique
Analyse exploratoire
Analyse exploratoire, TP no 5
2
1. Créer un répertoire TP5 dans le répertoire LP créé lors du premier TP. Placer dans ce nouveau
répertoire le fichier data-TP5.txt. Lancer le logiciel SAS, puis écrire dans la fenêtre Editeur, que vous
renommerez SAS-TP5 pour l’occasion, les premières lignes de code suivantes (adapter la lettre du
disque si besoin !) :
dm ’clear log’ ;
Fiche de TP n 5
o
dm ’clear output’ ;
options linesize=120 pagesize=80 nodate ;
libname LP ’C :\LP\TP5’ ;
L’Etablissement Français du Sang (EFS) souhaite mener une campagne de sensibilisation auprès de ses
adhérents pour augmenter les dons du sang. Afin de cibler cette campagne, il a été décidé en consertation
avec l’ensemble des acteurs de réaliser en amont une étude statistique portant sur un échantillon représentatif
de 748 adhérents sur lesquels on a observé quatre variables :
–
–
–
–
Récence : nombre de mois écoulés depuis le dernier don (R - Recency) ;
Fréquence : nombre total de dons (F - Frequency) ;
Montant : quantité de sang donné en cm3 (M - Monetary) ;
Temps : nombre de mois écoulés depuis le premier don (T - Time).
L’objectif de cette étude statistique consiste à essayer de déterminer puis de caractériser des classes de
donneurs afin d’adapter la campagne de sensibilisation. Disposant d’un échantillon de taille “importante”,
dont les caractéristiques sont contenues dans le fichier intitulé data-TP5.txt disponible sur le site
http ://pagesperso-orange.fr/al-lucas/enseignement.html#LP,
le statisticien choisi de mettre en oeuvre une classification mixte.
Compiler, puis vérifier via la fenêtre log la création de la librairie LP.
2. Un descriptif des caractéristiques de stockage des données a été fourni avec le fichier de données. Il
stipule que la première ligne contient le nom des variables, qu’il y a 5 variables (R, F, M, T et V), et
que le séparateur de champs est la virgule. Dans le but de lire les données, écrire le code suivant en
complétant le cas échéant :
data sang ;
infile ”H :\LP\TP5\data-TP5.txt” dlm=“ ? ” dsd firstobs= ? ;
input ? ? ? ? ? ;
OBS= N ;
label R=”Recency” F=”Frequency” M=”Monetary” T=”Time” V=”Value” ;
run ;
data LP.sang ;
set sang ;
drop V ;
run ;
title1 ”Fichier Don du Sang” ;
proc contents data=LP.sang ;
title3 ”Caractéristiques du fichier” ;
run ;
proc print data=LP.sang (obs=40) heading=h noobs label ;
title3 ”Données du fichier” ;
run ;
proc means data=LP.sang nmiss mean std var ;
title3 ”Analyse des dispersions” ;
var R F M T ;
run ;
Préciser le rôle de la seconde étape DATA. Compiler ce programme, puis vérifier le contenu de la table
permanente sang (procédure CONTENTS), vérifier la bonne lecture des données (procédure PRINT),
et enfin analyser la dispersion des variables (procédure MEANS).
3. Les dispersions étant fortement hétérogènes et les unités différentes, on décide pour assurer un rôle
équivalent pour chacune des variables de centrer-normer les données. Dans ce but, écrire la procédure
STANDARD suivante :
proc standard data=LP.sang out=sang mean=0 std=1 vardef=n ;
var R F M T ;
run ;
Compiler ce programme, puis vérifier le succès de l’opération à l’aide d’une procédure MEANS.
1
Analyse exploratoire, TP no 5
3
4. Selon le principe de la classification mixte, la première étape consiste à réaliser deux classifications de
type k-means. Dans ce but, écrire les deux procédures FASTCLUS suivantes :
4
Analyse exploratoire, TP no 5
7. La troisième étape de la classification mixte consiste à réaliser une CAH sur les points moyens des
groupements stables. Dans ce but, écrire les procédures CLUSTER et TREE suivantes :
proc fastclus data=sang maxclusters=40 maxiter=20 replace=random random=123
title1 ”Fichier Don du sang” ;
cluster=C1 vardef=n out=cl1 noprint ;
proc cluster data=groupmeans method=ward noeigen nonorm outtree=tree ;
var R F M T ;
var R Mean F Mean M Mean T Mean ;
id OBS ;
freq Effectif ;
run ;
id Gr stable ;
proc fastclus data=sang maxclusters=40 maxiter=20 replace=random random=456
copy Effectif ;
cluster=C2 vardef=n out=cl2 noprint ;
run ;
var R F M T ;
proc tree data=tree ;
id OBS ;
title3 ’Dendrogramme - Ward Likage’ ;
run ;
id Gr stable ;
Interpréter via l’aide de SAS chacune des options présentes dans les procédures FASTCLUS. Compiler,
puis visualiser les tables cl1 et cl2.
height RSQ ;
5. La seconde étape de la classification mixte consiste à former les groupements stables, i.e. les groupements qui contiennent les mêmes entités d’une classification (table cl1) à l’autre (table cl2). Dans ce
but, écrire le code suivant :
freq Effectif ;
run ;
proc tree data=tree ;
title3 ’Dendrogramme - Ward Likage’ ;
id Gr stable ;
proc sort data=cl1 ;
height SPRSQ ;
by OBS ;
freq Effectif ;
run ;
run ;
proc sort data=cl2 ;
Compiler ce programme, puis visualiser les deux dendrogrammes (cf. Fig. 1 et Fig. 2). Que peut-on
dire sur le groupement stable 3615 ?
by OBS ;
run ;
data step1 ;
merge cl1 cl2 ;
by OBS ;
Gr stable = cats(put(C1,2.),put(C2,2.)) ;
drop distance ;
run ;
Identifier le rôle des fonctions put et cats. Compiler ce programme, puis visualiser la table complete.
Commenter le rôle de cette étape DATA.
6. La constitution des groupements stables étant réalisée, il convient maintenant de calculer le barycentre
ou point moyen de chacun de ces groupements. Dans ce but, écrire les lignes suivantes :
proc means data=step1 mean noprint nway ;
class Gr stable ;
var R F M T ;
output out=groupmeans mean= / autoname ;
run ;
Fig. 1 - RSQ
data groupmeans ;
Fig. 2 - SPRSQ
set groupmeans (rename = ( FREQ = Effectif )) ;
drop TYPE ;
run ;
Identifier le rôle des options nway, mean=, autoname et rename. Compiler, puis visualiser la table
groupmeans. Commenter son contenu.
8. On souhaite identifier dans un premier temps les individus du groupement 3615. Dans ce but, écrire
la procédure PRINT suivante :
proc print data=step1 noobs ;
title3 ’Individus du groupement 3615’ ;
where Gr stable = ’3615’ ;
var OBS Gr stable ;
run ;
Compiler cette procédure, puis dénombrer et identifier les individus constituant ce groupement.
5
Analyse exploratoire, TP no 5
9. On souhaite caractériser ce groupement succinctement en comparant les moyennes et médianes du
groupement par rapport aux moyennes et médianes globales. Dans ce but, écrire le code suivant :
6
Analyse exploratoire, TP no 5
goptions reset = all devmap=winansi keymap=winansi ;
axis1 label=(”Nombre de classes”) ;
axis2 label=(angle=90 ”SPRSQ”) style=1 order=(0 to 0.5 by 0.1) ;
proc means data=LP.sang mean median ;
proc gplot data=sprsq ;
title3 ’Moyennes et médianes générales’ ;
title3 ”Semi Partial R-Square ” ;
var R F M T ;
where NCL < 20 ;
run ;
plot SPRSQ * NCL =1/haxis=axis1 vaxis=axis2 ;
proc means data=LP.sang mean median ;
symbol1 i=join c=red ;
title3 ’Moyennes et médianes du groupement 3615’ ;
run ;quit ;
where OBS in (1 10 342 501 503 504 506 518) ;
Compiler, puis visualiser le graphique associé (cf. Fig. 5). Combien de classes devrait-on conserver ?
Justifier votre réponse.
var R F M T ;
run ;
Compiler ces deux procédures, puis caractériser les donneurs constituant le groupement 3615.
10. On décide de supprimer le groupement 3615 considéré comme atypique et non représentatif. Ajouter
la ligne de commande
where Gr stable ne ’3615’ ;
dans la procédure CLUSTER, puis compiler de nouveau les procédures CLUSTER et TREE. Vérifier
le changement sur les dendrogrammes (cf. Fig. 3 et Fig. 4).
Fig. 5 - Evolution de l’indice SPRSQ
Fig. 3 - RSQ
Fig. 4 - SPRSQ
13. Dans le but de procéder au découpage, écrire la procédure TREE suivante :
proc tree data=tree nclusters=3 out=step2 noprint ;
11. A partir de ces dendrogrammes, peut-on proposer un découpage cohérent en classes homogènes ? Si
oui, lequel ? Justifier votre réponse.
12. On se propose de représenter l’évolution de l’indice SPRSQ en fonction du nombre de classes. Dans ce
but, écrire le code suivant :
proc sort data=tree ;
by NCL ;
run ;
data sprsq ;
set tree ;
by NCL ;
if first. NCL ;
keep NCL SPRSQ ;
run ;
id Gr stable ;
height RSQ ;
copy Effectif ;
run ;
Interpréter cette procédure, puis compiler.
14. Cette troisième étape étant réalisée, on désire associer les donneurs à chacun des clusters. Ecrire alors
le code suivant :
proc print data=step1 (obs=40) noobs ;
title3 ’Table step1’ ;
run ;
proc print data=step2 (obs=40) noobs ;
title3 ’Table step2’ ;
run ;
Analyse exploratoire, TP no 5
7
data step2 ;
set step2 ;
do i=1 to Effectif ;
output ;
end ;
run ;
proc print data=step2 ;
run ;
proc sort data=step1 ;
by Gr stable ;
run ;
proc sort data=step2 ;
by Gr stable ;
Analyse exploratoire, TP no 5
17. On souhaite contrôler la consolidation. Dans ce but, écrire le code suivant :
proc means data=final mean nway noprint ;
class cluster ;
var R F M T ;
output out=groupmeans mean= R F M T ;
run ;
proc print data=groupmeans ;
title3 ’Points moyens après consolidation’ ;
run ;
Compiler, puis comparer pour chacune des classes le nombre de donneurs avant et après la consolidation. Commenter succinctement.
18. On souhaite enfin caractériser les classes à partir des variables initiales. Ecrire alors le code suivant :
run ;
proc sort data=LP.sang ;
data complete ;
by OBS ;
merge step1 step2 ;
run ;
by Gr stable ;
data final ;
if Gr stable=’3615’ then delete ;
set final ;
drop i clusname C1 C2 ;
keep OBS cluster ;
run ;
run ;
proc print data=complete noobs ;
proc sort data=final ;
title3 ’Table complete’ ;
by OBS ;
run ;
run ;
Interpréter chacune des étapes de ce code, puis compiler. Vérifier le succès de l’opération.
data clusters ;
15. La quatrième et dernière étape de la classification mixte consiste en une consolidation des classes
préalablement obtenues. Cette consolidation passe par une classification de type k-means en prenant
comme centres provisoires les points moyens des 3 clusters préalablement définis. Ecrire dans un
premier temps le code suivant :
proc means data=complete mean nway noprint ;
class cluster ;
var R F M T ;
output out=groupmeans mean= R F M T ;
run ;
proc print data=groupmeans ;
title3 ’Points moyens avant consolidation’ ;
run ;
Compiler, puis interpréter la sortie de la procédure PRINT.
16. Utiliser la procédure FASTCLUS pour mener à bien la consolidation :
8
merge LP.sang final ;
by OBS ;
if cluster=’.’ then delete ;
keep R F M T OBS cluster ;
run ;
proc print data=clusters noobs ;
title3 ’Table clusters’ ;
run ;
proc means data=clusters n mean std vardef=n ;
title3 ’Moyennes globales’ ;
var R F M T ;
run ;
proc means data=clusters n mean ;
title3 ’Moyennes par classe’ ;
class cluster ;
proc fastclus data=complete maxclusters=3 maxiter=20
var R F M T ;
replace=full seed=groupmeans vardef=n out=final noprint ;
run ;
var R F M T ;
Compiler, puis utiliser les résultats pour calculer les v-tests (cf. TP4). Caractériser alors chacune des
classes de donneurs en terme de Récence, Fréquence, Montant et Temps.
id OBS ; run ;
proc sort data=final ;
by cluster ;
run ;
proc print data=final ;
by cluster ; run ;
Compiler, puis visualiser la table final. Que représente-t-elle ?