View source: R/dist_transformed.R
| dist_transformed | R Documentation |
A transformed distribution applies a monotonic transformation to an existing distribution. This is useful for creating derived distributions such as log-normal (exponential transformation of normal), or other custom transformations of base distributions.
The density(), mean(), and variance() methods are approximate as
they are based on numerical derivatives.
dist_transformed(dist, transform, inverse)
dist |
A univariate distribution vector. |
transform |
A function used to transform the distribution. This transformation should be monotonic over appropriate domain. |
inverse |
The inverse of the |
We recommend reading this documentation on pkgdown which renders math nicely. https://pkg.mitchelloharawild.com/distributional/reference/dist_transformed.html
Let Y = g(X) where X is the base distribution with
transformation function transform = g and inverse = g^{-1}.
The transformation g must be monotonic over the support of X.
Support: g(S_X) where S_X is the support of X
Mean: Approximated numerically using a second-order Taylor expansion:
E(Y) \approx g(\mu_X) + \frac{1}{2}g''(\mu_X)\sigma_X^2
where \mu_X and \sigma_X^2 are the mean and variance of the
base distribution X, and g'' is the second derivative of the
transformation. The derivative is computed numerically using
numDeriv::hessian().
Variance: Approximated numerically using the delta method:
\mathrm{Var}(Y) \approx [g'(\mu_X)]^2\sigma_X^2 + \frac{1}{2}[g''(\mu_X)\sigma_X^2]^2
where g' is the first derivative (Jacobian) computed numerically
using numDeriv::jacobian().
Probability density function (p.d.f): Using the change of variables formula:
f_Y(y) = f_X(g^{-1}(y)) \left|\frac{d}{dy}g^{-1}(y)\right|
where f_X is the p.d.f. of the base distribution and the Jacobian
|d/dy \, g^{-1}(y)| is computed numerically using
numDeriv::jacobian().
Cumulative distribution function (c.d.f):
For monotonically increasing g:
F_Y(y) = F_X(g^{-1}(y))
For monotonically decreasing g:
F_Y(y) = 1 - F_X(g^{-1}(y))
where F_X is the c.d.f. of the base distribution.
Quantile function: The inverse of the c.d.f.
For monotonically increasing g:
Q_Y(p) = g(Q_X(p))
For monotonically decreasing g:
Q_Y(p) = g(Q_X(1-p))
where Q_X is the quantile function of the base distribution.
numDeriv::jacobian(), numDeriv::hessian()
# Create a log normal distribution
dist <- dist_transformed(dist_normal(0, 0.5), exp, log)
density(dist, 1) # dlnorm(1, 0, 0.5)
cdf(dist, 4) # plnorm(4, 0, 0.5)
quantile(dist, 0.1) # qlnorm(0.1, 0, 0.5)
generate(dist, 10) # rlnorm(10, 0, 0.5)
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.