/*** 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;