{ "cells": [ { "cell_type": "code", "execution_count": 1, "metadata": {}, "outputs": [], "source": [ "import pandas as pd\n", "from scipy.stats import poisson" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "

Poisson-jakauma

\n", "\n", "Kun binomijakauman toistojen määrää n kasvatetaan ja todennäköisyyttä p pienennetään, niin binomijakauma lähestyy Poisson jakaumaa. \n", "\n", "Poisson-jakaumaa voidaan käyttää jos toistojen määrä n on suuri ja tarkasteltava tapahtuma on harvinainen (todennäköisyys p on pieni). Toistojen määrän ei itse asiassa tarvitse edes olla tiedossa. Ainoa tarvittava tieto on odotusarvo, joka on tapahtumien keskimääräinen lukumäärä (kuinka monta kertaa tapahtuma keskimäärin on sattunut tarkasteltavana olevassa erässä, aikavälissä jne.). Yleisimmin Poisson-jakaumaa sovelletaan tietyssä aikavälissä sattuvien tapahtumien lukumäärän tarkasteluun.\n", "\n", "Esimerkki. Pankin konttoriin lounasaikana viiden minuutin aikana saapuvien asiakkaiden määrän voidaan olettaa olevan Poisson-jakautunut. Toistojen määrä on suuri (kaikki pankin asiakkaat) ja todennäköisyys, että tietty satunnaisesti valittu pankin asiakas saapuu juuri kyseisen viiden minuutin aikana, on pieni. Poisson-jakauman käyttämiseksi lounasaikana saapuvien asiakkaiden määrää pitää tarkkailla viiden minuutin ajanjaksoissa, josta saadaan laskettua keskimäärin viidessä minuutissa saapuvien asiakkaiden määrä.\n", "\n", "Esimerkki. Tieliikenteessä vuosittain kuolevien lukumäärää voidaan mallintaa Poisson-jakaumalla. Toistojen määrä on suuri (kaikki tieliikenteessä liikkuvat) ja todennäköisyys, että tietty satunnaisesti valittu henkilö kuolee juuri kyseisen vuoden aikana tieliikenteessä, on pieni. Poisson-jakauman käyttämiseksi tarvitaan historiatietoja, joiden perusteella voidaan laskea keskimäärin vuodessa tieliikenteessä kuolleiden luku-määrä.\n", "\n", "Esimerkki. Ensiapuaseman johtajaa saattaa kiinnostaa tietää kuinka suurta potilasmäärää ensiapuasemalle voidaan tietyssä työvuorossa lauantai-iltana odottaa, jotta henkilökunnan määrä voitaisiin mitoittaa sopivaksi. Aikaisempien viikkojen ja kuukausien tietoja tarkastelemalla selviää, että keskimäärin ensiapuasemalle on saapunut lauantai-iltaisin 3 potilasta tunnissa. Johtaja ajattelee, että juurihan viime viikolla varauduttiin kolmen potilaan käsittelyyn tunnissa, mutta tuloksena oli täysi kaaos ja joukko vihaisia odotushuoneessa odottavia potilaita. Tarkastellaanpa pelkän keskiarvon sijasta todennäköisyysjakaumaa: Tietyssä aikavälissä saapuvien asiakkaiden määrän voidaan olettaa noudattavan Poisson-jakaumaa." ] }, { "cell_type": "code", "execution_count": 2, "metadata": {}, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
TodennäköisyysKertymäEnemmän
Asiakkaita
00.0497870.0497870.950213
10.1493610.1991480.800852
20.2240420.4231900.576810
30.2240420.6472320.352768
40.1680310.8152630.184737
50.1008190.9160820.083918
60.0504090.9664910.033509
70.0216040.9880950.011905
80.0081020.9961970.003803
90.0027010.9988980.001102
\n", "
" ], "text/plain": [ " Todennäköisyys Kertymä Enemmän\n", "Asiakkaita \n", "0 0.049787 0.049787 0.950213\n", "1 0.149361 0.199148 0.800852\n", "2 0.224042 0.423190 0.576810\n", "3 0.224042 0.647232 0.352768\n", "4 0.168031 0.815263 0.184737\n", "5 0.100819 0.916082 0.083918\n", "6 0.050409 0.966491 0.033509\n", "7 0.021604 0.988095 0.011905\n", "8 0.008102 0.996197 0.003803\n", "9 0.002701 0.998898 0.001102" ] }, "execution_count": 2, "metadata": {}, "output_type": "execute_result" } ], "source": [ "mu = 3\n", "x_values = list(range(0, 10))\n", "\n", "dist = [poisson.pmf(x, mu) for x in x_values] #pmf = probability mass function\n", "cum = [poisson.cdf(x, mu) for x in x_values] #cdf = cumulative distribution function\n", "surv = [poisson.sf(x, mu) for x in x_values] #sf = survival function\n", "\n", "jakauma1 = pd.DataFrame({'Todennäköisyys': dist, 'Kertymä': cum, 'Enemmän': surv})\n", "jakauma1.index.name = 'Asiakkaita'\n", "jakauma1" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Taulukosta voidaan nähdä, että varautumalla kuuteen (6) asiakkaaseen tunnissa todennäköisyys kapasiteetin riittämiseen on noin 96,6 %. Todennäköisyys isomalle asiakasmäärälle on noin 3,4 %. " ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Esimerkki. Kodinkoneliike haluaa arvioida kuinka monta tietyn mallista TV:tä kannattaa pitää varastossa, kun tiedetään keskimääräiseksi viikkomyynniksi 5 kpl. Edellisen esimerkin taulukosta saadaan pienin muutoksin tähän esimerkkiin sopiva taulukko. Keskimääräisen potilasmäärän 3 tilalle kirjoitetaan TV:n keskimääräinen myyntimäärä 5. Taulukosta voidaan tämän jälkeen etsiä esimerkiksi lukumäärä, joka takaa riittävyyden 90 % varmuudella." ] }, { "cell_type": "code", "execution_count": 3, "metadata": {}, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
TodennäköisyysKertymäEnemmän
Kysyntä
00.0067380.0067380.993262
10.0336900.0404280.959572
20.0842240.1246520.875348
30.1403740.2650260.734974
40.1754670.4404930.559507
50.1754670.6159610.384039
60.1462230.7621830.237817
70.1044450.8666280.133372
80.0652780.9319060.068094
90.0362660.9681720.031828
\n", "
" ], "text/plain": [ " Todennäköisyys Kertymä Enemmän\n", "Kysyntä \n", "0 0.006738 0.006738 0.993262\n", "1 0.033690 0.040428 0.959572\n", "2 0.084224 0.124652 0.875348\n", "3 0.140374 0.265026 0.734974\n", "4 0.175467 0.440493 0.559507\n", "5 0.175467 0.615961 0.384039\n", "6 0.146223 0.762183 0.237817\n", "7 0.104445 0.866628 0.133372\n", "8 0.065278 0.931906 0.068094\n", "9 0.036266 0.968172 0.031828" ] }, "execution_count": 3, "metadata": {}, "output_type": "execute_result" } ], "source": [ "mu = 5\n", "x_values = list(range(0, 10))\n", "\n", "dist = [poisson.pmf(x, mu) for x in x_values]\n", "cum = [poisson.cdf(x, mu) for x in x_values]\n", "surv = [poisson.sf(x, mu) for x in x_values]\n", "\n", "jakauma2 = pd.DataFrame({'Todennäköisyys': dist, 'Kertymä': cum, 'Enemmän': surv})\n", "jakauma2.index.name = 'Kysyntä'\n", "jakauma2" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Lisätietoa https://docs.scipy.org/doc/scipy/reference/generated/scipy.stats.poisson.html" ] } ], "metadata": { "kernelspec": { "display_name": "Python 3", "language": "python", "name": "python3" }, "language_info": { "codemirror_mode": { "name": "ipython", "version": 3 }, "file_extension": ".py", "mimetype": "text/x-python", "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", "version": "3.7.6" } }, "nbformat": 4, "nbformat_minor": 4 }