Skip to content

An R package for maximum likelihood estimation of univariate densities.

License

Unknown, MIT licenses found

Licenses found

Unknown
LICENSE
MIT
LICENSE.md
Notifications You must be signed in to change notification settings

JonasMoss/univariateML

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

univariateML

R-CMD-check Codecov test coverage Project Status: Active – The project has reached a stable, usable state and is being actively developed. DOI CRAN_Status_Badge

Overview

univariateML is an R-package for user-friendly maximum likelihood estimation of a selection of parametric univariate densities and probability mass functions. In addition to basic estimation capabilities, this package support visualization through plot and qqmlplot, model selection by AIC and BIC, confidence sets through the parametric bootstrap with bootstrapml, and convenience functions such as the density, distribution function, quantile function, and random sampling at the estimated distribution parameters.

Installation

Use the following command from inside R to install from CRAN.

install.packages("univariateML")

Or install the development version from Github.

# install.packages("devtools")
devtools::install_github("JonasMoss/univariateML")

Usage

The core of univariateML are the ml*** functions, where *** is a distribution suffix such as norm, gamma, or weibull.

library("univariateML")
mlweibull(egypt$age)
#> Maximum likelihood estimates for the Weibull model 
#>  shape   scale  
#>  1.404  33.564

Now we can visually assess the fit of the Weibull model to the egypt data with a plot.

hist(egypt$age, freq = FALSE, xlab = "Mortality", main = "Egypt")
lines(mlweibull(egypt$age))

Supported densities

Name univariateML function Package
Cauchy distribution mlcauchy stats
Gumbel distribution mlgumbel extraDistr
Laplace distribution mllaplace extraDistr
Logistic distribution mllogis stats
Normal distribution mlnorm stats
Student t distribution mlstd fGarch
Generalized Error distribution mlged fGarch
Skew Normal distribution mlsnorm fGarch
Skew Student t distribution mlsstd fGarch
Skew Generalized Error distribution mlsged fGarch
Beta prime distribution mlbetapr extraDistr
Exponential distribution mlexp stats
Gamma distribution mlgamma stats
Inverse gamma distribution mlinvgamma extraDistr
Inverse Gaussian distribution mlinvgauss actuar
Inverse Weibull distribution mlinvweibull actuar
Log-logistic distribution mlllogis actuar
Log-normal distribution mllnorm stats
Lomax distribution mllomax extraDistr
Rayleigh distribution mlrayleigh extraDistr
Weibull distribution mlweibull stats
Log-gamma distribution mllgamma actuar
Pareto distribution mlpareto extraDistr
Beta distribution mlbeta stats
Kumaraswamy distribution mlkumar extraDistr
Logit-normal mllogitnorm logitnorm
Uniform distribution mlunif stats
Power distribution mlpower extraDistr
Poisson distribution mlpois stats

Implementations

Analytic formulae for the maximum likelihood estimates are used whenever they exist. Most ml*** functions without analytic solutions have a custom made Newton-Raphson solver. These can be much faster than a naïve solution using nlm or optim. For example, mlbeta has a large speedup over the naïve solution using nlm.

# install.packages("microbenchmark")
set.seed(313)
x <- rbeta(500, 2, 7)

microbenchmark::microbenchmark(
  univariateML = univariateML::mlbeta(x),
  naive = nlm(\(p) -sum(dbeta(x, p[1], p[2], log = TRUE)), p = c(1, 1))
)
#> Unit: microseconds
#>          expr     min       lq      mean   median       uq      max neval
#>  univariateML   205.1   329.85   800.077   464.35   730.35  13938.4   100
#>         naive 10665.9 11773.30 21428.104 15233.70 28628.65 103372.1   100

The maximum likelihood estimators in this package have all been subject to testing, see the tests folder for details.

Documentation

For an overview of the package and its features see the overview vignette. For an illustration of how this package can make an otherwise long and laborious process much simpler, see the copula vignette.

How to Contribute or Get Help

Please read CONTRIBUTING.md for details about how to contribute or get help.

About

An R package for maximum likelihood estimation of univariate densities.

Topics

Resources

License

Unknown, MIT licenses found

Licenses found

Unknown
LICENSE
MIT
LICENSE.md

Code of conduct

Stars

Watchers

Forks

Packages

No packages published

Contributors 3

  •  
  •  
  •