***********************************************************************;

* analyse MDS : Distances intervilles françaises      *;

* une seule matrice à analyser ;

* Pierre Desmet décembre 2012 ;

* http://www.psych.yorku.ca/lab/psy6140/lectures/MDS2x2.pdf ;

***********************************************************************;

Options PS=60 LS=78 PageNo=1 NoDate

        FORMCHAR='|----|+|---+=|-/\<>*';

GOptions Device=WIN TargetDevice=IMGJPEG;

 

ods graphics on ;

Title1 "Distances intervilles françaises";

Data Villes;

      Length ville $4 ;

 

      Array d{47} d1-d47;

      do i=1 to 47;

            Input ville $     @@;

            do j=1 to i ;

                  if j=i then input d{j}  ;else input d{j} @@;

            end;

            output ;

      end;

 

cards;

amie   0 

ando 1020   0

ange 440 760   0

bale 560 1130 770   0

laba 590 830 160 940   0

besa 560 970 620 160 770   0

bord 730 430 340 840 400 700   0

boul 120 1020 480 690 550 610 830   0

bour 380 680 260 500 430 350 400 480   0

bres 610 1130 380 1090 270 960 620 690 630   0

brux 210 1200 600 560 760 550 890 260 550 910   0

caen 240 950 220 800 350 640 580 300 360 370 450   0

cala 160 1080 580 690 730 610 870  34 530 720 220 340   0

cham 760 750 720 350 900 260 790 870 480 1050 760 850 910   0

cher 360 1030 290 920 390 760 630 420 490 390 570 120 460 970   0

clem 530 580 410 480 550 340 370 630 190 750 670 540 680 410 670   0

dijo 460 800 520 260 690  94 640 560 250 860 470 540 600 290 660 280   0

gene 680 720 640 250 800 180 690 790 380 1080 680 770 830  95 880 320 200   0

gren 710 600 640 400 840 290 660 810 390 1110 780 790 860 180 920 290 300 140   0

leha 180 1030 320 760 470 610 650 240 380 480 410 110 280 810 230 590 510 730  760   0

hend 940 440 550 1050 610 910 210 1060 620 840 1100 790 1080 1000 850 580 860 920 860 850   0

lill 120 1090 510 630 680 530 800 120 460 810 110 340 110 840 460 610 530 760 780 290 1010   0

limo 540 490 260 600 380 470 220 640 190 600 700 440 690 600 550 180 420 490 460 550 430 610   0

lour 940 270 590 1080 640 940 240 1070 580 910 1100 800 1100 900 930 520 790 830 700 870 180 1020 400   0

luxe 330 1090 650 320 860 310 960 400 480 940 230 570 410 560 660 590 320 460 620 600 1150 380 740 1060   0

lyon 610 590 540 400 700 250 550 700 280 1000 670 690 750 240 810 180 190 160 110 650 840 680 360 680 520   0

lema 350 730  94 710 250 560 410 370 230 400 510 150 410 730 270 380 460 690 710 220 650 420 290 650 590 610   0

mars 920 470 850 680 1040 560 650 1020 590 1320 990 1010 1070 430 1130 460 510 430 280 970 710 990 640 570 820

310 930   0

metz 350 1160 620 270 760 260 900 480 450 920 290 570 470 510 690 550 260 420 560 530 1110 400 680 1160  62 460

530 770   0

mont 910 320 690 660 880 550 480 1010 570 1090 970 990 1050 430 1110 360 490 420 300 950 550 980 430 410 800 300

720 170 750   0

mulh 530 990 740  34 900 140 820 660 470 1080 530 770 660 380 890 460 230 290 440 730 1040 580 600 1080 300 380

690 690 240 670   0

nanc 360 1010 580 210 770 200 840 490 400 880 340 540 490 450 660 490 210 370 510 500 1070 410 630 1100 110 400

490 720  59 700 180   0

nant 530 740  87 830  73 710 330 550 350 300 690 280 670 820 300 450 610 730 740 400 540 600 300 620 770 630 180

960 710 800 830 670   0

nice 1080 650 1000 880 1170 720 800 1180 740 1470 1140 1160 1220 480 1270 610 660 480 330 1120 870 1150 790 740

980 470 1080 190 930 320 850 870 1110   0

orle 280 750 210 560 380 400 460 380 110 550 410 260 420 600 380 290 300 520 550 280 650 350 270 680 460 450 140

760 400 740 520 380 300 920   0

pari 150 880 290 560 480 410 580 240 240 600 310 240 290 620 360 390 310 540 570 200 800 220 400 830 380 460 200

780 330 760 540 300 380 930 130   0

perp 1050 170 770 840 840 700 450 1160 660 1060 470 640 570 450 1160 470 640 570 450 1100 510 1120 510 310 950 450

820 340 900 150 820 850 760 470 780 910   0

poit 480 610 140 690 260 610 250 580 190 480 640 330 620 640 420 270 520 560 560 400 470 550 120 480 710 430 160

730 660 550 740 590 180 890 210 330 640   0

reim 160 1020 430 410 600 320 710 280 330 730 200 380 280 500 500 490 280 480 580 340 940 210 530 940 190 480 340

790 190 770 370 210 520 950 270 140 920 470   0

renn 410 850 120 840 160 710 430 480 380 240 620 180 520 920 200 540 610 830 860 280 650 570 370 720 740 760 150

1070 670 900 820 640 110 1230 300 350 870 260 500   0

roue 110 980 290 690 450 550 620 180 330 500 320 120 220 750 250 520 440 670 690  86 850 220 480 840 420 590 200

900 420 890 670 440 380 1060 220 140 1040 380 230 330   0

roya 650 550 300 890 290 680 120 680 340 530 800 500 790 810 520 390 630 700 680 590 330 720 210 440 870 570 330

610 820 600 850 740 220 940 380 500 590 160 640 320 540   0

stma 400 920 200 900 190 790 510 460 450 230 610 170 490 980 200 610 690 900 930 270 720 530 450 790 740 820 220

1140 730 970 900 670 180 1300 370 420 950 330 510  69 310 390   0

stra 500 1110 780 150 940 240 930 640 580 1080 450 730 630 480 850 570 340 400 550 690 1150 560 700 1080 220 480

670 800 160 780 110 150 860 950 560 490 930 820 350 830 580 990 910   0

toul 850 190 570 930 620 780 240 950 500 850 1010 770 1000 680 860 400 730 650 540 840 330 920 310 170 1050 530

620 400 990 250 910 940 560 560 580 700 200 430 850 660 790 370 730 1020   0

tour 380 700 110 670 270 520 350 480 150 480 540 230 520 620 350 300 420 530 530 300 570 450 200 650 600 430  81

740 560 640 640 490 200 890 110 230 740 100 370 240 300 280 310 720 530   0

troy 280 910 430 330 600 240 650 430 220 730 320 400 420 440 520 330 150 350 450 360 870 350 410 810 260 350 340

660 230 650 320 180 520 820 190 160 790 410 120 490 300 550 560 330 720 310   0

;

 

Proc Print Data=Villes;

Run;

 

ODS graphics on ;

* ---------------------------------------------------- *;

Title2 "Absolute Distances : distances métriques 2 dim";

* ---------------------------------------------------- *;

Proc MDS Data=Villes Level=Absolute      /* absolute ou ordinal */

          Plots(Flip)                          /* pour un seul graphique ajouter (one) derrière coefficients */

                                                           /* Flip permute les axes X et Y */

            Dimension= 1 to 3                        /* nombre de dimensions à tester ou dim=2 */

            PData                                          /* Print data */

            PConfig Pfit                             /* Print configuration et ajustement*/

            PFinal                                         /* Print configuration finale (diagramme de Sheppard)*/

            out = out                                /* Matrice des coordonnées */

            outres= res                              /* Matrice des distances prévues, réelles, écarts... */

            outfit=fitstats;                   /* Ajustement */

      Var d1-d47;

      Id ville;

Run;

 

proc print data=out (obs=20); run;

proc print data= res (obs=20); run ;

proc print data= fitstats (obs=20); run ;

 

* ---------------------------------------------------- *;

Title2 "Absolute Distances : distances transformées 2 dim";

* ---------------------------------------------------- *;

Proc MDS Data=Villes Level=interval

         Dimension=2 PConfig PFinal;

 Var d1-d47;

 Id ville;

Run;

 

* ---------------------------------------------------- *;

Title2 "Non-metric Scaling : distances ordinales 2 dim";

* ---------------------------------------------------- *;

Proc MDS Data=Villes Level=Ordinal Out=MDSout

         Dimension=2 PConfig PFinal;

 Var d1-d47;

 Id ville;

Run;

proc print data=MDSout ;

run ;

data work ; set MDSout ; X=-dim2 ; Y=dim1;

  text=ville ; /* variable d'identification */

  size=1; xsys='2'; ysys='2';

  Label  Y='Nord-Sud' X='Ouest-Est'; /* nom des axes */

  keep X Y Xsys Ysys text size  ;

  run;

 

* ---------------------------------------------------- *;

Title4 'premier plan factoriel Profils Lignes/Individus';

* ---------------------------------------------------- *;

symbol1 V=none interpol=none; goptions reset ;

proc gplot data=work;

 plot Y*X=1      

      y*x=2  / overlay /* trick to get axes the same : y*y=2 x*x=2*/

      haxis=axis1 vaxis=axis2 annotate=work Frame Href=0 Vref=0; run;

 

/* * ---------------------------------------------------- *;

Title2 "Graph avec macro plotit% ";

* ---------------------------------------------------- *;

%plotit(data=out, datatype=mds, labelvar=ville, vtoh=1.75, labfont=swissb);

run; */