Kilpatehtävä

classic Classic list List threaded Threaded
5 messages Options
Reply | Threaded
Open this post in threaded view
|

Kilpatehtävä

Seppo Mustonen
Administrator
Kilpatehtävä:

Olen tallentanut verkkoon tekstitiedoston DATA_XY.TXT .

Se sisältää Survolla luodun kahden muuttujan X,Y 1000 havainnon aineiston.

Tehtävänä on selvittää tämän aineiston syntytapa.

Parhaan ratkaisun ensimmäisenä esittäneen palkitsen 100 eurolla.

Odotan ratkaisuehdotuksia tähän keskusteluun 1.3.2017 mennessä.

Terv. Seppo

Reply | Threaded
Open this post in threaded view
|

Re: Kilpatehtävä

Seppo Mustonen
Administrator
Mikäli arkailette kertoa ratkaisuistanne julkisesti,
voitte myös lähettää niitä  minulle viesteinä osoitteeseen
seppo.mustonen(at)survo.fi
1.3.2017 mennessä.
Kilvan päätyttyä julkaisen näitä viestejä tässä keskustelussa vasta saatuani siihen lupanne.  
Reply | Threaded
Open this post in threaded view
|

Re: Kilpatehtävä (Tulokset)

Seppo Mustonen
Administrator
Kilpailuun tuli 3 vastausta, joista ylivoimaisesti paras oli Aleksis Vuoksenmaan ratkaisu ja hänelle kuuluu tarjoamani 100 euron palkinto. Toivon, että Aleksis lähettäisi oman ratkaisunsa tähän keskusteluun haluamassaan muodossa. Oma malliratkaisuni on nähtävänä uutena Survo-demona Merits of slow plotting, jonka olin sommitellut ennen kuin päätin julistaa tämän kilpailun.

Kuten tuosta demosta ilmenee, ratkaisua helpottaa olennaisesti, jos annetusta aineistosta voi piirtää hajontakuvan hitaalla nopeudella. Tällöin heti huomaa, että peräkkäiset pisteet pyörivät spiraalimaisesti vastapäivään keskipisteen ympäri ja etääntyvät siitä vähitellen. Ei edes voimakas satunnaisvaihtelu häivytä tätä vaikutelmaa, mutta se estää kierot kierrot näkymästä staattisesta hajontakuvasta.
Tein tämän demon esimerkkinä uuden SLOW-täsmennyksen käytöstä. Esim. SLOW=50 hidastaa piirtoa kuvaruutuun siten, että jokainen havainto piirretään 50 kertaa, mikä nopeillakin laitteilla saa aikaan tuon hidastuksen.
SLOW on ollut mukana SURVO MM:ssä kauan käyräparvien piirrossa, mutta hajontakuviin lisäsin sen vasta tehdessäni demoa Sampling from a discrete uniform distribution.
Hajontakuvien SLOW-optio on nyt mukana SURVO MM:n uusimmassa versiossa, jonka voi vapaasti ottaa käyttöön.

Kuten sekä Aleksis Vuoksenmaan että oma ratkaisuni osoittaa, kilpatehtävän ratkaisuun pääsee ilmankin tätä uutta SLOW-optiota. Pitää vain huomata, että havainnot riippuvat järjestysnumeroistaan ja todeta spiraalimainen etääntyminen keskipisteestä esim. osa-aineistoja piirtämällä.

Reply | Threaded
Open this post in threaded view
|

Re: Kilpatehtävä (Tulokset)

Seppo Mustonen
Administrator
Kannattaa huomata, että esimerkkiratkaisussani Merits of slow plotting
on linkki More information about this example
josta avautuu hieman lisää tietoa tämän demon "historiallisesta" taustasta.
Reply | Threaded
Open this post in threaded view
|

Re: Kilpatehtävä (Tulokset)

Aleksis Vuoksenmaa
In reply to this post by Seppo Mustonen
Hei,

Ohessa alkuperäinen ratkaisuni. Latasin lisäksi R-scriptin, jonka pitäisi avata hieman järkeilyprosessiani. Tuo R-tiedosto olettaa, että työhakemistossa on data tiedostona "survodata.txt".

Data on generoitu käyttäen apuna spiraalia, jonka alkupiste on suunnilleen kohdassa (2250, 1900). Olette sitten valinneet spiraalin avulla 1000 pistettä spiraalin keskiöstä poispäin etenevässä järjestyksessä. Näiden pisteiden avulla olette ottaneet spiraalin tämän pisteen normin suuntaisen (normaalijakaumaisen) virheen, jonka summaaminen spiraalin pisteeseen antaa tällä indeksillä olevan datapisteen.

Päädyin ratkaisuun seuraavalla tavalla. Havaitsin ensin, että aineiston varianssi kasvoi indeksien kasvaessa, mutta keskiarvo pysyi suunnilleen samana. Tämän jälkeen koitin piirtää muutamia osia aineistosta. Huomasin, että jos otti aineiston häntäpäästä noin 50 havainnon pituisen kokoelman ja piirsi nämä tasolle, muodostivat pisteet likimäärin vajaan ympyrän. Kun tähän kokoelmaan lisäsi muutaman seuraavan pisteen, näytti ympyrä sulkeutuvan indeksien mukana.

Sitten laskin havaintojen euklidisen etäisyyden origosta (2250, 1900). Huomasin tämän olevan suoraan verrannollinen indeksiin. Eli havainnot olivat keskimäärin kauempana pisteestä (2250, 1900) mitä isompi havainnon indeksi oli.

Tämän jälkeen mietin, oliko tosiaan niin että havainnot piirtäisivät pisteen (2250, 1900) ympärille spiraalin. Selvittääkseni tämän, laskin jokaisen havainnon kohdalla sen kiertokulman suhteessa x-akseliin. Plottasin kiertokulmat suhteessa indeksiin ja niissä ilmeni tiettyä periodisuutta (spiraalin kiertymät). Muutin kiertokulmat kiertymiksi (tämän kierroksen kiertokulma + aikaisemmin kierrettyjen kierrosten lukumäärä * 2*pi). Kun plottasin kiertymän vasten indeksejä, huomasin, että kiertymä määräytyi oikeastaan suoraan indeksin mukaan.

Näistä päädyin lopputulokseen: havainnot on saatu spiraalin + virhetermin avulla generoimalla. Tämä selittää sen, minkä takia havaintojen etäisyys pisteestä (2250, 1900) kasvaa indeksin mukana. Indeksihän näet määrittää kiertymän, ja kiertymän ja spiraalin kaaren pisteen välinen etäisyys (säde) tulee kaavalla r = a + b*\theta, missä r on säde, a jokin kiertymätermi, b spiraalin kaarien välinen etäisyys ja \theta kiertymä. Havaintojen etäisyys pisteestä (2250, 1900) on siis suoraan verrannollinen suhteessa kiertymään ja sen takia suoraan verrannollinen suhteessa indeksiin. Tähän vielä virhetermi, niin jotain annetun muotoista dataa pitäisi syntyä.


Datakilpa_Vuoksenmaa_final.R