/*** proc discrim : y= quali et x= quanti*/ proc discrim data=sashelp

Transcription

/*** proc discrim : y= quali et x= quanti*/ proc discrim data=sashelp
/*** proc discrim
: y= quali et x= quanti*/
proc discrim data=sashelp.iris outstat=irisstat
method=normal pool=test;/*fct quadratique */
class Species;
var SepalLength SepalWidth PetalLength PetalWidth;
run;
proc print data=irisstat;
title2 'Output Discriminant Statistics';
run;
proc discrim data=sashelp.iris outstat=irisstat;
method=normal ; /*fct lineaire */
class Species;
var SepalLength SepalWidth PetalLength PetalWidth;
run;
proc print data=irisstat;
title2 'Output Discriminant Statistics'; /* afficher la sortie*/
run;
/***** application de la proc discrim sur un echantillon
base et test ****/
proc surveyselect data=sashelp.iris method=srs n=40 /*il prend 40 observations
de chaque groupe de taille 50
observations, donc on aura au total 120observations */
seed=530 out=SampleStrata outall ;
strata species;
run;
proc surveyselect data=sashelp.iris method=srs samprate =0.7 /*il prend 70%
des observations de chaque groupe */
seed=530 out=SampleStrata outall ;
strata species;
run;
/* avec outall , le fichier samplestrata contient les données initiales et une
variable selected qui prend 1 si l'observation est
choisi dans les 70% de l'échantillon de base et 0 sinon c'est à dire si
l'observation est dans l'échant
test surlequel il faut appliquer la proc discrim pour valider le
modéle*/;
proc print ; run;
/********netoyage des bases finales****************/
*création du fichier de base;
data base (keep=species SepalLength SepalWidth PetalLength PetalWidth);
set SampleStrata;
if selected=1 ;
run;
*création du fichier de test;
data test (keep=species SepalLength SepalWidth PetalLength PetalWidth);
set SampleStrata;
if selected=0;
run;
*creation des fichiers base et test en même temps;
data base (keep=species SepalLength SepalWidth PetalLength PetalWidth) test
(keep=species SepalLength SepalWidth PetalLength PetalWidth);;
set SampleStrata;
if selected=1 then output base;
else output test;
run;
/******** application de la discrim*****/
proc discrim data=base testdata=test outstat=strateresult
wcov pcov method=normal pool=test
distance anova manova listerr crosslisterr CANONICAL;
class Species/* y*/;
var SepalLength SepalWidth PetalLength PetalWidth /* les xi*/;
run;
/*****************************************************************************
***********************************/
/****** proc corresp : y= quali et x=
quali******/
title1 'Automobile Owners and Auto Attributes';
title2 'Simple Correspondence Analysis';
proc format;
value Origin
value Size
value Type
value Home
value Sex
value Income
value Marital
1
1
1
1
1
1
1
3
=
=
=
=
=
=
=
=
'American' 2
'Small'
2
'Family'
2
'Own'
2
'Male'
2
'1 Income' 2
'Single with
'Single'
= 'Japanese' 3 = 'European';
= 'Medium'
3 = 'Large';
= 'Sporty'
3 = 'Work';
= 'Rent';
= 'Female';
= '2 Incomes';
Kids' 2 = 'Married with Kids'
4 = 'Married';
run;
data Cars;
missing a;
input (Origin Size Type Home Income Marital Kids Sex) (1.) @@;
* Check for End of Line;
if n(of Origin -- Sex) eq 0 then do; input; return; end;
marital = 2 * (kids le 0) + marital;
format Origin Origin. Size Size. Type Type. Home Home.
Sex Sex. Income Income. Marital Marital.;
output;
datalines;
131112212121110121112201131211011211221122112121131122123211222212212201
121122023121221232211101122122022121110122112102131112211121110112311101
211112113211223121122202221122111311123131211102321122223221220221221101
122122022121220211212201221122021122110132112202213112111331226122221101
;
run;
proc print; run;
/************** afc********/
ods graphics on; /*pour avoir la representation graphique */
* Perform Simple Correspondence Analysis;
proc corresp data=Cars all chi2p;
tables Marital, Origin;
run;
/**************** acm******************/
title2 'Multiple Correspondence Analysis';
* Perform Multiple Correspondence Analysis;
proc corresp mca observed data=Cars OUTf= baseACM outc= baseACM2 dim = 6;
tables Origin Size Type Income Home Marital Sex;
run;
/*****
tableau disjonctif complet
****************************/
proc corresp binary observed data=Cars dim = 6
out=sortie;
tables Origin Size Type Income Home Marital Sex; supplementary Origin; /*
la variable a
expliquer (origin)doit etre en suplimentaire car on peut pas la prendre
dans les composantes***/
run;
proc print; run;
/*************nettoyage de la base sortie pour appliquer la
discrim***************/
data basefin;
merge cars /*base initiale*/ sortie;
run;
data baseDisc;
set basefin;
keep Origin Dim1 Dim2 Dim3 Dim4 Dim5 Dim6;
if _TYPE_= 'OBS' ;
run;
/*************** application de la discim************************/
proc surveyselect data=Basedisc method=srs n=20
seed=530 out=SampleStrata outall ;
strata Origin ;
run;
proc print ; run;