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