[vastaus aiempaan viestiin]
Kirjoittaja: | Kimmo Vehkalahti |
---|---|
Sähköposti: | - |
Päiväys: | 22.3.2012 23:35 |
"Kiero" ongelma jatkuu - nyt päästään asian ytimeen. :) Jätän nimet ja yksityiskohdat tässä yhteydessä pois; varmaan tekijä tulee itse esittelemään aihettaan vähän tuonnempana. Joka tapauksessa ongelma liittyy eräiden JOKILAIVOJEN kulun SATELLIITTISEURANTAAN toisella puolella maapalloa, mikä on varsin mielenkiintoista. Seuraavassa olen kuitenkin kuvannut ongelman vain sen pienen yksityiskohdan osalta, johon juutuin. Luvut on keksitty vain tätä pienoisesimerkkiä varten, mutta todellisuudessa on olemassa suurehko aineisto, jota kertyy kokoajan lisää (aika tyypillistä monille nykyajan datoille). Ongelma ja ratkaisu(ja) Lähtökohtana on aikasarja x ja tavoitteena z. Kriteeri on "x>10". Ratkaisuyritykseni alkuvaiheet olivat y1 ja y2, joihin jumiuduin. Petri Palmu kehitti ratkaisun loppuvaiheen y3. Aktivoi komennot! *DATA K I E R O * *VAR y1=if(x>10)then(ORDER)else(0) TO K *SER y2=CUM(y1) TO K *VAR y3=1 TO K *......................... *IND=ORDER,2,99 *VAR y3=if(y2<>y2[-1])then(1+y3[-1])else(y3[-1]) TO K * O11 11 11 11 1 Rx y1 y2 y3 z I2 1 *3 1 *1 1 *4 1 *6 1 *6 1 *9 1 *11 2 *8 2 *1 2 *3 2 *5 2 *5 2 *2 2 *13 3 *2 3 *2 3 E3 3 *....................................................... Seminaarin jälkeen kokeilin vielä "sieventää" ratkaisua: *DATA YRITYS1,A,B,N,M * *VAR y1=if(x>10)then(ORDER)else(0) TO YRITYS1 *SER y2=CUM(y1) TO YRITYS1 *VAR y3=if(ORDER=1)then(1)else(yy) TO YRITYS1 * yy=if(y2<>y2[-1])then(y3[-1]+1)else(y3[-1]) * M11 11 11 11 1 Nx y1 y2 y3 z A2 1 *3 1 *1 1 *4 1 *6 1 *6 1 *9 1 *11 2 *8 2 *1 2 *3 2 *5 2 *5 2 *2 2 *13 3 *2 3 *2 3 B3 3 *....................................................... Yhtäkkiä huomasin, että alkuperäinen ideani järjestysnumeroiden (ORDER) käytöstä ei olekaan tarpeen, ja homma yksinkertaistui: *DATA YRITYS2,a,b,n,m * *VAR y1=if(x>10)then(1)else(0) TO YRITYS2 *SER y2=CUM(y1) TO YRITYS2 *VAR y3=y2+1 TO YRITYS2 * m11 11 11 11 1 nx y1 y2 y3 z a2 1 *3 1 *1 1 *4 1 *6 1 *6 1 *9 1 *11 2 *8 2 *1 2 *3 2 *5 2 *5 2 *2 2 *13 3 *2 3 *2 3 b3 3 *....................................................... Ruokahalu kasvaa syödessä, ja niinpä halusin kokeilla, onnistuuko muunnos ilman ylimääräisiä muuttujia. Jep: *DATA YRITYS3 Z+1,Z+18,Z,Z-1 * *VAR y:1=if(x>10)then(1)else(0) TO YRITYS3 *SER y:1=CUM(y) TO YRITYS3 *VAR y:1=y+1 TO YRITYS3 * *11 1 1 Zx y z *2 1 *3 1 *1 1 *4 1 *6 1 *6 1 *9 1 *11 2 *8 2 *1 2 *3 2 *5 2 *5 2 *2 2 *13 3 *2 3 *2 3 *3 3 *....................................................... Tämä ei kuitenkaan jäänyt läheskään viimeiseksi sanaksi, sillä tästä keskustelu vasta alkoi! :) Rekisteridatojen ja muiden komplisoitujen aineistojen kanssa linjatyökseen painivat Petri Palmu ja Reijo Sund esittivät vuorotellen toinen toistaan etevämpiä täydennyksiä, ja lopulta koko homma hoitui yhdellä VAR-komennolla... Jatko-osassa teen selkoa tästä keskustelusta, joka käytiin sähköpostissa karkauspäivänä 2012. Nyt päätän taas tällä erää tähän. - 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!