# expected.varcov: Expected Fisher Information In mle.tools: Expected/Observed Fisher Information and Bias-Corrected Maximum Likelihood Estimate(s)

## Description

`expected.varcov` calculates the inverse of the expected Fisher information. Analytical second-order partial log-density derivatives and numerical integration are used in the calculations.

## Usage

 ```1 2``` ```expected.varcov(density, logdensity, n, parms, mle, lower = "-Inf", upper = "Inf", ...) ```

## Arguments

 `density` An expression with the probability density function. `logdensity` An expression with the log of the probability density function. `n` A numeric scalar with the sample size. `parms` A character vector with the parameter name(s) specified in the density and logdensity expressions. `mle` A numeric vector with the parameter estimate(s). `lower` The lower integration limit (lower = “-Inf” is the default). `upper` The upper integration limit (upper = “Inf” is the default). `...` Additional arguments passed to `integrate` function.

## Details

The second-order partial log-density derivatives and its expected values are calculated via `D` and `integrate` functions, respectively.

## Value

`expected.varcov` returns a list with two components (i) mle: the inputted maximum likelihood estimate(s) and (ii) varcov: the expected variance-covariance evaluated at the inputted mle argument.

If the numerical integration fails and/or the expected information is singular an error message is returned.

## Author(s)

Josmar Mazucheli jmazucheli@gmail.com

`deriv`, `D`, `integrate`, `expected.varcov`.
 ``` 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80``` ```{library(mle.tools); library(fitdistrplus); set.seed(1)}; ## Normal distribution pdf <- quote(1 / (sqrt(2 * pi) * sigma) * exp(-0.5 / sigma ^ 2 * (x - mu) ^ 2)) lpdf <- quote(-log(sigma) - 0.5 / sigma ^ 2 * (x - mu) ^ 2) x <- rnorm(n = 100, mean = 0.0, sd = 1.0) expected.varcov(density = pdf, logdensity = lpdf, n = length(x), parms = c("mu", "sigma"), mle = c(mean(x), sd(x)), lower = '-Inf', upper = 'Inf') ################################################################################ ## Weibull distribution pdf <- quote(shape / scale ^ shape * x ^ (shape - 1) * exp(-(x / scale) ^ shape)) lpdf <- quote(log(shape) - shape * log(scale) + shape * log(x) - (x / scale) ^ shape) x <- rweibull(n = 100, shape = 1.5, scale = 2.0) fit <- fitdist(data = x, distr = 'weibull') fit\$vcov expected.varcov(density = pdf, logdensity = lpdf, n = length(x), parms = c("shape", "scale"), mle = fit\$estimate, lower = 0) ################################################################################ ## Expoentiated Weibull distribution pdf <- quote(alpha * shape / scale ^ shape * x ^ (shape - 1) * exp(-(x / scale) ^ shape) * (1 - exp(-(x / scale) ^ shape)) ^ (alpha - 1)) lpdf <- quote(log(alpha) + log(shape) - shape * log(scale) + shape * log(x) - (x / scale) ^ shape + (alpha - 1) * log((1 - exp(-(x / scale) ^ shape)))) expected.varcov(density = pdf, logdensity = lpdf, n = 100, parms = c("shape", "scale", "alpha"), mle = c(1.5, 2.0, 1.0), lower = 0) ################################################################################ ## Exponetial distribution pdf <- quote(rate * exp(-rate * x)) lpdf <- quote(log(rate) - rate * x) x <- rexp(n = 100, rate = 0.5) fit <- fitdist(data = x, distr = 'exp') fit\$vcov expected.varcov(density = pdf, logdensity = lpdf, n = length(x), parms = c("rate"), mle = fit\$estimate, lower = 0) ################################################################################ ## Gamma distribution pdf <- quote(1 /(scale ^ shape * gamma(shape)) * x ^ (shape - 1) * exp(-x / scale)) lpdf <- quote(-shape * log(scale) - lgamma(shape) + shape * log(x) - x / scale) x <- rgamma(n = 100, shape = 1.5, scale = 2.0) fit <- fitdist(data = x, distr = 'gamma', start = list(shape = 1.5, scale = 2.0)) fit\$vcov expected.varcov(density = pdf, logdensity = lpdf, n = length(x), parms = c("shape", "scale"), mle = fit\$estimate, lower = 0) ################################################################################ ## Beta distribution pdf <- quote(gamma(shape1 + shape2) / (gamma(shape1) * gamma(shape2)) * x ^ (shape1 - 1) * (1 - x) ^ (shape2 - 1)) lpdf <- quote(lgamma(shape1 + shape2) - lgamma(shape1) - lgamma(shape2) + shape1 * log(x) + shape2 * log(1 - x)) x <- rbeta(n = 100, shape1 = 2.0, shape2 = 2.0) fit <- fitdist(data = x, distr = 'beta', start = list(shape1 = 2.0, shape2 = 2.0)) fit\$vcov expected.varcov(density = pdf, logdensity = lpdf, n = length(x), parms = c("shape1", "shape2"), mle = fit\$estimate, lower = 0, upper = 1) ```