Make a distribution object by specifying properties (e.g., cdf, density, mean, etc.). Some properties, if not included, will be calculated based on other properties that are included (e.g., quantile from cdf; variance from standard deviation). A list of these representations can be found in the details.
Usage
distribution(..., .vtype = NULL, .name = NULL)
is_distribution(object)
is.distribution(object)
Arguments
- ...
Name-value pairs for defining the distribution.
- .vtype
The variable type, typically "discrete" or "continuous". Can be any character vector of length 1; if not a character, is converted to one with
as.character()
.- .name
A name to give to the distribution. Can be any character vector of length 1; if not a character, is converted to one with
as.character()
.- object
Object to be tested
Details
Currently, the CDF (cdf
) is required to be specified, along with the PMF
(pmf
) for discrete distributions and density (density
) for continuous
distributions. Otherwise, the full extent of distribution properties will
not be accessible.
A distributional representation is a function that fully describes the
distribution. Besides cdf
, density
, and pmf
, other options
understood by distionary
include:
survival
: the survival function, or one minus the cdf.hazard
: the hazard function, for continuous variables only.chf
: the cumulative hazard function, for continuous variables only.quantile
: the quantile function, or left-inverse of the cdf.realise
orrealize
: a function that takes an integer and generates a vector of that many random draws from the distribution.odds
: for discrete variables, the probability odds function (pmf / (1 - pmf))return
: the quantiles associated with the provided return periods, where events are exceedances.
All functions should be vectorized.
Other properties that are understood by distionary
include:
mean
,stdev
,variance
,skewness
,median
are self-explanatory.kurtosis_exc
andkurtosis
are the distribution's excess kurtosis and regular kurtosis.range
: A vector of the minimum and maximum value of a distribution's support.
Examples
linear <- distribution(
density = function(x) {
d <- 2 * (1 - x)
d[x < 0 | x > 1] <- 0
d
},
cdf = function(x) {
p <- 2 * x * (1 - x / 2)
p[x < 0] <- 0
p[x > 1] <- 1
p
},
.vtype = "continuous",
.name = "My Linear"
)
# Inspect
linear
#> My Linear distribution (continuous)
# Plot
plot(linear)