Noll-trunkerad Poisson-fördelning

I sannolikhetsteorin är den nolltrunkerade Poisson-fördelningen (ZTP) en viss diskret sannolikhetsfördelning vars stöd är uppsättningen positiva heltal. Denna fördelning är också känd som den villkorliga Poisson-fördelningen eller den positiva Poisson-fördelningen . Det är den villkorade sannolikhetsfördelningen för en Poisson-fördelad slumpvariabel , givet att värdet på slumpvariabeln inte är noll. Det är alltså omöjligt för en ZTP-slumpvariabel att vara noll. Betrakta till exempel den slumpmässiga variabeln för antalet varor i en shoppers varukorg vid en stormarknads kassalinje. Förmodligen står en shoppare inte i kö med ingenting att köpa (dvs. minimiköpet är 1 vara), så detta fenomen kan följa en ZTP-distribution.

Eftersom ZTP är en trunkerad fördelning med trunkeringen stipulerad som k > 0 , kan man härleda sannolikhetsmassfunktionen g ( k ; λ ) från en standard Poisson-fördelning f ( k ; λ ) enligt följande:

Meningen är _

och variansen är

Parameteruppskattning

Metoden för momentuppskattare λ för parametern erhålls genom att lösa

där är provmedelvärdet .

Denna ekvation har ingen lösning i sluten form. I praktiken kan en lösning hittas med numeriska metoder.

Genererar nolltrunkerade Poisson-fördelade slumpvariabler

Slumpvariabler samplade från den nolltrunkerade Poisson-fördelningen kan uppnås med användning av algoritmer härledda från Poissons fördelande samplingsalgoritmer.

     init  :  Låt  k ← 1, t ←  e  −λ  / (1 -  e  −λ  ) * λ, s ← t. Generera enhetligt slumptal u i [0,1].   medan  s < u  do  : k ← k + 1. t ← t * λ / k. s ← s + t.   tillbaka  k. 

Kostnaden för proceduren ovan är linjär i k, vilket kan vara stort för stora värden på . Med tillgång till en effektiv sampler för icke-trunkerade Poisson-slumpvarianter, innebär ett icke-iterativt tillvägagångssätt sampling från en trunkerad exponentiell fördelning som representerar tiden för den första händelsen i en Poisson-punktsprocess , beroende på att en sådan händelse existerar. En enkel NumPy- implementering är:

def sample_zero_truncated_poisson(rate): u = np.random.uniform(np.exp(-rate), 1) t = -np.log(u) return 1 + np.random.poisson(rate - t)