[viesti Survo-keskustelupalstalla (2001-2013)]
Kirjoittaja: | Seppo Mustonen |
---|---|
Sähköposti: | - |
Päiväys: | 6.2.2013 10:52 |
Helsingin yliopiston tilastotieteen opiskelijoiden yhdistys Moodi ry vietti viime lauantaina (2.2.2013) 45-vuotisjuhlaansa. Olen ollut aikoinaan (syksyllä 1979) myötävaikuttamassa tämän yhdistyksen syntyyn. Aloitettuani tällöin tilastotieteen proffana päätin tehostaa alan opetusta järjestämällä peräti vuoden mittaisen (4 tuntia viikossa) cum laude -kurssin todennäköisyyslaskennasta ja tilastollisesta analyysista. Kurssille olikin kysyntää, sillä sille ilmoittautui peräti 324 opiskelijaa, joista suoraan välikokeilla sen suoritti noin 150. Huomatessani syksyn 1979 alkuvaiheilla, ettei tilastotieteen opiskelijoilla vielä ollut omaa järjestöä, pyysin valtiotieteellisen tiedekunnan opintosihteeriä mukaan erään luentoni jälkimmäiselle tunnille keskustelemaan osanottajien kanssa yhdistyksen perustamisesta. Itse poistuin kuennolta tuon keskustelun ajaksi. Tämä aloite johti Moodin perustamiseen ja ymmärtääkseni yhdistys on toiminut varsin aktiivisesti siitä lähtien, mistä "Moodin isänä" olen hyvin iloinen. * * * Eräs kaikkein aktiivisimmista Moodin jäsenistä on kautta aikojen ollut Heikki Hyhkö, joka toimi näissäkin juhlissa seremoniamestarina. Hän oli mm. järjestänyt tietokilpailun (noin 90:lle mukana olleesta muodostetuille 6-jäsenisille joukkueille). Kilvassa kysyttiin kaikenlaista tilastotieteen ja Moodin historiasta. Kysymyksistä haastavin oli ehkä seuraava todennäköisyyslaskentaan liittyvä: "Jos noppaa heitetään kolme kertaa ja kahden suurimman pistemäärän summasta vähennetään se kolmas eli pienin pistemäärä, niin mikä on tuon erotuksen odotusarvo?" Juhlan tuoksinassa ei kellään tietenkään ollut aikaa eikä mahdollisuutta mietiskellä saati laskeskella mitään vaan oli tyydyttävä pelkkään arvailuun, joka todennköisyysarvioinneissa helposti johtaa varsin harhaisiin vastauksiin. Oma ryhmämme (jossa kanssani mukana olivat Hannu Niemi, Kimmo Vehkalahti puolisoineen sekä Moodin nykyiset puheenjohtajat Essi Wikman ja Janina Hietala) kyllä voitti kisan, mutta tuon tehtävän kohdalla menimme aika lailla metsään. Arvauksemme oli 4.2, kun oikea tulos on yli 6. Näin jälkikäteen asiaa miettiessäni jäi "harmittamaan", sillä olisihan pitänyt siinäkin tilanteessa osata päätellä jotenkin seuraavasti: Pienin mahdollinen tulos on 1+1-1=1 ja suurin mahdollinen 6+6-1=11. Tuloksen jakauma ei varmaankaan ole aivan symmetrinen mutta noiden ääripäiden keskiarvo (1+11)/2=6 on luultavasti lähellä oikeata. (Ehkä joissain muissa ryhmissä tämäntapaiseen päättelyyn olikin kyetty ja siitä saan varmaankin nyt jälkikäteen kuulla.) Aion nyt käsitellä tehtävää hieman tarkemmin. Toivon, että tehtävästä aidosti kiinnostuneet yrittäisivät ratkaista sen, ennenkuin katselevat, miten tässä yhteydessä menettelen. Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z ..................................................... Käsittelen tehtävää Survon avulla. Musteella toimitaan aivan samalla tavalla. Kaiken allaolevan voi siirtää leikepöydän kautta Survon/Musteen toimituskenttään, toistaa laskelmat ja tarkastella yksityiskohtia. Raaka numeerinen ratkaisu onnistuu taulukoimalla (COMB) kaikki 3 nopan tulosvaihtoehdot, 6^3=216 kpl tekstitiedostoon NOPAT3.TXT ja siirtämällä tulokset (FILE SAVE) Survon datatiedostoksi NOPAT3.SVO, jolloin noppien antamat pistemäärät tulevat muuttujien X1,X2,X3 arvoiksi. Asetetaan pistemäärät nousevaan suuruusjärjestykseen, mikä onnistuu kätevästi VARSTAT-komennon SORT-optiolla, jolloin X1 tulee olemaan pienin, X2 keskimmäinen ja X3 suurin pistemääristä. Lopullinen tehtävässä tutkittava satunnaismuuttuja on silloin X2+X3-X1, jonka arvot lasketaan VAR-komennolla muuttujan X1 uudeksi arvoksi. Nämä toimenpiteet lisättynä tulostuksen antavalla STAT- komennolla tuottavat seuraavaa jälkeä toimituskenttään: COMB L TO NOPAT3.TXT / L=LATTICE,3 MIN=1,1,1 MAX=6,6,6 FILE SAVE NOPAT3.TXT TO NEW NOPAT3 VARSTAT NOPAT3,*,SORT VAR X1=X2+X3-X1 TO NOPAT3 ......................... STAT NOPAT3,CUR+1 / VARS=X1 Basic statistics: NOPAT3 N=216 Variable: X1 X1 (##) min=1 in obs.#1 max=11 in obs.#36 mean=6.4166667 stddev=1.922329 skewness=-0.0790616 kurtosis=-0.1651008 autocorrelation=0.62503 lower_Q=5 median=6 upper_Q=8 X1 f % 1 1 0.5 * 2 4 1.9 **** 3 10 4.6 ********** 4 19 8.8 ******************* 5 31 14.4 ******************************* 6 46 21.3 ********************************************** 7 45 20.8 ********************************************* 8 30 13.9 ****************************** 9 18 8.3 ****************** 10 9 4.2 ********* 11 3 1.4 *** 11 1 0.5 * ......................... Keskiarvoksi tulee pyöristettynä mean=6.4166667 mikä viittaa vahvasti siihen, että tarkka odotusarvo lienee 6.41666666666..(10:ratio)=77/12 (-0.00000000000667) (siis tässä konvertoituna murtoluvuksi suoraan Survolla). Arvon yksinkertaisuus antaa aiheen kysyä, mistä moinen seuraa. Päätin tarkastella asiaa yleisemmin "n-nopalla", joka antaa silmälukuja 1,2,3,...,n yhtäsuurin todennäköisyyksin 1/n. Toistin edellä olevat laskelmat arvoilla n=1,2,3,4,5 muuttamalla COMB-komennon viimeisen täsmennyksen MAX=6,6,6 erikseen kunkin n-arvon mukaiseksi. Sain tulokset n mean murtolausekkeena eli 1 1 1 1+0/(2*1) 2 2.25 2+1/4 2+1/(2*2) 3 3.3333333 3+1/3 3+2/(2*3) 4 4.375 4+3/8 4+3/(2*4) 5 5.4 5+4/10 5+4/(2*5) 6 6.41666... 6+5/12 6+5/(2*6) Tämä viittaa vahvasti siihen, että yleisesti n-nopalla tuo odotusarvo on n+(n-1)/(2*n). Tämä lauseke on helppo saattaa muotoon E(n):=(n+1)*(2*n-1)/(2*n) Tästä voi päätellä, että suurilla n-arvoilla E(n) on käytännössä n+1 sillä suhde (2*n-1)/(2*n) lähestyy nopeasti ykköstä. Huomattakoon, että ensimmäisen intuitiivisen päättelyni mukaisesti pienin arvo on edelleen 1, mutta suurin mahdollinen arvo nyt 2n-1 eli jo näiden keskiarvo (1+2n-1)/2=n todella antaa "hyvän" asymptoottisen tuloksen. Moni matemaatikko saattaa hymähtää tällaisille intuitiivisille ja kokeellisille päättelyille. Enhän ole varsinaisesti todistanut tulosta oikeaksi, vain arvaillut. Vaikka tarkastaisin tuloksen numeerisesti kuinka suurilla n-arvoilla tahansa, se ei vastaa tarkkaa päättelyä. Silti tällainen arvailu on monissa ongelmissa todella hyödyllistä ja olen harrastanut sellaista useasti etenkin viime vuosina. Vuosien 2008-9 eräiden arvailujeni seurauksena on syntynyt mm. neljän matemaatikon kirjoittama artikkeli http://link.springer.com/article/10.1007%2Fs00605-010-0236-6 joka on (ainakin toistaiseksi ilmaiseksi) luettavissa myös sivulta http://users.utu.fi/ksmato/papers/Gridlines.pdf ja jonka taustana on (puoli)kokeellinen juttuni http://www.survo.fi/papers/PointsInGrid.pdf * * * Odotusarvon "tarkka" perustelu: ============================== Johtuen "odotusarvo-operaattorin E lineaarisuudesta" kysytty odotusarvo n-nopalla on esitettävissä lausekkeena E(n):=E2(n)+E3(n)-E1(n) missä Ei(n) tarkoittaa suuruusjärjestyksessä i:nnen tuloksen odotusarvoa. "Symmetriasyistä" on ilmeistä, että E2(n)=(n+1)/2 ja että E3(n)=n+1-E1(n). Jää siis selvitettäväksi vain mitä on E1(n). Lasketaan pienimmän pisteluvun jakauman pistetodennäköisyydet eli olkoon P(n,k) todennäköisyys sille, että kolmea n-noppaa heitettäessä pienin tulos on k, k=1,2,...,n. On selvää, että P(n,n)=1/n^3 ja on helppo päätellä, että yleinen lauseke on P(n,k):=((n-k+1)/n)^3-((n-k)/n)^3 (joka vaikuttaa hankalalta sieventää yksinkertaisempaan muotoon). On mahdollista tarkistaa Survolla, että lauseke on ainakin sikäli oikea, että todennäköisyyksien summaksi, joka Survon editoriaalisen laskennan lausekkeena on S(n):=for(k=1)to(n)sum(P(n,k)) tulisi 1 Jos siis aktivoidaan esim. S(6)= saadaan tuo ykkönen Vastaavasti odotusarvon lauseke on tällöin F(n):=for(k=1)to(n)sum(k*P(n,k)) ja esim. F(6)=2.0416666666666665 Odotusarvon lausekkeen sieventäminen käsityönä on hyvä algebrallinen harjoitustehtävä, mutta tuloksen saatoin jälleen "arvata" laskemalla F(n) esim. arvoilla n=1,2,...,6 ja muuntamalla tulokset suhdeluvuiksi. Tällöin sain sievennetyksi lausekkeeksi yllättävän yksinkertaisen E1(n):=(n+1)^2/(4*n) Jos survoilijalla on käytettävissään jokin symbolisen matematiikan ohjelma, sellaisella saa asian todistetuksi täysin hyväksytyllä tavalla. Omassa koneessani on Mathematica-ohjelma, jonka olen "orjuuttanut" Survosta suoraan käytettäväksi niin, ettei laskennan aikana edes näe Mathematicaa työssään. Tehtävänanto tapahtuu tallettamalla tekstitiedoston, jossa Mathematican kielellä ilmaistaan tehtävä, esim. sievennettävä lauseke. Niinpä tässä tapauksessa talletetaan seuraavaa: SAVEP CUR+1,CUR+1,K.TXT Sum[k*((n - k + 1)^3 - (n - k)^3)/n^3, {k, 1, n}] Sen jälkeen riittää aktivoida sukro /MATH, joka teettää työn ja antaa tuloksen suoraan toimituskenttään näin: /MATH K.TXT LOADW _output.txt In[2]:= Sum[k*((n - k + 1)^3 - (n - k)^3)/n^3, {k, 1, n}] 2 (1 + n) Out[2]= -------- 4 n eli saadaan juuri sitä mitä pitikin. Kysytyn odotusarvon E(n) lauseke on tällöin E(n)=E2(n)+E3(n)-E1(n)=(n+1)/2+n+1-E1(n)-E1(n) =(n+1)/2+n+1-(n+1)^2/(2*n) mikä sievenee aikaisemmin arvattuun muotoon E(n)=(n+1)*(2*n-1)/(2*n). * * * Kuten aikaisemmin totesin, tämän koko viestin voi siirtää leikepöydän kautta Survon tai Musteen toimituskenttään, jolloin pääsee toistamaan koko työn ja tarkastelemaan välituloksia. Näin Survo-tyylille ominaisesti työ on kaikkine vaiheineen dokumentoinut itsensä. En ole yllättynyt, jos joku kehittää vaihtoehtoisen ja ehkä lyhyemmän tai helpomman ratkaisutavan, joten antakaa kuulua.
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!