Introduction à SAS - MASTER MARKETING & STRATÉGIE
Les coordonnées sont stockées dans (OUTC=) et DIMENS= précise le nombre
de dimensions à retenir. - AFC simple par croisement des variables en ligne (L,?
) ...
part of the document
lyse statistique univariée, à l'analyse statistique multivariée, à la recherche opérationnelle commercialisés par modules : BASE (éléments de base), STAT (méthodes statistiques), IML (programmation directe en langage matriciel), GRAPH (graphiques), etc.
La description d'une tâche soumise à SAS (analyse de variance sur un fichier de données par exemple) se fait en utilisant des instructions propres à SAS (en anglais) et en respectant certaines règles d'organisation de ces instructions et les exigences de SAS. La documentation SAS, très volumineuse, comporte un rappel des éléments statistiques, les nombreuses options de chaque procédure et des exemples.
Environnement SAS
Fenêtres de travail
En mode interactif, un traitement SAS comporte 3 fenêtres :
Une fenêtre dédition du fichier dinstructions (programme SAS) écrit par lutilisateur. Il est conseillé de lorganiser pour une lecture et un repérage facile des étapes du traitement.
Une fenêtre LOG décrivant lexécution, le nombre dobservations et les anomalies éventuelles. Elle doit être consulté AVANT les résultats car il permet de vérifier le nombre de données traitées, la fin normale de chaque procédure, les fichiers créés, ainsi que les erreurs (en rouge).
Chaque exécution dune instruction est identifiée par un numéro de ligne séquentiel remis à zéro à la fin dun session SAS.
Une fenêtre OUTPUT présente les résultats demandés.
Etapes
Le programme est dabord écrit dans la fenêtre dédition. Au cours de lécriture les couleurs des lettres changent automatiquement selon la nature du texte : commentaire (vert), instructions SAS (bleu), étapes Proc ou Data (gras). Les erreurs apparaissent tout de suite en rouge.
Le programme est exécuté (submit) avec F8 ou en cliquant sur licône du petit bonhomme qui marche dans le bandeau supérieur après avoir sélectionné la partie du programme que lon souhaite traiter. La partie exécutée doit OBLIGATOIREMENT se terminer par une instruction RUN (sinon il ne se passe rien !)
- En cas de problème pour arrêter un programme (break), utiliser le point dexclamation ( !).
- La croix (X) EFFACE tout le contenu ( !)
Le fichier LOG indique les erreurs éventuelles, certaines sont des indications (Note) comme par exemple une taille de format trop petit pour le nombre à afficher, dautres sont fatales (Errror) et arrêtent lexécution du programme (les étapes suivantes ne sont pas exécutées).
Vous pouvez ensuite étudier les résultats dans le fichier OUTPUT.
La stratégie délaboration du programme consiste à exécuter pas-à-pas (par groupes de quelques instructions) sur une petite partie du fichier en vérifiant très précisément
µð ðque l exécution s est bien déroulée (LOG d abord !). Tout simplement parce que, si une erreur est intervenue mais que la table avait déjà été créée auparavant, les procédures peuvent être exécutées et, à votre grand désespoir !, aucune modification n'a été effectuée.
µð ðque les résultats sont conformes aux attentes,
puis de lancer l exécution du programme pour l ensemble du fichier.
Mise au point du programme
La mise au point définitive dun programme peut être longue et difficile. Voici quelques conseils :
- vérifier que ce que vous souhaitez est bien effectué par les instructions que vous avez écrites soit
par des impressions (Print) ou
en allant voir directement le contenu du tableau.
Une vérification précise des premières observations de chaque tableau est une habitude qui vous fera gagner BEAUCOUP de temps dans la mise au point.
- limiter le traitement aux premières observations pour effectuer dabord la vérification de la syntaxe.
DATA in; * tableau de lecture ;
IF _N_ |t| = |M| = |S| D W-Sq A-Sq F
Model 11 149.28616 13.57147 171.15 |t|
Intercept Intercept 1 0.11779 0.00397 29.63 F
Model 4 5.34231 1.33558 0.70 0.6174
Error 7 13.40435 1.91491
Corrected Total 11 18.74667
Root MSE 1.38380 R-Square 0.2850
Dependent Mean 0.49333 Adj R-Sq -0.1236
Coeff Var 280.50039
Parameter Estimates
Parameter Standard
Variable DF Estimate Error t Value Pr > |t|
Intercept 1 1.34084 0.57310 2.34 0.0519
C11 1 -0.78765 0.50637 -1.56 0.1638
C12 1 -0.59615 0.56722 -1.05 0.3282
C21 1 -0.37163 0.41767 -0.89 0.4031
C22 1 -0.26899 0.40002 -0.67 0.5229
-------------------------------------------------------------------------------------------
Obs C1 C2 C3 Y plogit Pprobit plin
1 1 2 3 0 0.32150 0.31366 0.28420
2 1 2 2 0 0.32150 0.31366 0.28420
3 2 3 3 0 0.73051 0.72070 0.74469
4 2 1 1 1 0.30868 0.30202 0.37305
5 2 2 1 1 0.52384 0.51323 0.47570
6 2 2 2 1 0.52384 0.51323 0.47570
7 3 1 1 1 1.00000 1.00000 0.96921
8 1 1 1 0 0.16129 0.14980 0.18156
9 1 3 3 1 0.53864 0.52641 0.55319
10 1 1 3 0 0.16129 0.14980 0.18156
11 1 3 1 1 0.53864 0.52641 0.55319
12 3 2 1 1 1.00000 1.00000 1.07185
Autre exemple
proc format;
value outcome 0 = 'not improved'
1 = 'improved';
data arthrit;
length treat $7. sex $6. ;
input id treat $ sex $ age improve @@ ;
better = (improve > 0);
_treat_ = (treat ='Treated') ; /* dummy variables */
_sex_ = (sex = 'Female');
agesex = age*_sex_ ; /* interactions with age */
agetrt = age*_treat_;
sextrt = _sex_*_treat_;
age2 = age*age ;
format age 2.;
cards ;
57 Treated Male 27 1 9 Placebo Male 37 0
46 Treated Male 29 0 14 Placebo Male 44 0
;
proc logistic nosimple data=arthrit;
format better outcome.;
model better = _sex_ _treat_ age
agesex agetrt sextrt age2
/ selection=forward
slentry=1 /* force all to enter */
start=3 ; /* Start after all main effects */
title2 'Testing all interactions via forward selection';
run;
proc logistic nosimple data=arthrit;
format better outcome.;
model better = _sex_ _treat_ age / influence;
title2 'Influence diagnostics';
run;
PROC LIFEREG : Modélisation de lattrition par un modèle de COX
Modélisation de la mortalité par un modèle à temps accéléré (AFT) avec censure (certains individus sont toujours vivants). Des variables explicatives sont utilisables mais lhypothèse dun risque proportionnel est posée (leffet de la variable ne dépend pas de lâge).
Modèle simple (exponentiel)
EMBED Equation.3 EMBED Equation.3
ou EMBED Equation.3 = exp( EMBED Equation.3 EMBED Equation.3 ).
avec EMBED Equation.3 une variable aléatoire et ( EMBED Equation.3 , EMBED Equation.3 ) les parameters à estimer.
Si les donnes sont non censurées et la distribution des résidus est Normale, les résultats sont les mêmes quavec une régression.
PLOTS = (S, LS, LLS, H ou P) génère le graphique de la fonction de survie estimée (S), de son logarithme, de son log-log, de la fonction de risque (H hazard) ou de la densité (P). Lanalyse permet de sélectionner une distribution sous-jacente : LS linéaire = exponentielle, LLS = Weibull, si LLS parallèles pour plusieurs groupes, lhypothèse du risque proportionnel est acceptable.
Les résidus sont non transformés (Cox-Snell, LOGSURV), ou transformés une fois (Résidus martingale, RESMART) ou deux (résidus de déviance, RESDEV) ces derniers étant comparables aux rédidus de la régression.
Les estimations de la distribution cumulées sont obtenures par output, puis on calcule les résidus (Cox-Snell) et trace un graphique. Si les résidus sont déclarés en variable temporelle, les estimations à la Kaplan-Meier sont présentés et croisés avec les résidus. Si lajustement est bon, on doit obtnir une diagonale (distribution exponentielle des résidus).
Limite : ne peut pas prendre en compte des variables indépendantes variant dans le temps.
Gestion des événements multiples (Tie) : par défaut, peu dégalité sinon /ties= efron ou /ties= exact ou encore /ties= discrete si seules quelques périodes sont observées.
proc lifereg data=hmohiv noprint plots=(S,H);
model time*censor(0) = age drug / distribution=exponential; * ou llogistic ou weibull (2 paramètres) ou lnormal ou gamma (3 paramètres);
output out=exp cdf=f;
run;
data exp1;
set exp;
cox = -log( 1-f );
run;
proc lifetest data=exp1 outsurv=surv_exp noprint;
time cox*censor(0);
run;
data surv_exp;
set surv_exp;
ls = -log(survival);
run;
goptions reset=all;
axis1 order=(0 to 4 by 1) minor=none label=('Exponential Reg Model Cum Hazard');
axis2 order=(0 to 4 by 1) minor=none label=( a=90 'Kaplan-Meier Cum Hazard');
symbol1 i=l1p c= blue v=dot h=.4;
symbol2 i = join c = red l = 3;
proc gplot data=surv_exp;
plot (ls cox)*cox / overlay haxis=axis1 vaxis= axis2;
run;
quit;
Avec des variables explicatives
proc lifereg data=recid;
model week*arrest(0) = fin age race /dist= weibull;
output out=a p =median std=s;
run;
Dans le modèle TOBIT, les données sont censurées et les erreurs sont supposées suivre une distribution Normale.
data subset;
input Hours Yrs_Ed Yrs_Exp @@;
if Hours eq 0
then Lower=.;
else Lower=Hours;
cards;
0 8 9 0 8 12 0 9 10 0 10 15 0 11 4 0 11 6
1000 12 1 1960 12 29 0 13 3 2100 13 36
3686 14 11 1920 14 38 0 15 14 1728 16 3
1568 16 19 1316 17 7 0 17 15
;
proc lifereg data=subset outest=OUTEST(keep=_scale_);
model (lower, hours) = yrs_ed yrs_exp / d=normal;
output out=OUT xbeta=Xbeta;
run;
data predict;
drop lambda _scale_ _prob_;
set out;
if _n_ eq 1 then set outest;
lambda = pdf('NORMAL',Xbeta/_scale_)
/ cdf('NORMAL',Xbeta/_scale_);
Predict = cdf('NORMAL', Xbeta/_scale_)
* (Xbeta + _scale_*lambda);
label Xbeta='MEAN OF UNCENSORED VARIABLE'
Predict = 'MEAN OF CENSORED VARIABLE';
run;
proc print data=predict noobs label;
var hours lower yrs: xbeta predict;
run;
PROC PHREG : Modélisation de lattrition par un modèle de COX semi-paramétrique
Même chose que LIFEREG mais la fonction de survie sous-jacente nest pas modélisée par une focntion comme dans LIFEREG mais la distribution empirique est utilisée (méthode de la vraisemblance partielle).
proc phreg data=recid;
model week*arrest(0) = fin age race ;
output out=a p =median std=s;
run;
En savoir plus
Plus de théorie (SAS) : HYPERLINK "http://www.ats.ucla.edu/stat/sas/library/logistic.pdf" http://www.ats.ucla.edu/stat/sas/library/logistic.pdf
Site Web UCLA pour MIXED linéaire et non linéaire : HYPERLINK "http://www.ats.ucla.edu/stat/sas/library/" http://www.ats.ucla.edu/stat/sas/library/
Regression modeling strategies (très complet) : HYPERLINK "http://hesweb1.med.virginia.edu/biostat/rms/index.html" http://hesweb1.med.virginia.edu/biostat/rms/index.html
SAS © 6 Analyses statistiques multidimensionnelles
Les analyses multidimensionnelles permettent d'étudier les relations entretenues par des variables sans privilégier certaines variables (dépendantes ou indépendantes).
Le principe de base est de reconstituer la variance globale (inertie) des variables initiales par la variance des facteurs (combinaison linéaire des variables de base).
Les méthodes se différencient :
selon la nature des variables : quantitatives (analyse en composantes principales) ou qualitatives (analyse factorielle des correpondances). Il est important de comprendre que la métrique (mesure) utilisée est différente (distance euclidienne contre distance du Chi²) en effet cette dernière surpondère les modalités à fréquence rare.
selon l'approche exploratoire de variables quantitatives (analyse factorielle en composantes principales) ou confirmatoire (analyse en facteurs communs et spécifiques). Dans ce dernier cas, on suppose un modèle connu au préalable et des variations aléatoires sont intégrées (on ne cherche donc plus à reconstituer toute la variance initiale).
PROC PRINCOMP XE "PRINCOMP" Analyse en composantes principales
Recherche de facteurs sous-jacents aux variables par Analyse en composantes principales. La spécification des options noint et cov permet de ne pas centrer ou de ne pas réduire. Les valeurs initiales et les composantes principales sont créées dans COORD et STAT comprend les résultats statistiques (moy, ecart-type, corrélations ou covariances, valeurs et vecteurs propres).
Options nocenter formdlim="-" ;
title1 "Desmet Traitements par factorielle";
title3 "1- Lecture ";
Data in ;
input w genre ID $ Y X1-X5 ;
cards ;
1 1 pierre 10 10 12 23 34 32
1 1 jean 20 20 20 20 20 20
1 1 jacques 10 10 20 10 20 10
1 1 bernard 10 10 50 10 10 10
1 2 michelle 30 30 30 30 5 30
1 2 anne 10 10 10 20 30 30
1 1 antoine 15 15 20 20 40 30
1 2 helene 20 20 22 23 34 32
1 1 joseph 30 30 30 30 30 30
1 2 angele 40 40 30 20 10 5
1 2 marie 30 30 20 20 30 20
1 2 denise 40 35 30 25 10 10
0 1 autre 30 30 20 10 20 10
;
title3 "2- Vérification de la lecture ";
proc print;
run;
proc sort ;
by genre ;
title3 "3- Tableau de synthèse ";
proc tabulate ;
class genre ;
var X1-X5 ;
table (X1 X2 X3 X4 X5),genre*(N*F=3.0 (mean std)*F=6.2)/ rts=10;
run;
title3 "4- Standardisation des variables ";
proc standard data=in mean=0 std=1 out=in_std;
var X1-X5 ;
weight w;
run;
proc print data=in_std ;
run;
title3 "5- ACP ";
proc princomp data=in_std (where=(genre=1)) out=dat_CPrin N=2 outstat=tab_stat;
var X1-X5 ;
weight w;
proc print data=tab_stat;
title3 "6- Graphique des variables ";
data tab1_stat ;
set tab_stat ;
if _TYPE_="SCORE";
proc transpose data=tab1_stat out=tab2_stat;
proc print data=tab2_stat;
run;
proc plot data=tab2_stat ;
plot prin2*prin1$_NAME_ / vpos=30 ;
run;
proc print data=dat_CPrin ;
title3 "7- Graphique des individus ";
proc plot data=dat_CPrin;
plot prin2*prin1$ID / vpos=20 ;
plot prin2*prin1=Y / contour=2 vpos=20;
title3 "8- Calcul des scores pour les autres individus ";
proc score data=in_std score=tab_stat out=dat_score ;
var X1-X5 ;
proc print data =dat_score;
proc plot data=dat_score;
plot prin1*prin2$ID / vpos=20 ;
run;
-------------------------------------------------------------------------------------------
Desmet Traitements par factorielle
2- Vérification de la lecture
Obs w genre ID Y X1 X2 X3 X4 X5
1 1 1 pierre 10 10 12 23 34 32
2 1 1 jean 20 20 20 20 20 20
3 1 1 jacques 10 10 20 10 20 10
4 1 1 bernard 10 10 50 10 10 10
5 1 2 michelle 30 30 30 30 5 30
6 1 2 anne 10 10 10 20 30 30
7 1 1 antoine 15 15 20 20 40 30
8 1 2 helene 20 20 22 23 34 32
9 1 1 joseph 30 30 30 30 30 30
10 1 2 angele 40 40 30 20 10 5
11 1 2 marie 30 30 20 20 30 20
12 1 2 denise 40 35 30 25 10 10
13 0 1 autre 30 30 20 10 20 10
-------------------------------------------------------------------------------------------
3- Tableau de synthèse
genre
1 2
N Mean Std N Mean Std
X1 7 17.86 9.06 6 27.50 10.84
X2 7 24.57 12.37 6 23.67 8.04
X3 7 17.57 7.83 6 23.00 4.00
X4 7 24.86 10.25 6 19.83 12.81
X5 7 20.29 10.36 6 21.17 11.50
-------------------------------------------------------------------------------------------
4- Standardisation des variables
Obs w genre ID Y X1 X2 X3 X4 X5
1 1 1 pierre 10 -1.11378 -1.23718 0.34685 0.99754 1.04916
2 1 1 jean 20 -0.15911 -0.44538 -0.15262 -0.24384 -0.15947
3 1 1 jacques 10 -1.11378 -0.44538 -1.81752 -0.24384 -1.16667
4 1 1 bernard 10 -1.11378 2.52385 -1.81752 -1.13055 -1.16667
5 1 1 antoine 15 -0.63645 -0.44538 -0.15262 1.52956 0.84772
6 1 1 joseph 30 0.79556 0.54436 1.51229 0.64286 0.84772
7 0 1 autre 30 0.79556 -0.44538 -1.81752 -0.24384 -1.16667
8 1 2 michelle 30 0.79556 0.54436 1.51229 -1.57390 0.84772
9 1 2 anne 10 -1.11378 -1.43513 -0.15262 0.64286 0.84772
10 1 2 helene 20 -0.15911 -0.24744 0.34685 0.99754 1.04916
11 1 2 angele 40 1.75023 0.54436 -0.15262 -1.13055 -1.67026
12 1 2 marie 30 0.79556 -0.44538 -0.15262 0.64286 -0.15947
13 1 2 denise 40 1.27289 0.54436 0.67983 -1.13055 -1.16667
-------------------------------------------------------------------------------------------
5- ACP
The PRINCOMP Procedure
Observations 6
Variables 5
Simple Statistics
X1 X2 X3 X4 X5
Mean -.5568900989 0.082478610 -0.346854420 0.2586214741 0.041966457
StD 0.7647287928 1.322952789 1.291416842 0.9740280020 1.027141360
Correlation Matrix
X1 X2 X3 X4 X5
X1 1.0000 0.0249 0.7752 0.2311 0.4407
X2 0.0249 1.0000 -.3601 -.6720 -.5282
X3 0.7752 -.3601 1.0000 0.6611 0.8849
X4 0.2311 -.6720 0.6611 1.0000 0.8927
X5 0.4407 -.5282 0.8849 0.8927 1.0000
Eigenvalues of the Correlation Matrix
Eigenvalue Difference Proportion Cumulative
1 3.28326590 2.04665346 0.6567 0.6567
2 1.23661244 0.2473 0.9040
Eigenvectors
Prin1 Prin2
X1 0.321050 0.682429
X2 -.343187 0.584547
X3 0.509869 0.308183
X4 0.488288 -.308921
X5 0.529866 -.046757
-------------------------------------------------------------------------------------------
6- Graphique des variables
Obs _TYPE_ _NAME_ X1 X2 X3 X4 X5
1 MEAN -0.55689 0.08248 -0.34685 0.25862 0.04197
2 STD 0.76473 1.32295 1.29142 0.97403 1.02714
3 N 6.00000 6.00000 6.00000 6.00000 6.00000
4 CORR X1 1.00000 0.02491 0.77520 0.23108 0.44069
5 CORR X2 0.02491 1.00000 -0.36008 -0.67198 -0.52819
6 CORR X3 0.77520 -0.36008 1.00000 0.66114 0.88492
7 CORR X4 0.23108 -0.67198 0.66114 1.00000 0.89267
8 CORR X5 0.44069 -0.52819 0.88492 0.89267 1.00000
9 EIGENVAL 3.28327 1.23661 . . .
10 SCORE Prin1 0.32105 -0.34319 0.50987 0.48829 0.52987
11 SCORE Prin2 0.68243 0.58455 0.30818 -0.30892 -0.04676
-------------------------------------------------------------------------------------------
Obs _NAME_ Prin1 Prin2
1 X1 0.32105 0.68243
2 X2 -0.34319 0.58455
3 X3 0.50987 0.30818
4 X4 0.48829 -0.30892
5 X5 0.52987 -0.04676
-------------------------------------------------------------------------------------------
6- Graphique des variables
Plot of Prin2*Prin1$_NAME_. Symbol points to label.
Prin2
0.8
> X1
0.6 > X2
0.4
> X3
0.2
0.0
> X5
-0.2
> X4
-0.4
-0.4 -0.2 0.0 0.2 0.4 0.6
Prin1
-------------------------------------------------------------------------------------------
7- Graphique des individus
Obs w genre ID Y X1 X2 X3 X4 X5 Prin1 Prin2
1 1 1 pierre 10 -1.11378 -1.23718 0.34685 0.99754 1.04916 1.27243 -1.19471
2 1 1 jean 20 -0.15911 -0.44538 -0.15262 -0.24384 -0.15947 0.02481 0.33662
3 1 1 jacques 10 -1.11378 -0.44538 -1.81752 -0.24384 -1.16667 -1.55288 -0.86677
4 1 1 bernard 10 -1.11378 2.52385 -1.81752 -1.13055 -1.16667 -2.76764 0.72641
5 1 1 antoine 15 -0.63645 -0.44538 -0.15262 1.52956 0.84772 1.23301 -0.69765
6 1 1 joseph 30 0.79556 0.54436 1.51229 0.64286 0.84772 1.79027 1.69610
7 0 1 autre 30 0.79556 -0.44538 -1.81752 -0.24384 -1.16667 -0.75130 0.83708
-------------------------------------------------------------------------------------------
8- Calcul des scores pour les autres individus
Plot of Prin2*Prin1$ID. Symbol points to label.
Prin2
2
joseph <
1
> bernard > autre
> jean
0
> jacques > antoine
-1
> pierre
-2
-3 -2 -1 0 1 2
Prin1
-------------------------------------------------------------------------------------------
8- Calcul des scores pour les autres individus (figuration d une autre variable Y)
Contour plot of Prin2*Prin1.
Prin2
2
#
1
. #
#
0
. .
-1
.
-2
-3 -2 -1 0 1 2
Prin1
Symbol Y Symbol Y
..... 10 - 20 ##### 20 - 30
-------------------------------------------------------------------------------------------
Desmet Traitements par factorielle
8- Calcul des scores pour les autres individus
Obs w genre ID Y X1 X2 X3 X4 X5 Prin1 Prin2
1 1 1 pierre 10 -1.11378 -1.23718 0.34685 0.99754 1.04916 1.27243 -1.19471
2 1 1 jean 20 -0.15911 -0.44538 -0.15262 -0.24384 -0.15947 0.02481 0.33662
3 1 1 jacques 10 -1.11378 -0.44538 -1.81752 -0.24384 -1.16667 -1.55288 -0.86677
4 1 1 bernard 10 -1.11378 2.52385 -1.81752 -1.13055 -1.16667 -2.76764 0.72641
5 1 1 antoine 15 -0.63645 -0.44538 -0.15262 1.52956 0.84772 1.23301 -0.69765
6 1 1 joseph 30 0.79556 0.54436 1.51229 0.64286 0.84772 1.79027 1.69610
7 0 1 autre 30 0.79556 -0.44538 -1.81752 -0.24384 -1.16667 -0.75130 0.83708
8 1 2 michelle 30 0.79556 0.54436 1.51229 -1.57390 0.84772 0.67899 2.39916
9 1 2 anne 10 -1.11378 -1.43513 -0.15262 0.64286 0.84772 0.84486 -1.27970
10 1 2 helene 20 -0.15911 -0.24744 0.34685 0.99754 1.04916 1.41647 0.09454
11 1 2 angele 40 1.75023 0.54436 -0.15262 -1.13055 -1.67026 -0.65423 2.82779
12 1 2 marie 30 0.79556 -0.44538 -0.15262 0.64286 -0.15947 0.87011 0.90732
13 1 2 denise 40 1.27289 0.54436 0.67983 -1.13055 -1.16667 -0.26617 2.57756
-------------------------------------------------------------------------------------------
Plot of Prin1*Prin2$ID. Symbol points to label.
Prin1
2
> joseph
pierre < > antoine > helene
> anne > marie
> michelle
0 > jean
> denise
> autre angele <
> jacques
-2
> bernard
-4
-2 -1 0 1 2 3
Prin2
PROC FACTOR : analyse factorielle CONFIRMATOIRE (en facteurs communs et spécifiques - AFCS)
L'objectif de l'analyse factorielle est de remplacer la matrice de variables d'origine par une matrice de facteurs, combinaisons linéaires des variables initiales mais moins nombreux et surtout non corrélés entre eux.
Si lanalyse factorielle exploratoire en composantes principales cherche à reconstituer lensemble de la variance, lanalyse factorielle (FACTOR), plus générale, est confirmatoire et suppose un modèle préalable des relations entre les variables et prend en compte la possibilité de variations aléatoires et résidus.
L'exemple ci-dessous effectue une AFCS avec extraction de 2 facteurs puis une rotation varimax et présente les graphiques des combinaisons des premiers axes.
title3 "9- Analyse factorielle (AFCS) Factor ";
Proc factor data=in_std (where=(genre=1))
method=prin scree preplot nfact=2
rotate=varimax nplot=2 out=tab_fact;
Var X1-X5 ;
weight w;
run;
proc print data=tab_fact;
run;
proc plot data=tab_fact ;
plot factor1*factor2$ID / href=0 vref=0 vpos=30 ;
run;
9- Analyse factorielle (AFCS) Factor
The FACTOR Procedure
Initial Factor Method: Principal Components
Prior Communality Estimates: ONE
Eigenvalues of the Correlation Matrix: Total = 5 Average = 1
Eigenvalue Difference Proportion Cumulative
1 3.28326590 2.04665346 0.6567 0.6567
2 1.23661244 0.87515988 0.2473 0.9040
3 0.36145256 0.24702481 0.0723 0.9763
4 0.11442775 0.11018640 0.0229 0.9992
5 0.00424135 0.0008 1.0000
2 factors will be retained by the NFACTOR criterion.
Factor Pattern
Factor1 Factor2
X1 0.58174 0.75888
X2 -0.62185 0.65003
X3 0.92387 0.34271
X4 0.88477 -0.34353
X5 0.96011 -0.05200
Variance Explained by Each Factor
Factor1 Factor2
3.2832659 1.2366124
Final Communality Estimates: Total = 4.519878
X1 X2 X3 X4 X5
0.91431816 0.80923998 0.97098915 0.90082563 0.92450541
-------------------------------------------------------------------------------------------
9- Analyse factorielle (AFCS) Factor
The FACTOR Procedure
Initial Factor Method: Principal Components
Plot of Factor Pattern for Factor1 and Factor2
Factor1
1
E
D .9 C
.8
.7
.6 A
.5
.4
.3
.2
F
.1 a
c
-1 -.9-.8-.7-.6-.5-.4-.3-.2-.1 0 .1 .2 .3 .4 .5 .6 .7 .8 .9 1.0t
o
-.1 r
2
-.2
-.3
-.4
-.5
-.6 B
-.7
-.8
-.9
-1
X1=A X2=B X3=C X4=D X5=E
-------------------------------------------------------------------------------------------
The FACTOR Procedure
Rotation Method: Varimax
Orthogonal Transformation Matrix
1 2
1 0.75791 0.65236
2 -0.65236 0.75791
Rotated Factor Pattern
Factor1 Factor2
X1 -0.05417 0.95466
X2 -0.89536 0.08699
X3 0.47664 0.86244
X4 0.89468 0.31683
X5 0.76159 0.58693
Variance Explained by Each Factor
Factor1 Factor2
2.4122523 2.1076261
Final Communality Estimates: Total = 4.519878
X1 X2 X3 X4 X5
0.91431816 0.80923998 0.97098915 0.90082563 0.92450541
-------------------------------------------------------------------------------------------
The FACTOR Procedure
Rotation Method: Varimax
Scoring Coefficients Estimated by Regression
Squared Multiple Correlations of the Variables with Each Factor
Factor1 Factor2
1.0000000 1.0000000
Standardized Scoring Coefficients
Factor1 Factor2
X1 -0.26605 0.58070
X2 -0.48647 0.27484
X3 0.03247 0.39361
X4 0.38546 -0.03475
X5 0.24906 0.15890
-------------------------------------------------------------------------------------------
9- Analyse factorielle (AFCS) Factor
Obs w genre ID Y X1 X2 X3 X4 X5 Factor1 Factor2
1 1 1 pierre 10 -1.11378 -1.23718 0.34685 0.99754 1.04916 1.23309 -0.35614
2 1 1 jean 20 -0.15911 -0.44538 -0.15262 -0.24384 -0.15947 -0.18710 0.23835
3 1 1 jacques 10 -1.11378 -0.44538 -1.81752 -0.24384 -1.16667 -0.14105 -1.14983
4 1 1 bernard 10 -1.11378 2.52385 -1.81752 -1.13055 -1.16667 -1.58378 -0.50135
5 1 1 antoine 15 -0.63645 -0.44538 -0.15262 1.52956 0.84772 0.92501 -0.03156
6 1 1 joseph 30 0.79556 0.54436 1.51229 0.64286 0.84772 -0.24618 1.80053
7 0 1 autre 30 0.79556 -0.44538 -1.81752 -0.24384 -1.16667 -0.80532 0.30003
-------------------------------------------------------------------------------------------
Plot of Factor1*Factor2$ID. Symbol points to label.
Factor1
2
> pierre
1
>antoine
0
> jacques > jean
joseph <
> autre
-1
> bernard
-2
-1.5 -1.0 -0.5 0.0 0.5 1.0 1.5 2.0
Factor2
PROC CORRESP XE "FASTCLUS" : Analyse des correspondances.
Lanalyse des correspondances concerne un tableau deffectifs ou des variables binaires (tableau de fréquences, tableau de burt, tableau disjonctif). Les coordonnées sont stockées dans (OUTC=) et DIMENS= précise le nombre de dimensions à retenir.
- AFC simple par croisement des variables en ligne (L,
) et en colonne (C,
)
Proc corresp OUTC=coord DIMENS=2 ;
Tables L1 L2 L3 , C1 C2 C3;
Supplementary variables S1;
Proc plot data=coord ;
Plot dim2*dim1 /HREF=0 VREF=0 ;
Run;
- AFCM correspondances multiples (tableau de burt symétrique : (L1*L1 L1*L2 L1*L3, L2*L1 etc) avec loption mca et une liste des variables sans virgule.
Proc corresp mca OUTC=coord DIMENS=2 ;
Tables L1 L2 L3;
- AFCM dun tableau disjonctif complet en croisant les individus (IND) avec la liste des variables.
Proc corresp data= OUTC=coord DIMENS=2 ;
Tables ind , L1 L2 L3 ;
-------------------------------------------------------------------------------------------
AFC simple ligne x colonne C1*C2
C2
1 2 3
w w w
SumSumSum
C1
1 15 14 15
2 4 8 9
3 7 3 .
-------------------------------------------------------------------------------------------
AFC simple ligne x colonne C1*C2
The CORRESP Procedure
Inertia and Chi-Square Decomposition
Singular Principal Chi- Cumulative
Value Inertia Square Percent Percent 20 40 60 80 100
----+----+----+----+----+---
0.34988 0.12242 9.18113 98.47 98.47 *************************
0.04356 0.00190 0.14234 1.53 100.00
Total 0.12431 9.32347 100.00
Degrees of Freedom = 4
Row Coordinates
Dim1 Dim2
1 0.0287 0.0364
2 0.3329 -0.0562
3 -0.8256 -0.0420
Summary Statistics for the Row Points
Quality Mass Inertia
1 1.0000 0.5867 0.0101
2 1.0000 0.2800 0.2568
3 1.0000 0.1333 0.7331
Partial Contributions to Inertia for the Row Points
Dim1 Dim2
1 0.0040 0.4094
2 0.2535 0.4665
3 0.7425 0.1242
Indices of the Coordinates that Contribute Most to Inertia for the Row Points
Dim1 Dim2 Best
1 0 2 2
2 2 2 2
3 1 0 1
-------------------------------------------------------------------------------------------
AFC simple ligne x colonne C1*C2
The CORRESP Procedure
Squared Cosines for the Row Points
Dim1 Dim2
1 0.3842 0.6158
2 0.9723 0.0277
3 0.9974 0.0026
Column Coordinates
Dim1 Dim2
1 -0.4415 0.0235
2 0.0673 -0.0610
3 0.4082 0.0381
Summary Statistics for the Column Points
Quality Mass Inertia
1 1.0000 0.3467 0.5452
2 1.0000 0.3333 0.0221
3 1.0000 0.3200 0.4326
Partial Contributions to Inertia for the Column Points
Dim1 Dim2
1 0.5521 0.1012
2 0.0123 0.6543
3 0.4356 0.2444
Indices of the Coordinates that Contribute Most to Inertia for the Column Points
Dim1 Dim2 Best
1 1 0 1
2 0 2 2
3 1 1 1
Squared Cosines for the Column Points
Dim1 Dim2
1 0.9972 0.0028
2 0.5490 0.4510
-------------------------------------------------------------------------------------------
The CORRESP Procedure
Squared Cosines for the Column Points
Dim1 Dim2
3 0.9914 0.0086
-------------------------------------------------------------------------------------------
Q I
_ _ u n C C S S
T N a e o o q q B B
Y A l M r D D n n C C e e B
O P M i a t i i t t o o s s e
b E E t s i m m r r s s t t s
s _ _ y s a 1 2 1 2 1 2 1 2 t
1 INERTIA . . 0.12431 . . 0.12242 0.00190 . . . . .
2 OBS 1 1 0.58667 0.01015 0.02874 0.036391 0.00396 0.40937 0.38419 0.61581 0 2 2
3 OBS 2 1 0.28000 0.25680 0.33294 -0.056229 0.25355 0.46645 0.97227 0.02773 2 2 2
4 OBS 3 1 0.13333 0.73305 -0.82565 -0.042041 0.74249 0.12417 0.99741 0.00259 1 0 1
5 VAR 1 1 0.34667 0.54521 -0.44154 0.023542 0.55210 0.10124 0.99717 0.00283 1 0 1
6 VAR 2 1 0.33333 0.02215 0.06734 -0.061037 0.01235 0.65432 0.54896 0.45104 0 2 2
7 VAR 3 1 0.32000 0.43264 0.40819 0.038076 0.43556 0.24444 0.99137 0.00863 1 1 1
-------------------------------------------------------------------------------------------
AFC simple ligne x colonne C1*C2
Plot of Dim2*Dim1. Legend: A = 1 obs, B = 2 obs, etc.
Dim2
0.04 A
A
A
0.02
0.00
-0.02
-0.04
A
A
-0.06 A
-1.0 -0.8 -0.6 -0.4 -0.2 0.0 0.2 0.4 0.6
Dim1
NOTE: 1 obs had missing values.
-------------------------------------------------------------------------------------------
AFCM Correspondances multiples (C1,C2,C3)*(C1,C2,C3)
C1 C2 C3
1 2 3 1 2 3 1 2 3
w w w w w w w w w
N N N N N N N N N
C1
1 6 . . 2 2 2 2 1 3
2 . 4 . 1 2 1 2 1 1
3 . . 2 1 1 . 2 . .
C2
1 2 1 1 4 . . 3 . 1
2 2 2 1 . 5 . 2 2 1
3 2 1 . . . 3 1 . 2
C3
1 2 2 2 3 2 1 6 . .
2 1 1 . . 2 . . 2 .
3 3 1 . 1 1 2 . . 4
-------------------------------------------------------------------------------------------
AFCM Correspondances multiples (C1,C2,C3)*(C1,C2,C3)
The CORRESP Procedure
Inertia and Chi-Square Decomposition
Singular Principal Chi- Cumulative
Value Inertia Square Percent Percent 6 12 18 24 30
----+----+----+----+----+---
0.77342 0.59818 169.533 29.91 29.91 *************************
0.71167 0.50647 143.541 25.32 55.23 *********************
0.59371 0.35249 99.900 17.62 72.86 ***************
0.47139 0.22221 62.978 11.11 83.97 *********
0.41743 0.17425 49.384 8.71 92.68 *******
0.38264 0.14641 41.495 7.32 100.00 ******
Total 2.00000 566.831 100.00
Degrees of Freedom = 64
Column Coordinates
Dim1 Dim2
1 -0.2738 -0.1051
2 -0.3415 0.1375
3 1.9220 0.1736
1 0.9910 -0.3323
2 -0.2963 1.1875
3 -0.7649 -0.8770
1 0.9223 -0.0334
2 -0.7460 2.2397
3 -0.7188 -0.5774
Summary Statistics for the Column Points
Quality Mass Inertia
1 0.1221 0.1956 0.0689
2 0.0527 0.0933 0.1200
3 0.5730 0.0444 0.1444
1 0.5797 0.1156 0.1089
2 0.7490 0.1111 0.1111
3 0.6373 0.1067 0.1133
1 0.6692 0.1467 0.0933
2 0.7599 0.0400 0.1467
3 0.6679 0.1467 0.0933
-------------------------------------------------------------------------------------------
AFCM Correspondances multiples (C1,C2,C3)*(C1,C2,C3)
The CORRESP Procedure
Partial Contributions to Inertia for the Column Points
Dim1 Dim2
1 0.0245 0.0043
2 0.0182 0.0035
3 0.2745 0.0026
1 0.1897 0.0252
2 0.0163 0.3094
3 0.1043 0.1620
1 0.2086 0.0003
2 0.0372 0.3962
3 0.1267 0.0965
Indices of the Coordinates that Contribute Most to Inertia for the Column Points
Dim1 Dim2 Best
1 0 0 1
2 0 0 1
3 1 0 1
1 1 0 1
2 0 2 2
3 2 2 2
1 1 0 1
2 0 2 2
3 1 0 1
Squared Cosines for the Column Points
Dim1 Dim2
1 0.1064 0.0157
2 0.0453 0.0074
3 0.5683 0.0046
1 0.5211 0.0586
2 0.0439 0.7051
3 0.2753 0.3619
1 0.6683 0.0009
2 0.0759 0.6840
3 0.4060 0.2619
-------------------------------------------------------------------------------------------
AFCM Correspondances multiples (C1,C2,C3)*(C1,C2,C3)
Q I
_ _ u n C C S S
T N a e o o q q B B
Y A l M r D D n n C C e e B
O P M i a t i i t t o o s s e
b E E t s i m m r r s s t t s
s _ _ y s a 1 2 1 2 1 2 1 2 t
1 INERTIA . . 2.00000 . . 0.59818 0.50647 . . . . .
2 VAR 1 0.12210 0.19556 0.06889 -0.27384 -0.10508 0.02451 0.00426 0.10643 0.01567 0 0 1
3 VAR 2 0.05270 0.09333 0.12000 -0.34148 0.13749 0.01819 0.00348 0.04535 0.00735 0 0 1
4 VAR 3 0.57295 0.04444 0.14444 1.92199 0.17364 0.27447 0.00265 0.56831 0.00464 1 0 1
5 VAR 1 0.57970 0.11556 0.10889 0.99100 -0.33232 0.18972 0.02520 0.52110 0.05860 1 0 1
6 VAR 2 0.74902 0.11111 0.11111 -0.29631 1.18754 0.01631 0.30939 0.04390 0.70512 0 2 2
7 VAR 3 0.63729 0.10667 0.11333 -0.76492 -0.87700 0.10434 0.16199 0.27535 0.36194 2 2 2
8 VAR 1 0.66921 0.14667 0.09333 0.92228 -0.03344 0.20856 0.00032 0.66833 0.00088 1 0 1
9 VAR 2 0.75992 0.04000 0.14667 -0.74597 2.23970 0.03721 0.39617 0.07588 0.68403 0 2 2
10 VAR 3 0.66793 0.14667 0.09333 -0.71883 -0.57738 0.12669 0.09654 0.40600 0.26194 1 0 1
-------------------------------------------------------------------------------------------
AFCM Correspondances multiples (C1,C2,C3)*(C1,C2,C3)
Plot of Dim2*Dim1. Legend: A = 1 obs, B = 2 obs, etc.
Dim2
3
A
2
A
1
A A
0 A
A
A
A
A
-1
-1.0 -0.5 0.0 0.5 1.0 1.5 2.0
Dim1
NOTE: 1 obs had missing values.
-------------------------------------------------------------------------------------------
AFC Tableau disjonctif complet
C1 C2 C3
w 1 2 3 1 2 3 1 2 3
Sum N N N N N N N N N
ID
1 8 1 . . . 1 . . . 1
2 6 1 . . . 1 . . 1 .
3 9 . 1 . . . 1 . . 1
4 4 . 1 . 1 . . 1 . .
5 5 . 1 . . 1 . 1 . .
6 3 . 1 . . 1 . . 1 .
7 7 . . 1 1 . . 1 . .
8 8 1 . . 1 . . 1 . .
9 9 1 . . . . 1 . . 1
10 7 1 . . 1 . . . . 1
11 6 1 . . . . 1 1 . .
12 3 . . 1 . 1 . 1 . .
-------------------------------------------------------------------------------------------
AFC Tableau disjonctif complet
The CORRESP Procedure
Inertia and Chi-Square Decomposition
Singular Principal Chi- Cumulative
Value Inertia Square Percent Percent 6 12 18 24 30
----+----+----+----+----+---
0.75813 0.57476 20.6915 28.74 28.74 ************************
0.72962 0.53234 19.1644 26.62 55.36 **********************
0.56673 0.32118 11.5624 16.06 71.41 *************
0.51420 0.26440 9.5186 13.22 84.63 ***********
0.42512 0.18073 6.5062 9.04 93.67 ********
0.35579 0.12658 4.5570 6.33 100.00 *****
Total 2.00000 72.0000 100.00
Degrees of Freedom = 88
Row Coordinates
Dim1 Dim2
1 -0.6194 0.2130
2 -0.1019 1.2388
3 -0.9605 -0.1019
4 0.5937 -0.3224
5 0.4902 0.4960
6 0.2050 1.5726
7 1.2286 -0.8655
8 0.2868 -0.6561
9 -1.2674 -0.4357
10 -0.5158 -0.6054
11 -0.4647 -0.4865
12 1.1251 -0.0471
Summary Statistics for the Row Points
Quality Mass Inertia
1 0.2925 0.0833 0.0611
2 0.6264 0.0833 0.1028
3 0.3998 0.0833 0.0972
4 0.2739 0.0833 0.0694
5 0.3316 0.0833 0.0611
6 0.8982 0.0833 0.1167
7 0.8470 0.0833 0.1111
8 0.3846 0.0833 0.0556
9 0.8980 0.0833 0.0833
10 0.3795 0.0833 0.0694
11 0.2715 0.0833 0.0694
12 0.5141 0.0833 0.1028
-------------------------------------------------------------------------------------------
AFC Tableau disjonctif complet
The CORRESP Procedure
Partial Contributions to Inertia for the Row Points
Dim1 Dim2
1 0.0556 0.0071
2 0.0015 0.2402
3 0.1337 0.0016
4 0.0511 0.0163
5 0.0348 0.0385
6 0.0061 0.3871
7 0.2189 0.1173
8 0.0119 0.0674
9 0.2329 0.0297
10 0.0386 0.0574
11 0.0313 0.0370
12 0.1835 0.0003
Indices of the Coordinates that Contribute Most to Inertia for the Row Points
Dim1 Dim2 Best
1 1 0 1
2 0 2 2
3 1 0 1
4 0 0 1
5 0 0 2
6 0 2 2
7 1 1 1
8 0 2 2
9 1 0 1
10 0 0 2
11 0 0 2
12 1 0 1
Squared Cosines for the Row Points
Dim1 Dim2
1 0.2616 0.0309
2 0.0042 0.6221
3 0.3954 0.0045
4 0.2115 0.0623
5 0.1638 0.1678
6 0.0150 0.8832
7 0.5661 0.2809
8 0.0617 0.3229
9 0.8031 0.0949
10 0.1597 0.2199
11 0.1296 0.1420
-------------------------------------------------------------------------------------------
AFC Tableau disjonctif complet
The CORRESP Procedure
Squared Cosines for the Row Points
Dim1 Dim2
12 0.5132 0.0009
Column Coordinates
Dim1 Dim2
1 -0.5897 -0.1672
2 0.1083 0.5634
3 1.5523 -0.6253
1 0.5254 -0.8392
2 0.2900 0.9521
3 -1.1838 -0.4679
1 0.7166 -0.4298
2 0.0681 1.9266
3 -1.1090 -0.3186
Summary Statistics for the Column Points
Quality Mass Inertia
1 0.3756 0.1667 0.0833
2 0.1646 0.1111 0.1111
3 0.5601 0.0556 0.1389
1 0.4902 0.1111 0.1111
2 0.7076 0.1389 0.0972
3 0.5401 0.0833 0.1250
1 0.6983 0.1667 0.0833
2 0.7433 0.0556 0.1389
3 0.6657 0.1111 0.1111
Partial Contributions to Inertia for the Column Points
Dim1 Dim2
1 0.1008 0.0088
2 0.0023 0.0663
3 0.2329 0.0408
1 0.0534 0.1470
2 0.0203 0.2365
3 0.2032 0.0343
1 0.1489 0.0578
2 0.0004 0.3874
3 0.2377 0.0212
-------------------------------------------------------------------------------------------
AFC Tableau disjonctif complet
The CORRESP Procedure
Indices of the Coordinates that Contribute Most to Inertia for the Column Points
Dim1 Dim2 Best
1 0 0 1
2 0 2 2
3 1 0 1
1 0 2 2
2 0 2 2
3 1 0 1
1 1 0 1
2 0 2 2
3 1 0 1
Squared Cosines for the Column Points
Dim1 Dim2
1 0.3477 0.0279
2 0.0059 0.1587
3 0.4819 0.0782
1 0.1380 0.3522
2 0.0601 0.6475
3 0.4671 0.0730
1 0.5136 0.1847
2 0.0009 0.7424
3 0.6149 0.0508
-------------------------------------------------------------------------------------------
AFC Tableau disjonctif complet
Q I
_ _ u n C C S S
T N a e o o q q B B
Y A l M r D D n n C C e e B
O P M i a t i i t t o o s s e
b E E t s i m m r r s s t t s
s _ _ y s a 1 2 1 2 1 2 1 2 t
1 INERTIA . . 2.00000 . . 0.57476 0.53234 . . . . .
2 OBS 1 0.29250 0.08333 0.06111 -0.61937 0.21303 0.05562 0.00710 0.26156 0.03094 1 0 1
3 OBS 2 0.62635 0.08333 0.10278 -0.10185 1.23880 0.00150 0.24023 0.00421 0.62215 0 2 2
4 OBS 3 0.39981 0.08333 0.09722 -0.96047 -0.10191 0.13375 0.00163 0.39535 0.00445 1 0 1
5 OBS 4 0.27386 0.08333 0.06944 0.59374 -0.32236 0.05111 0.01627 0.21152 0.06235 0 0 1
6 OBS 5 0.33161 0.08333 0.06111 0.49021 0.49605 0.03484 0.03852 0.16384 0.16777 0 0 2
7 OBS 6 0.89824 0.08333 0.11667 0.20504 1.57259 0.00610 0.38713 0.01501 0.88322 0 2 2
8 OBS 7 0.84695 0.08333 0.11111 1.22862 -0.86546 0.21886 0.11725 0.56607 0.28088 1 1 1
9 OBS 8 0.38461 0.08333 0.05556 0.28685 -0.65614 0.01193 0.06739 0.06171 0.32289 0 2 2
10 OBS 9 0.89801 0.08333 0.08333 -1.26735 -0.43570 0.23288 0.02972 0.80309 0.09492 1 0 1
11 OBS 10 0.37954 0.08333 0.06944 -0.51583 -0.60537 0.03858 0.05737 0.15965 0.21988 0 0 2
12 OBS 11 0.27154 0.08333 0.06944 -0.46467 -0.48647 0.03131 0.03705 0.12955 0.14199 0 0 2
13 OBS 12 0.51407 0.08333 0.10278 1.12509 -0.04705 0.18353 0.00035 0.51317 0.00090 1 0 1
14 VAR 1 0.37564 0.16667 0.08333 -0.58966 -0.16718 0.10082 0.00875 0.34770 0.02795 0 0 1
15 VAR 2 0.16460 0.11111 0.11111 0.10833 0.56343 0.00227 0.06626 0.00587 0.15873 0 2 2
16 VAR 3 0.56014 0.05556 0.13889 1.55231 -0.62533 0.23291 0.04081 0.48193 0.07821 1 0 1
17 VAR 1 0.49021 0.11111 0.11111 0.52543 -0.83925 0.05337 0.14701 0.13804 0.35217 0 2 2
18 VAR 2 0.70757 0.13889 0.09722 0.28995 0.95212 0.02032 0.23651 0.06005 0.64752 0 2 2
19 VAR 3 0.54011 0.08333 0.12500 -1.18383 -0.46786 0.20319 0.03427 0.46715 0.07297 1 0 1
20 VAR 1 0.69828 0.16667 0.08333 0.71664 -0.42978 0.14892 0.05783 0.51357 0.18471 1 0 1
21 VAR 2 0.74329 0.05556 0.13889 0.06805 1.92661 0.00045 0.38737 0.00093 0.74237 0 2 2
22 VAR 3 0.66569 0.11111 0.11111 -1.10898 -0.31864 0.23775 0.02119 0.61492 0.05077 1 0 1
-------------------------------------------------------------------------------------------
Q I
_ _ u n C C S S
T N a e o o q q B B
Y A l M r D D n n C C e e B
O P M i a t i i t t o o s s e n
b E E t s i m m r r s s t t s o
s _ _ y s a 1 2 1 2 1 2 1 2 t m
1 OBS 1 0.29250 0.083333 0.06111 -0.61937 0.21303 0.05562 0.00710 0.26156 0.03094 1 0 1 O 1
2 OBS 2 0.62635 0.083333 0.10278 -0.10185 1.23880 0.00150 0.24023 0.00421 0.62215 0 2 2 O 2
3 OBS 3 0.39981 0.083333 0.09722 -0.96047 -0.10191 0.13375 0.00163 0.39535 0.00445 1 0 1 O 3
4 OBS 4 0.27386 0.083333 0.06944 0.59374 -0.32236 0.05111 0.01627 0.21152 0.06235 0 0 1 O 4
5 OBS 5 0.33161 0.083333 0.06111 0.49021 0.49605 0.03484 0.03852 0.16384 0.16777 0 0 2 O 5
6 OBS 6 0.89824 0.083333 0.11667 0.20504 1.57259 0.00610 0.38713 0.01501 0.88322 0 2 2 O 6
7 OBS 7 0.84695 0.083333 0.11111 1.22862 -0.86546 0.21886 0.11725 0.56607 0.28088 1 1 1 O 7
8 OBS 8 0.38461 0.083333 0.05556 0.28685 -0.65614 0.01193 0.06739 0.06171 0.32289 0 2 2 O 8
9 OBS 9 0.89801 0.083333 0.08333 -1.26735 -0.43570 0.23288 0.02972 0.80309 0.09492 1 0 1 O 9
10 OBS 10 0.37954 0.083333 0.06944 -0.51583 -0.60537 0.03858 0.05737 0.15965 0.21988 0 0 2 O10
11 OBS 11 0.27154 0.083333 0.06944 -0.46467 -0.48647 0.03131 0.03705 0.12955 0.14199 0 0 2 O11
12 OBS 12 0.51407 0.083333 0.10278 1.12509 -0.04705 0.18353 0.00035 0.51317 0.00090 1 0 1 O12
-------------------------------------------------------------------------------------------
AFC Tableau disjonctif complet
Plot of Dim2*Dim1$nom. Symbol points to label.
Dim2
2.0
> O 6
1.5
> O2
1.0
0.5 > O 5
> O 1
0.0 >O12
> O 3
> O 9 > O 4
-0.5 > O11
> O10 > O 8
> O 7
-1.0
-1.5 -1.0 -0.5 0.0 0.5 1.0 1.5
Dim1
Autre exemple avec sortie graphique en couleur (GOPTIONS)
options pageno=1 ls=78;
%include goptions ;
goptions vsize=8in htext=1.4 ;
*goptions colors=(black);
title ' ';
data colors;
input BLACK BROWN RED BLOND EYE $;
cards;
68 119 26 7 Brown
20 84 17 94 Blue
15 54 14 10 Hazel
5 29 14 16 Green
;
proc corresp data=colors out=coord short;
var black brown red blond;
id eye;
proc print data=coord;
var _type_ eye dim1 dim2 quality;
proc plot vtoh=2;
plot dim2 * dim1 = '*' $ eye / box haxis=by .1 vaxis=by .1;
run;
data label;
set coord;
xsys='2'; ysys='2';
x = dim1; y = dim2;
text = eye;
size = 1.3;
function='LABEL';
if _type_='VAR' then color='RED '; else color='BLUE';
data key;
xsys='5'; ysys='5';
length text $12;
x = 25; y = 77;
style = 'DUPLEX'; size = 1.4;
color = 'BLUE ';
function = 'LABEL '; text = '* Eye color ' ; output;
x = 45;
color = 'RED ';
function = 'LABEL '; text = '* HAIR color' ; output;
data label;
set key label;
proc gplot data=coord;
plot dim2 * dim1
/ anno=label frame
href=0 vref=0 lvref=3 lhref=3
vaxis=axis2 haxis=axis1
vminor=1 hminor=1;
axis1 length=6 in order=(-1. to 1. by .5)
label=(h=1.5 'Dimension 1');
axis2 length=3 in order=(-.5 to .5 by .5)
label=(h=1.5 a=90 r=0 'Dimension 2');
symbol v=none c=black i=none;
run;
%gfinish;
Autre exemple : Analyse des preferences (notes) de x personnes sur y voitures dont les z caractéristiques sont connues
/****************************************************************/
/* S A S S A M P L E L I B R A R Y */
/* */
/* NAME: CARPREF */
/* TITLE: Principal components analysis of car preferences */
/* PRODUCT: SAS */
/* SYSTEM: OS CMS VSE */
/* KEYS: FACTOR MULTIV */
/* PROCS: CORR FACTOR PLOT SCORE SORT TRANSPOSE */
/* */
/****************************************************************/
*---------------------------------------------------------------------+
| DEFINE MACRO FOR NAMES OF RATINGS |
+---------------------------------------------------------------------;
MACRO VARMAC
MPG RELIABLE ACCEL BRAKING HANDLING RIDE VISIBLE COMFORT QUIET CARGO
%
*---------------------------------------------------------------------+
| READ DATA |
+---------------------------------------------------------------------+
| Preference ratings of 17 automobiles were collected from 25 |
| subjects on a 0-9 scale. In addition, measures of performance and |
| comfort were obtained from a consumer magazine. In this analysis, |
| the subjects are treated as variables, and the automobiles as |
| observations in an inverse component analysis. |
|---------------------------------------------------------------------;
DATA CARS;
TITLE 'CAR PREFERENCES';
LENGTH ORIGIN $8;
INPUT MAKE $1-10 MODEL $12-22 @24 (VARMAC) (1.) ORIGIN $35
@37 (PREF1-PREF25) (1.);
ID = SUBSTR(MODEL,1,3);
IF ORIGIN='E'|ORIGIN='J' THEN IMPORT='YES';
ELSE IMPORT='NO';
IF ORIGIN='A' THEN ORIGIN='AMC ';
IF ORIGIN='C' THEN ORIGIN='CHRYSLER';
IF ORIGIN='F' THEN ORIGIN='FORD ';
IF ORIGIN='G' THEN ORIGIN='GMC ';
IF ORIGIN='E' THEN ORIGIN='EUROPE ';
IF ORIGIN='J' THEN ORIGIN='JAPAN ';
CARDS;
CADILLAC ELDORADO 3234543533 G 0807990491240508971093809
CHEVROLET CHEVETTE 5335425223 G 0051200423451043003515698
CHEVROLET CITATION 4155555525 G 0453305814161643544747795
CHEVROLET MALIBU 3333444544 G 0627400723121345545668658
FORD FAIRMONT 3324345434 F 0224006715021443530648655
FORD MUSTANG 3244323222 F 0507197705021101850657555
FORD PINTO 4134313222 F 0021000303030201500514078
HONDA ACCORD 5554533433 J 9556897609699952998975078
HONDA CIVIC 5545435434 J 8436709507488852567765075
LINCOLN CONTINENTAL 2453353555 F 0708990592230409962091909
PLYMOUTH GRAN FURY 2134353535 C 0706000434101107333458708
PLYMOUTH HORIZON 4345535235 C 0305005635461302444675655
PLYMOUTH VOLARE 2153333424 C 0405003614021602754476555
PONTIAC FIREBIRD 1153551231 G 1007895613201206958265907
VOLKSWAGEN DASHER 5355545435 E 8458696508877795377895000
VOLKSWAGEN RABBIT 5454535424 E 8458509709695795487885000
VOLVO DL 4524555555 E 9989998909999987989919000
;
*PROC PRINT;
* ID MAKE MODEL ORIGIN IMPORT;
*---------------------------------------------------------------------+
| COMPUTE STANDARDIZED PRINCIPAL COMPONENT SCORES |
+---------------------------------------------------------------------+
| Since there are more variables (subjects) than observations (cars) |
|FACTOR complains that the matrix is singular. However, since PRIORS |
|and METHOD are not specified, we get a METHOD=PRINCIPAL analysis |
|with PRIORS=ONE and the singularity can be ignored. The points in |
|the factor space show preference vectors for each subject. |
+---------------------------------------------------------------------;
PROC FACTOR DATA=CARS
SCREE N=2 SCORE
OUT=FAC
NOCORR
OUTSTAT=FACT
PLOT NPLOT=2;
VAR PREF1-PREF25;
TITLE2 'PRINCIPAL COMPONENTS OF THE PREFERENCES';
Data FACT;
Set FACT;
If _TYPE_='CORR' then delete;
PROC PRINT data=FACT;
Title2 'OUTSTAT data set from FACTOR';
PROC SCORE DATA=CARS SCORE=FACT OUT=PRIN;
VAR PREF1-PREF25;
*---------------------------------------------------------------------+
| LIST CARS SORTED BY PRINCIPAL COMPONENTS |
+---------------------------------------------------------------------;
proc sort data=prin; by factor1;
proc print;
id make model; var factor1;
title2 'Sorted By First Principal Component';
proc sort data=prin; by factor2;
proc print;
id make model; var factor2;
title2 'Sorted By Second Principal Component';
*---------------------------------------------------------------------+
| PLOT PRINCIPAL COMPONENTS |
+---------------------------------------------------------------------;
PROC PLOT DATA=PRIN;
PLOT FACTOR2*FACTOR1=ORIGIN
/HAXIS=-1.5 TO 2.5 BY .5 VAXIS=-1.5 TO 2.5 BY .5 VPOS=43;
TITLE2 'PLOT OF THE FIRST TWO PRINCIPAL COMPONENTS';
PROC PLOT;
PLOT FACTOR2*FACTOR1 $ ID
/VPOS=43;
*---------------------------------------------------------------------+
| PLOT BOTH CARS AND COMPONENT PATTERN |
+---------------------------------------------------------------------;
DATA PAT; SET FACT;
DROP _TYPE_;
IF _TYPE_='PATTERN';
PROC TRANSPOSE OUT=PAT;
DATA ZERO; /* Define zero point for plot */
_NAME_='+ ';
FACTOR1=0;
FACTOR2=0;
DATA BIPLOT;
SET PAT ZERO PRIN(IN=INPRIN);
IF INPRIN THEN _NAME_='.';
Proc Print;
Var _NAME_ FACTOR1 FACTOR2 ORIGIN MAKE MODEL;
Title3 'BIPLOT data set';
PROC PLOT;
PLOT FACTOR2*FACTOR1=_NAME_
/HAXIS=-1.5 TO 2.5 BY .5 VAXIS=-1.5 TO 2.5 BY .5 VPOS=43;
TITLE3 'SHOWING BOTH CARS AND PREFERENCE VECTORS';
*---------------------------------------------------------------------+
| PLOT BOTH CARS AND ATTRIBUTE VECTORS |
+---------------------------------------------------------------------;
PROC CORR DATA=PRIN NOSIMPLE NOPROB OUTP=ATTCOR;
VAR FACTOR1-FACTOR2;
WITH VARMAC;
DATA ATTCOR; SET ATTCOR;
DROP _TYPE_;
IF _TYPE_='CORR';
DATA BIPLOT;
SET ATTCOR ZERO PRIN(IN=INPRIN);
IF INPRIN THEN _NAME_='.';
PROC PLOT;
PLOT FACTOR2*FACTOR1=_NAME_
/HAXIS=-1.5 TO 2.5 BY .5 VAXIS=-1.5 TO 2.5 BY .5 VPOS=43;
TITLE3 'SHOWING BOTH CARS AND ATTRIBUTE VECTORS';
run;
En savoir plus
Macro web pour graphique : PLOTIT HYPERLINK "http://www.stat.lsu.edu/faculty/moser/exst7037/plotit7.sas" http://www.stat.lsu.edu/faculty/moser/exst7037/plotit7.sas
PROC TRANSREG (analyse des préférences PREFMAP)
L'objectif de l'analyse des préférences est de reconstituer des préférences qui nont pas les propriétés de distances (souvent ordinales) et de faire figurer des caractéristiques produit (seconde étape).
HYPERLINK "http://www.psych.yorku.ca/friendly/lab/files/psy6140/examples/cluster/carpref.sas" http://www.psych.yorku.ca/friendly/lab/files/psy6140/examples/cluster/carpref.sas
/****************************************************************/
/* S A S S A M P L E L I B R A R Y */
/* */
/* NAME: TREGEX6 */
/* TITLE: Preference ratings for automobiles in 1980 */
/* REF: PROC TRANSREG, EXAMPLE 6 */
/****************************************************************/
title 'Preference Ratings for Automobiles Manufactured in 1980';
data carpref;
length model $ 20;
input make $ 1-10 model $ 12-22 @25 (judge1-judge25) (1.)
mpg reliable ride;
label mpg = 'Miles per gallon'
reliable = 'Reliability'
ride = 'Ride';
cards;
Cadillac Eldorado 8007990491240508971093809 3 2 4
Chevrolet Chevette 0051200423451043003515698 5 3 2
Chevrolet Citation 4053305814161643544747795 4 1 5
Chevrolet Malibu 6027400723121345545668658 3 3 4
Ford Fairmont 2024006715021443530648655 3 3 4
Ford Mustang 5007197705021101850657555 3 2 2
Ford Pinto 0021000303030201500514078 4 1 1
Honda Accord 5956897609699952998975078 5 5 3
Honda Civic 4836709507488852567765075 5 5 3
Lincoln Continental 7008990592230409962091909 2 4 5
Plymouth Gran Fury 7006000434101107333458708 2 1 5
Plymouth Horizon 3005005635461302444675655 4 3 3
Plymouth Volare 4005003614021602754476555 2 1 3
Pontiac Firebird 0107895613201206958265907 1 1 5
Volkswagen Dasher 4858696508877795377895000 5 3 4
Volkswagen Rabbit 4858509709695795487885000 5 4 3
Volvo DL 9989998909999987989919000 4 5 5
;
*---Compute Coordinates for a 2-Dimensional Scatterplot of Cars---;
proc prinqual data=carpref out=presults(drop=judge1-judge25) n=2
replace standard scores;
id model mpg reliable ride;
transform monotone(judge1-judge25);
title2 'Multidimensional Preference (MDPREF) Analysis';
title3 'Optimal Monotonic Transformation of Preference Data';
run;
*---Compute Endpoints for MPG and Reliability Vectors---;
proc transreg data=presults;
model untie(mpg reliable)=identity(prin1 prin2);
output tstandard=center coefficients replace out=tresult1;
id model;
title2 'Preference Mapping (PREFMAP) Analysis';
run;
*---Compute Ride Ideal Point Coordinates---;
proc transreg data=presults;
model untie(ride)=point(prin1 prin2);
output tstandard=center coordinates replace noscores out=tresult2;
id model;
title2 'Preference Mapping (PREFMAP) Analysis';
run;
*---Create Plotting Data Set---;
data plot;
set tresult1 tresult2;
if _type_ = 'SCORE' then sym = '00'x; /* Pointer Symbols for Cars */
else sym = '*'; /* Asterisk For Ideal Points*/
run;
proc plot vtoh=2;
title3 'Plot of Automobiles and Ratings';
plot prin2 * prin1 $ model = sym / haxis=by 1 vaxis=by 1
box href=0 vref=0
place=((s=right left : h=2 -2)
(h=0 1 to 5 by alt * v=0 1 -1 2 -2));
run; quit;
Graphe de Prin2*Prin1$model. Le symbole est la valeur de sym.
Prin2
3
Eldorado Continental
2 * Ride
1 > DL
* Reliability
> Firebird
> Dasher
0 >Accord
> Gran Fury > Rabbit
Volare * Miles per gallon
Malibu < > Mustang > Civic
Fairmont^2> Citation
Pinto Chevette
-1 Horizon
-2 -1 0 1 2 3
Prin1
PROC MDS (analyse des perceptions INDSCAL)
L'objectif de reconstituer les perceptions.
HYPERLINK "http://www.psych.yorku.ca/friendly/lab/files/psy6140/examples/cluster/tregex6.sas" http://www.psych.yorku.ca/friendly/lab/files/psy6140/examples/cluster/tregex6.sas
/* The data as given consist of interpoint distances for each
** pair of color chips for 16 'subjects' CD DT ... JV color deficient.
** NORMALS is the average data for ?? subjects with normal color vision.
*/
Title 'Individual Differences in Color Perception';
data helmraw;
drop c1-c2 pair2;
Input #1 C1 PAIR $2. CB DT MS RS NF1 JH RB1 CP JN
#2 C2 PAIR2 $2. RW HG SW RB2 MG JV NORMALS;
/* Each PAIR value gives the letter identifiers for
the two color chips compared. */
Length Item1 Item2 $1;
Item1= substr(PAIR,1,1);
Item2= substr(PAIR,2,1);
cards;
1 AC 6.787 5.920 7.057 7.540 9.342 6.622 5.151 11.534 9.862
2 AC 6.216 7.475 5.991 5.759 9.030 9.245 10.351 6.120
1 AE 12.519 11.096 10.217 10.262 10.653 10.513 9.407 13.147 13.202
2 AE 10.843 9.079 9.370 10.515 9.985 10.836 12.409 10.501
1 AG 13.777 18.779 11.095 10.701 10.732 10.234 11.386 12.623 12.315
2 AG 9.907 10.177 9.518 13.383 10.403 9.747 12.786 12.054
...
;
/* transform the data to lower triangular similarity matrices */
proc transpose out=HTRANS1 name=SUBJ;
data matrices;
set HTRANS1;
array col (45) col1-col45;
drop col1-col45;
t=0;
DO x='A','C','E','G','I','K','M','O','Q','S';
DO STIM='A','C','E','G','I','K','M','O','Q','S';
if x>=STIM then dist=.;
else do;
t+1;
if t