| Title: | Distributions and Gradients |
|---|---|
| Description: | Provides density, distribution function, quantile function and random generation for the split normal and split-t distributions, and computes their mean, variance, skewness and kurtosis for the two distributions (Li, F, Villani, M. and Kohn, R. (2010) <doi:10.1016/j.jspi.2010.04.031>). |
| Authors: | Feng Li [aut, cre] (ORCID: <https://orcid.org/0000-0002-4248-9778>), Jiayue Zeng [aut] |
| Maintainer: | Feng Li <[email protected]> |
| License: | GPL (>= 2) |
| Version: | 1.0.0 |
| Built: | 2026-06-02 09:56:00 UTC |
| Source: | https://github.com/feng-li/dng |
Evaluate generalized hypergeometric series used by the split-t gradient calculations.
ghypergeo(a, b, z, k)ghypergeo(a, b, z, k)
a |
matrix of upper hypergeometric parameters. |
b |
matrix of lower hypergeometric parameters. |
z |
vector of hypergeometric function arguments. |
k |
maximum number of hypergeometric series terms. Non-positive values use the package default. |
A one-column numeric matrix of generalized hypergeometric function
values. Rows of a, rows of b, and values of z are
recycled to the output length.
gsplitt()
Density distribution function, quantile function and random generation function for the split normal distribution.
dsplitn(x, mu, sigma, lmd, logarithm) gsplitn(y, par, parCaller, denscaller) psplitn(q, mu, sigma, lmd) qsplitn(p, mu, sigma, lmd) rsplitn(n, mu, sigma, lmd)dsplitn(x, mu, sigma, lmd, logarithm) gsplitn(y, par, parCaller, denscaller) psplitn(q, mu, sigma, lmd) qsplitn(p, mu, sigma, lmd) rsplitn(n, mu, sigma, lmd)
x |
vector of quantiles. |
mu |
vector of location parameter. (The mode of the density) |
sigma |
vector of standard deviations. |
lmd |
vector of skewness parameters (>0). If is 1, reduced to symmetric normal distribution. |
logarithm |
logical; if TRUE, probabilities p are given as log(p). |
y |
vector of quantiles for gradient evaluation. |
par |
list with |
parCaller |
character scalar naming the parameter to differentiate:
|
denscaller |
character vector selecting gradients to compute. Use
|
q |
vector of quantiles. |
p |
vector of probability. |
n |
number of observations. If length(n) > 1, the length is taken to be the number required. |
The random ' variable y follows a split-normal distribution, y~N(, '
, ), which has density:
'
where and
. The Split-normal ' distribution reduce to normal distribution when
.
dsplitn gives the density; psplitn gives the percentile;
qsplitn gives the quantile; and rsplitn gives the random
variables. gsplitn returns a list with elements u and d
containing gradients of the CDF and log-density. Invalid arguments will result
in return value NaN, with a warning.
The numerical arguments other than n are recycled to the length of the result. Only the first elements of the logical arguments are used.
gsplitn(): Gradients for the split-normal CDF and log-density.
psplitn(): Percentile for the split-normal distribution.
qsplitn(): Quantile for the split-normal distribution.
rsplitn(): Randon variables from the split-normal distribution.
Feng Li, Jiayue Zeng
Villani, M., & Larsson, R. (2006) The Multivariate Split Normal Distribution and Asymmetric Principal Components Analysis. Sveriges Riksbank Working Paper Series, No. 175.
splitn_mean(),
splitn_var(),splitn_skewness() and
splitn_kurtosis() for numerical characteristics of the
split-normal distribution.
n <- 3 mu <- c(0,1,2) sigma <- c(1,2,3) lmd <- c(1,2,3) q0 <- rsplitn(n, mu, sigma, lmd) d0 <- dsplitn(q0, mu, sigma, lmd, logarithm = FALSE) p0 <- psplitn(q0, mu, sigma, lmd) q1 <- qsplitn(p0,mu, sigma, lmd) all.equal(q0, q1)n <- 3 mu <- c(0,1,2) sigma <- c(1,2,3) lmd <- c(1,2,3) q0 <- rsplitn(n, mu, sigma, lmd) d0 <- dsplitn(q0, mu, sigma, lmd, logarithm = FALSE) p0 <- psplitn(q0, mu, sigma, lmd) q1 <- qsplitn(p0,mu, sigma, lmd) all.equal(q0, q1)
Computing the mean, variance, skewness and kurtosis for the split-normal distribution.
splitn_kurtosis(lmd) splitn_mean(mu, sigma, lmd) splitn_skewness(sigma, lmd) splitn_var(sigma, lmd)splitn_kurtosis(lmd) splitn_mean(mu, sigma, lmd) splitn_skewness(sigma, lmd) splitn_var(sigma, lmd)
lmd |
vector of skewness parameters (>0). If is 1, reduce to normal distribution. |
mu |
vector of location parameter. (The mode of the density) |
sigma |
vector of standard deviations. |
splitn_mean gives the mean. splitn_var gives the
variance. splitn_skewness gives the skewness.
splitn_kurtosis gives the kurtosis. (splitn_mean,
splitn_var,splitn_skeness and splitn_kurtosis are all
vectors.
splitn_kurtosis(): Kurtosis for the split-normal distribution.
splitn_skewness(): Skewness for the split-normal distribution.
splitn_var(): Variance for the split-normal distribution.
Feng Li, Jiayue Zeng
Villani, M., & Larsson, R. (2006) The Multivariate Split Normal Distribution and Asymmetric Principal Components Analysis. Sveriges Riksbank Working Paper Series, No. 175.
psplitn() dsplitn() qsplitn() and
rsplitn() for the split-normal distribution.
mu <- c(0,1,2) sigma <- c(0.5,1,2) lmd <- c(1,2,3) mean0 <- splitn_mean(mu, sigma, lmd) var0 <- splitn_var(sigma, lmd) skewness0 <- splitn_skewness(sigma, lmd) kurtosis0 <- splitn_kurtosis(lmd)mu <- c(0,1,2) sigma <- c(0.5,1,2) lmd <- c(1,2,3) mean0 <- splitn_mean(mu, sigma, lmd) var0 <- splitn_var(sigma, lmd) skewness0 <- splitn_skewness(sigma, lmd) kurtosis0 <- splitn_kurtosis(lmd)
Density, distribution function, quantile function and random generation for the normal distribution for the split student-t distribution.
dsplitt(x, mu, df, phi, lmd, logarithm) gsplitt(y, par, parCaller, denscaller) psplitt(q, mu, df, phi, lmd) qsplitt(p, mu, df, phi, lmd) rsplitt(n, mu, df, phi, lmd)dsplitt(x, mu, df, phi, lmd, logarithm) gsplitt(y, par, parCaller, denscaller) psplitt(q, mu, df, phi, lmd) qsplitt(p, mu, df, phi, lmd) rsplitt(n, mu, df, phi, lmd)
x |
vector of quantiles. |
mu |
vector of location parameter. (The mode of the density) |
df |
degrees of freedom (> 0, can be non-integer). df = Inf is also allowed. |
phi |
vector of scale parameters (>0). |
lmd |
vector of skewness parameters (>0). If is 1, reduced to the symmetric student t distribution. |
logarithm |
logical; if TRUE, probabilities p are given as log(p). |
y |
vector of quantiles for gradient evaluation. |
par |
list with |
parCaller |
character scalar naming the parameter to differentiate:
|
denscaller |
character vector selecting gradients to compute. Use
|
q |
vector of quantiles. |
p |
vector of probability. |
n |
number of observations. If length(n) > 1, the length is taken to be the number required. |
The random variable y follows a split-t distribution with >0
degrees of freedom, y~t(, , , ),
if its density function is of the form
where,
is the kernel of a student density with variance
and
is the normalization constant.
dsplitt gives the density; psplitt gives the percentile;
qsplitt gives the quantile; and rsplitt gives the random
variables. gsplitt returns a list with elements u and d
containing gradients of the CDF and log-density. Invalid arguments will
result in return value NaN, with a warning.
The numerical arguments other than n are recycled to the length of the result. Only the first elements of the logical arguments are used.
gsplitt(): Gradients for the split-t CDF and log-density.
psplitt(): Percentile for the split-t distribution.
qsplitt(): Quantile for the split-t distribution.
rsplitt(): Randon variables from the split-t distribution.
Feng Li, Jiayue Zeng
Li, F., Villani, M., & Kohn, R. (2010). Flexible modeling of conditional distributions using smooth mixtures of asymmetric student t densities. Journal of Statistical Planning & Inference, 140(12), 3638-3654.
splitt_mean(),
splitt_var(),splitt_skewness() and
splitt_kurtosis() for numerical characteristics of the
Split-t distribution.
n <- 3 mu <- c(0,1,2) df <- rep(10,3) phi <- c(0.5,1,2) lmd <- c(1,2,3) q0 <- rsplitt(n, mu, df, phi, lmd) d0 <- dsplitt(q0, mu, df, phi, lmd, logarithm = FALSE) p0 <- psplitt(q0, mu, df, phi, lmd) q1 <- qsplitt(p0,mu, df, phi, lmd) all.equal(q0, q1)n <- 3 mu <- c(0,1,2) df <- rep(10,3) phi <- c(0.5,1,2) lmd <- c(1,2,3) q0 <- rsplitt(n, mu, df, phi, lmd) d0 <- dsplitt(q0, mu, df, phi, lmd, logarithm = FALSE) p0 <- psplitt(q0, mu, df, phi, lmd) q1 <- qsplitt(p0,mu, df, phi, lmd) all.equal(q0, q1)
Computing the mean, variance, skewness and kurtosis for the split student-t distribution.
splitt_kurtosis(df, phi, lmd) splitt_mean(mu, df, phi, lmd) splitt_skewness(df, phi, lmd) splitt_var(df, phi, lmd)splitt_kurtosis(df, phi, lmd) splitt_mean(mu, df, phi, lmd) splitt_skewness(df, phi, lmd) splitt_var(df, phi, lmd)
df |
degrees of freedom (> 0, can be non-integer). df = Inf is allowed. |
phi |
vector of scale parameters (> 0). |
lmd |
vector of skewness parameters (> 0). If is 1, reduced to symmetric student t distribution. |
mu |
vector of location parameter. (The mode of the density) |
splitt_mean gives the mean. splitt_var gives the
variance. splitt_skewness gives the skewness. splitt_kurtosis
gives the kurtosis. (splitt_mean,
splitt_var,splitt_skeness and splitt_kurtosis are all
vectors.)
Invalid arguments will result in return value NaN, with a warning.
splitt_kurtosis(): Kurtosis for the split-t distribution.
splitt_skewness(): Skewness for the split-t distribution.
splitt_var(): Variance for the split-t distribution.
Feng Li, Jiayue Zeng
Li, F., Villani, M., & Kohn, R. (2010). Flexible modeling of conditional distributions using smooth mixtures of asymmetric student t densities. Journal of Statistical Planning & Inference, 140(12), 3638-3654.
dsplitt(), psplitt(),
qsplitt() and rsplitt() for the split-t
distribution.
mu <- c(0,1,2) df <- rep(10,3) phi <- c(0.5,1,2) lmd <- c(1,2,3) mean0 <- splitt_mean(mu, df, phi, lmd) var0 <- splitt_var(df, phi, lmd) skewness0 <- splitt_skewness(df, phi, lmd) kurtosis0 <- splitt_kurtosis(df, phi, lmd)mu <- c(0,1,2) df <- rep(10,3) phi <- c(0.5,1,2) lmd <- c(1,2,3) mean0 <- splitt_mean(mu, df, phi, lmd) var0 <- splitt_var(df, phi, lmd) skewness0 <- splitt_skewness(df, phi, lmd) kurtosis0 <- splitt_kurtosis(df, phi, lmd)