Check alle échte Black Friday-deals Ook zo moe van nepaanbiedingen? Wij laten alleen échte deals zien

Poisson verdeling omgekeerd toepassen

Pagina: 1
Acties:

  • WVL_KsZeN
  • Registratie: Oktober 2002
  • Laatst online: 21:34
Misschien niet helemaal voor programming, maar ik kon geen beter passend forum vinden (en bovendien vond ik soortgelijke vragen ook in dit forum)...

Mijn probleem is als volgt :

Ik wil graag bepalen hoeveel mensen er per uur door een bepaalde deur gaan, maar ik heb geen mogelijkheid om deze mensen te tellen. De deur is normaal gesloten. Als er iemand aankomt, dan drukt deze persoon op een knop. Het duurt even voordat de deur open gaat (kan soms wel een paar minuten duren), maar in de tussentijd kunnen er ook nog andere personen aankomen. Ik ga ervan uit dat de personen Poisson verdeeld aankomen (nou ja, niet over de dag, maar wel als ik bijvoorbeeld naar een uur kijk).

Een voorbeeld :

code:
1
2
3
4
5
6
7
P = aankomst persoon
K = knopt ingedrukt
D = deur open

..P...P...............P...P..............P...............P......
......................K.........................................
....DDDDD..............................................DDDDD....


Ik heb dus eigenlijk alleen de onderste twee regels aan informatie, wel heb ik een flink aantal van dit soort gebeurtenissen.

Zo heb ik bijvoorbeeld de volgende gegevens in een tabel :

- tijd tot knop weer ingedrukt wordt nadat de deur gesloten is
- tijd dat deur open is
- tijd dat deur gesloten is
- de tijd die een cyclus duurt (tijd deur open + gesloten)

en in een uur heb ik bvb 40x die informatie.

Nu heb ik wel verstand van de Poisson verdeling, maar ik kom er dit keer toch niet helemaal uit. Ik weet namelijk wel wanneer de eerste persoon aankomt, maar niet wanneer de laatste persoon uit de vorige cyclus is aangekomen. Ik kom er niet zo goed uit :) Ik vermoed dat ik met 40 van deze datasets een aardige schatting kan maken van het aantal personen dat in totaal is aangekomen, maar waar te beginnen? Eigenlijk wil ik dus een range, bijvoorbeeld : 'met 80% zekerheid was het aantal personen dat in dit uur is aangekomen 80-120.'

Ik ga er dus vanuit dat de personen Poisson verdeeld aankomen, en dat het verwachtte aantal aankomende personen in dat uur constant is.

hellup!

edit :

Nu ik er voor de tiende keer overna denk, kun je het probleem ook anders zien, namelijk dat je van een aantal seconden geen informatie hebt :

code:
1
2
3
4
5
6
7
8
9
10
11
12
P = aankomst persoon
K = knopt ingedrukt
D = deur open
? = geen informatie opgeslagen

..P...P...............P...P..............P...............P......
......................K.........................................
....DDDDD..............................................DDDDD....

wordt :

?????????.............P?????????????????????????????????????....
Misschien dat het probleem simpeler wordt (of herkenbaar is) als je er zo naar kijkt..

[ Voor 16% gewijzigd door WVL_KsZeN op 31-03-2011 22:39 ]

/me heeft eindelijk ook een icoontje.. woef.. boeien..


  • Soultaker
  • Registratie: September 2000
  • Laatst online: 22:01
Even voor de goede orde: de D op de tweede regel in je schema's moet eigenlijk een K zijn, toch?

Verder on-topic: ik ben ook geen expert in kansrekening, maar ik meen dat de Poissonverdeling met parameter lambda de kans geeft dat er X personen per tijdseenheid langskomen, aangenomen dat er een onafhankelijke kans lambda is dat er één persoon langskomt in zo'n tijdseenheid. Klopt dat? Zo ja, dan is de verwachtingswaarde voor het aantal personen per tijdseenheid gelijk aan lambda.

Het lijkt me dat je op basis van de informatie die je hebt, de waarde van lambda kunt berekenen. Bijvoorbeeld in je laatste voorbeeld weet je dat er na precies 14 tijdseenheden iemand aangekomen is, dus zou je op basis daarvan kunnen schatten dat lambda=1/14 (onder de aanname dat als iemand bij een dichte deur aankomt, hij meteen op de knop drukt). Als je meer van dat soort periodes hebt kun je een betere schatting geven.

Hoe je er een zekerheidsinterval bij zou kunnen berekenen, zou ik niet precies weten...

  • WVL_KsZeN
  • Registratie: Oktober 2002
  • Laatst online: 21:34
Ja, idd, de D moest een K zijn.

Ik denk dat ik de waarde van lamda inderdaad kan inschatten door gewoon alle P's en alle '.' te tellen in de laatste rij en dan lambda = #P / (#P + #.) te doen. Maar het probleem zit hem in het zekerheidsinterval..

Als het druk is kom je al snel op grote aantallen, waar ik trouwens een maximum aan kan stellen doordat ik weet hoeveel seconden de deur open is geweest en hoeveel mensen er maximaal per seconde door de deur kunnen. Ik kan dus in ieder geval 2 grenzen stellen, namelijk een minimum (aantal keer op knop gedrukt) en een maximum (max aantal personen dat door de deur kon toen deze open was).

/me heeft eindelijk ook een icoontje.. woef.. boeien..


  • Sendy
  • Registratie: September 2001
  • Niet online
Ik ben wel afgestudeerd stochasticus, maar heb er al een flinke tijd niets aan gedaan ;) Wat ik nog weet is het volgende: Als eerste maak je een schatting van de parameters van je aangenomen kansverdeling (de hypothese). Dat ben je al aan het doen. Daarna bereken je de kans dat de hypothese de gegeven uitslag oplevert. Is die kans groot (groter dan bijv. 95%) dan accepteer je de hypothese.

Wat ik er dan bij fantaseer is dat je meerdere hypothesen kan nemen en telkens de kans kan berekenen. De verzameling van hypothesen die de uitslag met grote kans geven lijkt me dan een mooi resultaat. Maar hoe je dat statistisch correct in een stelling kan vatten is me ontschoten.

  • WVL_KsZeN
  • Registratie: Oktober 2002
  • Laatst online: 21:34
Jouw methode lijkt me erg omslachtig ;)

Ik zoek eigenlijk een manier om te kunnen werken met tabellen. Het geheel moet namelijk draaiien in een apparaatje met behoorlijk weinig cpu power. Ik wil dus ook geen ingewikkelde berekeningen doen en het liefste gaan werken met integers.

/me heeft eindelijk ook een icoontje.. woef.. boeien..


  • WVL_KsZeN
  • Registratie: Oktober 2002
  • Laatst online: 21:34
Iets anders wat iemand misschien weet :

Ik ben nu even een simpele simulator aan het schrijven voor bovenstaand probleem, en ik wil 3600 seconden simuleren. Nu wil ik dat er bijvoorbeeld 100 personen aankomen in mijn uur.. de functie die ik geprogrammeerd hebt werkt natuurlijk random, en er zijn dus (bijna) nooit exact 100 personen in dat uur. Maar dat wil ik wel graag ;)

In andere simulatie programma's kom ik dat ook vaak tegen en dan moet ik de 'intensiteit' opgeven als 'exact value'. Als ik dat doe, dan worden er altijd precies X gegenereerd in het simulatieuur.

Wie weet hoe dit algoritme heet?

Misschien is de handigste manier om X P'tjes te plaatsen en 3600-X .'s en daarna alles te shuffelen.. maar dat lijkt me lastig om op een correcte random manier te doen..

[ Voor 12% gewijzigd door WVL_KsZeN op 01-04-2011 22:42 ]

/me heeft eindelijk ook een icoontje.. woef.. boeien..


  • GlowMouse
  • Registratie: November 2002
  • Niet online
Interarrival times van een poissonproces zijn geheugenloos. Je kunt telkens de tijd nemen tussen het moment dat de deur dichtgaat en het moment dat de eerstvolgende persoon aankomt. Als dat gemiddeld 1 minuut is, dan is de rate 60 personen per uur.
Er zullen helaas wel niet aan alle eigenschappen van een PP voldaan zijn, omdat mensen ook met twee tegelijk aan kunnen lopen.

  • WVL_KsZeN
  • Registratie: Oktober 2002
  • Laatst online: 21:34
Goed.. juiste manier om exact aantal personen te krijgen is dus idd een shuffle te doen, en dat kan met een Knuth shuffle. (moet toch eens een keertje 'the art of programming' aanschaffen..).

In een Poisson proces is het dus niet mogelijk dat mensen met zn 2en aankomen, want het is alleen bedoeld voor 'rare events'.

/me heeft eindelijk ook een icoontje.. woef.. boeien..

Pagina: 1