7.10 Poisson distribution

R script for Poisson distribution

Dpois
## function (n, lam) 
## {
##     if (n < 0) {
##         warning("bad n for a Poisson distribution")
##         return(NULL)
##     }
##     if (lam <= 0) {
##         warning("bad lambda for a Poisson distribution")
##         return(NULL)
##     }
##     return(exp(-lam + n * log(lam) - gammln(n + 1)))
## }
## <bytecode: 0x000001e2acdd5e70>
## <environment: namespace:math>
Ppois
## function (n, lam) 
## {
##     if (n < 0) {
##         warning("bad n in Poisson distribution")
##         return(NULL)
##     }
##     if (lam <= 0) {
##         warning("bad lam in Poisson distribution")
##         return(NULL)
##     }
##     if (n == 0) 
##         return(0)
##     return(gammq(n, lam))
## }
## <bytecode: 0x000001e2ace392c0>
## <environment: namespace:math>
Qpois
## function (p, lam) 
## {
##     if (lam <= 0) {
##         warning("bad lam in Poisson distribution")
##         return(NULL)
##     }
##     if (p <= 0 | p >= 1) {
##         warning("bad p in Poisson distribution")
##         return(NULL)
##     }
##     if (p < exp(-lam)) 
##         return(0)
##     inc = 1
##     n = floor(max(sqrt(lam), 5))
##     if (p < Ppois(n, lam)) {
##         n = max(n - inc, 0)
##         inc = inc * 2
##         while (p < Ppois(n, lam)) {
##             n = max(n - inc, 0)
##             inc = inc * 2
##         }
##         nl = n
##         nu = n + inc/2
##     }
##     else {
##         n = n + inc
##         inc = inc * 2
##         while (p > Ppois(n, lam)) {
##             n = n + inc
##             inc = inc * 2
##         }
##         nu = n
##         nl = n - inc/2
##     }
##     while (nu - nl > 1) {
##         n = (nl + nu)/2
##         if (p < Ppois(n, lam)) 
##             nu = n
##         else nl = n
##     }
##     return(nl)
## }
## <bytecode: 0x000001e2ace97458>
## <environment: namespace:math>