********************************************************************; * Analyse sensorielle et Marketing ; * Pierre Desmet 2012 ; ********************************************************************; * analyse des évaluations par des experts; * P2. variable dépendante : Classements ; ********************************************************************; * exemple sur les choux : * source : http://www.itab.asso.fr/downloads/actus/rapport-vindras-2010.pdf ; ********************************************************************; /* d'abord dégustation (ordre imposé) puis évaluation ordre croissant */ /* somme des rangs par sujet et par échantillon */ /* tableaux non centrés, pas de saut de page */ options nocenter formdlim="-" ; /* caractères accentués dans les graphiques*/ options devmap=winansi keymap=winansi ; ; data in ; * entrée du classement ; input juge $ c1 c2 c3 c4 c5 ; * recodage si collecte du rang ; *(à faire) ; Label C1="Chou chinois" C2="Chou rouge" C3= "Chou vert frisé" C4 ="Chou vert lisse Biocoop" C5= "Chou vert lisse Botanic" ; cards; FR 4 1 2 5 3 BTL 3 2 1 4 5 JLB 3 2 4 1 5 CB 4 2 1 3 5 AB 1 2 4 3 5 CV 1 4 2 3 5 MM 3 2 1 4 5 ; ********************************************************************; * Données brutes; ********************************************************************; title1 "Print des Données en entrée Ind x (Choux1(1,2,3), Choux2(1,2,3)"; proc print data= in ; run ; title1 "Caractère FRUITE des choux"; Title2 "Examinez les produits de gauche à droite."; Title3 "Ecrivez les numéros de code par ordre croissant d'intensité pour l'attribut ..."; proc tabulate data=in ; class juge ; var c1-c5 ; table (juge all), (c1-c5)*mean*F=5.2 ; run ; ********************************************************************; * Données ventilées : 1 ligne = 1 évaluation (juge, produit) ; ********************************************************************; data in_long ; set in ; keep juge produit rang; produit=1; rang= C1; output ; produit=2; rang= C2; output ; produit=3; rang= C3; output ; produit=4; rang= C4; output ; produit=5; rang= C5; output ; run ; proc format ; value produitfmt 1="Chou chinois" 2="Chou rouge" 3= "Chou vert frisé" 4 ="Chou vert lisse Biocoop" 5= "Chou vert lisse Botanic"; run; title1 "Data LONG : Ind num_ Choux var_1,var_2,var_3)"; proc print data= in_long ; run ; ********************************************************************; * Description ; ********************************************************************; proc sort data=in_long; by produit ; run ; title1 "Boite à moustaches (boxplot)"; proc boxplot data=in_long ; plot rang*produit / BOXSTYLE =schematic BOXWIDTH =10 ; run; title1 "Tableau juge x Produit"; proc tabulate data =in_long; class juge produit ; var rang ; table (juge all), produit*rang*(mean); format produit produitfmt. ; run ; title1 "Tableau de synthèse des évaluations par produit"; proc tabulate data =in_long; class juge produit ; var rang ; table produit,rang*(mean std min max); run ; ********************************************************************; * Analyse ; ********************************************************************; Title1 j=l "Positionnement : Classement NF ISO 8587" j=r "Test Friedman" ; Title3 "Analyse SANS neutraliser les différences entre les juges "; Title4 "LIRE : 'différence de scores moyens entre les lignes' " ; proc freq data=in_long ; tables produit*rang / CMH2 scores=rank nocol nopercent nofreq; format produit produitfmt. ; run ; Title3 "Analyse en neutralisant les différences entre les juges"; Title4 "LIRE : 'différence de scores moyens entre les lignes' " ; proc freq data=in_long ; tables juge*produit*rang / CMH2 scores=rank nocol nopercent norow; format produit produitfmt. ; run ; ********************************************************************; * Typologie des juges ; ********************************************************************; Proc cluster data=in method=average outtree= tree noprint ; var C1-C5 ; id juge ; run ; data outtree; set tree; if _parent_ eq '' and _name_ ne 'CL1' then delete; run; Title1 "Typologie des juges "; Title2 "Dendrogramme de la typologie hiérarchique des juges (average)"; Title3 " ";Title4 ""; proc tree data=outtree; run ; ods rtf ; ********************************************************************; * Traitement en Npar1way = Anova sur var ordinale ; ********************************************************************; Title1 "Analyse classement = variable ordi (Wilcoxon)"; Title2 "Traitement en Kruskal-Wallis (1 seule VD >2 modalités)"; Title3 "puis Wilcoxon (rank sum 2 à 2) pour les comparer 2 à 2"; proc npar1way data=in_long wilcoxon; var rang; class produit; * exact; * pour un échantillon de faible taille; run; ********************************************************************; * Traitement en GLM ; ********************************************************************; Title1 "Analyse classement = variable quanti (GLM) "; Title2 "Traitement en GLM"; Title3 "puis Tukey pour les comparer 2 à 2"; proc GLM data=in_long ; class produit juge ; model rang = produit juge; lsmeans produit / pdiff=all adjust=tukey ; run ;