[viesti Survo-keskustelupalstalla (2001-2013)]
Kirjoittaja: | Seppo Mustonen |
---|---|
Sähköposti: | - |
Päiväys: | 31.1.2005 14:32 |
Lokakuussa (2004) keskusteltiin matriisituloksien lisäämisestä Survon tilastollisiin operaatiohin. Oli heti selvää, miten se tehdään luonnostaan matriisi- tai vektorimuotoisille tuloksille. Enemmän miettimistä on tuottanut, kuinka toimia yksittäisten tulosarvojen tallentamiseksi matriisimuotoon. Tällaisia ovat esim. regressioanalyysissa jäännösvarianssi, selitysaste jne. Olen nyt koemielessä päätymässä seuraavantapaiseen ratkaisuun, jonka olen toteuttanut REGDIAG-modulissa. Ensin normaali REGDIAG-tulostus (ei muutoksia): MASK=-YXXXXX REGDIAG DECA,CUR+1 Regression diagnostics on data DECA: N=48 Regressand Points # of regressors=6 (Constant term included) Condition number of scaled X: k=93.9679 Variable Regr.coeff. Std.dev. t Constant 3559.4913 516.31336 6.8941 100m 0.5425684 0.3063601 1.7710 L_jump 1.3614673 0.3024766 4.5011 Shot_put 1.1714600 0.2589412 4.5240 Hi_jump 0.9223284 0.2616501 3.5250 400m 1.3272355 0.3632046 3.6542 Variance of regressand Points=26131.99956 df=47 Residual variance=10607.97908 df=42 R=0.7983 R^2=0.6372 Durbin-Watson=1.246 Matriisimuotoisena REGDIAG on tuottanut tähän asti vain regressiokertoimien vektorin REG.M. Nyt saadaan tämän lisäksi matriisi REGS.M, jossa ovat sekä regressiokertoimet että niiden keskivirheet: MAT LOAD REGS.M MATRIX REGS.M regs(DECA) /// Coeff Std.dev. Constant 3559.491 516.313 100m 0.543 0.306 L_jump 1.361 0.302 Shot_put 1.171 0.259 Hi_jump 0.922 0.262 400m 1.327 0.363 Toinen lisäys on kertoimien korrelaatiokertoimet matriisina REG_CORR.M: MAT LOAD REG_CORR.M MATRIX REG_CORR.M reg_corr(DECA) /// Constant 100m L_jump Shot_put Hi_jump 400m Constant 1.00000 -0.27523 -0.35079 -0.42986 -0.56665 -0.52450 100m -0.27523 1.00000 -0.14836 -0.16006 0.32782 -0.38020 L_jump -0.35079 -0.14836 1.00000 0.02031 -0.09030 -0.06848 Shot_put -0.42986 -0.16006 0.02031 1.00000 -0.11431 0.30353 Hi_jump -0.56665 0.32782 -0.09030 -0.11431 1.00000 0.14695 400m -0.52450 -0.38020 -0.06848 0.30353 0.14695 1.00000 Kuten aiemmin totesin, suosin korrelaatioita kovarianssien asemasta, koska niitä pystyy välittömästi tulkitsemaan. Kovarianssimatriisi on tietenkin tärkeä mahdollisissa jatkolaskelmissa ja sen voi nyt laskea suoraan matriisitulona MAT REGCOV=INV(RG.M(MSE))*DV(REGS.M(*,2))*REG_CORR.M*DV(REGS.M(*,2)) Sisällön näkeminen ei tuota ainakaan minulle minkäänlaista iloa, koska numeeriset arvot riippuvat voimakkaasti muuttujien asteikoista: LOADM REGCOV,12.123456789,CUR+1 INV(RG.M(MSE,1))*DV(REGS.M(*,2))*reg_corr(DECA)*DV(REGS.M(*,2)) Constant 100m L_jump Shot_put Constant 25.130091301 -0.004103942 -0.005164364 -0.005417669 100m -0.004103942 0.000008848 -0.000001296 -0.000001197 L_jump -0.005164364 -0.000001296 0.000008625 0.000000150 Shot_put -0.005417669 -0.000001197 0.000000150 0.000006321 Hi_jump -0.007216368 0.000002477 -0.000000674 -0.000000730 400m -0.009272033 -0.000003988 -0.000000709 0.000002691 Hi_jump 400m Constant -0.007216368 -0.009272033 100m 0.000002477 -0.000003988 L_jump -0.000000674 -0.000000709 Shot_put -0.000000730 0.000002691 Hi_jump 0.000006454 0.000001316 400m 0.000001316 0.000012436 Äskeisessä matriisilausekkeessa esiintyy uusi matriisi RG.M, joka kokoaa vektorin muotoon erinäisiä regressioanalysiin liittyviä numeerisia tietoja. Niitä tarvitaan jatkolaskelmissa. Matriisin RG.M sisällön saa esille MAT LOAD:illa näin: MAT LOAD RG.M,1234567.123,CUR+1 MATRIX RG.M REGDIAG statistics from data DECA RG.M /// REGDIAG n 48.000 / # of cases k 6.000 / # of regression coefficients const 1.000 / 1 if constant term included, 0 otherwise df 42.000 / n-k Yvar 26132.000 / variance of regressand SST 1228203.979 / total sum of squares SSE 445535.121 / residual sum of squares SSR 782668.858 / SST-SSE MSE 10607.979 / mean square error Resvar 10607.979 / MSE R 0.798 / multiple correlation coefficient R2 0.637 / R^2 kappa 93.968 / condition number DW 1.246 / Durbin-Watson statistics Matriisin alkioilla voi vapaasti laskeskella esim. tyyliin MAT_RG.M(SST)=1228203.9791665 MAT_RG.M(SSE)+MAT_RG.M(SSR)=1228203.9791665 ja on entistä mukavampaa tehdä sukroja, jotka jalostavat tilastollisten operaatioiden tuloksia. Alkioiden (rivien) perässä näkyvät sanalliset kommentit, joita en ole tähän käsin kirjoittanut vaan ne ovat REGDIAG:in tuottamia ja tulevat esiin matriisitulkin vastikään parannetulla MAT LOAD - komennolla (mukana versiosta 2.23 lähtien). Nuo kommentit kohentavat tämän "sekasikiö"-matriisin luettavuutta. Vanhemmissa Survon versioissa sama matriisi tulostuu muodossa: MAT LOAD RG.M MATRIX RG.M REGDIAG statistics from data DECA /n: # of cases /k: # of regression coefficients /const: 1 if constant term included, 0 otherwise /df: n-k ... (tässä 9 riviä poistettu) /DW: Durbin-Watson statistics RG.M /// REGDIAG n 48 k 6 const 1 df 42 ... (tässä 9 riviä poistettu) DW 1 eli ei (ainakaan tarkoituksellisesti) ole turmeltu mitenkään Survon matriisitiedostojen rakennetta. Kommentit esiintyvät omina riveinään ennen varsinaista matriisia, joka näkyvässä muodossa alkaa ///-riviltä. Nämä uudenmuotoiset kommenttirivit ovat /-alkuisia, esim. /const: 1 if constant term included, 0 otherwise ja siinä ensimmäinen "sana" (merkkien / ja : välissä eli tässä const) viittaa matriisin riviotsikkoon. Näin uusi MAT LOAD osaa asettaa kommenttitekstin oikealle paikalleen (tässä const-rivin loppuun). Vielä pienenä kaavamaisena kertauksena: Talletetaan matriisi A, jolla on rivikommentteja: MATRIX A Tämä on yleinen kommentti 1. Tämä on yleinen kommentti 2. A /// S1 S2 S3 R1 11 12 13 R2 21 22 23 / Tämä on rivin R2 kommentti. R3 31 32 33 / Tämä on rivin R3 kommentti. R4 41 42 43 MAT SAVE A / talletus MAT LOAD A / uusimmalla versiolla MATRIX A Tämä on yleinen kommentti 1. Tämä on yleinen kommentti 2. A /// S1 S2 S3 R1 11 12 13 R2 21 22 23 / Tämä on rivin R2 kommentti. R3 31 32 33 / Tämä on rivin R3 kommentti. R4 41 42 43 Kun matriisilla lasketaan, kommentit (luonnollisista syistä) häipyvät, mutta rivi- sarakeotsikot entiseen tapaan kulkevat mukana: Esimerkki: MAT B=A'*A / *B~A'*A S3*3 MAT LOAD B MATRIX B A'*A /// S1 S2 S3 S1 3204 3308 3412 S2 3308 3416 3524 S3 3412 3524 3636 * * * Uskon, että tätä uutta matriisin rivien kommentointitapaa tullaan hyödyntämään muissakin yhteyksissä, koska se edelleen parantaa matriisien luettavuutta. Odottelen survoilijoiden kannanottoja vielä jonkin aikaa, ennenkuin yritän rakentaa vastaavia lisäyksiä muihin Survon tilastollisiin operaatioihin. -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!