Title: | Actuarial Functions and Heavy Tailed Distributions |
---|---|
Description: | Functions and data sets for actuarial science: modeling of loss distributions; risk theory and ruin theory; simulation of compound models, discrete mixtures and compound hierarchical models; credibility theory. Support for many additional probability distributions to model insurance loss size and frequency: 23 continuous heavy tailed distributions; the Poisson-inverse Gaussian discrete distribution; zero-truncated and zero-modified extensions of the standard discrete distributions. Support for phase-type distributions commonly used to compute ruin probabilities. Main reference: <doi:10.18637/jss.v025.i07>. Implementation of the Feller-Pareto family of distributions: <doi:10.18637/jss.v103.i06>. |
Authors: | Vincent Goulet [cre, aut], Sébastien Auclair [ctb], Christophe Dutang [aut], Walter Garcia-Fontes [ctb], Nicholas Langevin [ctb], Xavier Milhaud [ctb], Tommy Ouellet [ctb], Alexandre Parent [ctb], Mathieu Pigeon [aut], Louis-Philippe Pouliot [ctb], Jeffrey A. Ryan [aut] (Package API), Robert Gentleman [aut] (Parts of the R to C interface), Ross Ihaka [aut] (Parts of the R to C interface), R Core Team [aut] (Parts of the R to C interface), R Foundation [aut] (Parts of the R to C interface) |
Maintainer: | Vincent Goulet <[email protected]> |
License: | GPL (>= 2) |
Version: | 3.3-5 |
Built: | 2025-02-08 07:10:15 UTC |
Source: | CRAN |
Functions and data sets for actuarial science: modeling of loss distributions; risk theory and ruin theory; simulation of compound models, discrete mixtures and compound hierarchical models; credibility theory. Support for many additional probability distributions to model insurance loss size and frequency: 23 continuous heavy tailed distributions; the Poisson-inverse Gaussian discrete distribution; zero-truncated and zero-modified extensions of the standard discrete distributions. Support for phase-type distributions commonly used to compute ruin probabilities. Main reference: <doi:10.18637/jss.v025.i07>. Implementation of the Feller-Pareto family of distributions: <doi:10.18637/jss.v103.i06>.
actuar provides additional actuarial science functionality and support for heavy tailed distributions to the R statistical system.
The current feature set of the package can be split into five main categories.
Additional probability distributions: 23 continuous heavy tailed distributions from the Feller-Pareto and Transformed Gamma families, the loggamma, the Gumbel, the inverse Gaussian and the generalized beta; phase-type distributions; the Poisson-inverse Gaussian discrete distribution; zero-truncated and zero-modified extensions of the standard discrete distributions; computation of raw moments, limited moments and the moment generating function (when it exists) of continuous distributions. See the “distributions” package vignette for details.
Loss distributions modeling: extensive support of grouped data; functions to compute empirical raw and limited moments; support for minimum distance estimation using three different measures; treatment of coverage modifications (deductibles, limits, inflation, coinsurance). See the “modeling” and “coverage” package vignettes for details.
Risk and ruin theory: discretization of the claim amount distribution; calculation of the aggregate claim amount distribution; calculation of the adjustment coefficient; calculation of the probability of ruin, including using phase-type distributions. See the “risk” package vignette for details.
Simulation of discrete mixtures, compound models (including the compound Poisson), and compound hierarchical models. See the “simulation” package vignette for details.
Credibility theory: function cm
fits hierarchical
(including Bühlmann, Bühlmann-Straub), regression and linear Bayes
credibility models. See the “credibility” package vignette
for details.
Christophe Dutang, Vincent Goulet, Mathieu Pigeon and many other
contributors; use packageDescription("actuar")
for the complete
list.
Maintainer: Vincent Goulet.
Dutang, C., Goulet, V. and Pigeon, M. (2008). actuar: An R Package for Actuarial Science. Journal of Statistical Software, 25(7), 1–37. doi:10.18637/jss.v025.i07.
Dutang, C., Goulet, V., Langevin, N. (2022). Feller-Pareto and Related Distributions: Numerical Implementation and Actuarial Applications. Journal of Statistical Software, 103(6), 1–22. doi:10.18637/jss.v103.i06.
Klugman, S. A., Panjer, H. H. and Willmot, G. E. (2012), Loss Models, From Data to Decisions, Fourth Edition, Wiley.
For probability distributions support functions, use as starting
points:
FellerPareto
,
TransformedGamma
,
Loggamma
,
Gumbel
,
InverseGaussian
,
PhaseType
,
PoissonInverseGaussian
and, e.g.,
ZeroTruncatedPoisson
,
ZeroModifiedPoisson
.
For loss modeling support functions:
grouped.data
,
ogive
,
emm
,
elev
,
mde
,
coverage
.
For risk and ruin theory functions:
discretize
,
aggregateDist
,
adjCoef
,
ruin
.
For credibility theory functions and datasets:
cm
,
hachemeister
.
## The package comes with extensive demonstration scripts; ## use the following command to obtain the list. ## Not run: demo(package = "actuar")
## The package comes with extensive demonstration scripts; ## use the following command to obtain the list. ## Not run: demo(package = "actuar")
Compute the adjustment coefficient in ruin theory, or return a function to compute the adjustment coefficient for various reinsurance retentions.
adjCoef(mgf.claim, mgf.wait = mgfexp, premium.rate, upper.bound, h, reinsurance = c("none", "proportional", "excess-of-loss"), from, to, n = 101) ## S3 method for class 'adjCoef' plot(x, xlab = "x", ylab = "R(x)", main = "Adjustment Coefficient", sub = comment(x), type = "l", add = FALSE, ...)
adjCoef(mgf.claim, mgf.wait = mgfexp, premium.rate, upper.bound, h, reinsurance = c("none", "proportional", "excess-of-loss"), from, to, n = 101) ## S3 method for class 'adjCoef' plot(x, xlab = "x", ylab = "R(x)", main = "Adjustment Coefficient", sub = comment(x), type = "l", add = FALSE, ...)
mgf.claim |
an expression written as a function of |
mgf.wait |
an expression written as a function of |
premium.rate |
if |
upper.bound |
numeric; an upper bound for the coefficient, usually the upper bound of the support of the claim severity mgf. |
h |
an expression written as a function of |
reinsurance |
the type of reinsurance for the portfolio; can be abbreviated. |
from , to
|
the range over which the adjustment coefficient will be calculated. |
n |
integer; the number of values at which to evaluate the adjustment coefficient. |
x |
an object of class |
xlab , ylab
|
label of the x and y axes, respectively. |
main |
main title. |
sub |
subtitle, defaulting to the type of reinsurance. |
type |
1-character string giving the type of plot desired; see
|
add |
logical; if |
... |
In the typical case reinsurance = "none"
, the coefficient of
determination is the smallest (strictly) positive root of the Lundberg
equation
on , where
upper.bound
, is the
claim severity random variable,
is the claim interarrival
(or wait) time random variable and
premium.rate
. The
premium rate must satisfy the positive safety loading constraint
.
With reinsurance = "proportional"
, the equation becomes
where is the retention rate and
is the premium rate
function.
With reinsurance = "excess-of-loss"
, the equation becomes
where is the retention limit and
is the premium rate
function.
One can use argument h
as an alternative way to provide
function or
. This is necessary in cases where
random variables
and
are not independent.
The root of is found by minimizing
.
If reinsurance = "none"
, a numeric vector of length one.
Otherwise, a function of class "adjCoef"
inheriting from the
"function"
class.
Christophe Dutang, Vincent Goulet [email protected]
Bowers, N. J. J., Gerber, H. U., Hickman, J., Jones, D. and Nesbitt, C. (1986), Actuarial Mathematics, Society of Actuaries.
Centeno, M. d. L. (2002), Measuring the effects of reinsurance by the adjustment coefficient in the Sparre-Anderson model, Insurance: Mathematics and Economics 30, 37–49.
Gerber, H. U. (1979), An Introduction to Mathematical Risk Theory, Huebner Foundation.
Klugman, S. A., Panjer, H. H. and Willmot, G. E. (2008), Loss Models, From Data to Decisions, Third Edition, Wiley.
## Basic example: no reinsurance, exponential claim severity and wait ## times, premium rate computed with expected value principle and ## safety loading of 20%. adjCoef(mgfexp, premium = 1.2, upper = 1) ## Same thing, giving function h. h <- function(x) 1/((1 - x) * (1 + 1.2 * x)) adjCoef(h = h, upper = 1) ## Example 11.4 of Klugman et al. (2008) mgfx <- function(x) 0.6 * exp(x) + 0.4 * exp(2 * x) adjCoef(mgfx(x), mgfexp(x, 4), prem = 7, upper = 0.3182) ## Proportional reinsurance, same assumptions as above, reinsurer's ## safety loading of 30%. mgfx <- function(x, y) mgfexp(x * y) p <- function(x) 1.3 * x - 0.1 h <- function(x, a) 1/((1 - a * x) * (1 + x * p(a))) R1 <- adjCoef(mgfx, premium = p, upper = 1, reins = "proportional", from = 0, to = 1, n = 11) R2 <- adjCoef(h = h, upper = 1, reins = "p", from = 0, to = 1, n = 101) R1(seq(0, 1, length = 10)) # evaluation for various retention rates R2(seq(0, 1, length = 10)) # same plot(R1) # graphical representation plot(R2, col = "green", add = TRUE) # smoother function ## Excess-of-loss reinsurance p <- function(x) 1.3 * levgamma(x, 2, 2) - 0.1 mgfx <- function(x, l) mgfgamma(x, 2, 2) * pgamma(l, 2, 2 - x) + exp(x * l) * pgamma(l, 2, 2, lower = FALSE) h <- function(x, l) mgfx(x, l) * mgfexp(-x * p(l)) R1 <- adjCoef(mgfx, upper = 1, premium = p, reins = "excess-of-loss", from = 0, to = 10, n = 11) R2 <- adjCoef(h = h, upper = 1, reins = "e", from = 0, to = 10, n = 101) plot(R1) plot(R2, col = "green", add = TRUE)
## Basic example: no reinsurance, exponential claim severity and wait ## times, premium rate computed with expected value principle and ## safety loading of 20%. adjCoef(mgfexp, premium = 1.2, upper = 1) ## Same thing, giving function h. h <- function(x) 1/((1 - x) * (1 + 1.2 * x)) adjCoef(h = h, upper = 1) ## Example 11.4 of Klugman et al. (2008) mgfx <- function(x) 0.6 * exp(x) + 0.4 * exp(2 * x) adjCoef(mgfx(x), mgfexp(x, 4), prem = 7, upper = 0.3182) ## Proportional reinsurance, same assumptions as above, reinsurer's ## safety loading of 30%. mgfx <- function(x, y) mgfexp(x * y) p <- function(x) 1.3 * x - 0.1 h <- function(x, a) 1/((1 - a * x) * (1 + x * p(a))) R1 <- adjCoef(mgfx, premium = p, upper = 1, reins = "proportional", from = 0, to = 1, n = 11) R2 <- adjCoef(h = h, upper = 1, reins = "p", from = 0, to = 1, n = 101) R1(seq(0, 1, length = 10)) # evaluation for various retention rates R2(seq(0, 1, length = 10)) # same plot(R1) # graphical representation plot(R2, col = "green", add = TRUE) # smoother function ## Excess-of-loss reinsurance p <- function(x) 1.3 * levgamma(x, 2, 2) - 0.1 mgfx <- function(x, l) mgfgamma(x, 2, 2) * pgamma(l, 2, 2 - x) + exp(x * l) * pgamma(l, 2, 2, lower = FALSE) h <- function(x, l) mgfx(x, l) * mgfexp(-x * p(l)) R1 <- adjCoef(mgfx, upper = 1, premium = p, reins = "excess-of-loss", from = 0, to = 10, n = 11) R2 <- adjCoef(h = h, upper = 1, reins = "e", from = 0, to = 10, n = 101) plot(R1) plot(R2, col = "green", add = TRUE)
Compute the aggregate claim amount cumulative distribution function of a portfolio over a period using one of five methods.
aggregateDist(method = c("recursive", "convolution", "normal", "npower", "simulation"), model.freq = NULL, model.sev = NULL, p0 = NULL, x.scale = 1, convolve = 0, moments, nb.simul, ..., tol = 1e-06, maxit = 500, echo = FALSE) ## S3 method for class 'aggregateDist' print(x, ...) ## S3 method for class 'aggregateDist' plot(x, xlim, ylab = expression(F[S](x)), main = "Aggregate Claim Amount Distribution", sub = comment(x), ...) ## S3 method for class 'aggregateDist' summary(object, ...) ## S3 method for class 'aggregateDist' mean(x, ...) ## S3 method for class 'aggregateDist' diff(x, ...)
aggregateDist(method = c("recursive", "convolution", "normal", "npower", "simulation"), model.freq = NULL, model.sev = NULL, p0 = NULL, x.scale = 1, convolve = 0, moments, nb.simul, ..., tol = 1e-06, maxit = 500, echo = FALSE) ## S3 method for class 'aggregateDist' print(x, ...) ## S3 method for class 'aggregateDist' plot(x, xlim, ylab = expression(F[S](x)), main = "Aggregate Claim Amount Distribution", sub = comment(x), ...) ## S3 method for class 'aggregateDist' summary(object, ...) ## S3 method for class 'aggregateDist' mean(x, ...) ## S3 method for class 'aggregateDist' diff(x, ...)
method |
method to be used |
model.freq |
for |
model.sev |
for |
p0 |
arbitrary probability at zero for the frequency
distribution. Creates a zero-modified or zero-truncated
distribution if not |
x.scale |
value of an amount of 1 in the severity model (monetary
unit). Used only with |
convolve |
number of times to convolve the resulting distribution
with itself. Used only with |
moments |
vector of the true moments of the aggregate claim
amount distribution; required only by the |
nb.simul |
number of simulations for the |
... |
parameters of the frequency distribution for the
|
tol |
the resulting cumulative distribution in the
|
maxit |
maximum number of recursions in the |
echo |
logical; echo the recursions to screen in the
|
x , object
|
an object of class |
xlim |
numeric of length 2; the |
ylab |
label of the y axis. |
main |
main title. |
sub |
subtitle, defaulting to the calculation method. |
aggregateDist
returns a function to compute the cumulative
distribution function (cdf) of the aggregate claim amount distribution
in any point.
The "recursive"
method computes the cdf using the Panjer
algorithm; the "convolution"
method using convolutions; the
"normal"
method using a normal approximation; the
"npower"
method using the Normal Power 2 approximation; the
"simulation"
method using simulations. More details follow.
A function of class "aggregateDist"
, inheriting from the
"function"
class when using normal and Normal Power
approximations and additionally inheriting from the "ecdf"
and
"stepfun"
classes when other methods are used.
There are methods available to summarize (summary
), represent
(print
), plot (plot
), compute quantiles
(quantile
) and compute the mean (mean
) of
"aggregateDist"
objects.
For the diff
method: a numeric vector of probabilities
corresponding to the probability mass function evaluated
at the knots of the distribution.
The frequency distribution must be a member of the or
families of discrete distributions.
To use a distribution from the family,
model.freq
must be one of
"binomial"
,
"geometric"
,
"negative binomial"
or
"poisson"
,
and p0
must be NULL
.
To use a zero-truncated distribution from the family,
model.freq
may be one of the strings above together with
p0 = 0
. As a shortcut, model.freq
may also be one of
"zero-truncated binomial"
,
"zero-truncated geometric"
,
"zero-truncated negative binomial"
,
"zero-truncated poisson"
or
"logarithmic"
,
and p0
is then ignored (with a warning if non NULL
).
(Note: since the logarithmic distribution is always zero-truncated.
model.freq = "logarithmic"
may be used with either p0 =
NULL
or p0 = 0
.)
To use a zero-modified distribution from the family,
model.freq
may be one of standard frequency distributions
mentioned above with p0
set to some probability that the
distribution takes the value . It is equivalent, but more
explicit, to set
model.freq
to one of
"zero-modified binomial"
,
"zero-modified geometric"
,
"zero-modified negative binomial"
,
"zero-modified poisson"
or
"zero-modified logarithmic"
.
The parameters of the frequency distribution must be specified using
names identical to the arguments of the appropriate function
dbinom
, dgeom
, dnbinom
,
dpois
or dlogarithmic
. In the latter case,
do take note that the parametrization of dlogarithmic
is
different from Appendix B of Klugman et al. (2012).
If the length of p0
is greater than one, only the first element
is used, with a warning.
model.sev
is a vector of the (discretized) claim amount
distribution ; the first element must be
.
The recursion will fail to start if the expected number of claims is
too large. One may divide the appropriate parameter of the frequency
distribution by and convolve the resulting distribution
convolve
times.
Failure to obtain a cumulative distribution function less than
tol
away from 1 within maxit
iterations is often due
to too coarse a discretization of the severity distribution.
The cumulative distribution function (cdf) of the
aggregate claim amount of a portfolio in the collective risk model is
for ;
is
the frequency probability mass function and
is the cdf of the
th convolution of
the (discrete) claim amount random variable.
model.freq
is vector of the number of claims
probabilities; the first element must be
.
model.sev
is vector of the (discretized)
claim amount distribution; the first element must be
.
The Normal approximation of a cumulative distribution function (cdf)
with mean
and standard deviation
is
The Normal Power 2 approximation of a cumulative distribution function (cdf)
with mean
, standard deviation
and skewness
is
This formula is valid only for the right-hand tail of the distribution and skewness should not exceed unity.
This methods returns the empirical distribution function of a sample
of size nb.simul
of the aggregate claim amount distribution
specified by model.freq
and
model.sev
. rcomphierarc
is used for the simulation of
claim amounts, hence both the frequency and severity models can be
mixtures of distributions.
Vincent Goulet [email protected] and Louis-Philippe Pouliot
Klugman, S. A., Panjer, H. H. and Willmot, G. E. (2012), Loss Models, From Data to Decisions, Fourth Edition, Wiley.
Daykin, C.D., Pentikäinen, T. and Pesonen, M. (1994), Practical Risk Theory for Actuaries, Chapman & Hall.
discretize
to discretize a severity distribution;
mean.aggregateDist
to compute the mean of the
distribution;
quantile.aggregateDist
to compute the quantiles or the
Value-at-Risk;
CTE.aggregateDist
to compute the Conditional Tail
Expectation (or Tail Value-at-Risk);
rcomphierarc
.
## Convolution method (example 9.5 of Klugman et al. (2012)) fx <- c(0, 0.15, 0.2, 0.25, 0.125, 0.075, 0.05, 0.05, 0.05, 0.025, 0.025) pn <- c(0.05, 0.1, 0.15, 0.2, 0.25, 0.15, 0.06, 0.03, 0.01) Fs <- aggregateDist("convolution", model.freq = pn, model.sev = fx, x.scale = 25) summary(Fs) c(Fs(0), diff(Fs(25 * 0:21))) # probability mass function plot(Fs) ## Recursive method (example 9.10 of Klugman et al. (2012)) fx <- c(0, crossprod(c(2, 1)/3, matrix(c(0.6, 0.7, 0.4, 0, 0, 0.3), 2, 3))) Fs <- aggregateDist("recursive", model.freq = "poisson", model.sev = fx, lambda = 3) plot(Fs) Fs(knots(Fs)) # cdf evaluated at its knots diff(Fs) # probability mass function ## Recursive method (high frequency) fx <- c(0, 0.15, 0.2, 0.25, 0.125, 0.075, 0.05, 0.05, 0.05, 0.025, 0.025) ## Not run: Fs <- aggregateDist("recursive", model.freq = "poisson", model.sev = fx, lambda = 1000) ## End(Not run) Fs <- aggregateDist("recursive", model.freq = "poisson", model.sev = fx, lambda = 250, convolve = 2, maxit = 1500) plot(Fs) ## Recursive method (zero-modified distribution; example 9.11 of ## Klugman et al. (2012)) Fn <- aggregateDist("recursive", model.freq = "binomial", model.sev = c(0.3, 0.5, 0.2), x.scale = 50, p0 = 0.4, size = 3, prob = 0.3) diff(Fn) ## Equivalent but more explicit call aggregateDist("recursive", model.freq = "zero-modified binomial", model.sev = c(0.3, 0.5, 0.2), x.scale = 50, p0 = 0.4, size = 3, prob = 0.3) ## Recursive method (zero-truncated distribution). Using 'fx' above ## would mean that both Pr[N = 0] = 0 and Pr[X = 0] = 0, therefore ## Pr[S = 0] = 0 and recursions would not start. fx <- discretize(pexp(x, 1), from = 0, to = 100, method = "upper") fx[1L] # non zero aggregateDist("recursive", model.freq = "zero-truncated poisson", model.sev = fx, lambda = 3, x.scale = 25, echo=TRUE) ## Normal Power approximation Fs <- aggregateDist("npower", moments = c(200, 200, 0.5)) Fs(210) ## Simulation method model.freq <- expression(data = rpois(3)) model.sev <- expression(data = rgamma(100, 2)) Fs <- aggregateDist("simulation", nb.simul = 1000, model.freq, model.sev) mean(Fs) plot(Fs) ## Evaluation of ruin probabilities using Beekman's formula with ## Exponential(1) claim severity, Poisson(1) frequency and premium rate ## c = 1.2. fx <- discretize(pexp(x, 1), from = 0, to = 100, method = "lower") phi0 <- 0.2/1.2 Fs <- aggregateDist(method = "recursive", model.freq = "geometric", model.sev = fx, prob = phi0) 1 - Fs(400) # approximate ruin probability u <- 0:100 plot(u, 1 - Fs(u), type = "l", main = "Ruin probability")
## Convolution method (example 9.5 of Klugman et al. (2012)) fx <- c(0, 0.15, 0.2, 0.25, 0.125, 0.075, 0.05, 0.05, 0.05, 0.025, 0.025) pn <- c(0.05, 0.1, 0.15, 0.2, 0.25, 0.15, 0.06, 0.03, 0.01) Fs <- aggregateDist("convolution", model.freq = pn, model.sev = fx, x.scale = 25) summary(Fs) c(Fs(0), diff(Fs(25 * 0:21))) # probability mass function plot(Fs) ## Recursive method (example 9.10 of Klugman et al. (2012)) fx <- c(0, crossprod(c(2, 1)/3, matrix(c(0.6, 0.7, 0.4, 0, 0, 0.3), 2, 3))) Fs <- aggregateDist("recursive", model.freq = "poisson", model.sev = fx, lambda = 3) plot(Fs) Fs(knots(Fs)) # cdf evaluated at its knots diff(Fs) # probability mass function ## Recursive method (high frequency) fx <- c(0, 0.15, 0.2, 0.25, 0.125, 0.075, 0.05, 0.05, 0.05, 0.025, 0.025) ## Not run: Fs <- aggregateDist("recursive", model.freq = "poisson", model.sev = fx, lambda = 1000) ## End(Not run) Fs <- aggregateDist("recursive", model.freq = "poisson", model.sev = fx, lambda = 250, convolve = 2, maxit = 1500) plot(Fs) ## Recursive method (zero-modified distribution; example 9.11 of ## Klugman et al. (2012)) Fn <- aggregateDist("recursive", model.freq = "binomial", model.sev = c(0.3, 0.5, 0.2), x.scale = 50, p0 = 0.4, size = 3, prob = 0.3) diff(Fn) ## Equivalent but more explicit call aggregateDist("recursive", model.freq = "zero-modified binomial", model.sev = c(0.3, 0.5, 0.2), x.scale = 50, p0 = 0.4, size = 3, prob = 0.3) ## Recursive method (zero-truncated distribution). Using 'fx' above ## would mean that both Pr[N = 0] = 0 and Pr[X = 0] = 0, therefore ## Pr[S = 0] = 0 and recursions would not start. fx <- discretize(pexp(x, 1), from = 0, to = 100, method = "upper") fx[1L] # non zero aggregateDist("recursive", model.freq = "zero-truncated poisson", model.sev = fx, lambda = 3, x.scale = 25, echo=TRUE) ## Normal Power approximation Fs <- aggregateDist("npower", moments = c(200, 200, 0.5)) Fs(210) ## Simulation method model.freq <- expression(data = rpois(3)) model.sev <- expression(data = rgamma(100, 2)) Fs <- aggregateDist("simulation", nb.simul = 1000, model.freq, model.sev) mean(Fs) plot(Fs) ## Evaluation of ruin probabilities using Beekman's formula with ## Exponential(1) claim severity, Poisson(1) frequency and premium rate ## c = 1.2. fx <- discretize(pexp(x, 1), from = 0, to = 100, method = "lower") phi0 <- 0.2/1.2 Fs <- aggregateDist(method = "recursive", model.freq = "geometric", model.sev = fx, prob = phi0) 1 - Fs(400) # approximate ruin probability u <- 0:100 plot(u, 1 - Fs(u), type = "l", main = "Ruin probability")
The “beta integral” is just a multiple of the non regularized incomplete beta function. This function provides an R interface to the C level routine. It is not exported by the package.
betaint(x, a, b)
betaint(x, a, b)
x |
vector of quantiles. |
a , b
|
parameters. See Details for admissible values. |
Function betaint
computes the “beta integral”
for ,
and
.
(Here
is the function implemented
by R's
gamma()
and defined in its help.)
When ,
where is
pbeta(x, a, b)
. When ,
, and
,
where .
This function is used (at the C level) to compute the
limited expected value for distributions of the transformed beta
family; see, for example, levtrbeta
.
The value of the integral.
Invalid arguments will result in return value NaN
, with a warning.
The need for this function in the package is well explained in the introduction of Appendix A of Klugman et al. (2012). See also chapter 6 and 15 of Abramowitz and Stegun (1972) for definitions and relations to the hypergeometric series.
Vincent Goulet [email protected]
Abramowitz, M. and Stegun, I. A. (1972), Handbook of Mathematical Functions, Dover.
Klugman, S. A., Panjer, H. H. and Willmot, G. E. (2012), Loss Models, From Data to Decisions, Fourth Edition, Wiley.
x <- 0.3 a <- 7 ## case with b > 0 b <- 2 actuar:::betaint(x, a, b) gamma(a) * gamma(b) * pbeta(x, a, b) # same ## case with b < 0 b <- -2.2 r <- floor(-b) # r = 2 actuar:::betaint(x, a, b) ## "manual" calculation s <- (x^(a-1) * (1-x)^b)/b + ((a-1) * x^(a-2) * (1-x)^(b+1))/(b * (b+1)) + ((a-1) * (a-2) * x^(a-3) * (1-x)^(b+2))/(b * (b+1) * (b+2)) -gamma(a+b) * s + (a-1)*(a-2)*(a-3) * gamma(a-r-1)/(b*(b+1)*(b+2)) * gamma(b+r+1)*pbeta(x, a-r-1, b+r+1)
x <- 0.3 a <- 7 ## case with b > 0 b <- 2 actuar:::betaint(x, a, b) gamma(a) * gamma(b) * pbeta(x, a, b) # same ## case with b < 0 b <- -2.2 r <- floor(-b) # r = 2 actuar:::betaint(x, a, b) ## "manual" calculation s <- (x^(a-1) * (1-x)^b)/b + ((a-1) * x^(a-2) * (1-x)^(b+1))/(b * (b+1)) + ((a-1) * (a-2) * x^(a-3) * (1-x)^(b+2))/(b * (b+1) * (b+2)) -gamma(a+b) * s + (a-1)*(a-2)*(a-3) * gamma(a-r-1)/(b*(b+1)*(b+2)) * gamma(b+r+1)*pbeta(x, a-r-1, b+r+1)
Raw moments and limited moments for the (central) Beta distribution
with parameters shape1
and shape2
.
mbeta(order, shape1, shape2) levbeta(limit, shape1, shape2, order = 1)
mbeta(order, shape1, shape2) levbeta(limit, shape1, shape2, order = 1)
order |
order of the moment. |
limit |
limit of the loss variable. |
shape1 , shape2
|
positive parameters of the Beta distribution. |
The th raw moment of the random variable
is
and the
th limited moment at some limit
is
,
.
The noncentral beta distribution is not supported.
mbeta
gives the th raw moment and
levbeta
gives the th moment of the limited loss
variable.
Invalid arguments will result in return value NaN
, with a
warning.
Vincent Goulet [email protected] and Mathieu Pigeon
Klugman, S. A., Panjer, H. H. and Willmot, G. E. (2012), Loss Models, From Data to Decisions, Fourth Edition, Wiley.
Beta
for details on the beta distribution and
functions [dpqr]beta
.
mbeta(2, 3, 4) - mbeta(1, 3, 4)^2 levbeta(10, 3, 4, order = 2)
mbeta(2, 3, 4) - mbeta(1, 3, 4)^2 levbeta(10, 3, 4, order = 2)
Density function, distribution function, quantile function, random generation,
raw moments and limited moments for the Burr distribution with
parameters shape1
, shape2
and scale
.
dburr(x, shape1, shape2, rate = 1, scale = 1/rate, log = FALSE) pburr(q, shape1, shape2, rate = 1, scale = 1/rate, lower.tail = TRUE, log.p = FALSE) qburr(p, shape1, shape2, rate = 1, scale = 1/rate, lower.tail = TRUE, log.p = FALSE) rburr(n, shape1, shape2, rate = 1, scale = 1/rate) mburr(order, shape1, shape2, rate = 1, scale = 1/rate) levburr(limit, shape1, shape2, rate = 1, scale = 1/rate, order = 1)
dburr(x, shape1, shape2, rate = 1, scale = 1/rate, log = FALSE) pburr(q, shape1, shape2, rate = 1, scale = 1/rate, lower.tail = TRUE, log.p = FALSE) qburr(p, shape1, shape2, rate = 1, scale = 1/rate, lower.tail = TRUE, log.p = FALSE) rburr(n, shape1, shape2, rate = 1, scale = 1/rate) mburr(order, shape1, shape2, rate = 1, scale = 1/rate) levburr(limit, shape1, shape2, rate = 1, scale = 1/rate, order = 1)
x , q
|
vector of quantiles. |
p |
vector of probabilities. |
n |
number of observations. If |
shape1 , shape2 , scale
|
parameters. Must be strictly positive. |
rate |
an alternative way to specify the scale. |
log , log.p
|
logical; if |
lower.tail |
logical; if |
order |
order of the moment. |
limit |
limit of the loss variable. |
The Burr distribution with parameters shape1
,
shape2
and
scale
has density:
for ,
,
and
.
The Burr is the distribution of the random variable
where has a beta distribution with parameters
and
.
The Burr distribution has the following special cases:
A Loglogistic distribution when shape1
== 1
;
A Paralogistic distribution when
shape2 == shape1
;
A Pareto distribution when shape2 ==
1
.
The th raw moment of the random variable
is
,
.
The th limited moment at some limit
is
,
and
not a negative integer.
dburr
gives the density,
pburr
gives the distribution function,
qburr
gives the quantile function,
rburr
generates random deviates,
mburr
gives the th raw moment, and
levburr
gives the th moment of the limited loss
variable.
Invalid arguments will result in return value NaN
, with a warning.
levburr
computes the limited expected value using
betaint
.
Distribution also known as the Burr Type XII or Singh-Maddala distribution. See also Kleiber and Kotz (2003) for alternative names and parametrizations.
The "distributions"
package vignette provides the
interrelations between the continuous size distributions in
actuar and the complete formulas underlying the above functions.
Vincent Goulet [email protected] and Mathieu Pigeon
Kleiber, C. and Kotz, S. (2003), Statistical Size Distributions in Economics and Actuarial Sciences, Wiley.
Klugman, S. A., Panjer, H. H. and Willmot, G. E. (2012), Loss Models, From Data to Decisions, Fourth Edition, Wiley.
dpareto4
for an equivalent distribution with a location
parameter.
exp(dburr(1, 2, 3, log = TRUE)) p <- (1:10)/10 pburr(qburr(p, 2, 3, 2), 2, 3, 2) ## variance mburr(2, 2, 3, 1) - mburr(1, 2, 3, 1) ^ 2 ## case with shape1 - order/shape2 > 0 levburr(10, 2, 3, 1, order = 2) ## case with shape1 - order/shape2 < 0 levburr(10, 1.5, 0.5, 1, order = 2)
exp(dburr(1, 2, 3, log = TRUE)) p <- (1:10)/10 pburr(qburr(p, 2, 3, 2), 2, 3, 2) ## variance mburr(2, 2, 3, 1) - mburr(1, 2, 3, 1) ^ 2 ## case with shape1 - order/shape2 > 0 levburr(10, 2, 3, 1, order = 2) ## case with shape1 - order/shape2 < 0 levburr(10, 1.5, 0.5, 1, order = 2)
Raw moments, limited moments and moment generating function for the
chi-squared () distribution with
df
degrees
of freedom and optional non-centrality parameter ncp
.
mchisq(order, df, ncp = 0) levchisq(limit, df, ncp = 0, order = 1) mgfchisq(t, df, ncp = 0, log= FALSE)
mchisq(order, df, ncp = 0) levchisq(limit, df, ncp = 0, order = 1) mgfchisq(t, df, ncp = 0, log= FALSE)
order |
order of the moment. |
limit |
limit of the loss variable. |
df |
degrees of freedom (non-negative, but can be non-integer). |
ncp |
non-centrality parameter (non-negative). |
t |
numeric vector. |
log |
logical; if |
The th raw moment of the random variable
is
, the
th limited moment at some limit
is
and the moment generating
function is
.
Only integer moments are supported for the non central Chi-square
distribution (ncp > 0
).
The limited expected value is supported for the centered Chi-square
distribution (ncp = 0
).
mchisq
gives the th raw moment,
levchisq
gives the th moment of the limited loss
variable, and
mgfchisq
gives the moment generating function in t
.
Invalid arguments will result in return value NaN
, with a warning.
Christophe Dutang, Vincent Goulet [email protected]
Klugman, S. A., Panjer, H. H. and Willmot, G. E. (2012), Loss Models, From Data to Decisions, Fourth Edition, Wiley.
Johnson, N. L. and Kotz, S. (1970), Continuous Univariate Distributions, Volume 1, Wiley.
mchisq(2, 3, 4) levchisq(10, 3, order = 2) mgfchisq(0.25, 3, 2)
mchisq(2, 3, 4) levchisq(10, 3, order = 2) mgfchisq(0.25, 3, 2)
Fit the following credibility models: Bühlmann, Bühlmann-Straub, hierarchical, regression (Hachemeister) or linear Bayes.
cm(formula, data, ratios, weights, subset, regformula = NULL, regdata, adj.intercept = FALSE, method = c("Buhlmann-Gisler", "Ohlsson", "iterative"), likelihood, ..., tol = sqrt(.Machine$double.eps), maxit = 100, echo = FALSE) ## S3 method for class 'cm' print(x, ...) ## S3 method for class 'cm' predict(object, levels = NULL, newdata, ...) ## S3 method for class 'cm' summary(object, levels = NULL, newdata, ...) ## S3 method for class 'summary.cm' print(x, ...)
cm(formula, data, ratios, weights, subset, regformula = NULL, regdata, adj.intercept = FALSE, method = c("Buhlmann-Gisler", "Ohlsson", "iterative"), likelihood, ..., tol = sqrt(.Machine$double.eps), maxit = 100, echo = FALSE) ## S3 method for class 'cm' print(x, ...) ## S3 method for class 'cm' predict(object, levels = NULL, newdata, ...) ## S3 method for class 'cm' summary(object, levels = NULL, newdata, ...) ## S3 method for class 'summary.cm' print(x, ...)
formula |
character string |
data |
a matrix or a data frame containing the portfolio structure, the ratios or claim amounts and their associated weights, if any. |
ratios |
expression indicating the columns of |
weights |
expression indicating the columns of |
subset |
an optional logical expression indicating a subset of observations to be used in the modeling process. All observations are included by default. |
regformula |
an object of class |
regdata |
an optional data frame, list or environment (or object
coercible by |
adj.intercept |
if |
method |
estimation method for the variance components of the model; see Details. |
likelihood |
a character string giving the name of the likelihood function in one of the supported linear Bayes cases; see Details. |
tol |
tolerance level for the stopping criteria for iterative estimation method. |
maxit |
maximum number of iterations in iterative estimation method. |
echo |
logical; whether to echo the iterative procedure or not. |
x , object
|
an object of class |
levels |
character vector indicating the levels to predict or to
include in the summary; if |
newdata |
data frame containing the variables used to predict credibility regression models. |
... |
parameters of the prior distribution for |
cm
is the unified front end for credibility models fitting. The
function supports hierarchical models with any number of levels (with
Bühlmann and Bühlmann-Straub models as
special cases) and the regression model of Hachemeister. Usage of
cm
is similar to lm
for these cases.
cm
can also fit linear Bayes models, in which case usage is
much simplified; see the section on linear Bayes below.
When not "bayes"
, the formula
argument symbolically
describes the structure of the portfolio in the form .
Each term is an interaction between risk factors contributing to the
total variance of the portfolio data. Terms are separated by
+
operators and interactions within each term by :
. For a
portfolio divided first into sectors, then units and finally
contracts, formula
would be ~ sector + sector:unit +
sector:unit:contract
, where sector
, unit
and
contract
are column names in data
. In general, the
formula should be of the form ~ a + a:b + a:b:c + a:b:c:d +
...
.
If argument regformula
is not NULL
, the regression model
of Hachemeister is fit to the data. The response is usually time. By
default, the intercept of the model is located at time origin. If
argument adj.intercept
is TRUE
, the intercept is moved
to the (collective) barycenter of time, by orthogonalization of the
design matrix. Note that the regression coefficients may be difficult
to interpret in this case.
Arguments ratios
, weights
and subset
are used
like arguments select
, select
and subset
,
respectively, of function subset
.
Data does not have to be sorted by level. Nodes with no data (complete
lines of NA
except for the portfolio structure) are allowed,
with the restriction mentioned above.
The print
methods use the option deparse.cutoff
to
control the printing of the call to cm
.
Function cm
computes the structure parameters estimators of the
model specified in formula
. The value returned is an object of
class cm
.
An object of class "cm"
is a list with at least the following
components:
means |
a list containing, for each level, the vector of linearly sufficient statistics. |
weights |
a list containing, for each level, the vector of total weights. |
unbiased |
a vector containing the unbiased variance components
estimators, or |
iterative |
a vector containing the iterative variance components
estimators, or |
cred |
for multi-level hierarchical models: a list containing, the vector of credibility factors for each level. For one-level models: an array or vector of credibility factors. |
nodes |
a list containing, for each level, the vector of the number of nodes in the level. |
classification |
the columns of |
ordering |
a list containing, for each level, the affiliation of a node to the node of the level above. |
Regression fits have in addition the following components:
adj.models |
a list containing, for each node, the credibility
adjusted regression model as obtained with
|
transition |
if |
terms |
the |
The method of predict
for objects of class "cm"
computes
the credibility premiums for the nodes of every level included in
argument levels
(all by default). Result is a list the same
length as levels
or the number of levels in formula
, or
an atomic vector for one-level models.
The credibility premium at one level is a convex combination between
the linearly sufficient statistic of a node and the credibility
premium of the level above. (For the first level, the complement of
credibility is given to the collective premium.) The linearly
sufficient statistic of a node is the credibility weighted average of
the data of the node, except at the last level, where natural weights
are used. The credibility factor of node is equal to
where is the weight of the node used in the linearly
sufficient statistic,
is the average within node variance and
is the average between node variance.
The credibility premium of node is equal to
where is a matrix created from
newdata
and
is the vector of credibility adjusted regression
coefficients of node
. The latter is given by
where is the vector of regression coefficients based
on data of node
only,
is the vector of collective
regression coefficients,
is the credibility matrix and
is the identity matrix. The credibility matrix of node
is equal to
where is the unscaled regression covariance matrix of
the node,
is the average within node variance and
is the within node covariance matrix.
If the intercept is positioned at the barycenter of time, matrices
and
(and hence
) are diagonal.
This amounts to use Bühlmann-Straub models for each
regression coefficient.
Argument newdata
provides the “future” value of the
regressors for prediction purposes. It should be given as specified in
predict.lm
.
For hierarchical models, two sets of estimators of the variance components (other than the within node variance) are available: unbiased estimators and iterative estimators.
Unbiased estimators are based on sums of squares of the form
and constants of the form
where is the linearly sufficient statistic of
level
;
is the weighted average of
the latter using weights
;
;
is the effective number of
nodes at level
;
is the within variance of this
level. Weights
are the natural weights at the
lowest level, the sum of the natural weights the next level and the
sum of the credibility factors for all upper levels.
The Bühlmann-Gisler estimators (method =
"Buhlmann-Gisler"
) are given by
that is the average of the per node variance estimators truncated at 0.
The Ohlsson estimators (method = "Ohlsson"
) are given by
that is the weighted average of the per node variance estimators without any truncation. Note that negative estimates will be truncated to zero for credibility factor calculations.
In the Bühlmann-Straub model, these estimators are equivalent.
Iterative estimators method = "iterative"
are pseudo-estimators
of the form
where is the linearly sufficient statistic of one
level,
is the linearly sufficient statistic of
the level above and
is the effective number of nodes at one
level minus the effective number of nodes of the level above. The
Ohlsson estimators are used as starting values.
For regression models, with the intercept at time origin, only
iterative estimators are available. If method
is different from
"iterative"
, a warning is issued. With the intercept at the
barycenter of time, the choice of estimators is the same as in the
Bühlmann-Straub model.
When formula
is "bayes"
, the function computes pure
Bayesian premiums for the following combinations of distributions
where they are linear credibility premiums:
and
;
and
;
and
;
and
;
and
;
and
;
and
.
and
.
The following combination is also supported:
and
. In this case, the Bayesian estimator not of
the risk premium, but rather of parameter
is linear with
a “credibility” factor that is not restricted to
.
Argument likelihood
identifies the distribution of as one of
"poisson"
,
"exponential"
,
"gamma"
,
"normal"
,
"bernoulli"
,
"binomial"
,
"geometric"
,
"negative binomial"
or
"pareto"
.
The parameters of the distributions of (when
needed) and
are set in
...
using the argument
names (and default values) of dgamma
,
dnorm
, dbeta
,
dbinom
, dnbinom
or
dpareto1
, as appropriate. For the Gamma/Gamma case, use
shape.lik
for the shape parameter of the Gamma
likelihood. For the Normal/Normal case, use
sd.lik
for the
standard error of the Normal likelihood.
Data for the linear Bayes case may be a matrix or data frame as usual;
an atomic vector to fit the model to a single contract; missing or
NULL
to fit the prior model. Arguments ratios
,
weights
and subset
are ignored.
Vincent Goulet [email protected], Xavier Milhaud, Tommy Ouellet, Louis-Philippe Pouliot
Bühlmann, H. and Gisler, A. (2005), A Course in Credibility Theory and its Applications, Springer.
Belhadj, H., Goulet, V. and Ouellet, T. (2009), On parameter estimation in hierarchical credibility, Astin Bulletin 39.
Goulet, V. (1998), Principles and application of credibility theory, Journal of Actuarial Practice 6, ISSN 1064-6647.
Goovaerts, M. J. and Hoogstad, W. J. (1987), Credibility Theory, Surveys of Actuarial Studies, No. 4, Nationale-Nederlanden N.V.
subset
, formula
,
lm
, predict.lm
.
data(hachemeister) ## Buhlmann-Straub model fit <- cm(~state, hachemeister, ratios = ratio.1:ratio.12, weights = weight.1:weight.12) fit # print method predict(fit) # credibility premiums summary(fit) # more details ## Two-level hierarchical model. Notice that data does not have ## to be sorted by level X <- data.frame(unit = c("A", "B", "A", "B", "B"), hachemeister) fit <- cm(~unit + unit:state, X, ratio.1:ratio.12, weight.1:weight.12) predict(fit) predict(fit, levels = "unit") # unit credibility premiums only summary(fit) summary(fit, levels = "unit") # unit summaries only ## Regression model with intercept at time origin fit <- cm(~state, hachemeister, regformula = ~time, regdata = data.frame(time = 12:1), ratios = ratio.1:ratio.12, weights = weight.1:weight.12) fit predict(fit, newdata = data.frame(time = 0)) summary(fit, newdata = data.frame(time = 0)) ## Same regression model, with intercept at barycenter of time fit <- cm(~state, hachemeister, adj.intercept = TRUE, regformula = ~time, regdata = data.frame(time = 12:1), ratios = ratio.1:ratio.12, weights = weight.1:weight.12) fit predict(fit, newdata = data.frame(time = 0)) summary(fit, newdata = data.frame(time = 0)) ## Poisson/Gamma pure Bayesian model fit <- cm("bayes", data = c(5, 3, 0, 1, 1), likelihood = "poisson", shape = 3, rate = 3) fit predict(fit) summary(fit) ## Normal/Normal pure Bayesian model cm("bayes", data = c(5, 3, 0, 1, 1), likelihood = "normal", sd.lik = 2, mean = 2, sd = 1)
data(hachemeister) ## Buhlmann-Straub model fit <- cm(~state, hachemeister, ratios = ratio.1:ratio.12, weights = weight.1:weight.12) fit # print method predict(fit) # credibility premiums summary(fit) # more details ## Two-level hierarchical model. Notice that data does not have ## to be sorted by level X <- data.frame(unit = c("A", "B", "A", "B", "B"), hachemeister) fit <- cm(~unit + unit:state, X, ratio.1:ratio.12, weight.1:weight.12) predict(fit) predict(fit, levels = "unit") # unit credibility premiums only summary(fit) summary(fit, levels = "unit") # unit summaries only ## Regression model with intercept at time origin fit <- cm(~state, hachemeister, regformula = ~time, regdata = data.frame(time = 12:1), ratios = ratio.1:ratio.12, weights = weight.1:weight.12) fit predict(fit, newdata = data.frame(time = 0)) summary(fit, newdata = data.frame(time = 0)) ## Same regression model, with intercept at barycenter of time fit <- cm(~state, hachemeister, adj.intercept = TRUE, regformula = ~time, regdata = data.frame(time = 12:1), ratios = ratio.1:ratio.12, weights = weight.1:weight.12) fit predict(fit, newdata = data.frame(time = 0)) summary(fit, newdata = data.frame(time = 0)) ## Poisson/Gamma pure Bayesian model fit <- cm("bayes", data = c(5, 3, 0, 1, 1), likelihood = "poisson", shape = 3, rate = 3) fit predict(fit) summary(fit) ## Normal/Normal pure Bayesian model cm("bayes", data = c(5, 3, 0, 1, 1), likelihood = "normal", sd.lik = 2, mean = 2, sd = 1)
Compute probability density function or cumulative distribution function of the payment per payment or payment per loss random variable under any combination of the following coverage modifications: deductible, limit, coinsurance, inflation.
coverage(pdf, cdf, deductible = 0, franchise = FALSE, limit = Inf, coinsurance = 1, inflation = 0, per.loss = FALSE)
coverage(pdf, cdf, deductible = 0, franchise = FALSE, limit = Inf, coinsurance = 1, inflation = 0, per.loss = FALSE)
pdf , cdf
|
function object or character string naming a function to compute, respectively, the probability density function and cumulative distribution function of a probability law. |
deductible |
a unique positive numeric value. |
franchise |
logical; |
limit |
a unique positive numeric value larger than
|
coinsurance |
a unique value between 0 and 1; the proportion of coinsurance. |
inflation |
a unique value between 0 and 1; the rate of inflation. |
per.loss |
logical; |
coverage
returns a function to compute the probability
density function (pdf) or the cumulative distribution function (cdf)
of the distribution of losses under coverage modifications. The pdf
and cdf of unmodified losses are pdf
and cdf
,
respectively.
If pdf
is specified, the pdf is returned; if pdf
is
missing or NULL
, the cdf is returned. Note that cdf
is
needed if there is a deductible or a limit.
An object of mode "function"
with the same arguments as
pdf
or cdf
, except "lower.tail"
,
"log.p"
and "log"
, which are not supported.
Setting arguments of the function returned by coverage
using
formals
may very well not work as expected.
Vincent Goulet [email protected] and Mathieu Pigeon
Klugman, S. A., Panjer, H. H. and Willmot, G. E. (2012), Loss Models, From Data to Decisions, Fourth Edition, Wiley.
vignette("coverage")
for the exact definitions of the
per payment and per loss random variables under an ordinary or
franchise deductible.
## Default case: pdf of the per payment random variable with ## an ordinary deductible coverage(dgamma, pgamma, deductible = 1) ## Add a limit f <- coverage(dgamma, pgamma, deductible = 1, limit = 7) f <- coverage("dgamma", "pgamma", deductible = 1, limit = 7) # same f(0, shape = 3, rate = 1) f(2, shape = 3, rate = 1) f(6, shape = 3, rate = 1) f(8, shape = 3, rate = 1) curve(dgamma(x, 3, 1), xlim = c(0, 10), ylim = c(0, 0.3)) # original curve(f(x, 3, 1), xlim = c(0.01, 5.99), col = 4, add = TRUE) # modified points(6, f(6, 3, 1), pch = 21, bg = 4) ## Cumulative distribution function F <- coverage(cdf = pgamma, deductible = 1, limit = 7) F(0, shape = 3, rate = 1) F(2, shape = 3, rate = 1) F(6, shape = 3, rate = 1) F(8, shape = 3, rate = 1) curve(pgamma(x, 3, 1), xlim = c(0, 10), ylim = c(0, 1)) # original curve(F(x, 3, 1), xlim = c(0, 5.99), col = 4, add = TRUE) # modified curve(F(x, 3, 1), xlim = c(6, 10), col = 4, add = TRUE) # modified ## With no deductible, all distributions below are identical coverage(dweibull, pweibull, limit = 5) coverage(dweibull, pweibull, per.loss = TRUE, limit = 5) coverage(dweibull, pweibull, franchise = TRUE, limit = 5) coverage(dweibull, pweibull, per.loss = TRUE, franchise = TRUE, limit = 5) ## Coinsurance alone; only case that does not require the cdf coverage(dgamma, coinsurance = 0.8)
## Default case: pdf of the per payment random variable with ## an ordinary deductible coverage(dgamma, pgamma, deductible = 1) ## Add a limit f <- coverage(dgamma, pgamma, deductible = 1, limit = 7) f <- coverage("dgamma", "pgamma", deductible = 1, limit = 7) # same f(0, shape = 3, rate = 1) f(2, shape = 3, rate = 1) f(6, shape = 3, rate = 1) f(8, shape = 3, rate = 1) curve(dgamma(x, 3, 1), xlim = c(0, 10), ylim = c(0, 0.3)) # original curve(f(x, 3, 1), xlim = c(0.01, 5.99), col = 4, add = TRUE) # modified points(6, f(6, 3, 1), pch = 21, bg = 4) ## Cumulative distribution function F <- coverage(cdf = pgamma, deductible = 1, limit = 7) F(0, shape = 3, rate = 1) F(2, shape = 3, rate = 1) F(6, shape = 3, rate = 1) F(8, shape = 3, rate = 1) curve(pgamma(x, 3, 1), xlim = c(0, 10), ylim = c(0, 1)) # original curve(F(x, 3, 1), xlim = c(0, 5.99), col = 4, add = TRUE) # modified curve(F(x, 3, 1), xlim = c(6, 10), col = 4, add = TRUE) # modified ## With no deductible, all distributions below are identical coverage(dweibull, pweibull, limit = 5) coverage(dweibull, pweibull, per.loss = TRUE, limit = 5) coverage(dweibull, pweibull, franchise = TRUE, limit = 5) coverage(dweibull, pweibull, per.loss = TRUE, franchise = TRUE, limit = 5) ## Coinsurance alone; only case that does not require the cdf coverage(dgamma, coinsurance = 0.8)
Conditional Tail Expectation, also called Tail Value-at-Risk.
TVaR
is an alias for CTE
.
CTE(x, ...) ## S3 method for class 'aggregateDist' CTE(x, conf.level = c(0.9, 0.95, 0.99), names = TRUE, ...) TVaR(x, ...)
CTE(x, ...) ## S3 method for class 'aggregateDist' CTE(x, conf.level = c(0.9, 0.95, 0.99), names = TRUE, ...) TVaR(x, ...)
x |
an R object. |
conf.level |
numeric vector of probabilities with values
in |
names |
logical; if true, the result has a |
... |
further arguments passed to or from other methods. |
The Conditional Tail Expectation (or Tail Value-at-Risk) measures the
average of losses above the Value at Risk for some given confidence
level, that is where
is the loss random
variable.
CTE
is a generic function with, currently, only a method for
objects of class "aggregateDist"
.
For the recursive, convolution and simulation methods of
aggregateDist
, the CTE is computed from the definition
using the empirical cdf.
For the normal approximation method, an explicit formula exists:
where is the mean,
the standard
deviation and
the confidence level.
For the Normal Power approximation, the explicit formula given in Castañer et al. (2013) is
where, as above, is the mean,
the standard
deviation,
the confidence level and
is
the skewness.
A numeric vector, named if names
is TRUE
.
Vincent Goulet [email protected] and Tommy Ouellet
Castañer, A. and Claramunt, M.M. and Mármol, M. (2013), Tail value at risk. An analysis with the Normal-Power approximation. In Statistical and Soft Computing Approaches in Insurance Problems, pp. 87-112. Nova Science Publishers, 2013. ISBN 978-1-62618-506-7.
model.freq <- expression(data = rpois(7)) model.sev <- expression(data = rnorm(9, 2)) Fs <- aggregateDist("simulation", model.freq, model.sev, nb.simul = 1000) CTE(Fs)
model.freq <- expression(data = rpois(7)) model.sev <- expression(data = rnorm(9, 2)) Fs <- aggregateDist("simulation", model.freq, model.sev, nb.simul = 1000) CTE(Fs)
Basic dental claims on a policy with a deductible of 50.
dental
dental
A vector containing 10 observations
Klugman, S. A., Panjer, H. H. and Willmot, G. E. (1998), Loss Models, From Data to Decisions, Wiley.
Compute a discrete probability mass function from a continuous cumulative distribution function (cdf) with various methods.
discretise
is an alias for discretize
.
discretize(cdf, from, to, step = 1, method = c("upper", "lower", "rounding", "unbiased"), lev, by = step, xlim = NULL) discretise(cdf, from, to, step = 1, method = c("upper", "lower", "rounding", "unbiased"), lev, by = step, xlim = NULL)
discretize(cdf, from, to, step = 1, method = c("upper", "lower", "rounding", "unbiased"), lev, by = step, xlim = NULL) discretise(cdf, from, to, step = 1, method = c("upper", "lower", "rounding", "unbiased"), lev, by = step, xlim = NULL)
cdf |
an expression written as a function of |
from , to
|
the range over which the function will be discretized. |
step |
numeric; the discretization step (or span, or lag). |
method |
discretization method to use. |
lev |
an expression written as a function of |
by |
an alias for |
xlim |
numeric of length 2; if specified, it serves as default
for |
Usage is similar to curve
.
discretize
returns the probability mass function (pmf) of the
random variable obtained by discretization of the cdf specified in
cdf
.
Let denote the cdf,
the
limited expected value at
,
the step,
the probability mass at
in the discretized distribution and
set
from
and
to
.
Method "upper"
is the forward difference of the cdf :
for .
Method "lower"
is the backward difference of the cdf :
for and
.
Method "rounding"
has the true cdf pass through the
midpoints of the intervals :
for and
. The function assumes the cdf is continuous. Any
adjusment necessary for discrete distributions can be done via
cdf
.
Method "unbiased"
matches the first moment of the discretized
and the true distributions. The probabilities are as follows:
A numeric vector of probabilities suitable for use in
aggregateDist
.
Vincent Goulet [email protected]
Klugman, S. A., Panjer, H. H. and Willmot, G. E. (2012), Loss Models, From Data to Decisions, Fourth Edition, Wiley.
x <- seq(0, 5, 0.5) op <- par(mfrow = c(1, 1), col = "black") ## Upper and lower discretization fu <- discretize(pgamma(x, 1), method = "upper", from = 0, to = 5, step = 0.5) fl <- discretize(pgamma(x, 1), method = "lower", from = 0, to = 5, step = 0.5) curve(pgamma(x, 1), xlim = c(0, 5)) par(col = "blue") plot(stepfun(head(x, -1), diffinv(fu)), pch = 19, add = TRUE) par(col = "green") plot(stepfun(x, diffinv(fl)), pch = 19, add = TRUE) par(col = "black") ## Rounding (or midpoint) discretization fr <- discretize(pgamma(x, 1), method = "rounding", from = 0, to = 5, step = 0.5) curve(pgamma(x, 1), xlim = c(0, 5)) par(col = "blue") plot(stepfun(head(x, -1), diffinv(fr)), pch = 19, add = TRUE) par(col = "black") ## First moment matching fb <- discretize(pgamma(x, 1), method = "unbiased", lev = levgamma(x, 1), from = 0, to = 5, step = 0.5) curve(pgamma(x, 1), xlim = c(0, 5)) par(col = "blue") plot(stepfun(x, diffinv(fb)), pch = 19, add = TRUE) par(op)
x <- seq(0, 5, 0.5) op <- par(mfrow = c(1, 1), col = "black") ## Upper and lower discretization fu <- discretize(pgamma(x, 1), method = "upper", from = 0, to = 5, step = 0.5) fl <- discretize(pgamma(x, 1), method = "lower", from = 0, to = 5, step = 0.5) curve(pgamma(x, 1), xlim = c(0, 5)) par(col = "blue") plot(stepfun(head(x, -1), diffinv(fu)), pch = 19, add = TRUE) par(col = "green") plot(stepfun(x, diffinv(fl)), pch = 19, add = TRUE) par(col = "black") ## Rounding (or midpoint) discretization fr <- discretize(pgamma(x, 1), method = "rounding", from = 0, to = 5, step = 0.5) curve(pgamma(x, 1), xlim = c(0, 5)) par(col = "blue") plot(stepfun(head(x, -1), diffinv(fr)), pch = 19, add = TRUE) par(col = "black") ## First moment matching fb <- discretize(pgamma(x, 1), method = "unbiased", lev = levgamma(x, 1), from = 0, to = 5, step = 0.5) curve(pgamma(x, 1), xlim = c(0, 5)) par(col = "blue") plot(stepfun(x, diffinv(fb)), pch = 19, add = TRUE) par(op)
Compute the empirical limited expected value for individual or grouped data.
elev(x, ...) ## Default S3 method: elev(x, ...) ## S3 method for class 'grouped.data' elev(x, ...) ## S3 method for class 'elev' print(x, digits = getOption("digits") - 2, ...) ## S3 method for class 'elev' summary(object, ...) ## S3 method for class 'elev' knots(Fn, ...) ## S3 method for class 'elev' plot(x, ..., main = NULL, xlab = "x", ylab = "Empirical LEV")
elev(x, ...) ## Default S3 method: elev(x, ...) ## S3 method for class 'grouped.data' elev(x, ...) ## S3 method for class 'elev' print(x, digits = getOption("digits") - 2, ...) ## S3 method for class 'elev' summary(object, ...) ## S3 method for class 'elev' knots(Fn, ...) ## S3 method for class 'elev' plot(x, ..., main = NULL, xlab = "x", ylab = "Empirical LEV")
x |
a vector or an object of class |
digits |
number of significant digits to use, see
|
Fn , object
|
an R object inheriting from |
main |
main title. |
xlab , ylab
|
labels of x and y axis. |
... |
arguments to be passed to subsequent methods. |
The limited expected value (LEV) at of a random variable
is
. For
individual data
, the
empirical LEV
is thus
Methods of elev
exist for individual data or for grouped data
created with grouped.data
. The formula in this case is
too long to show here. See the reference for details.
For elev
, a function of class "elev"
, inheriting from the
"function"
class.
Vincent Goulet [email protected] and Mathieu Pigeon
Klugman, S. A., Panjer, H. H. and Willmot, G. E. (1998), Loss Models, From Data to Decisions, Wiley.
grouped.data
to create grouped data objects;
stepfun
for related documentation (even though the
empirical LEV is not a step function).
data(gdental) lev <- elev(gdental) lev summary(lev) knots(lev) # the group boundaries lev(knots(lev)) # empirical lev at boundaries lev(c(80, 200, 2000)) # and at other limits plot(lev, type = "o", pch = 16)
data(gdental) lev <- elev(gdental) lev summary(lev) knots(lev) # the group boundaries lev(knots(lev)) # empirical lev at boundaries lev(c(80, 200, 2000)) # and at other limits plot(lev, type = "o", pch = 16)
Raw empirical moments for individual and grouped data.
emm(x, order = 1, ...) ## Default S3 method: emm(x, order = 1, ...) ## S3 method for class 'grouped.data' emm(x, order = 1, ...)
emm(x, order = 1, ...) ## Default S3 method: emm(x, order = 1, ...) ## S3 method for class 'grouped.data' emm(x, order = 1, ...)
x |
a vector or matrix of individual data, or an object of class
|
order |
order of the moment. Must be positive. |
... |
further arguments passed to or from other methods. |
Arguments ...
are passed to colMeans
;
na.rm = TRUE
may be useful for individual data with missing
values.
For individual data, the th empirical moment is
.
For grouped data with group boundaries and group frequencies
, the
th empirical moment is
where .
A named vector or matrix of moments.
Vincent Goulet [email protected] and Mathieu Pigeon
Klugman, S. A., Panjer, H. H. and Willmot, G. E. (1998), Loss Models, From Data to Decisions, Wiley.
mean
and mean.grouped.data
for simpler
access to the first moment.
## Individual data data(dental) emm(dental, order = 1:3) ## Grouped data data(gdental) emm(gdental) x <- grouped.data(cj = gdental[, 1], nj1 = sample(1:100, nrow(gdental)), nj2 = sample(1:100, nrow(gdental))) emm(x) # same as mean(x)
## Individual data data(dental) emm(dental, order = 1:3) ## Grouped data data(gdental) emm(gdental) x <- grouped.data(cj = gdental[, 1], nj1 = sample(1:100, nrow(gdental)), nj2 = sample(1:100, nrow(gdental))) emm(x) # same as mean(x)
Raw moments, limited moments and moment generating function for the
exponential distribution with rate rate
(i.e., mean
1/rate
).
mexp(order, rate = 1) levexp(limit, rate = 1, order = 1) mgfexp(t, rate = 1, log = FALSE)
mexp(order, rate = 1) levexp(limit, rate = 1, order = 1) mgfexp(t, rate = 1, log = FALSE)
order |
order of the moment. |
limit |
limit of the loss variable. |
rate |
vector of rates. |
t |
numeric vector. |
log |
logical; if |
The th raw moment of the random variable
is
, the
th limited moment at some limit
is
and the moment
generating function is
,
.
mexp
gives the th raw moment,
levexp
gives the th moment of the limited loss
variable, and
mgfexp
gives the moment generating function in t
.
Invalid arguments will result in return value NaN
, with a warning.
Vincent Goulet [email protected], Christophe Dutang and Mathieu Pigeon.
Johnson, N. L. and Kotz, S. (1970), Continuous Univariate Distributions, Volume 1, Wiley.
Klugman, S. A., Panjer, H. H. and Willmot, G. E. (2012), Loss Models, From Data to Decisions, Fourth Edition, Wiley.
mexp(2, 3) - mexp(1, 3)^2 levexp(10, 3, order = 2) mgfexp(1,2)
mexp(2, 3) - mexp(1, 3)^2 levexp(10, 3, order = 2) mgfexp(1,2)
Extract or replace subsets of grouped data objects.
## S3 method for class 'grouped.data' x[i, j] ## S3 replacement method for class 'grouped.data' x[i, j] <- value
## S3 method for class 'grouped.data' x[i, j] ## S3 replacement method for class 'grouped.data' x[i, j] <- value
x |
an object of class |
i , j
|
elements to extract or replace. |
value |
a suitable replacement value. |
Objects of class "grouped.data"
can mostly be indexed like data
frames, with the following restrictions:
For [
, the extracted object must keep a group
boundaries column and at least one group frequencies column to
remain of class "grouped.data"
;
For [<-
, it is not possible to replace group boundaries
and group frequencies simultaneously;
When replacing group boundaries, length(value) ==
length(i) + 1
.
x[, 1]
will return the plain vector of group boundaries.
Replacement of non adjacent group boundaries is not possible for obvious reasons.
Otherwise, extraction and replacement should work just like for data frames.
For [
an object of class "grouped.data"
, a data frame or a
vector.
For [<-
an object of class "grouped.data"
.
Currently [[
, [[<-
, $
and $<-
are not
specifically supported, but should work as usual on group frequency
columns.
Vincent Goulet [email protected]
[.data.frame
for extraction and replacement
methods of data frames, grouped.data
to create grouped
data objects.
data(gdental) (x <- gdental[1]) # select column 1 class(x) # no longer a grouped.data object class(gdental[2]) # same gdental[, 1] # group boundaries gdental[, 2] # group frequencies gdental[1:4,] # a subset gdental[c(1, 3, 5),] # avoid this gdental[1:2, 1] <- c(0, 30, 60) # modified boundaries gdental[, 2] <- 10 # modified frequencies ## Not run: gdental[1, ] <- 2 # not allowed
data(gdental) (x <- gdental[1]) # select column 1 class(x) # no longer a grouped.data object class(gdental[2]) # same gdental[, 1] # group boundaries gdental[, 2] # group frequencies gdental[1:4,] # a subset gdental[c(1, 3, 5),] # avoid this gdental[1:2, 1] <- c(0, 30, 60) # modified boundaries gdental[, 2] <- 10 # modified frequencies ## Not run: gdental[1, ] <- 2 # not allowed
Density function, distribution function, quantile function, random generation,
raw moments and limited moments for the Feller Pareto distribution
with parameters min
, shape1
, shape2
, shape3
and
scale
.
dfpareto(x, min, shape1, shape2, shape3, rate = 1, scale = 1/rate, log = FALSE) pfpareto(q, min, shape1, shape2, shape3, rate = 1, scale = 1/rate, lower.tail = TRUE, log.p = FALSE) qfpareto(p, min, shape1, shape2, shape3, rate = 1, scale = 1/rate, lower.tail = TRUE, log.p = FALSE) rfpareto(n, min, shape1, shape2, shape3, rate = 1, scale = 1/rate) mfpareto(order, min, shape1, shape2, shape3, rate = 1, scale = 1/rate) levfpareto(limit, min, shape1, shape2, shape3, rate = 1, scale = 1/rate, order = 1)
dfpareto(x, min, shape1, shape2, shape3, rate = 1, scale = 1/rate, log = FALSE) pfpareto(q, min, shape1, shape2, shape3, rate = 1, scale = 1/rate, lower.tail = TRUE, log.p = FALSE) qfpareto(p, min, shape1, shape2, shape3, rate = 1, scale = 1/rate, lower.tail = TRUE, log.p = FALSE) rfpareto(n, min, shape1, shape2, shape3, rate = 1, scale = 1/rate) mfpareto(order, min, shape1, shape2, shape3, rate = 1, scale = 1/rate) levfpareto(limit, min, shape1, shape2, shape3, rate = 1, scale = 1/rate, order = 1)
x , q
|
vector of quantiles. |
p |
vector of probabilities. |
n |
number of observations. If |
min |
lower bound of the support of the distribution. |
shape1 , shape2 , shape3 , scale
|
parameters. Must be strictly positive. |
rate |
an alternative way to specify the scale. |
log , log.p
|
logical; if |
lower.tail |
logical; if |
order |
order of the moment. |
limit |
limit of the loss variable. |
The Feller-Pareto distribution with parameters min
,
shape1
,
shape2
,
shape3
and
scale
, has
density:
for ,
,
,
,
and
.
(Here
is the function implemented
by R's
gamma()
and defined in its help.)
The Feller-Pareto is the distribution of the random variable
where has a beta distribution with parameters
and
.
The Feller-Pareto defines a large family of distributions encompassing
the transformed beta family and many variants of the Pareto
distribution. Setting yields the
transformed beta distribution.
The Feller-Pareto distribution also has the following direct special cases:
A Pareto IV distribution when shape3
== 1
;
A Pareto III distribution when shape1
shape3 == 1
;
A Pareto II distribution when shape1
shape2 == 1
;
A Pareto I distribution when shape1
shape2 == 1
and min = scale
.
The th raw moment of the random variable
is
for nonnegative integer values of
.
The th limited moment at some limit
is
for nonnegative integer values of
and
,
not a negative integer.
Note that the range of admissible values for in raw and
limited moments is larger when
.
dfpareto
gives the density,
pfpareto
gives the distribution function,
qfpareto
gives the quantile function,
rfpareto
generates random deviates,
mfpareto
gives the th raw moment, and
levfpareto
gives the th moment of the limited loss
variable.
Invalid arguments will result in return value NaN
, with a warning.
levfpareto
computes the limited expected value using
betaint
.
For the Feller-Pareto and other Pareto distributions, we use the classification of Arnold (2015) with the parametrization of Klugman et al. (2012).
The "distributions"
package vignette provides the
interrelations between the continuous size distributions in
actuar and the complete formulas underlying the above functions.
Vincent Goulet [email protected] and Nicholas Langevin
Dutang, C., Goulet, V., Langevin, N. (2022). Feller-Pareto and Related Distributions: Numerical Implementation and Actuarial Applications. Journal of Statistical Software, 103(6), 1–22. doi:10.18637/jss.v103.i06.
Abramowitz, M. and Stegun, I. A. (1972), Handbook of Mathematical Functions, Dover.
Arnold, B. C. (2015), Pareto Distributions, Second Edition, CRC Press.
Kleiber, C. and Kotz, S. (2003), Statistical Size Distributions in Economics and Actuarial Sciences, Wiley.
Klugman, S. A., Panjer, H. H. and Willmot, G. E. (2012), Loss Models, From Data to Decisions, Fourth Edition, Wiley.
dtrbeta
for the transformed beta distribution.
exp(dfpareto(2, 1, 2, 3, 4, 5, log = TRUE)) p <- (1:10)/10 pfpareto(qfpareto(p, 1, 2, 3, 4, 5), 1, 2, 3, 4, 5) ## variance mfpareto(2, 1, 2, 3, 4, 5) - mfpareto(1, 1, 2, 3, 4, 5)^2 ## case with shape1 - order/shape2 > 0 levfpareto(10, 1, 2, 3, 4, scale = 1, order = 2) ## case with shape1 - order/shape2 < 0 levfpareto(20, 10, 0.1, 14, 2, scale = 1.5, order = 2)
exp(dfpareto(2, 1, 2, 3, 4, 5, log = TRUE)) p <- (1:10)/10 pfpareto(qfpareto(p, 1, 2, 3, 4, 5), 1, 2, 3, 4, 5) ## variance mfpareto(2, 1, 2, 3, 4, 5) - mfpareto(1, 1, 2, 3, 4, 5)^2 ## case with shape1 - order/shape2 > 0 levfpareto(10, 1, 2, 3, 4, scale = 1, order = 2) ## case with shape1 - order/shape2 < 0 levfpareto(20, 10, 0.1, 14, 2, scale = 1.5, order = 2)
Raw moments, limited moments and moment generating function for the
Gamma distribution with parameters shape
and scale
.
mgamma(order, shape, rate = 1, scale = 1/rate) levgamma(limit, shape, rate = 1, scale = 1/rate, order = 1) mgfgamma(t, shape, rate = 1, scale = 1/rate, log = FALSE)
mgamma(order, shape, rate = 1, scale = 1/rate) levgamma(limit, shape, rate = 1, scale = 1/rate, order = 1) mgfgamma(t, shape, rate = 1, scale = 1/rate, log = FALSE)
order |
order of the moment. |
limit |
limit of the loss variable. |
rate |
an alternative way to specify the scale. |
shape , scale
|
shape and scale parameters. Must be strictly positive. |
t |
numeric vector. |
log |
logical; if |
The th raw moment of the random variable
is
, the
th limited moment at some limit
is
and the moment
generating function is
,
.
mgamma
gives the th raw moment,
levgamma
gives the th moment of the limited loss
variable, and
mgfgamma
gives the moment generating function in t
.
Invalid arguments will result in return value NaN
, with a warning.
Vincent Goulet [email protected], Christophe Dutang and Mathieu Pigeon
Johnson, N. L. and Kotz, S. (1970), Continuous Univariate Distributions, Volume 1, Wiley.
Klugman, S. A., Panjer, H. H. and Willmot, G. E. (2012), Loss Models, From Data to Decisions, Fourth Edition, Wiley.
mgamma(2, 3, 4) - mgamma(1, 3, 4)^2 levgamma(10, 3, 4, order = 2) mgfgamma(1,3,2)
mgamma(2, 3, 4) - mgamma(1, 3, 4)^2 levgamma(10, 3, 4, order = 2) mgfgamma(1,3,2)
Grouped dental claims, that is presented in a number of claims per claim amount group form.
gdental
gdental
An object of class "grouped.data"
(inheriting from class
"data.frame"
) consisting of 10 rows and 2 columns. The
environment of the object contains the plain vector of cj
of
group boundaries
Klugman, S. A., Panjer, H. H. and Willmot, G. E. (1998), Loss Models, From Data to Decisions, Wiley.
grouped.data
for a description of grouped data objects.
Density function, distribution function, quantile function, random generation,
raw moments and limited moments for the Generalized Beta distribution
with parameters shape1
, shape2
, shape3
and
scale
.
dgenbeta(x, shape1, shape2, shape3, rate = 1, scale = 1/rate, log = FALSE) pgenbeta(q, shape1, shape2, shape3, rate = 1, scale = 1/rate, lower.tail = TRUE, log.p = FALSE) qgenbeta(p, shape1, shape2, shape3, rate = 1, scale = 1/rate, lower.tail = TRUE, log.p = FALSE) rgenbeta(n, shape1, shape2, shape3, rate = 1, scale = 1/rate) mgenbeta(order, shape1, shape2, shape3, rate = 1, scale = 1/rate) levgenbeta(limit, shape1, shape2, shape3, rate = 1, scale = 1/rate, order = 1)
dgenbeta(x, shape1, shape2, shape3, rate = 1, scale = 1/rate, log = FALSE) pgenbeta(q, shape1, shape2, shape3, rate = 1, scale = 1/rate, lower.tail = TRUE, log.p = FALSE) qgenbeta(p, shape1, shape2, shape3, rate = 1, scale = 1/rate, lower.tail = TRUE, log.p = FALSE) rgenbeta(n, shape1, shape2, shape3, rate = 1, scale = 1/rate) mgenbeta(order, shape1, shape2, shape3, rate = 1, scale = 1/rate) levgenbeta(limit, shape1, shape2, shape3, rate = 1, scale = 1/rate, order = 1)
x , q
|
vector of quantiles. |
p |
vector of probabilities. |
n |
number of observations. If |
shape1 , shape2 , shape3 , scale
|
parameters. Must be strictly positive. |
rate |
an alternative way to specify the scale. |
log , log.p
|
logical; if |
lower.tail |
logical; if |
order |
order of the moment. |
limit |
limit of the loss variable. |
The generalized beta distribution with parameters shape1
,
shape2
,
shape3
and
scale
, has
density:
for ,
,
,
and
. (Here
is the function implemented
by R's
gamma()
and defined in its help.)
The generalized beta is the distribution of the random variable
where has a beta distribution with parameters
and
.
The th raw moment of the random variable
is
and the
th limited moment at some limit
is
,
.
dgenbeta
gives the density,
pgenbeta
gives the distribution function,
qgenbeta
gives the quantile function,
rgenbeta
generates random deviates,
mgenbeta
gives the th raw moment, and
levgenbeta
gives the th moment of the limited loss
variable.
Invalid arguments will result in return value NaN
, with a warning.
This is not the generalized three-parameter beta distribution defined on page 251 of Johnson et al, 1995.
The "distributions"
package vignette provides the
interrelations between the continuous size distributions in
actuar and the complete formulas underlying the above functions.
Vincent Goulet [email protected]
Johnson, N. L., Kotz, S. and Balakrishnan, N. (1995) Continuous Univariate Distributions, Volume 2, Wiley.
Klugman, S. A., Panjer, H. H. and Willmot, G. E. (2012), Loss Models, From Data to Decisions, Fourth Edition, Wiley.
exp(dgenbeta(2, 2, 3, 4, 0.2, log = TRUE)) p <- (1:10)/10 pgenbeta(qgenbeta(p, 2, 3, 4, 0.2), 2, 3, 4, 0.2) mgenbeta(2, 1, 2, 3, 0.25) - mgenbeta(1, 1, 2, 3, 0.25) ^ 2 levgenbeta(10, 1, 2, 3, 0.25, order = 2)
exp(dgenbeta(2, 2, 3, 4, 0.2, log = TRUE)) p <- (1:10)/10 pgenbeta(qgenbeta(p, 2, 3, 4, 0.2), 2, 3, 4, 0.2) mgenbeta(2, 1, 2, 3, 0.25) - mgenbeta(1, 1, 2, 3, 0.25) ^ 2 levgenbeta(10, 1, 2, 3, 0.25, order = 2)
Density function, distribution function, quantile function, random generation,
raw moments and limited moments for the Generalized Pareto
distribution with parameters shape1
, shape2
and
scale
.
dgenpareto(x, shape1, shape2, rate = 1, scale = 1/rate, log = FALSE) pgenpareto(q, shape1, shape2, rate = 1, scale = 1/rate, lower.tail = TRUE, log.p = FALSE) qgenpareto(p, shape1, shape2, rate = 1, scale = 1/rate, lower.tail = TRUE, log.p = FALSE) rgenpareto(n, shape1, shape2, rate = 1, scale = 1/rate) mgenpareto(order, shape1, shape2, rate = 1, scale = 1/rate) levgenpareto(limit, shape1, shape2, rate = 1, scale = 1/rate, order = 1)
dgenpareto(x, shape1, shape2, rate = 1, scale = 1/rate, log = FALSE) pgenpareto(q, shape1, shape2, rate = 1, scale = 1/rate, lower.tail = TRUE, log.p = FALSE) qgenpareto(p, shape1, shape2, rate = 1, scale = 1/rate, lower.tail = TRUE, log.p = FALSE) rgenpareto(n, shape1, shape2, rate = 1, scale = 1/rate) mgenpareto(order, shape1, shape2, rate = 1, scale = 1/rate) levgenpareto(limit, shape1, shape2, rate = 1, scale = 1/rate, order = 1)
x , q
|
vector of quantiles. |
p |
vector of probabilities. |
n |
number of observations. If |
shape1 , shape2 , scale
|
parameters. Must be strictly positive. |
rate |
an alternative way to specify the scale. |
log , log.p
|
logical; if |
lower.tail |
logical; if |
order |
order of the moment. |
limit |
limit of the loss variable. |
The Generalized Pareto distribution with parameters shape1
,
shape2
and
scale
has density:
for ,
,
and
.
(Here
is the function implemented
by R's
gamma()
and defined in its help.)
The Generalized Pareto is the distribution of the random variable
where has a beta distribution with parameters
and
.
The Generalized Pareto distribution has the following special cases:
A Pareto distribution when shape2 ==
1
;
An Inverse Pareto distribution when
shape1 == 1
.
The th raw moment of the random variable
is
,
.
The th limited moment at some limit
is
,
and
not a
negative integer.
dgenpareto
gives the density,
pgenpareto
gives the distribution function,
qgenpareto
gives the quantile function,
rgenpareto
generates random deviates,
mgenpareto
gives the th raw moment, and
levgenpareto
gives the th moment of the limited loss
variable.
Invalid arguments will result in return value NaN
, with a warning.
levgenpareto
computes the limited expected value using
betaint
.
Distribution also known as the Beta of the Second Kind. See also Kleiber and Kotz (2003) for alternative names and parametrizations.
The Generalized Pareto distribution defined here is different from the one in Embrechts et al. (1997) and in Wikipedia; see also Kleiber and Kotz (2003, section 3.12). One may most likely compute quantities for the latter using functions for the Pareto distribution with the appropriate change of parametrization.
The "distributions"
package vignette provides the
interrelations between the continuous size distributions in
actuar and the complete formulas underlying the above functions.
Vincent Goulet [email protected] and Mathieu Pigeon
Embrechts, P., Klüppelberg, C. and Mikisch, T. (1997), Modelling Extremal Events for Insurance and Finance, Springer.
Kleiber, C. and Kotz, S. (2003), Statistical Size Distributions in Economics and Actuarial Sciences, Wiley.
Klugman, S. A., Panjer, H. H. and Willmot, G. E. (2012), Loss Models, From Data to Decisions, Fourth Edition, Wiley.
exp(dgenpareto(3, 3, 4, 4, log = TRUE)) p <- (1:10)/10 pgenpareto(qgenpareto(p, 3, 3, 1), 3, 3, 1) qgenpareto(.3, 3, 4, 4, lower.tail = FALSE) ## variance mgenpareto(2, 3, 2, 1) - mgenpareto(1, 3, 2, 1)^2 ## case with shape1 - order > 0 levgenpareto(10, 3, 3, scale = 1, order = 2) ## case with shape1 - order < 0 levgenpareto(10, 1.5, 3, scale = 1, order = 2)
exp(dgenpareto(3, 3, 4, 4, log = TRUE)) p <- (1:10)/10 pgenpareto(qgenpareto(p, 3, 3, 1), 3, 3, 1) qgenpareto(.3, 3, 4, 4, lower.tail = FALSE) ## variance mgenpareto(2, 3, 2, 1) - mgenpareto(1, 3, 2, 1)^2 ## case with shape1 - order > 0 levgenpareto(10, 3, 3, scale = 1, order = 2) ## case with shape1 - order < 0 levgenpareto(10, 1.5, 3, scale = 1, order = 2)
Creation of grouped data objects, from either a provided set of group boundaries and group frequencies, or from individual data using automatic or specified breakpoints.
grouped.data(..., breaks = "Sturges", include.lowest = TRUE, right = TRUE, nclass = NULL, group = FALSE, row.names = NULL, check.rows = FALSE, check.names = TRUE)
grouped.data(..., breaks = "Sturges", include.lowest = TRUE, right = TRUE, nclass = NULL, group = FALSE, row.names = NULL, check.rows = FALSE, check.names = TRUE)
... |
arguments of the form |
breaks |
same as for
In the last three cases the number is a suggestion only; the
breakpoints will be set to |
include.lowest |
logical; if |
right |
logical; indicating if the intervals should be closed on the right (and open on the left) or vice versa. |
nclass |
numeric (integer); equivalent to |
group |
logical; an alternative way to force grouping of individual data. |
row.names , check.rows , check.names
|
arguments identical to those
of |
A grouped data object is a special form of data frame consisting of one column of contiguous group boundaries and one or more columns of frequencies within each group.
The function can create a grouped data object from two types of arguments.
Group boundaries and frequencies. This is the default mode of
operation if the call has at least two elements in ...
.
The first argument will then be taken as the vector of group boundaries. This vector must be exactly one element longer than the other arguments, which will be taken as vectors of group frequencies. All arguments are coerced to data frames.
Individual data. This mode of operation is active if there
is a single argument in ...
, or if either breaks
or nclass
is specified or group
is TRUE
.
Arguments of ...
are first grouped using
hist
. If needed, breakpoints are set using the first
argument.
Missing (NA
) frequencies are replaced by zeros, with a
warning.
Extraction and replacement methods exist for grouped.data
objects, but working on non adjacent groups will most likely yield
useless results.
An object of class
c("grouped.data", "data.frame")
with
an environment containing the vector cj
of group boundaries.
Vincent Goulet [email protected], Mathieu Pigeon and Louis-Philippe Pouliot
Klugman, S. A., Panjer, H. H. and Willmot, G. E. (1998), Loss Models, From Data to Decisions, Wiley.
[.grouped.data
for extraction and replacement methods.
data.frame
for usual data frame creation and
manipulation.
hist
for details on the calculation of breakpoints.
## Most common usage using a predetermined set of group ## boundaries and group frequencies. cj <- c(0, 25, 50, 100, 250, 500, 1000) nj <- c(30, 31, 57, 42, 45, 10) (x <- grouped.data(Group = cj, Frequency = nj)) class(x) x[, 1] # group boundaries x[, 2] # group frequencies ## Multiple frequency columns are supported x <- sample(1:100, 9) y <- sample(1:100, 9) grouped.data(cj = 1:10, nj.1 = x, nj.2 = y) ## Alternative usage with grouping of individual data. grouped.data(x) # automatic breakpoints grouped.data(x, breaks = 7) # forced number of groups grouped.data(x, breaks = c(0,25,75,100)) # specified groups grouped.data(x, y, breaks = c(0,25,75,100)) # multiple data sets ## Not run: ## Providing two or more data sets and automatic breakpoints is ## very error-prone since the range of the first data set has to ## include the ranges of all the other data sets. range(x) range(y) grouped.data(x, y, group = TRUE) ## End(Not run)
## Most common usage using a predetermined set of group ## boundaries and group frequencies. cj <- c(0, 25, 50, 100, 250, 500, 1000) nj <- c(30, 31, 57, 42, 45, 10) (x <- grouped.data(Group = cj, Frequency = nj)) class(x) x[, 1] # group boundaries x[, 2] # group frequencies ## Multiple frequency columns are supported x <- sample(1:100, 9) y <- sample(1:100, 9) grouped.data(cj = 1:10, nj.1 = x, nj.2 = y) ## Alternative usage with grouping of individual data. grouped.data(x) # automatic breakpoints grouped.data(x, breaks = 7) # forced number of groups grouped.data(x, breaks = c(0,25,75,100)) # specified groups grouped.data(x, y, breaks = c(0,25,75,100)) # multiple data sets ## Not run: ## Providing two or more data sets and automatic breakpoints is ## very error-prone since the range of the first data set has to ## include the ranges of all the other data sets. range(x) range(y) grouped.data(x, y, group = TRUE) ## End(Not run)
Density function, distribution function, quantile function, random
generation and raw moments for the Gumbel extreme value distribution
with parameters alpha
and scale
.
dgumbel(x, alpha, scale, log = FALSE) pgumbel(q, alpha, scale, lower.tail = TRUE, log.p = FALSE) qgumbel(p, alpha, scale, lower.tail = TRUE, log.p = FALSE) rgumbel(n, alpha, scale) mgumbel(order, alpha, scale) mgfgumbel(t, alpha, scale, log = FALSE)
dgumbel(x, alpha, scale, log = FALSE) pgumbel(q, alpha, scale, lower.tail = TRUE, log.p = FALSE) qgumbel(p, alpha, scale, lower.tail = TRUE, log.p = FALSE) rgumbel(n, alpha, scale) mgumbel(order, alpha, scale) mgfgumbel(t, alpha, scale, log = FALSE)
x , q
|
vector of quantiles. |
p |
vector of probabilities. |
n |
number of observations. If |
alpha |
location parameter. |
scale |
parameter. Must be strictly positive. |
log , log.p
|
logical; if |
lower.tail |
logical; if |
order |
order of the moment. Only values |
t |
numeric vector. |
The Gumbel distribution with parameters alpha
and
scale
has distribution
function:
for ,
and
.
The mode of the distribution is in , the mean is
, where
is the Euler-Mascheroni constant, and the variance is
.
dgumbel
gives the density,
pgumbel
gives the distribution function,
qgumbel
gives the quantile function,
rgumbel
generates random deviates,
mgumbel
gives the th raw moment,
, and
mgfgamma
gives the moment generating function in t
.
Invalid arguments will result in return value NaN
, with a warning.
Distribution also knonw as the generalized extreme value distribution Type-I.
The "distributions"
package vignette provides the
interrelations between the continuous size distributions in
actuar and the complete formulas underlying the above functions.
Vincent Goulet [email protected]
Klugman, S. A., Panjer, H. H. and Willmot, G. E. (2012), Loss Models, From Data to Decisions, Fourth Edition, Wiley.
dgumbel(c(-5, 0, 10, 20), 0.5, 2) p <- (1:10)/10 pgumbel(qgumbel(p, 2, 3), 2, 3) curve(pgumbel(x, 0.5, 2), from = -5, to = 20, col = "red") curve(pgumbel(x, 1.0, 2), add = TRUE, col = "green") curve(pgumbel(x, 1.5, 3), add = TRUE, col = "blue") curve(pgumbel(x, 3.0, 4), add = TRUE, col = "cyan") a <- 3; s <- 4 mgumbel(1, a, s) # mean a - s * digamma(1) # same mgumbel(2, a, s) - mgumbel(1, a, s)^2 # variance (pi * s)^2/6 # same
dgumbel(c(-5, 0, 10, 20), 0.5, 2) p <- (1:10)/10 pgumbel(qgumbel(p, 2, 3), 2, 3) curve(pgumbel(x, 0.5, 2), from = -5, to = 20, col = "red") curve(pgumbel(x, 1.0, 2), add = TRUE, col = "green") curve(pgumbel(x, 1.5, 3), add = TRUE, col = "blue") curve(pgumbel(x, 3.0, 4), add = TRUE, col = "cyan") a <- 3; s <- 4 mgumbel(1, a, s) # mean a - s * digamma(1) # same mgumbel(2, a, s) - mgumbel(1, a, s)^2 # variance (pi * s)^2/6 # same
Hachemeister (1975) data set giving average claim amounts in private passenger bodily injury insurance in five U.S. states over 12 quarters between July 1970 and June 1973 and the corresponding number of claims.
hachemeister
hachemeister
A matrix with 5 rows and the following 25 columns:
state
the state number;
ratio.1
, ..., ratio.12
the average claim amounts;
weight.1
, ..., weight.12
the corresponding number of claims.
Hachemeister, C. A. (1975), Credibility for regression models with application to trend, Proceedings of the Berkeley Actuarial Research Conference on Credibility, Academic Press.
This method for the generic function hist
is mainly
useful to plot the histogram of grouped data. If plot = FALSE
,
the resulting object of class "histogram"
is returned for
compatibility with hist.default
, but does not contain
much information not already in x
.
## S3 method for class 'grouped.data' hist(x, freq = NULL, probability = !freq, density = NULL, angle = 45, col = NULL, border = NULL, main = paste("Histogram of" , xname), xlim = range(x), ylim = NULL, xlab = xname, ylab, axes = TRUE, plot = TRUE, labels = FALSE, ...)
## S3 method for class 'grouped.data' hist(x, freq = NULL, probability = !freq, density = NULL, angle = 45, col = NULL, border = NULL, main = paste("Histogram of" , xname), xlim = range(x), ylim = NULL, xlab = xname, ylab, axes = TRUE, plot = TRUE, labels = FALSE, ...)
x |
an object of class |
freq |
logical; if |
probability |
an alias for |
density |
the density of shading lines, in lines per inch.
The default value of |
angle |
the slope of shading lines, given as an angle in degrees (counter-clockwise). |
col |
a colour to be used to fill the bars.
The default of |
border |
the color of the border around the bars. The default is to use the standard foreground color. |
main , xlab , ylab
|
these arguments to |
xlim , ylim
|
the range of x and y values with sensible defaults.
Note that |
axes |
logical. If |
plot |
logical. If |
labels |
logical or character. Additionally draw labels on top
of bars, if not |
... |
further graphical parameters passed to
|
An object of class "histogram"
which is a list with components:
breaks |
the |
counts |
|
density |
the relative frequencies within each group
|
intensities |
same as |
mids |
the |
xname |
a character string with the actual |
equidist |
logical, indicating if the distances between
|
The resulting value does not depend on the values of
the arguments freq
(or probability
)
or plot
. This is intentionally different from S.
Klugman, S. A., Panjer, H. H. and Willmot, G. E. (1998), Loss Models, From Data to Decisions, Wiley.
hist
and hist.default
for histograms of
individual data and fancy examples.
data(gdental) hist(gdental)
data(gdental) hist(gdental)
Density function, distribution function, quantile function, random
generation, raw moments and limited moments for the Inverse Burr
distribution with parameters shape1
, shape2
and
scale
.
dinvburr(x, shape1, shape2, rate = 1, scale = 1/rate, log = FALSE) pinvburr(q, shape1, shape2, rate = 1, scale = 1/rate, lower.tail = TRUE, log.p = FALSE) qinvburr(p, shape1, shape2, rate = 1, scale = 1/rate, lower.tail = TRUE, log.p = FALSE) rinvburr(n, shape1, shape2, rate = 1, scale = 1/rate) minvburr(order, shape1, shape2, rate = 1, scale = 1/rate) levinvburr(limit, shape1, shape2, rate = 1, scale = 1/rate, order = 1)
dinvburr(x, shape1, shape2, rate = 1, scale = 1/rate, log = FALSE) pinvburr(q, shape1, shape2, rate = 1, scale = 1/rate, lower.tail = TRUE, log.p = FALSE) qinvburr(p, shape1, shape2, rate = 1, scale = 1/rate, lower.tail = TRUE, log.p = FALSE) rinvburr(n, shape1, shape2, rate = 1, scale = 1/rate) minvburr(order, shape1, shape2, rate = 1, scale = 1/rate) levinvburr(limit, shape1, shape2, rate = 1, scale = 1/rate, order = 1)
x , q
|
vector of quantiles. |
p |
vector of probabilities. |
n |
number of observations. If |
shape1 , shape2 , scale
|
parameters. Must be strictly positive. |
rate |
an alternative way to specify the scale. |
log , log.p
|
logical; if |
lower.tail |
logical; if |
order |
order of the moment. |
limit |
limit of the loss variable. |
The inverse Burr distribution with parameters shape1
,
shape2
and
scale
, has density:
for ,
,
and
.
The inverse Burr is the distribution of the random variable
where has a beta distribution with parameters
and
.
The inverse Burr distribution has the following special cases:
A Loglogistic distribution when shape1
== 1
;
An Inverse Pareto distribution when
shape2 == 1
;
An Inverse Paralogistic distribution
when shape1 == shape2
.
The th raw moment of the random variable
is
,
.
The th limited moment at some limit
is
,
and
not a negative integer.
dinvburr
gives the density,
invburr
gives the distribution function,
qinvburr
gives the quantile function,
rinvburr
generates random deviates,
minvburr
gives the th raw moment, and
levinvburr
gives the th moment of the limited loss
variable.
Invalid arguments will result in return value NaN
, with a warning.
levinvburr
computes the limited expected value using
betaint
.
Also known as the Dagum distribution. See also Kleiber and Kotz (2003) for alternative names and parametrizations.
The "distributions"
package vignette provides the
interrelations between the continuous size distributions in
actuar and the complete formulas underlying the above functions.
Vincent Goulet [email protected] and Mathieu Pigeon
Kleiber, C. and Kotz, S. (2003), Statistical Size Distributions in Economics and Actuarial Sciences, Wiley.
Klugman, S. A., Panjer, H. H. and Willmot, G. E. (2012), Loss Models, From Data to Decisions, Fourth Edition, Wiley.
exp(dinvburr(2, 2, 3, 1, log = TRUE)) p <- (1:10)/10 pinvburr(qinvburr(p, 2, 3, 1), 2, 3, 1) ## variance minvburr(2, 2, 3, 1) - minvburr(1, 2, 3, 1) ^ 2 ## case with 1 - order/shape2 > 0 levinvburr(10, 2, 3, 1, order = 2) ## case with 1 - order/shape2 < 0 levinvburr(10, 2, 1.5, 1, order = 2)
exp(dinvburr(2, 2, 3, 1, log = TRUE)) p <- (1:10)/10 pinvburr(qinvburr(p, 2, 3, 1), 2, 3, 1) ## variance minvburr(2, 2, 3, 1) - minvburr(1, 2, 3, 1) ^ 2 ## case with 1 - order/shape2 > 0 levinvburr(10, 2, 3, 1, order = 2) ## case with 1 - order/shape2 < 0 levinvburr(10, 2, 1.5, 1, order = 2)
Density function, distribution function, quantile function, random generation
raw moments and limited moments for the Inverse Exponential
distribution with parameter scale
.
dinvexp(x, rate = 1, scale = 1/rate, log = FALSE) pinvexp(q, rate = 1, scale = 1/rate, lower.tail = TRUE, log.p = FALSE) qinvexp(p, rate = 1, scale = 1/rate, lower.tail = TRUE, log.p = FALSE) rinvexp(n, rate = 1, scale = 1/rate) minvexp(order, rate = 1, scale = 1/rate) levinvexp(limit, rate = 1, scale = 1/rate, order)
dinvexp(x, rate = 1, scale = 1/rate, log = FALSE) pinvexp(q, rate = 1, scale = 1/rate, lower.tail = TRUE, log.p = FALSE) qinvexp(p, rate = 1, scale = 1/rate, lower.tail = TRUE, log.p = FALSE) rinvexp(n, rate = 1, scale = 1/rate) minvexp(order, rate = 1, scale = 1/rate) levinvexp(limit, rate = 1, scale = 1/rate, order)
x , q
|
vector of quantiles. |
p |
vector of probabilities. |
n |
number of observations. If |
scale |
parameter. Must be strictly positive. |
rate |
an alternative way to specify the scale. |
log , log.p
|
logical; if |
lower.tail |
logical; if |
order |
order of the moment. |
limit |
limit of the loss variable. |
The inverse exponential distribution with parameter scale
has density:
for and
.
The th raw moment of the random variable
is
,
, and the
th limited moment at
some limit
is
, all
.
dinvexp
gives the density,
pinvexp
gives the distribution function,
qinvexp
gives the quantile function,
rinvexp
generates random deviates,
minvexp
gives the th raw moment, and
levinvexp
calculates the th limited moment.
Invalid arguments will result in return value NaN
, with a warning.
levinvexp
computes the limited expected value using
gammainc
from package expint.
The "distributions"
package vignette provides the
interrelations between the continuous size distributions in
actuar and the complete formulas underlying the above functions.
Vincent Goulet [email protected] and Mathieu Pigeon
Klugman, S. A., Panjer, H. H. and Willmot, G. E. (2012), Loss Models, From Data to Decisions, Fourth Edition, Wiley.
exp(dinvexp(2, 2, log = TRUE)) p <- (1:10)/10 pinvexp(qinvexp(p, 2), 2) minvexp(0.5, 2)
exp(dinvexp(2, 2, log = TRUE)) p <- (1:10)/10 pinvexp(qinvexp(p, 2), 2) minvexp(0.5, 2)
Density function, distribution function, quantile function, random generation,
raw moments, and limited moments for the Inverse Gamma distribution
with parameters shape
and scale
.
dinvgamma(x, shape, rate = 1, scale = 1/rate, log = FALSE) pinvgamma(q, shape, rate = 1, scale = 1/rate, lower.tail = TRUE, log.p = FALSE) qinvgamma(p, shape, rate = 1, scale = 1/rate, lower.tail = TRUE, log.p = FALSE) rinvgamma(n, shape, rate = 1, scale = 1/rate) minvgamma(order, shape, rate = 1, scale = 1/rate) levinvgamma(limit, shape, rate = 1, scale = 1/rate, order = 1) mgfinvgamma(t, shape, rate =1, scale = 1/rate, log =FALSE)
dinvgamma(x, shape, rate = 1, scale = 1/rate, log = FALSE) pinvgamma(q, shape, rate = 1, scale = 1/rate, lower.tail = TRUE, log.p = FALSE) qinvgamma(p, shape, rate = 1, scale = 1/rate, lower.tail = TRUE, log.p = FALSE) rinvgamma(n, shape, rate = 1, scale = 1/rate) minvgamma(order, shape, rate = 1, scale = 1/rate) levinvgamma(limit, shape, rate = 1, scale = 1/rate, order = 1) mgfinvgamma(t, shape, rate =1, scale = 1/rate, log =FALSE)
x , q
|
vector of quantiles. |
p |
vector of probabilities. |
n |
number of observations. If |
shape , scale
|
parameters. Must be strictly positive. |
rate |
an alternative way to specify the scale. |
log , log.p
|
logical; if |
lower.tail |
logical; if |
order |
order of the moment. |
limit |
limit of the loss variable. |
t |
numeric vector. |
The inverse gamma distribution with parameters shape
and
scale
has density:
for ,
and
.
(Here
is the function implemented
by R's
gamma()
and defined in its help.)
The special case shape == 1
is an
Inverse Exponential distribution.
The th raw moment of the random variable
is
,
, and the
th
limited moment at some limit
is
, all
.
The moment generating function is given by .
dinvgamma
gives the density,
pinvgamma
gives the distribution function,
qinvgamma
gives the quantile function,
rinvgamma
generates random deviates,
minvgamma
gives the th raw moment,
levinvgamma
gives the th moment of the limited loss
variable, and
mgfinvgamma
gives the moment generating function in t
.
Invalid arguments will result in return value NaN
, with a warning.
levinvgamma
computes the limited expected value using
gammainc
from package expint.
Also known as the Vinci distribution. See also Kleiber and Kotz (2003) for alternative names and parametrizations.
The "distributions"
package vignette provides the
interrelations between the continuous size distributions in
actuar and the complete formulas underlying the above functions.
Vincent Goulet [email protected] and Mathieu Pigeon
Kleiber, C. and Kotz, S. (2003), Statistical Size Distributions in Economics and Actuarial Sciences, Wiley.
Klugman, S. A., Panjer, H. H. and Willmot, G. E. (2012), Loss Models, From Data to Decisions, Fourth Edition, Wiley.
exp(dinvgamma(2, 3, 4, log = TRUE)) p <- (1:10)/10 pinvgamma(qinvgamma(p, 2, 3), 2, 3) minvgamma(-1, 2, 2) ^ 2 levinvgamma(10, 2, 2, order = 1) mgfinvgamma(-1, 3, 2)
exp(dinvgamma(2, 3, 4, log = TRUE)) p <- (1:10)/10 pinvgamma(qinvgamma(p, 2, 3), 2, 3) minvgamma(-1, 2, 2) ^ 2 levinvgamma(10, 2, 2, order = 1) mgfinvgamma(-1, 3, 2)
Density function, distribution function, quantile function, random
generation, raw moments, limited moments and moment generating
function for the Inverse Gaussian distribution with parameters
mean
and shape
.
dinvgauss(x, mean, shape = 1, dispersion = 1/shape, log = FALSE) pinvgauss(q, mean, shape = 1, dispersion = 1/shape, lower.tail = TRUE, log.p = FALSE) qinvgauss(p, mean, shape = 1, dispersion = 1/shape, lower.tail = TRUE, log.p = FALSE, tol = 1e-14, maxit = 100, echo = FALSE, trace = echo) rinvgauss(n, mean, shape = 1, dispersion = 1/shape) minvgauss(order, mean, shape = 1, dispersion = 1/shape) levinvgauss(limit, mean, shape = 1, dispersion = 1/shape, order = 1) mgfinvgauss(t, mean, shape = 1, dispersion = 1/shape, log = FALSE)
dinvgauss(x, mean, shape = 1, dispersion = 1/shape, log = FALSE) pinvgauss(q, mean, shape = 1, dispersion = 1/shape, lower.tail = TRUE, log.p = FALSE) qinvgauss(p, mean, shape = 1, dispersion = 1/shape, lower.tail = TRUE, log.p = FALSE, tol = 1e-14, maxit = 100, echo = FALSE, trace = echo) rinvgauss(n, mean, shape = 1, dispersion = 1/shape) minvgauss(order, mean, shape = 1, dispersion = 1/shape) levinvgauss(limit, mean, shape = 1, dispersion = 1/shape, order = 1) mgfinvgauss(t, mean, shape = 1, dispersion = 1/shape, log = FALSE)
x , q
|
vector of quantiles. |
p |
vector of probabilities. |
n |
number of observations. If |
mean , shape
|
parameters. Must be strictly positive. Infinite values are supported. |
dispersion |
an alternative way to specify the shape. |
log , log.p
|
logical; if |
lower.tail |
logical; if |
order |
order of the moment. Only |
limit |
limit of the loss variable. |
tol |
small positive value. Tolerance to assess convergence in the Newton computation of quantiles. |
maxit |
positive integer; maximum number of recursions in the Newton computation of quantiles. |
echo , trace
|
logical; echo the recursions to screen in the Newton computation of quantiles. |
t |
numeric vector. |
The inverse Gaussian distribution with parameters mean
and
dispersion
has density:
for ,
and
.
The limiting case is an inverse
chi-squared distribution (or inverse gamma with
shape
and
rate
phi
). This distribution has no
finite strictly positive, integer moments.
The limiting case is an infinite spike in
.
If the random variable is IG
, then
is IG
.
The th raw moment of the random variable
is
,
, the limited expected
value at some limit
is
and
the moment generating function is
.
The moment generating function of the inverse guassian is defined for
t <= 1/(2 * mean^2 * phi)
.
dinvgauss
gives the density,
pinvgauss
gives the distribution function,
qinvgauss
gives the quantile function,
rinvgauss
generates random deviates,
minvgauss
gives the th raw moment,
levinvgauss
gives the limited expected value, and
mgfinvgauss
gives the moment generating function in t
.
Invalid arguments will result in return value NaN
, with a warning.
Functions dinvgauss
, pinvgauss
and qinvgauss
are
C implementations of functions of the same name in package
statmod; see Giner and Smyth (2016).
Devroye (1986, chapter 4) provides a nice presentation of the algorithm to generate random variates from an inverse Gaussian distribution.
The "distributions"
package vignette provides the
interrelations between the continuous size distributions in
actuar and the complete formulas underlying the above functions.
Vincent Goulet [email protected]
Giner, G. and Smyth, G. K. (2016), “statmod: Probability Calculations for the Inverse Gaussian Distribution”, R Journal, vol. 8, no 1, p. 339-351. https://journal.r-project.org/archive/2016-1/giner-smyth.pdf
Chhikara, R. S. and Folk, T. L. (1989), The Inverse Gaussian Distribution: Theory, Methodology and Applications, Decker.
Devroye, L. (1986), Non-Uniform Random Variate Generation, Springer-Verlag. https://luc.devroye.org/rnbookindex.html
dinvgamma
for the inverse gamma distribution.
dinvgauss(c(-1, 0, 1, 2, Inf), mean = 1.5, dis = 0.7) dinvgauss(c(-1, 0, 1, 2, Inf), mean = Inf, dis = 0.7) dinvgauss(c(-1, 0, 1, 2, Inf), mean = 1.5, dis = Inf) # spike at zero ## Typical graphical representations of the inverse Gaussian ## distribution. First fixed mean and varying shape; second ## varying mean and fixed shape. col = c("red", "blue", "green", "cyan", "yellow", "black") par = c(0.125, 0.5, 1, 2, 8, 32) curve(dinvgauss(x, 1, par[1]), from = 0, to = 2, col = col[1]) for (i in 2:6) curve(dinvgauss(x, 1, par[i]), add = TRUE, col = col[i]) curve(dinvgauss(x, par[1], 1), from = 0, to = 2, col = col[1]) for (i in 2:6) curve(dinvgauss(x, par[i], 1), add = TRUE, col = col[i]) pinvgauss(qinvgauss((1:10)/10, 1.5, shape = 2), 1.5, 2) minvgauss(1:4, 1.5, 2) levinvgauss(c(0, 0.5, 1, 1.2, 10, Inf), 1.5, 2)
dinvgauss(c(-1, 0, 1, 2, Inf), mean = 1.5, dis = 0.7) dinvgauss(c(-1, 0, 1, 2, Inf), mean = Inf, dis = 0.7) dinvgauss(c(-1, 0, 1, 2, Inf), mean = 1.5, dis = Inf) # spike at zero ## Typical graphical representations of the inverse Gaussian ## distribution. First fixed mean and varying shape; second ## varying mean and fixed shape. col = c("red", "blue", "green", "cyan", "yellow", "black") par = c(0.125, 0.5, 1, 2, 8, 32) curve(dinvgauss(x, 1, par[1]), from = 0, to = 2, col = col[1]) for (i in 2:6) curve(dinvgauss(x, 1, par[i]), add = TRUE, col = col[i]) curve(dinvgauss(x, par[1], 1), from = 0, to = 2, col = col[1]) for (i in 2:6) curve(dinvgauss(x, par[i], 1), add = TRUE, col = col[i]) pinvgauss(qinvgauss((1:10)/10, 1.5, shape = 2), 1.5, 2) minvgauss(1:4, 1.5, 2) levinvgauss(c(0, 0.5, 1, 1.2, 10, Inf), 1.5, 2)
Density function, distribution function, quantile function, random generation,
raw moments and limited moments for the Inverse Paralogistic
distribution with parameters shape
and scale
.
dinvparalogis(x, shape, rate = 1, scale = 1/rate, log = FALSE) pinvparalogis(q, shape, rate = 1, scale = 1/rate, lower.tail = TRUE, log.p = FALSE) qinvparalogis(p, shape, rate = 1, scale = 1/rate, lower.tail = TRUE, log.p = FALSE) rinvparalogis(n, shape, rate = 1, scale = 1/rate) minvparalogis(order, shape, rate = 1, scale = 1/rate) levinvparalogis(limit, shape, rate = 1, scale = 1/rate, order = 1)
dinvparalogis(x, shape, rate = 1, scale = 1/rate, log = FALSE) pinvparalogis(q, shape, rate = 1, scale = 1/rate, lower.tail = TRUE, log.p = FALSE) qinvparalogis(p, shape, rate = 1, scale = 1/rate, lower.tail = TRUE, log.p = FALSE) rinvparalogis(n, shape, rate = 1, scale = 1/rate) minvparalogis(order, shape, rate = 1, scale = 1/rate) levinvparalogis(limit, shape, rate = 1, scale = 1/rate, order = 1)
x , q
|
vector of quantiles. |
p |
vector of probabilities. |
n |
number of observations. If |
shape , scale
|
parameters. Must be strictly positive. |
rate |
an alternative way to specify the scale. |
log , log.p
|
logical; if |
lower.tail |
logical; if |
order |
order of the moment. |
limit |
limit of the loss variable. |
The inverse paralogistic distribution with parameters shape
and
scale
has density:
for ,
and
.
The th raw moment of the random variable
is
,
.
The th limited moment at some limit
is
,
and
not a negative integer.
dinvparalogis
gives the density,
pinvparalogis
gives the distribution function,
qinvparalogis
gives the quantile function,
rinvparalogis
generates random deviates,
minvparalogis
gives the th raw moment, and
levinvparalogis
gives the th moment of the limited loss
variable.
Invalid arguments will result in return value NaN
, with a warning.
levinvparalogis
computes computes the limited expected value using
betaint
.
See Kleiber and Kotz (2003) for alternative names and parametrizations.
The "distributions"
package vignette provides the
interrelations between the continuous size distributions in
actuar and the complete formulas underlying the above functions.
Vincent Goulet [email protected] and Mathieu Pigeon
Kleiber, C. and Kotz, S. (2003), Statistical Size Distributions in Economics and Actuarial Sciences, Wiley.
Klugman, S. A., Panjer, H. H. and Willmot, G. E. (2012), Loss Models, From Data to Decisions, Fourth Edition, Wiley.
exp(dinvparalogis(2, 3, 4, log = TRUE)) p <- (1:10)/10 pinvparalogis(qinvparalogis(p, 2, 3), 2, 3) ## first negative moment minvparalogis(-1, 2, 2) ## case with 1 - order/shape > 0 levinvparalogis(10, 2, 2, order = 1) ## case with 1 - order/shape < 0 levinvparalogis(10, 2/3, 2, order = 1)
exp(dinvparalogis(2, 3, 4, log = TRUE)) p <- (1:10)/10 pinvparalogis(qinvparalogis(p, 2, 3), 2, 3) ## first negative moment minvparalogis(-1, 2, 2) ## case with 1 - order/shape > 0 levinvparalogis(10, 2, 2, order = 1) ## case with 1 - order/shape < 0 levinvparalogis(10, 2/3, 2, order = 1)
Density function, distribution function, quantile function, random generation
raw moments and limited moments for the Inverse Pareto distribution
with parameters shape
and scale
.
dinvpareto(x, shape, scale, log = FALSE) pinvpareto(q, shape, scale, lower.tail = TRUE, log.p = FALSE) qinvpareto(p, shape, scale, lower.tail = TRUE, log.p = FALSE) rinvpareto(n, shape, scale) minvpareto(order, shape, scale) levinvpareto(limit, shape, scale, order = 1)
dinvpareto(x, shape, scale, log = FALSE) pinvpareto(q, shape, scale, lower.tail = TRUE, log.p = FALSE) qinvpareto(p, shape, scale, lower.tail = TRUE, log.p = FALSE) rinvpareto(n, shape, scale) minvpareto(order, shape, scale) levinvpareto(limit, shape, scale, order = 1)
x , q
|
vector of quantiles. |
p |
vector of probabilities. |
n |
number of observations. If |
shape , scale
|
parameters. Must be strictly positive. |
log , log.p
|
logical; if |
lower.tail |
logical; if |
order |
order of the moment. |
limit |
limit of the loss variable. |
The inverse Pareto distribution with parameters shape
and
scale
has density:
for ,
and
.
The th raw moment of the random variable
is
,
.
The th limited moment at some limit
is
,
.
dinvpareto
gives the density,
pinvpareto
gives the distribution function,
qinvpareto
gives the quantile function,
rinvpareto
generates random deviates,
minvpareto
gives the th raw moment, and
levinvpareto
calculates the th limited moment.
Invalid arguments will result in return value NaN
, with a warning.
Evaluation of levinvpareto
is done using numerical integration.
The "distributions"
package vignette provides the
interrelations between the continuous size distributions in
actuar and the complete formulas underlying the above functions.
Vincent Goulet [email protected] and Mathieu Pigeon
Klugman, S. A., Panjer, H. H. and Willmot, G. E. (2012), Loss Models, From Data to Decisions, Fourth Edition, Wiley.
exp(dinvpareto(2, 3, 4, log = TRUE)) p <- (1:10)/10 pinvpareto(qinvpareto(p, 2, 3), 2, 3) minvpareto(0.5, 1, 2)
exp(dinvpareto(2, 3, 4, log = TRUE)) p <- (1:10)/10 pinvpareto(qinvpareto(p, 2, 3), 2, 3) minvpareto(0.5, 1, 2)
Density function, distribution function, quantile function, random generation,
raw moments, and limited moments for the Inverse Transformed Gamma
distribution with parameters shape1
, shape2
and
scale
.
dinvtrgamma(x, shape1, shape2, rate = 1, scale = 1/rate, log = FALSE) pinvtrgamma(q, shape1, shape2, rate = 1, scale = 1/rate, lower.tail = TRUE, log.p = FALSE) qinvtrgamma(p, shape1, shape2, rate = 1, scale = 1/rate, lower.tail = TRUE, log.p = FALSE) rinvtrgamma(n, shape1, shape2, rate = 1, scale = 1/rate) minvtrgamma(order, shape1, shape2, rate = 1, scale = 1/rate) levinvtrgamma(limit, shape1, shape2, rate = 1, scale = 1/rate, order = 1)
dinvtrgamma(x, shape1, shape2, rate = 1, scale = 1/rate, log = FALSE) pinvtrgamma(q, shape1, shape2, rate = 1, scale = 1/rate, lower.tail = TRUE, log.p = FALSE) qinvtrgamma(p, shape1, shape2, rate = 1, scale = 1/rate, lower.tail = TRUE, log.p = FALSE) rinvtrgamma(n, shape1, shape2, rate = 1, scale = 1/rate) minvtrgamma(order, shape1, shape2, rate = 1, scale = 1/rate) levinvtrgamma(limit, shape1, shape2, rate = 1, scale = 1/rate, order = 1)
x , q
|
vector of quantiles. |
p |
vector of probabilities. |
n |
number of observations. If |
shape1 , shape2 , scale
|
parameters. Must be strictly positive. |
rate |
an alternative way to specify the scale. |
log , log.p
|
logical; if |
lower.tail |
logical; if |
order |
order of the moment. |
limit |
limit of the loss variable. |
The inverse transformed gamma distribution with parameters
shape1
,
shape2
and
scale
, has density:
for ,
,
and
.
(Here
is the function implemented
by R's
gamma()
and defined in its help.)
The inverse transformed gamma is the distribution of the random
variable
where
has a gamma distribution with shape parameter
and scale parameter
or, equivalently, of the
random variable
with
a gamma distribution with shape parameter
and scale parameter
.
The inverse transformed gamma distribution defines a family of distributions with the following special cases:
An Inverse Gamma distribution when
shape2 == 1
;
An Inverse Weibull distribution when
shape1 == 1
;
An Inverse Exponential distribution when
shape1 == shape2 == 1
;
The th raw moment of the random variable
is
,
, and
the
th limited moment at some limit
is
for all
.
dinvtrgamma
gives the density,
pinvtrgamma
gives the distribution function,
qinvtrgamma
gives the quantile function,
rinvtrgamma
generates random deviates,
minvtrgamma
gives the th raw moment, and
levinvtrgamma
gives the th moment of the limited loss
variable.
Invalid arguments will result in return value NaN
, with a warning.
levinvtrgamma
computes the limited expected value using
gammainc
from package expint.
Distribution also known as the Inverse Generalized Gamma. See also Kleiber and Kotz (2003) for alternative names and parametrizations.
The "distributions"
package vignette provides the
interrelations between the continuous size distributions in
actuar and the complete formulas underlying the above functions.
Vincent Goulet [email protected] and Mathieu Pigeon
Kleiber, C. and Kotz, S. (2003), Statistical Size Distributions in Economics and Actuarial Sciences, Wiley.
Klugman, S. A., Panjer, H. H. and Willmot, G. E. (2012), Loss Models, From Data to Decisions, Fourth Edition, Wiley.
exp(dinvtrgamma(2, 3, 4, 5, log = TRUE)) p <- (1:10)/10 pinvtrgamma(qinvtrgamma(p, 2, 3, 4), 2, 3, 4) minvtrgamma(2, 3, 4, 5) levinvtrgamma(200, 3, 4, 5, order = 2)
exp(dinvtrgamma(2, 3, 4, 5, log = TRUE)) p <- (1:10)/10 pinvtrgamma(qinvtrgamma(p, 2, 3, 4), 2, 3, 4) minvtrgamma(2, 3, 4, 5) levinvtrgamma(200, 3, 4, 5, order = 2)
Density function, distribution function, quantile function, random generation,
raw moments and limited moments for the Inverse Weibull distribution
with parameters shape
and scale
.
dinvweibull(x, shape, rate = 1, scale = 1/rate, log = FALSE) pinvweibull(q, shape, rate = 1, scale = 1/rate, lower.tail = TRUE, log.p = FALSE) qinvweibull(p, shape, rate = 1, scale = 1/rate, lower.tail = TRUE, log.p = FALSE) rinvweibull(n, shape, rate = 1, scale = 1/rate) minvweibull(order, shape, rate = 1, scale = 1/rate) levinvweibull(limit, shape, rate = 1, scale = 1/rate, order = 1)
dinvweibull(x, shape, rate = 1, scale = 1/rate, log = FALSE) pinvweibull(q, shape, rate = 1, scale = 1/rate, lower.tail = TRUE, log.p = FALSE) qinvweibull(p, shape, rate = 1, scale = 1/rate, lower.tail = TRUE, log.p = FALSE) rinvweibull(n, shape, rate = 1, scale = 1/rate) minvweibull(order, shape, rate = 1, scale = 1/rate) levinvweibull(limit, shape, rate = 1, scale = 1/rate, order = 1)
x , q
|
vector of quantiles. |
p |
vector of probabilities. |
n |
number of observations. If |
shape , scale
|
parameters. Must be strictly positive. |
rate |
an alternative way to specify the scale. |
log , log.p
|
logical; if |
lower.tail |
logical; if |
order |
order of the moment. |
limit |
limit of the loss variable. |
The inverse Weibull distribution with parameters shape
and
scale
has density:
for ,
and
.
The special case shape == 1
is an
Inverse Exponential distribution.
The th raw moment of the random variable
is
,
, and the
th
limited moment at some limit
is
, all
.
dinvweibull
gives the density,
pinvweibull
gives the distribution function,
qinvweibull
gives the quantile function,
rinvweibull
generates random deviates,
minvweibull
gives the th raw moment, and
levinvweibull
gives the th moment of the limited loss
variable.
Invalid arguments will result in return value NaN
, with a warning.
levinvweibull
computes the limited expected value using
gammainc
from package expint.
Distribution also knonw as the log-Gompertz. See also Kleiber and Kotz (2003) for alternative names and parametrizations.
The "distributions"
package vignette provides the
interrelations between the continuous size distributions in
actuar and the complete formulas underlying the above functions.
Vincent Goulet [email protected] and Mathieu Pigeon
Kleiber, C. and Kotz, S. (2003), Statistical Size Distributions in Economics and Actuarial Sciences, Wiley.
Klugman, S. A., Panjer, H. H. and Willmot, G. E. (2012), Loss Models, From Data to Decisions, Fourth Edition, Wiley.
exp(dinvweibull(2, 3, 4, log = TRUE)) p <- (1:10)/10 pinvweibull(qinvweibull(p, 2, 3), 2, 3) mlgompertz(-1, 3, 3) levinvweibull(10, 2, 3, order = 1)
exp(dinvweibull(2, 3, 4, log = TRUE)) p <- (1:10)/10 pinvweibull(qinvweibull(p, 2, 3), 2, 3) mlgompertz(-1, 3, 3) levinvweibull(10, 2, 3, order = 1)
Density function, distribution function, quantile function and random
generation for the Logarithmic (or log-series) distribution with parameter
prob
.
dlogarithmic(x, prob, log = FALSE) plogarithmic(q, prob, lower.tail = TRUE, log.p = FALSE) qlogarithmic(p, prob, lower.tail = TRUE, log.p = FALSE) rlogarithmic(n, prob)
dlogarithmic(x, prob, log = FALSE) plogarithmic(q, prob, lower.tail = TRUE, log.p = FALSE) qlogarithmic(p, prob, lower.tail = TRUE, log.p = FALSE) rlogarithmic(n, prob)
x |
vector of (strictly positive integer) quantiles. |
q |
vector of quantiles. |
p |
vector of probabilities. |
n |
number of observations. If |
prob |
parameter. |
log , log.p
|
logical; if |
lower.tail |
logical; if |
The logarithmic (or log-series) distribution with parameter
prob
has probability mass function
with and for
,
.
The logarithmic distribution is the limiting case of the
zero-truncated negative binomial distribution with size
parameter equal to . Note that in this context, parameter
prob
generally corresponds to the probability of failure
of the zero-truncated negative binomial.
If an element of x
is not integer, the result of
dlogarithmic
is zero, with a warning.
The quantile is defined as the smallest value such that
, where
is the distribution function.
dlogarithmic
gives the probability mass function,
plogarithmic
gives the distribution function,
qlogarithmic
gives the quantile function, and
rlogarithmic
generates random deviates.
Invalid prob
will result in return value NaN
, with a warning.
The length of the result is determined by n
for
rlogarithmic
, and is the maximum of the lengths of the
numerical arguments for the other functions.
qlogarithmic
is based on qbinom
et al.; it uses the
Cornish–Fisher Expansion to include a skewness correction to a normal
approximation, followed by a search.
rlogarithmic
is an implementation of the LS and LK algorithms
of Kemp (1981) with automatic selection. As suggested by Devroye
(1986), the LS algorithm is used when prob < 0.95
, and the LK
algorithm otherwise.
Vincent Goulet [email protected]
Johnson, N. L., Kemp, A. W. and Kotz, S. (2005), Univariate Discrete Distributions, Third Edition, Wiley.
Klugman, S. A., Panjer, H. H. and Willmot, G. E. (2012), Loss Models, From Data to Decisions, Fourth Edition, Wiley.
Kemp, A. W. (1981), “Efficient Generation of Logarithmically Distributed Pseudo-Random Variables”, Journal of the Royal Statistical Society, Series C, vol. 30, p. 249-253.
Devroye, L. (1986), Non-Uniform Random Variate Generation, Springer-Verlag. https://luc.devroye.org/rnbookindex.html
dztnbinom
for the zero-truncated negative binomial
distribution.
## Table 1 of Kemp (1981) [also found in Johnson et al. (2005), chapter 7] p <- c(0.1, 0.3, 0.5, 0.7, 0.8, 0.85, 0.9, 0.95, 0.99, 0.995, 0.999, 0.9999) round(rbind(dlogarithmic(1, p), dlogarithmic(2, p), plogarithmic(9, p, lower.tail = FALSE), -p/((1 - p) * log(1 - p))), 2) qlogarithmic(plogarithmic(1:10, 0.9), 0.9) x <- rlogarithmic(1000, 0.8) y <- sort(unique(x)) plot(y, table(x)/length(x), type = "h", lwd = 2, pch = 19, col = "black", xlab = "x", ylab = "p(x)", main = "Empirical vs theoretical probabilities") points(y, dlogarithmic(y, prob = 0.8), pch = 19, col = "red") legend("topright", c("empirical", "theoretical"), lty = c(1, NA), pch = c(NA, 19), col = c("black", "red"))
## Table 1 of Kemp (1981) [also found in Johnson et al. (2005), chapter 7] p <- c(0.1, 0.3, 0.5, 0.7, 0.8, 0.85, 0.9, 0.95, 0.99, 0.995, 0.999, 0.9999) round(rbind(dlogarithmic(1, p), dlogarithmic(2, p), plogarithmic(9, p, lower.tail = FALSE), -p/((1 - p) * log(1 - p))), 2) qlogarithmic(plogarithmic(1:10, 0.9), 0.9) x <- rlogarithmic(1000, 0.8) y <- sort(unique(x)) plot(y, table(x)/length(x), type = "h", lwd = 2, pch = 19, col = "black", xlab = "x", ylab = "p(x)", main = "Empirical vs theoretical probabilities") points(y, dlogarithmic(y, prob = 0.8), pch = 19, col = "red") legend("topright", c("empirical", "theoretical"), lty = c(1, NA), pch = c(NA, 19), col = c("black", "red"))
Density function, distribution function, quantile function, random generation,
raw moments and limited moments for the Loggamma distribution with
parameters shapelog
and ratelog
.
dlgamma(x, shapelog, ratelog, log = FALSE) plgamma(q, shapelog, ratelog, lower.tail = TRUE, log.p = FALSE) qlgamma(p, shapelog, ratelog, lower.tail = TRUE, log.p = FALSE) rlgamma(n, shapelog, ratelog) mlgamma(order, shapelog, ratelog) levlgamma(limit, shapelog, ratelog, order = 1)
dlgamma(x, shapelog, ratelog, log = FALSE) plgamma(q, shapelog, ratelog, lower.tail = TRUE, log.p = FALSE) qlgamma(p, shapelog, ratelog, lower.tail = TRUE, log.p = FALSE) rlgamma(n, shapelog, ratelog) mlgamma(order, shapelog, ratelog) levlgamma(limit, shapelog, ratelog, order = 1)
x , q
|
vector of quantiles. |
p |
vector of probabilities. |
n |
number of observations. If |
shapelog , ratelog
|
parameters. Must be strictly positive. |
log , log.p
|
logical; if |
lower.tail |
logical; if |
order |
order of the moment. |
limit |
limit of the loss variable. |
The loggamma distribution with parameters shapelog
and
ratelog
has density:
for ,
and
.
(Here
is the function implemented
by R's
gamma()
and defined in its help.)
The loggamma is the distribution of the random variable
, where
has a gamma distribution with
shape parameter
and scale parameter
.
The th raw moment of the random variable
is
and the
th limited moment at some limit
is
,
.
dlgamma
gives the density,
plgamma
gives the distribution function,
qlgamma
gives the quantile function,
rlgamma
generates random deviates,
mlgamma
gives the th raw moment, and
levlgamma
gives the th moment of the limited loss
variable.
Invalid arguments will result in return value NaN
, with a warning.
The "distributions"
package vignette provides the
interrelations between the continuous size distributions in
actuar and the complete formulas underlying the above functions.
Vincent Goulet [email protected] and Mathieu Pigeon
Hogg, R. V. and Klugman, S. A. (1984), Loss Distributions, Wiley.
exp(dlgamma(2, 3, 4, log = TRUE)) p <- (1:10)/10 plgamma(qlgamma(p, 2, 3), 2, 3) mlgamma(2, 3, 4) - mlgamma(1, 3, 4)^2 levlgamma(10, 3, 4, order = 2)
exp(dlgamma(2, 3, 4, log = TRUE)) p <- (1:10)/10 plgamma(qlgamma(p, 2, 3), 2, 3) mlgamma(2, 3, 4) - mlgamma(1, 3, 4)^2 levlgamma(10, 3, 4, order = 2)
Density function, distribution function, quantile function, random generation,
raw moments and limited moments for the Loglogistic distribution with
parameters shape
and scale
.
dllogis(x, shape, rate = 1, scale = 1/rate, log = FALSE) pllogis(q, shape, rate = 1, scale = 1/rate, lower.tail = TRUE, log.p = FALSE) qllogis(p, shape, rate = 1, scale = 1/rate, lower.tail = TRUE, log.p = FALSE) rllogis(n, shape, rate = 1, scale = 1/rate) mllogis(order, shape, rate = 1, scale = 1/rate) levllogis(limit, shape, rate = 1, scale = 1/rate, order = 1)
dllogis(x, shape, rate = 1, scale = 1/rate, log = FALSE) pllogis(q, shape, rate = 1, scale = 1/rate, lower.tail = TRUE, log.p = FALSE) qllogis(p, shape, rate = 1, scale = 1/rate, lower.tail = TRUE, log.p = FALSE) rllogis(n, shape, rate = 1, scale = 1/rate) mllogis(order, shape, rate = 1, scale = 1/rate) levllogis(limit, shape, rate = 1, scale = 1/rate, order = 1)
x , q
|
vector of quantiles. |
p |
vector of probabilities. |
n |
number of observations. If |
shape , scale
|
parameters. Must be strictly positive. |
rate |
an alternative way to specify the scale. |
log , log.p
|
logical; if |
lower.tail |
logical; if |
order |
order of the moment. |
limit |
limit of the loss variable. |
The loglogistic distribution with parameters shape
and
scale
has density:
for ,
and
.
The th raw moment of the random variable
is
,
.
The th limited moment at some limit
is
,