Re: MCA

[vastaus aiempaan viestiin]

Kirjoittaja: Kimmo Vehkalahti
Sähköposti:    -
Päiväys: 19.2.2006 19:09

Hei,

Mielenkiintoisia kysymyksiä. En tiedä onko vastaukseni tyhjentävä,
mutta kenties siitä on jotain hyötyä jatkopohdintojen kannalta.

>Minulla on joukko kaksiarvoisia (1/0) muuttujia, joiden välisiä
>yhteyksiä analysoin moniulotteisella korrespondenssianalyysilla.
>Näyttäisi siltä, että informaatiota olisi perusteltua tiivistää pariin
>kolmeen dimensioon.

Menetelmä on varmasti hyödyksi tilanteen visualisoimisessa, ja
useimmiten kaksi dimensiota riittää (joskus voi kolme olla tarpeen).

>Jäin pohtimaan "korrespondenssipistemäärien"
>laskemisen mahdollisuutta. Mitä asioita tässä olisi huomioitava esim.
>verrattuna faktorianalyysiin?

Erona faktorianalyysiin on se, että lähtökohtana olevasta aineistosta
siirrytään annettua luokittelua vastaavaan frekvenssitaulukkoon, joka
visualisoidaan paljolti pääkomponenttianalyysia vastaavalla tavalla.
Taulukko on itse asiassa Burtin matriisi, jolloin siitä lasketuilla
dimensioilla ei ole suoraan takanaan mielekästä aineistoa, johon laskea
vastaavat (pääkomponentti)pistemäärät.

Burt ehdotti jo 50 vuotta sitten, että faktorianalyysia voisi tehdä
luokitelluilla muuttujilla tämän sittemmin hänen mukaansa nimetyn
matriisin pohjalta. Ranskassa korrespondenssianalyysia kutsutaan usein
jopa faktorianalyysiksi "~analyse factorielle (de correspondances)".
Selviä yhteyksiä menetelmien välillä siis on.

>Esim. eikö luokitteluasteikon muuttujilla
>tai niistä muodostetulla mittausmallilla ole jonkinlainen
>reliabiliteetti olemassa?

Huomautan ohimennen, että reliabiliteetti ei ole mittausmallin vaan
mitta-asteikon ominaisuus. Tämä oli silti hyvä kysymys. Asioita ollaan
kuitenkin vasta pohtimassa ja kehittelemässä. Tarkkonen on esittänyt,
että mittausvirhettä (joka on reliabiliteetin kannalta ydinkäsite)
voisi ajatella luokitteluasteikon muuttujien tapauksessa analogisesti
LUOKITTELUvirheenä. Teorian kehittely tämän ympärille on vaiheessa.

Tilanne voidaan kuitenkin formuloida myös Burtin matriisia vastaavan
binäärisen indikaattorimatriisin Z avulla (josta Burtin matriisi siis
saadaan laskemalla yksinkertaisesti matriisitulo Z'Z). Matriisi Z on
täsmälleen alkuperäinen aineisto dummy-muuttujamuodossa (sisältäen myös
vertailuryhmien dummy-muuttujat). Tästä voidaan yhtähyvin suoraan tehdä
pääkomponenttianalyysi ja laskea sitten vastaavat pistemäärät kullekin
alkuperäisen datan havainnolle.

Demoilen tähän loppuun monille tutun kymmenotteluaineiston kanssa, niin
näkyy (etenkin jos itse toistaa kokeilut ja piirtää kuvat), millaisia
vastaavuuksia (sic!) tässä ilmenee.

...............................................................................

Aloitan tekemällä kahden faktorin faktorianalyysin viidellä muuttujalla:

MASK=--A-A-A-A--A--------
CORR DECA
FACTA CORR.M,2
MAT FACT1=FACT.M   / faktorimatriisi talteen
/LOADFACT DECA,FACT1 / tämä tuottaa allaolevan omatoimisesti:
 LIMITS=-0.7,-0.3,0.3,0.5,1
 SHADOWS=7,1,0,1,7
 SUMS=2 WIDE=1 POSDIR=1 COLUMNS=SORT
LOADM FACT1,12.123,CUR+1 / SORT=-DECA,0.3
F
             F2     F1  Sumsqr
Discus    0.913  0.015  0.834                             (####) {500,1200}
Shot_put  0.783 -0.028  0.614                             (####) {500,1200}
1500m    -0.631 -0.292  0.483 1500 meters run             (####) {400,1200}
100m     -0.000  0.997  0.995 100 meters run              (####) {500,1200}
400m     -0.414  0.457  0.380 400 meters run              (####) {500,1200}
Sumsqr    2.016  1.290

Piirretään muuttujat vektoreina faktoriavaruuteen:

GPLOT FACT1.MAT,F1,F2 / LINE=6 LINE2=0,0 POINT=CASE

Lasketaan faktoripistemäärät:

FILE SHOW DECA
/FCOEFF FACT1,MSN.M,FCOEFF1
Use FCOEFF1 for factor scores by LINCO <data>,FCOEFF1(F1,F2,...)

LINCO DECA,FCOEFF1(F1,F2)

...............................................................................

Luokitellaan nyt muuttujat dikotomisiksi: "alle/yli mediaanin"
(yhtä hyvin voitaisiin tehdä useampiluokkaisia luokituksia,
jolloin ei hukattaisi niin paljon informaatiota; idea tullee
kuitenkin esille tästä:

MASK=--A-A-A-A--A--------
STAT DECA CUR+1 / RESULTS=0
Basic statistics: DECA N=48
Variable: 100m     100 meters run              (####) {500,1200}
min=712      in obs.#15 (Avilov)
max=932      in obs.#21 (Stroot)
mean=828.1875 stddev=59.30256 skewness=-0.083453 kurtosis=-1.097382
autocorrelation=0.2922
lower_Q=780      median=828      upper_Q=879

Variable: Shot_put                             (####) {500,1200}
min=604      in obs.#45 (Samara)
max=924      in obs.#5 (Zigert)
mean=740.7708 stddev=61.82757 skewness=-0.079124 kurtosis=0.506489
lower_Q=712.5    median=751.25   upper_Q=778.8889

Variable: 400m     400 meters run              (####) {500,1200}
min=699      in obs.#41 (Brigham)
max=938      in obs.#6 (Bennett)
mean=813.5    stddev=49.80216 skewness=0.013099 kurtosis=-0.142824
lower_Q=784.5455 median=811.6667 upper_Q=842.5

Variable: Discus                               (####) {500,1200}
min=607      in obs.#13 (Sherbati)
max=897      in obs.#7 (Blinjaje)
mean=747.4583 stddev=62.28212 skewness=0.085801 kurtosis=0.025014
lower_Q=714      median=748.75   upper_Q=786

Variable: 1500m    1500 meters run             (####) {400,1200}
min=378      in obs.#26 (Janczenk)
max=696      in obs.#30 (George)
mean=554.625  stddev=76.67245 skewness=-0.221263 kurtosis=-0.58457
lower_Q=503.3333 median=552.8571 upper_Q=612.5

    100m=712,828(100m-),932(100m+)
Shot_put=604,751(Shotput-),924(Shotput+)
    400m=699,811(400m-),938(400m+)
  Discus=607,748(Discus-),897(Discus+)
   1500m=378,552(1500m-),696(1500m+)

Z=DECAZ (tähän palataan alempana)

Muodostetaan Burtin matriisi:

/BURT-DATA DECA
/MATSHOW BURT.M / Burt's table as a matrix file
A suitable data file for Multiple Correspondence Analysis is created by
/BURT-MCORRESP <data>,BURT.M,CLASS.M

MAT LOAD BURT.M ### CUR+1 / tältä se näyttää:
MATRIX BURT.M
Burt's_table_of_DATA_DECA
///      100 100 Sho Sho 400 400 Dis Dis 150 150
100m-     26   0  16  10  15  11  15  11  10  16
100m+      0  22   9  13   8  14  10  12  13   9
Shotput-  16   9  25   0  10  15  20   5   8  17
Shotput+  10  13   0  23  13  10   5  18  15   8
400m-     15   8  10  13  23   0   9  14  13  10
400m+     11  14  15  10   0  25  16   9  10  15
Discus-   15  10  20   5   9  16  25   0   9  16
Discus+   11  12   5  18  14   9   0  23  14   9
1500m-    10  13   8  15  13  10   9  14  23   0
1500m+    16   9  17   8  10  15  16   9   0  25

Skaalataan se niin että se vastaa korrelaatiomatriisia:

MAT B=DIAG(BURT.M)^(-0.5)*BURT.M*DIAG(BURT.M)^(-0.5)
MAT LOAD B ##.## CUR+1
MATRIX B
DIAG(Burt's_table_of_DATA_DECA)^(-0.5)*Burt's_table_of_DATA_DECA*DIAG(Burt's_table_of
///      100m- 100m+ Shotp Shotp 400m- 400m+ Discu Discu 1500m 1500m
100m-     1.00  0.00  0.63  0.41  0.61  0.43  0.59  0.45  0.41  0.63
100m+     0.00  1.00  0.38  0.58  0.36  0.60  0.43  0.53  0.58  0.38
Shotput-  0.63  0.38  1.00  0.00  0.42  0.60  0.80  0.21  0.33  0.68
Shotput+  0.41  0.58  0.00  1.00  0.57  0.42  0.21  0.78  0.65  0.33
400m-     0.61  0.36  0.42  0.57  1.00  0.00  0.38  0.61  0.57  0.42
400m+     0.43  0.60  0.60  0.42  0.00  1.00  0.64  0.38  0.42  0.60
Discus-   0.59  0.43  0.80  0.21  0.38  0.64  1.00  0.00  0.38  0.64
Discus+   0.45  0.53  0.21  0.78  0.61  0.38  0.00  1.00  0.61  0.38
1500m-    0.41  0.58  0.33  0.65  0.57  0.42  0.38  0.61  1.00  0.00
1500m+    0.63  0.38  0.68  0.33  0.42  0.60  0.64  0.38  0.00  1.00

(B ei tietenkään ole koskaan pos.def., mutta ei-neg.def. riittää.)

.........................

Tehdään faktorianalyysi (ed. johtuen ML:n sijasta PNS:llä):

FACTA B,3,CUR+2 / METHOD=ULS
MAT FACT2=FACT.M   / *FACT2~F 10*3
Factor analysis: Unweighted Least Squares (ULS) solution
Factor matrix
             F1     F2     F3    h^2
100m-     0.748 -0.246 -0.573  0.947
100m+     0.675  0.268  0.593  0.879
Shotput-  0.714 -0.558  0.019  0.822
Shotput+  0.681  0.588 -0.013  0.809
400m-     0.661  0.228 -0.407  0.654
400m+     0.696 -0.215  0.408  0.697
Discus-   0.711 -0.528  0.119  0.798
Discus+   0.677  0.555 -0.117  0.779
1500m-    0.648  0.367  0.041  0.556
1500m+    0.682 -0.349 -0.035  0.588

Kiinnostavia faktoreita ovat F2 ja F3; F1 vastaa keskistystä, jota
tässä ei ole eksplisiittisesti suoritettu.

Piirretään nämä muuttujat vektoreina tähän faktoriavaruuteen:

GPLOT FACT2.MAT,F2,F3 / LINE=6 LINE2=0,0 POINT=CASE

(vrt. ed. kuva)

...............................................................................

Jotta nähdään, mistä moniulotteisessa korrespondenssianalyysissa on
kyse, tehdään se Burtin matriisista:

/BURT-MCORRESP MDECA BURT.M,CLASS.M,2
FILE SHOW MDECA / New data file
FILE ACT  MDECA / Activate supplementary classes with `S'
/MCORRESP MDECA / Multiple Correspondence Analysis

Aktivoimalla vain /MCORRESP-komento saadaan kuva joka vastaa täysin
(vain etumerkeissä on eroja) äsken piirrettyä faktoriavaruutta.

Itse asiassa hyvin havainnollinen kuva (jälleen yksi näkemys lisää
tästä tutusta aineistosta...).

...............................................................................

Sama näkyy esim. ottamalla /BURT-MCORRESP-sukron tekemästä datasta
listaus muuttujien Class, Dim1 ja Dim2 osalta ja kopioimalla siihen
jatkeeksi FACT2:n sarakkeet F2 ja F3:

FILE SHOW MDECA
MASK=A----------A--A----------------
FILE LOAD MDECA
DATA MDECA*,A,B,C
 Class                  Dim1        Dim2     F2     F3
 100m-                 0.188      -0.363 -0.246 -0.573
 100m+                -0.222       0.429  0.268  0.593
 Shotput-              0.499      -0.025 -0.558  0.019
 Shotput+             -0.543       0.027  0.588 -0.013
 400m-                -0.250      -0.386  0.228 -0.407
 400m+                 0.230       0.356 -0.215  0.408
 Discus-               0.481       0.057 -0.528  0.119
 Discus+              -0.523      -0.062  0.555 -0.117
 1500m-               -0.408       0.064  0.367  0.041
 1500m+                0.376      -0.059 -0.349 -0.035

CORR MDECA* CUR+1 / VARS=ALL,Class
Means, std.devs and correlations of MDECA*  N=10
Variable  Mean        Std.dev.
Dim1     -0.017200    0.415485
Dim2      0.003800    0.259791
F2        0.011000    0.438399
F3        0.003500    0.340466
Correlations:
             Dim1    Dim2    F2      F3
 Dim1         1.0000 -0.0000 -0.9963  0.0486
 Dim2        -0.0000  1.0000  0.0475  0.9830
 F2          -0.9963  0.0475  1.0000  0.0002
 F3           0.0486  0.9830  0.0002  1.0000

Vastaavuus "dimensioiden" ja "faktoreiden" välillä on hyvä, kuten pitääkin.

...............................................................................

Palataan nyt tarkastelemaan DECAZ-matriisia, joka muodostettiin
jo samalla kun tehtiin Burtin matriisi:

Yleisesti kyseessä on iso matriisi (n riviä!), kun taas Burtin matriisi
on "pieni" (p x p, jossa p <  n).

MAT DIM DECAZ /* rowDECAZ=48 colDECAZ=10
MAT LOAD DECAZ ## CUR+1
MATRIX DECAZ
Binary_form_of_DATA_DECA
///      10 10 Sh Sh 40 40 Di Di 15 15
1         0  1  1  0  0  1  0  1  1  0
2         0  1  0  1  0  1  0  1  1  0
3         0  1  0  1  0  1  0  1  1  0
4         1  0  0  1  0  1  1  0  1  0
5         0  1  0  1  1  0  0  1  1  0
6         0  1  1  0  0  1  1  0  0  1
7         0  1  0  1  1  0  0  1  0  1
... [rivejä poistettu]
46        1  0  1  0  0  1  1  0  1  0
47        1  0  1  0  1  0  1  0  0  1
48        1  0  0  1  1  0  0  1  0  1

Kyseessä on siis DECAn 48 havaintoa dummy-muuttujamuodossa. (Sarakeotsikot
ovat tässä kutistuneet hieman tunnistamattomiksi.) Urheilijoiden nimet
ovat tästä kadonneet; otetaan ne takaisin samalla kun tehdään tästä data:

FILE DEL ZDECA
FILE SAVE MAT DECAZ TO ZDECA / TYPE=1 (riittää hyvin dummy-muuttujille)
.................
FILE UPDATE ZDECA
FIELDS:
   1 SA_   8 Name
END
FILE COPY DECA TO ZDECA / VARS=Name MATCH=#
FILE SHOW ZDECA
....................

Tehdään nyt pääkomponenttianalyysi tästä datasta:

MASK=-AAAAAAAAAA
CORR ZDECA
/PCOMPR CORR.M,MSN.M,10
MAT LOAD PCOMP.M,END+2 / Principal component loadings
MAT LOAD PCOMPV.M,END+2 / Variances of principal components
MAT LOAD PCOCENT.M,END+2 / Variances of components (percentages)
Use PCOMP.M for factor rotation etc.
and PCOEFF.M for scores by LINCO <data>,PCOEFF.M(P1,P2,...)

MATRIX PCOMP.M
Principal_components
///        PCOMP1   PCOMP2   PCOMP3   PCOMP4   PCOMP5   PCOMP6   PCOMP7   PCOMP8   PCOMP9  PCOMP10
100m-     0.32586 -0.79682 -0.08019 -0.50235  0.00976  0.00000  0.00000  0.00000 -1.#IND0 -1.#IND0
100m+    -0.32586  0.79682  0.08019  0.50235 -0.00976 -0.00000 -0.00000  0.00000 -1.#IND0 -1.#IND0
Shotput-  0.82950 -0.05287  0.28607  0.15795 -0.44983  0.00000 -0.00000  0.00000 -1.#IND0 -1.#IND0
Shotput+ -0.82950  0.05287 -0.28607 -0.15795  0.44983 -0.00000 -0.00000  0.00000 -1.#IND0 -1.#IND0
400m-    -0.38178 -0.74817  0.24591  0.47784  0.07539 -0.00000  0.00000  0.00000 -1.#IND0 -1.#IND0
400m+     0.38178  0.74817 -0.24591 -0.47784 -0.07539 -0.00000  0.00000  0.00000 -1.#IND0 -1.#IND0
Discus-   0.79885  0.11941  0.40208  0.02999  0.43013 -0.00000 -0.00000  0.00000 -1.#IND0 -1.#IND0
Discus+  -0.79885 -0.11941 -0.40208 -0.02999 -0.43013 -0.00000 -0.00000  0.00000 -1.#IND0 -1.#IND0
1500m-   -0.62433  0.12416  0.70232 -0.30617 -0.08830 -0.00000 -0.00000  0.00000 -1.#IND0 -1.#IND0
1500m+    0.62433 -0.12416 -0.70232  0.30617  0.08830 -0.00000 -0.00000  0.00000 -1.#IND0 -1.#IND0

Todellisia dimensioita on tietenkin vain 5 (luokittelijoiden lkm).
Kaksi ensimmäistä näyttäisi jälleen riittävän hyvin, ja tulkinnat
löytyvät vastaavasti kuin faktorianalyyseissa edellä.

MATRIX PCOMPV.M
Variances_of_principal_components
///        PCOMP1   PCOMP2   PCOMP3   PCOMP4   PCOMP5   PCOMP6   PCOMP7   PCOMP8   PCOMP9  PCOMP10
Variance  3.93594  2.45432  1.60733  1.20055  0.80187  0.00000  0.00000  0.00000 -0.00000 -0.00000

MATRIX PCOCENT.M
Variances_of_pr.components_(in_percentages)
///        PCOMP1   PCOMP2   PCOMP3   PCOMP4   PCOMP5   PCOMP6   PCOMP7   PCOMP8   PCOMP9  PCOMP10
Per_cent   39.359   24.543   16.073   12.005    8.019    0.000    0.000    0.000   -0.000   -0.000
Cumulat.   39.359   63.903   79.976   91.981  100.000  100.000  100.000  100.000  100.000  100.000

Lasketaan pääkomponenttipistemäärät ja piirrellään:

LINCO ZDECA,PCOEFF.M(P1,P2)
GPLOT ZDECA,P1,P2 / POINT=Name

.................

Otetaan vielä mukaan edellä lasketut faktoripistemäärät (alkuperäinen
aineisto) ja vertaillaan:

VAR F1,F2 TO ZDECA / F1=MISSING F2=MISSING
FILE COPY DECA TO ZDECA / MATCH=Name VARS=F1,F2
.........................
FILE SHOW ZDECA
FILE SHOW DECA

MASK=-----------AAAA
CORR ZDECA
/LOADCORR
.................................................................................
LIMITS=-0.46,-0.364,-0.283,0.283,0.364,0.46,1 SHADOWS=7,1,6,0,6,1,7
Limits: P=0.001 0.46   P=0.01 0.364   P=0.05 0.283
LOADM CORR.M,12.123,CUR+1
R(ZDECA)
             P1     P2     F1     F2
P1        1.000  0.000 -0.165 -0.859
P2        0.000  1.000  0.763 -0.114
F1       -0.165  0.763  1.000  0.000
F2       -0.859 -0.114  0.000  1.000

GPLOT ZDECA P2,F1 / POINT=Name
GPLOT ZDECA P1,F2 / POINT=Name

.................................................................................

Lopuksi huomauttaisin, että dikotomisilla muuttujilla voi melko hyvin
tehdä ihan suoraan faktorianalyysia - jos haluaa, voi toki laskea
korrelaatiot erityisillä dikotomisten muuttujien tekniikoilla vaikkapa
R:ssä. Dikotominen muuttujahan täyttää periaatteessa kaikki vaatimukset
asteikkotyypeistä. Asia on heti aivan eri, kun luokkia on >2. Tällöin
edellä esitetyistä tavoista voi olla suhteessa enemmän hyötyä.

terv. Kimmo

Vastaukset:
[ei vastauksia]

Survo-keskustelupalstan (2001-2013) viestit arkistoitiin aika ajoin sukrolla, joka automaattisesti rakensi viesteistä (yli 1600 kpl) HTML-muotoisen sivukokonaisuuden. Vuoden 2013 alusta Survo-keskustelua on jatkettu entistäkin aktiivisemmin osoitteessa forum.survo.fi. Tervetuloa mukaan!

Etusivu  |  Keskustelu
Copyright © Survo Systems 2001-2013. All rights reserved.
Updated 2013-06-15.