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>