7.9 Binomial distribution
R script for binomial distribution
Dbinom
## function (k, n, pe)
## {
## if (n <= 0 | pe <= 0 | pe >= 1) {
## warning("bad args in binomial distribution")
## return(NULL)
## }
## if (k < 0) {
## warning("bad k in binomial distribution")
## return(NULL)
## }
## if (k > n)
## return(0)
## return(exp(k * log(pe) + (n - k) * log(1 - pe) + gammln(n +
## 1) - gammln(k + 1) - gammln(n - k + 1)))
## }
## <bytecode: 0x000001e2acb19da8>
## <environment: namespace:math>
Pbinom
## function (k, n, pe)
## {
## if (n <= 0 | pe <= 0 | pe >= 1) {
## warning("bad args in binomial distribution")
## return(NULL)
## }
## if (k < 0) {
## warning("bad k in binomial distribution")
## return(NULL)
## }
## if (k > n)
## return(1)
## return(1 - betai(k, n - k + 1, pe))
## }
## <bytecode: 0x000001e2acb7e7a8>
## <environment: namespace:math>
Qbinom
## function (p, n, pe)
## {
## if (n <= 0 | pe <= 0 | pe >= 1) {
## warning("bad args in binomial distribution")
## return(NULL)
## }
## if (k < 0) {
## warning("bad k in binomial distribution")
## return(NULL)
## }
## inc = 1
## k = max(0, min(n, floor(n * pe)))
## if (p < Pbinom(k, n, pe)) {
## k = max(k - inc, 0)
## inc = inc * 2
## while (p < Pbinom(k, n, pe)) {
## k = max(k - inc, 0)
## inc = inc * 2
## }
## kl = k
## ku = k + inc/2
## }
## else {
## k = min(k + inc, n + 1)
## inc = inc * 2
## while (p > Pbinom(k, n, pe)) {
## k = min(k + inc, n + 1)
## inc = inc * 2
## }
## ku = k
## kl = k - inc/2
## }
## while (ku - kl > 1) {
## k = (kl + ku)/2
## if (p < Pbinom(k, n, pe))
## ku = k
## else kl = k
## }
## return(kl)
## }
## <bytecode: 0x000001e2acbe16c8>
## <environment: namespace:math>