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 ?