Re: K I E R O ongelma ja sen ratkaisu(ja)

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

Etusivu  |  Keskustelu
Copyright © Survo Systems 2001-2013. All rights reserved.
Updated 2013-06-15.