[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: |
|---|
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!