poisson.draw <- function(panel) { with(panel, { plot(c(0, n), c(0, ylim), type = "n", xlab = "x", ylab = "Probability") segments(0:n, rep(0, n), 0:n, dpois(0:n, lambda)) if (normal.showing) lines(0:n, dnorm(0:n, lambda, sqrt(lambda)), col = "red") title(paste("Poisson distribution with mean", lambda)) }) panel } panel <- rp.control("Poisson distribution", n = 30, lambda = 3, ylim = 0.5) rp.slider(panel, lambda, 1, 30, poisson.draw) rp.checkbox(panel, normal.showing, poisson.draw, title = "Normal approximation") # Likelihood functions source("rp-loglik2.r") x <- rnorm(25, 0, 1) loglik.fn <- function(par, data) sum(dnorm(data, par[1], par[2], log = TRUE)) rp.loglik2(c(-1, 1), c(0.5, 2), loglik.fn, x) aircond <- c(50, 44, 102, 72, 22, 39, 3, 15, 197, 188, 79, 88, 46, 5, 5, 36, 22, 139, 210, 97, 30, 23, 13, 14) loglik.fn <- function(par, data) sum(dgamma(data, par[1], rate = par[2], log = TRUE)) rp.loglik2(c(0.3, 3), c(0, 0.06), loglik.fn, aircond) loglik.fn <- function(par, data) sum(dgamma(data, par[1], scale = par[2], log = TRUE)) rp.loglik2(c(0.3, 3), c(0.1, 200), loglik.fn, aircond)