[viesti Survo-keskustelupalstalla (2001-2013)]
Kirjoittaja: | Seppo Mustonen |
---|---|
Sähköposti: | - |
Päiväys: | 19.12.2004 20:36 |
Vaikuttaa siltä, että Robert I. Jennrich (UCLA:n emeritusprofessori) on viime vuosina kääntänyt rotaatiomenetelmät aivan uuteen valoon. Hän on tutkimuksissaan Jennrich, R. I. (2001). A simple general procedure for orthogonal rotation. Psychometrika, 66, 289-306. Jennrich, R.I. (2002). A simple general method for oblique rotation. Psychometrika, 67, 7-19. Jennrich, R.I. (2004). Rotation to simple loadings using component loss functions: The orthogonal case. Psychometrika, 69, 257-273. http://preprints.stat.ucla.edu/402/revision.pdf Jennrich, R.I. (2004). Rotation to simple loadings using component loss functions: The oblique case. (Manuscript July 30, 2004). http://preprints.stat.ucla.edu/403/revision5.pdf kehittänyt yleisen gradienttimenetelmään perustuvan algoritmin, jolla sekä ortogonaaliset että vinot rotaatioratkaisut saadaan lasketuksi tehokkaasti hyvin monenlaisilla rotaatiokriteereillä, ja tuonut esille CLF-kriteerien (Component Loss Functions) edut moniin muihin rotaatiomenetelmiin verrattuna. Yleisessä "vinorotaatiossa" tapahtuu muunnos L=A*inv(T') primääriratkaisusta (tavallisesti nykyisin ML-ratkaisu) A rotatoituun faktorimatriisiin L rotaatiomatriisin T välityksellä ja siinä T:n on toteutettava ehto diag(T'*T)=I eli T:n pystyrivit ovat yksikkövektorin mittaisia. Kts. esim. http://www.survo.fi/mustonen/monim.pdf (kohta 5.4 Rotaatiomenetelmät, jossa L:n paikalla on A*). Rotaatiokriteerit ovat L:n alkioiden funktioita, joita pyritään optimoimaan niin, että Thurstonen yksinkertaisen rakenteen vaatimukset toteutuvat mahdollisimman hyvin. Parhaat kriteerit ovat olleet yleensä kohtalaisen mutkikkaita. Sen vuoksi on hämmästyttävää, että Jennrich onnistuu sekä teoreettisilla että empiirisillä tarkasteluilla osoittamaan, että parhaisiin kriteereihin kuuluu f(L) = summa |L(i,j)| i,j siis yksinkertaisesti kaikkien rotatoitujen latausten itseisarvojen summa, joka tulee tehdä mahdollisimman pieneksi valitsemalla T sopivasti. Funktio f(L) on kuitenkin hankala minimoitava, koska se on ikäänkuin monen "harjakaton" muodostelma eli sillä voi olla lukuisia paikallisia minimikohtia. Osoittautuu, että lähtemällä riittävän useasta (esim. sadasta) satun- naisesta T-matriisista ja käyttämällä Jennrichin gradienttimenetelmää, syntyy kelpo ratkaisuja. Ortogonaalisessa tilanteessa eli L=F*T ja T'T=I Jennrichin suosittelema kriteeri on (linear right constant) f_lrc(L) = summa h(L(i,j)), i,j missä h(u) = (u/b)^2, kun |u|<=b, h(u) = 1, kun |u|> b. b on tyypillisesti luokkaa 0.3 mutta valittava tilanteen mukaan. Hyviä tuloksia antaa myös "entropiafunktio" h(u) = -u^2*log(u^2). Silloin kun rakenne on todella yksinkertainen eli jokainen muuttuja latautuu vain yhdelle faktoreista, kaikki Jennrichin esittämät kriteerit antavat aina tuon yksinkertaisen ratkaisun. Ne toimivat hyvin myös muissakin tilanteissa. Sivulla (Gradient Projection Algorithms) http://www.stat.ucla.edu/research/gpa/ Jennrich kuvaa algoritminsa (esim. Matlab-koodina) ja tätä tietoa hyödyntämällä olen laajentanut Survon ROTATE-modulia seuraavasti: ROTATION=CLF itseisarvokriteeri f (vinorotaatio) ROTATION=ORTHO_CLF,b linear right constant (ortogonaalinen) ROTATION=ENTROPY entropiafunktio (ortogonaalinen) Lisäksi myötäjäisinä mukaan tulevat ennestään tunnetut ROTATION=QUARTIMIN (vinorotaatio) ROTATION=QUARTIMAX (ortogonaalinen). Jälkimmäistä on jo aikaisemmin voinut soveltaa (painike Q) Survon graafisessa rotaatiossa. Esimerkki 1: Ortogonaaliset faktorit ==================================== Tarkastelen kaavamaista esimerkkiä, jossa todellinen faktorirakenne on MATRIX L0 /// F1 F2 F3 X1 0.90 0.00 0.00 X2 0.00 0.80 0.00 X3 0.00 0.00 0.70 X4 0.60 0.45 0.00 X5 0.60 0.00 0.45 X6 0.00 0.45 0.45 X7 0.50 0.35 0.00 X8 0.50 0.00 0.35 X9 0.00 0.35 0.35 L0 on hieman yleisempi kuin Jennrichillä, jonka vastaavassa esimerkissä kaikki kommunaliteetit (vaakarivineliösummat) olivat ykkösiä. Lisäksi "vaikeutan" tehtävää siten, että rekonstruoin tätä rotatoitua matriisia vastaavan pääakseliratkaisun A, jonka tulee olla pystyriveit- täin ortogonaalinen. A lasketaan matriisikäskyin MAT SAVE L0 MAT K=L0'*L0 / *K~L0'*L0 S3*3 MAT SPECTRAL DECOMPOSITION OF K TO S,L MAT T0=S' / *T0~S(L0'*L0)' 3*3 MAT A!=L0*T0' / *A~L0*S(L0'*L0)'' 9*3 MAT LOAD A,12.123,CUR+1 MATRIX A /// ev1 ev2 ev3 X1 -0.742 0.497 0.109 X2 -0.335 -0.592 0.421 X3 -0.266 -0.268 -0.589 X4 -0.683 -0.001 0.310 X5 -0.666 0.159 -0.306 X6 -0.360 -0.505 -0.142 X7 -0.559 0.017 0.245 X8 -0.545 0.142 -0.234 X9 -0.280 -0.393 -0.110 Tarkistetaan A:n ortogonaalisuus: MAT B=A'*A / *B~A'*A S3*3 MAT LOAD B MATRIX B A'*A /// ev1 ev2 ev3 ev1 2.46148 0.00000 -0.00000 ev2 0.00000 1.12583 -0.00000 ev3 -0.00000 -0.00000 0.87270 ...................................................................... Sitten A-matriisin rotaatioihin, ensin Varimax: ROTATE A,3,CUR+1 / ROTATION=VARIMAX Rotated factor matrix AFACT.M=A*TFACT.M ev1 ev2 ev3 Sumsqr X1 -0.896 0.057 0.057 0.810 X2 -0.050 -0.798 0.002 0.640 X3 -0.044 0.001 -0.699 0.490 X4 -0.626 -0.411 0.039 0.563 X5 -0.626 0.039 -0.411 0.562 X6 -0.057 -0.448 -0.448 0.405 X7 -0.520 -0.318 0.032 0.373 X8 -0.520 0.032 -0.318 0.373 X9 -0.044 -0.349 -0.349 0.245 Sumsqr 2.138 1.236 1.086 4.460 Jennrichin "linear right constant" ratkaisu oletusparametrilla b=0.3: ROTATE A,3,CUR+1 / ROTATION=ORTHO_CLF Rotated factor matrix AFACT.M=A*TFACT.M ev1 ev2 ev3 Sumsqr X1 0.900 -0.000 0.000 0.810 X2 0.000 0.800 -0.000 0.640 X3 -0.000 0.000 0.700 0.490 X4 0.600 0.450 0.000 0.563 X5 0.600 -0.000 0.450 0.563 X6 -0.000 0.450 0.450 0.405 X7 0.500 0.350 0.000 0.373 X8 0.500 -0.000 0.350 0.373 X9 -0.000 0.350 0.350 0.245 Sumsqr 2.030 1.290 1.140 4.460 Tässä näkyvät myös kosiniratkaisun kyvyt: ROTATE A,3,CUR+1 / ROTATION=COS Rotated factor matrix AFACT.M=A*inv(TFACT.M)' X1 X2 X3 Sumsqr X1 0.900 0.000 0.000 0.810 X2 -0.000 0.800 0.000 0.640 X3 0.000 0.000 0.700 0.490 X4 0.600 0.450 0.000 0.563 X5 0.600 0.000 0.450 0.563 X6 0.000 0.450 0.450 0.405 X7 0.500 0.350 0.000 0.373 X8 0.500 0.000 0.350 0.373 X9 0.000 0.350 0.350 0.245 Sumsqr 2.030 1.290 1.140 4.460 Siis kyllä Varimax (joka on nykyinen standardiratkaisu) kelvollisen tuloksen antaa, mutta "Jennrich" ja "kosini" osuvat aivan tarkasti maaliin. Esimerkki 2: Thurstonen laatikko-ongelma 26 muuttujalla ======================================================= Tässä ei riitä ortogonaalinen rotaatio, sillä alkuperäiset laatikkojen päädimensiot korreloivat. Siitä ja eräistä tuohon ongelmaan liittyvistä epämääräisyyksistä mainitsin viestissäni "Korrelaatiomatriisin tallentaminen ja ihan muuta" 26.12.2004. Jennrich on käyttänyt rotaatioiden lähtökohtana primääriratkaisua A26, joka esiintyy artikkelissa Cureton, E. E. & Mulaik, S. A. (1975). The weighted varimax rotation and the promax rotation. Psychometrika, 40, 183-185. Curetonin ja Mulaikin Promax-ratkaisu oli kaiketi ensimmäinen analyyttinen menettely, joka löysi "oikeat" päädimensiot x,y,z. Jos matriisiin A26 kohdistetaan komento ROTATE A26,3,CUR+1 / ROTATION=CLF saadaan alla olevan taulukon oikeanpuoleinen matriisi. Faktorimatriisi Rotatoitu faktorimatriisi (Cureton&Mulaik) (CLF-rotaatio) 1 2 3 1 2 3 x 0.629 -0.494 0.579 -0.990 0.006 -0.006 y 0.751 0.602 0.125 -0.067 -0.050 0.941 z 0.765 -0.230 -0.572 -0.009 -0.961 0.065 xy 0.866 0.131 0.459 -0.640 0.010 0.647 xz 0.873 -0.473 -0.042 -0.601 -0.645 0.010 yz 0.906 0.250 -0.323 0.014 -0.643 0.615 x2y 0.824 -0.149 0.528 -0.835 -0.011 0.390 xy2 0.859 0.358 0.306 -0.390 -0.037 0.814 x2z 0.812 -0.518 0.203 -0.790 -0.419 -0.011 xz2 0.951 -0.441 -0.254 -0.452 -0.856 0.035 y2z 0.876 0.406 -0.185 0.009 -0.452 0.766 yz2 0.885 0.095 -0.431 0.018 -0.782 0.444 xdy -0.102 -0.936 0.322 -0.739 -0.010 -0.821 ydx 0.102 0.936 -0.322 0.739 0.010 0.821 xdz -0.081 -0.163 0.969 -0.806 0.819 0.010 zdx 0.081 0.163 -0.969 0.806 -0.819 -0.010 ydz 0.006 0.810 0.582 0.010 0.793 0.843 zdy -0.006 -0.810 -0.582 -0.010 -0.793 -0.843 xpy 0.852 0.223 0.420 -0.552 0.017 0.714 xpz 0.861 -0.483 -0.094 -0.561 -0.688 -0.015 ypz 0.912 0.248 -0.304 -0.004 -0.630 0.620 sxy 0.847 0.218 0.405 -0.541 0.004 0.704 sxz 0.845 -0.456 -0.106 -0.530 -0.680 -0.002 syz 0.902 0.246 -0.272 -0.026 -0.598 0.619 xyz 0.987 -0.026 0.043 -0.459 -0.467 0.483 sxyz 0.965 0.057 -0.028 -0.348 -0.487 0.532 Promax-ratkaisu ei ole tässä näkyvillä, mutta voin todeta, että CLF-rotaatio on kyllä siihen verrattuna puhtaampi. Esimerkin vaikeutta kuvaa sekin, että esim. Oblimin-, Quartimin- ja kosinirotaatiot eivät päädy parhaaseen tulokseen. - - - Aiheesta kiinnostuneiden kannattaa todella tutustua yllä mainittuihin Jennrichin artikkeleihin. Survoon uudet ROTATION-optiot tulevat mukaan versiosta 2.22 lähtien. - Seppo
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!