[viesti Survo-keskustelupalstalla (2001-2013)]
Kirjoittaja: | Seppo Mustonen |
---|---|
Sähköposti: | - |
Päiväys: | 7.3.2004 17:14 |
Vaikka Survon VAR-operaatiolla voi tehdä "mitä muuttujamuunnoksia tahansa", on erikoistilanteita, joissa hyötyy suoremmista muunnosmahdollisuuksista (kts. esim. VARR?). Olen nyt rakentanut uuden POWERS-ohjelman, joka muodostaa halutuista Survo-aineiston muuttujista kaikki mahdolliset potenssit ja sekatulot annettuun astelukuun asti. Esim. yhden muuttujan (sanotaan X) tapauksessa komento POWERS data / POW_VARS=X DEGREE=10 laskee X:stä muuttujat X^2,X^3,...,X^10 eli kaikki potenssit kertalukuun 10. Näin pääsee mukavimmin tekemään mm. polynomiregressiota. POW_VARS-listassa voi olla useampia muuttujia tyyliin POWERS data / POW_VARS=X,Y,Z DEGREE=2 jolloin syntyvät lisämuuttujat X^2, X*Y, X*Z, Y^2, Y*Z ja Z^2 eli selittäjät "kvadraattiseen" malliin. Jos POW-muuttujat ovat dikotomisia, syntyy ehkä aineksia interaktioiden tutkintaan erilaisissa tilanteissa. POWERS tulee olemaan mukana SURVO MM:n versiosta 2.09 lähtien. Seuraava esimerkki kertoo omalla tavallaan POWERSin käytöstä (ja vähän muustakin): Eräässä kombinatoorisessa ongelmassa frekvenssimuuttujan F tiedetään riippuvan kokonaislukuparametreista N ja K kolmannen asteen polynomin P(N,K) mukaisesti. Tämän polynomin tarkka esitys yritetään nyt löytää estimoimalla se lineaarisen regressioanalyysin avulla seuraavasta aineistosta: DATA NKF:(N,K,F) 4,1,48 4,2,68 4,3,64 5,1,80 5,2,124 5,3,136 5,4,120 6,1,120 6,2,196 6,3,232 6,4,232 6,5,200 7,1,168 7,2,284 7,3,352 7,4,376 7,5,360 7,6,308 8,1,224 8,2,388 8,3,496 8,4,552 8,5,560 8,6,524 8,7,448 9,1,288 9,2,508 9,3,664 9,4,760 9,5,800 9,6,788 9,7,728 9,8,624 END Jotta analyysi saadaan tehdyksi LINREG:illä, tulee ensin muodostaa johdetut muuttujat N^2,N^3,K^2,K^3,N*K,N^2*K,N*K^2. Ne voidaan tietenkin laskea tavallisella VAR-operaatiolla, mutta POWERS tekee asian sukkelammin. Ensin tulee listan muodossa oleva aineisto NKF tallettaa uuteen tiedostoon: FILE COPY NKF TO NEW NKF2 Huom. tässä uusi apusana NEW (mukana versiosta 2.08) tarkoittaa, että mahdollinen aikaisempi kopioinnin kohde (NKF2) tuhotaan ennen suoritusta (eikä tarvita edeltävää FILE DEL:iä). Uusille muuttujille (7 kpl tyyppiä 2) tarvitaan lisätilaa ja se saadaan mukavimmin aikaan komennolla (sekin mukana versiosta 2.08 lähtien) FILE EXPAND NKF2,14,7 joka lisää tilaa 14 tavulle/havainto ja 7 muuttujalle (itse asiassa vähempikin riittäisi, koska FILE COPY tekee jo valmiiksi varatilaa). ............................. Nyt päästään laskemaan nuo potenssitermit yksinkertaisesti komennolla POWERS NKF2 / POW_VARS=N,K DEGREE=3 TYPE=2 missä POW_VARS luettelee muuttujat, joista uusia termejä tehdään, DEGREE ilmaisee (korkeimman) asteluvun/termi ja TYPE antaa johdettujen muuttujien tyypin (oletus on 8). ............................. FILE STATUS näyttää, mitä POWERS on tehnyt: FILE STATUS NKF2 Copy of sample NKF FIELDS: (active) 1 NX- 4 N 2 NX- 4 K 3 NY- 4 F 4 NX- 2 N2 ~N^2 5 NX- 2 N1K1 ~N*K 6 NX- 2 K2 ~K^2 7 NX- 2 N3 ~N^3 8 NX- 2 N2K1 ~N^2*K 9 NX- 2 N1K2 ~N*K^2 10 NX- 2 K3 ~K^3 END Survo data file NKF2: record=42 bytes, M1=21 L=64 M=10 N=33 Tässä tapauksessa POWERS:in on luonnollista käyttää muuttujien nimiä sellaisinaan, koska ne (N,K) olivat lyhyitä. Pitempien nimien (esim. Paino, Pituus) kohdalla POW_WARS-lista kannattaa antaa esim. muodossa POW_VARS=Paino(P),Pituus(L) jolloin johdetuissa muuttujissa käytetään noita suluissa olevia lyhenteitä (P,L). ............................. Nyt päästään tekemään regressioanalyysi: MASK=XXYXXXXXXX / Muuttujien valinta LINREG NKF2,CUR+1 / RESULTS=0 Linear regression analysis: Data NKF2, Regressand F N=33 Variable Regr.coeff. Std.dev. t beta N -0.000000 0.000000 K -0.666667 0.000000 N2 0.000000 0.000000 N1K1 -0.000000 0.000000 K2 0.000000 0.000000 N3 -0.000000 0.000000 N2K1 4.000000 0.000000 N1K2 -4.000000 0.000000 K3 0.666667 0.000000 constant 0.000000 0.000000 Variance of regressand F=53475.09091 df=32 Residual variance=0.000000000 df=23 R=1.0000 R^2=1.0000 Odotuksien mukaisesti syntyy "täydellinen" selitys ja regressio- kertoimista on heti luettavissa, että F=P(N,K)=4*(N^2*K-N*K^2)+2/3(K^3-K)=4*[N*K*(N-K)+C(K+1,3)]. Eipä tuo tietenkään ole matemaatikoille kelpaava todistus, vaikka varsinkin, jos todella teoreettisin perusteluin tiedetään, että haettu lauseke on kolmatta astetta ao. muuttujissa ja annettu data NKF pitää kutinsa, tämän laskelman perusteella saatu P(N,K) on todella se ainoa ratkaisu. Joka tapauksessa tämänlaatuiset numeeriset kokeilut usein tukevat mainiosti eksaktia, matemaattista tarkastelua. Siinä näet voi helposti vaikkapa pienen huolimattomuuden tai puutteellisen päättelyn seurauksena ajautua virheellisiin tuloksiin. Joskus näin kokeellisesti saatu ratkaisu saattaa myös johdattaa tarkemman päättelyn jäljille. -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!