Title: | Functions for the Logitnormal Distribution |
Version: | 0.8.39 |
Author: | Thomas Wutzler |
Maintainer: | Thomas Wutzler <twutz@bgc-jena.mpg.de> |
Description: | Density, distribution, quantile and random generation function for the logitnormal distribution. Estimation of the mode and the first two moments. Estimation of distribution parameters. |
Suggests: | knitr, markdown, ggplot2, testthat (≥ 3.0.0) |
VignetteBuilder: | knitr |
License: | GPL-2 |
RoxygenNote: | 7.1.1 |
Config/testthat/edition: | 3 |
NeedsCompilation: | no |
Packaged: | 2024-01-24 09:00:53 UTC; twutz |
Repository: | CRAN |
Date/Publication: | 2024-01-24 10:00:02 UTC |
Utilities for the logitnormal distribution in R
Description
Utilities for the logitnormal distribution in R
Density, distribution, quantile and random generation function.
Estimation of the mode and the first two moments.
Estimation of distribution parameters from observations.
Details
The package provides the main distribution functions:
density
dlogitnorm
,distribution
plogitnorm
,quantile
qlogitnorm
, andrandom generation function
rlogitnorm
.
Transformation functions
Moments and mode
Expected value and variance:
momentsLogitnorm
Mode:
modeLogitnorm
Estimating parameters
from mode and upper quantile:
twCoefLogitnormMLE
from mode and constraint to be unimodal and maximally flat:
twCoefLogitnormMLEFlat
from median and upper quantile:
twCoefLogitnorm
from expected value, i.e. mean and upper quantile:
twCoefLogitnormE
from a confidence interval which is symmetric at normal scale:
twCoefLogitnormCi
from prescribed quantiles:
twCoefLogitnormN
Have a look at the package vignettes.
Author(s)
Thomas Wutzler
References
Frederic, P. & Lad, F. (2008) Two Moments of the Logitnormal Distribution. Communications in Statistics-Simulation and Computation, 37, 1263-1269
dlogitnorm
Description
Density function of logitnormal distribution
Usage
dlogitnorm(x, mu = 0, sigma = 1, log = FALSE,
...)
Arguments
x |
vector of quantiles |
mu |
scale distribution parameter |
sigma |
location distribution parameter |
log |
if TRUE, the log-density is returned |
... |
further arguments passed to |
Details
- Logitnorm distribution
-
density function: dlogitnorm
distribution function:
plogitnorm
quantile function:
qlogitnorm
random generation function:
rlogitnorm
The function is only defined in interval (0,1), but the density returns 0 outside the support region.
Author(s)
Thomas Wutzler
See Also
invlogit
Description
Transforming (-Inf,Inf) to original scale (0,1)
Usage
invlogit(q, ...)
Arguments
q |
quantile |
... |
further arguments to plogis |
Details
function f(z) = \frac{e^{z}}{e^{z} + 1} \! = \frac{1}{1 + e^{-z}} \!
Author(s)
Thomas Wutzler
See Also
logit
Description
Transforming (0,1) to normal scale (-Inf Inf)
Usage
logit(p, ...)
Arguments
p |
percentile |
... |
further arguments to qlogis |
Details
function logit(p) = log \left( \frac{p}{1-p} \right) = log(p) - log(1-p)
Author(s)
Thomas Wutzler
See Also
modeLogitnorm
Description
Mode of the logitnormal distribution by numerical optimization
Usage
modeLogitnorm(mu, sigma, tol = invlogit(mu)/1000)
Arguments
mu |
parameter mu |
sigma |
parameter sigma |
tol |
precisions of the estimate |
Author(s)
Thomas Wutzler
See Also
momentsLogitnorm
Description
First two moments of the logitnormal distribution by numerical integration
Usage
momentsLogitnorm(mu, sigma, abs.tol = 0,
...)
Arguments
mu |
parameter mu |
sigma |
parameter sigma |
abs.tol |
changing default to |
... |
further parameters to the |
Value
named numeric vector with components
-
mean
: expected value, i.e. first moment -
var
: variance, i.e. second moment
Author(s)
Thomas Wutzler
Examples
(res <- momentsLogitnorm(4,1))
(res <- momentsLogitnorm(5,0.1))
plogitnorm
Description
Distribution function for logitnormal distribution
Usage
plogitnorm(q, mu = 0, sigma = 1, ...)
Arguments
q |
vector of quantiles |
mu |
location distribution parameter |
sigma |
scale distribution parameter |
... |
further arguments to pnorm |
Author(s)
Thomas Wutzler
See Also
qlogitnorm
Description
Quantiles of logitnormal distribution.
Usage
qlogitnorm(p, mu = 0, sigma = 1, ...)
Arguments
p |
vector of probabilities |
mu |
location distribution parameter |
sigma |
scale distribution parameter |
... |
further arguments to plogis |
Author(s)
Thomas Wutzler
See Also
rlogitnorm
Description
Random number generation for logitnormal distribution
Usage
rlogitnorm(n, mu = 0, sigma = 1, ...)
Arguments
n |
number of observations |
mu |
distribution parameter |
sigma |
distribution parameter |
... |
arguments to |
Author(s)
Thomas Wutzler
See Also
twCoefLogitnorm
Description
Estimating coefficients of logitnormal distribution from median and upper quantile
Usage
twCoefLogitnorm(median, quant, perc = 0.975)
Arguments
median |
numeric vector: the median of the density function |
quant |
numeric vector: the upper quantile value |
perc |
numeric vector: the probability for which the quantile was specified |
Value
numeric matrix with columns c("mu","sigma")
rows correspond to rows in median, quant, and perc
Author(s)
Thomas Wutzler
See Also
Examples
# estimate the parameters, with median at 0.7 and upper quantile at 0.9
med = 0.7; upper = 0.9
med = 0.2; upper = 0.4
(theta <- twCoefLogitnorm(med,upper))
x <- seq(0,1,length.out = 41)[-c(1,41)] # plotting grid
px <- plogitnorm(x,mu = theta[1],sigma = theta[2]) #percentiles function
plot(px~x); abline(v = c(med,upper),col = "gray"); abline(h = c(0.5,0.975),col = "gray")
dx <- dlogitnorm(x,mu = theta[1],sigma = theta[2]) #density function
plot(dx~x); abline(v = c(med,upper),col = "gray")
# vectorized
(theta <- twCoefLogitnorm(seq(0.4,0.8,by = 0.1),0.9))
.tmp.f <- function(){
# xr = rlogitnorm(1e5, mu = theta["mu"], sigma = theta["sigma"])
# median(xr)
invlogit(theta["mu"])
qlogitnorm(0.975, mu = theta["mu"], sigma = theta["sigma"])
}
twCoefLogitnormCi
Description
Calculates mu and sigma of the logitnormal distribution from lower and upper quantile, i.e. confidence interval.
Usage
twCoefLogitnormCi(lower, upper, perc = 0.975,
sigmaFac = qnorm(perc), isTransScale = FALSE)
Arguments
lower |
value at the lower quantile, i.e. practical minimum |
upper |
value at the upper quantile, i.e. practical maximum |
perc |
numeric vector: the probability for which the quantile was specified |
sigmaFac |
sigmaFac = 2 is 95% sigmaFac = 2.6 is 99% interval |
isTransScale |
if true lower and upper are already on logit scale |
Value
named numeric vector: mu and sigma parameter of the logitnormal distribution.
Author(s)
Thomas Wutzler
See Also
Examples
mu = 2
sd = c(1,0.8)
p = 0.99
lower <- l <- qlogitnorm(1 - p, mu, sd ) # p-confidence interval
upper <- u <- qlogitnorm(p, mu, sd ) # p-confidence interval
cf <- twCoefLogitnormCi(lower,upper, perc = p)
all.equal( cf[,"mu"] , c(mu,mu) )
all.equal( cf[,"sigma"] , sd )
twCoefLogitnormE
Description
Estimating coefficients of logitnormal distribution from expected value, i.e. mean, and upper quantile.
Usage
twCoefLogitnormE(mean, quant, perc = c(0.975),
method = "BFGS", theta0 = c(mu = 0, sigma = 1),
returnDetails = FALSE, ...)
Arguments
mean |
the expected value of the density function |
quant |
the quantile values |
perc |
the probabilities for which the quantiles were specified |
method |
method of optimization (see |
theta0 |
starting parameters |
returnDetails |
if TRUE, the full output of optim is returned with attribute resOptim |
... |
further arguments to optim |
Value
named numeric matrix with estimated parameters of the logitnormal
distribution.
colnames: c("mu","sigma")
Author(s)
Thomas Wutzler
See Also
Examples
# estimate the parameters
(thetaE <- twCoefLogitnormE(0.7,0.9))
x <- seq(0,1,length.out = 41)[-c(1,41)] # plotting grid
px <- plogitnorm(x,mu = thetaE[1],sigma = thetaE[2]) #percentiles function
plot(px~x); abline(v = c(0.7,0.9),col = "gray"); abline(h = c(0.5,0.975),col = "gray")
dx <- dlogitnorm(x,mu = thetaE[1],sigma = thetaE[2]) #density function
plot(dx~x); abline(v = c(0.7,0.9),col = "gray")
z <- rlogitnorm(1e5, mu = thetaE[1],sigma = thetaE[2])
mean(z) # about 0.7
# vectorized
(theta <- twCoefLogitnormE(mean = seq(0.4,0.8,by = 0.1),quant = 0.9))
twCoefLogitnormMLE
Description
Estimating coefficients of logitnormal distribution from mode and upper quantile
Usage
twCoefLogitnormMLE(mle, quant, perc = 0.999)
Arguments
mle |
numeric vector: the mode of the density function |
quant |
numeric vector: the upper quantile value |
perc |
numeric vector: the probability for which the quantile was specified |
Value
numeric matrix with columns c("mu","sigma")
rows correspond to rows in mle
, quant
, and perc
Author(s)
Thomas Wutzler
See Also
Examples
# estimate the parameters, with mode 0.7 and upper quantile 0.9
mode = 0.7; upper = 0.9
(theta <- twCoefLogitnormMLE(mode,upper))
x <- seq(0,1,length.out = 41)[-c(1,41)] # plotting grid
px <- plogitnorm(x,mu = theta[1],sigma = theta[2]) #percentiles function
plot(px~x); abline(v = c(mode,upper),col = "gray"); abline(h = c(0.999),col = "gray")
dx <- dlogitnorm(x,mu = theta[1],sigma = theta[2]) #density function
plot(dx~x); abline(v = c(mode,upper),col = "gray")
# vectorized
(theta <- twCoefLogitnormMLE(mle = seq(0.4,0.8,by = 0.1),quant = upper))
# flat
(theta <- twCoefLogitnormMLEFlat(mode))
twCoefLogitnormMLEFlat
Description
Estimating coefficients of a maximally flat unimodal logitnormal distribution given the mode
Usage
twCoefLogitnormMLEFlat(mle)
Arguments
mle |
numeric vector: the mode of the density function |
Author(s)
Thomas Wutzler
twCoefLogitnormN
Description
Estimating coefficients from a vector of quantiles and percentiles (non-vectorized).
Usage
twCoefLogitnormN(quant, perc = c(0.5, 0.975),
method = "BFGS", theta0 = c(mu = 0, sigma = 1),
returnDetails = FALSE, ...)
Arguments
quant |
the quantile values |
perc |
the probabilities for which the quantiles were specified |
method |
method of optimization (see |
theta0 |
starting parameters |
returnDetails |
if TRUE, the full output of optim is returned instead of only entry par |
... |
further parameters passed to optim, e.g. |
Value
named numeric vector with estimated parameters of the logitnormal distribution.
names: c("mu","sigma")
Author(s)
Thomas Wutzler
See Also
Examples
# experiment of re-estimation the parameters from generated observations
thetaTrue <- c(mu = 0.8, sigma = 0.7)
obsTrue <- rlogitnorm(thetaTrue["mu"],thetaTrue["sigma"], n = 500)
obs <- obsTrue + rnorm(100, sd = 0.05) # some observation uncertainty
plot(density(obsTrue),col = "blue"); lines(density(obs))
# re-estimate parameters based on the quantiles of the observations
(theta <- twCoefLogitnorm( median(obs), quantile(obs,probs = 0.9), perc = 0.9))
# add line of estimated distribution
x <- seq(0,1,length.out = 41)[-c(1,41)] # plotting grid
dx <- dlogitnorm(x,mu = theta[1],sigma = theta[2])
lines( dx ~ x, col = "orange")
twSigmaLogitnorm
Description
Estimating coefficients of logitnormal distribution from mode and given mu
Usage
twSigmaLogitnorm(mle, mu = 0)
Arguments
mle |
numeric vector: the mode of the density function |
mu |
for mu = 0 the distribution will be the flattest case (maybe bimodal) |
Details
For a mostly flat unimodal distribution use twCoefLogitnormMLE(mle,0)
Value
numeric matrix with columns c("mu","sigma")
rows correspond to rows in mle and mu
Author(s)
Thomas Wutzler
See Also
Examples
mle <- 0.8
(theta <- twSigmaLogitnorm(mle))
#
x <- seq(0,1,length.out = 41)[-c(1,41)] # plotting grid
px <- plogitnorm(x,mu = theta[1],sigma = theta[2]) #percentiles function
plot(px~x); abline(v = c(mle),col = "gray")
dx <- dlogitnorm(x,mu = theta[1],sigma = theta[2]) #density function
plot(dx~x); abline(v = c(mle),col = "gray")
# vectorized
(theta <- twSigmaLogitnorm(mle = seq(0.401,0.8,by = 0.1)))