| 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 <feng.li@gsm.pku.edu.cn> |
| License: | GPL (>= 2) |
| Version: | 1.1 |
| Built: | 2026-10-16 01:39:31 UTC |
| Source: | https://github.com/feng-li/dng |
Evaluate generalized hypergeometric functions by their defining series.
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 100000 terms. |
Only the convergent defining series and terminating polynomials are
supported; analytic continuation outside the series domain is not
performed. Invalid parameters, failure to converge within k terms,
and severe cancellation return NaN, with a warning. The split-t
gradients do not depend on this routine.
A one-column numeric matrix of generalized hypergeometric function
values. Rows of a, rows of b, and values of z are
recycled to the longest input length. Empty input rows or an empty z
return a matrix with zero rows. Missing values propagate.
gsplitt()
Density, distribution, quantile, random generation, and parameter gradients for the split-normal distribution.
dsplitn(x, mu, sigma, lmd, log = FALSE, logarithm = NULL) 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, log = FALSE, logarithm = NULL) 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 finite location parameters (the modes of the densities). |
sigma |
vector of finite positive left-side scale parameters. |
lmd |
vector of finite positive skewness parameters. If 1, reduced to symmetric normal distribution. |
log |
logical scalar; if TRUE, return log-densities. Defaults to FALSE. |
logarithm |
optional logical scalar retained for backward compatibility.
When non-NULL, overrides |
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 density is
where is the standard normal density,
for , and
otherwise. The scale
describes the left side; it is the overall standard deviation only when
. Random values are sampled from a mixture of negative and
positive half-normal distributions, with left-side probability
.
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. Unrequested gradient
components are NaN; an empty denscaller selects both.
Missing inputs propagate. Invalid parameters or probabilities return
NaN, with a warning.
Numerical arguments are recycled to their longest length, or the length
specified by n for random generation. An empty numerical input gives
an empty result, except random generation returns n NaNs with a
warning for an empty parameter vector. log and logarithm
must be logical scalars.
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(): Random 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, log = 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, log = 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 finite positive skewness parameters. If 1, reduce to normal distribution. |
mu |
vector of finite location parameters (the modes of the densities). |
sigma |
vector of finite positive left-side scale parameters. |
splitn_mean gives the mean. splitn_var gives the
variance. splitn_skewness gives the skewness.
splitn_kurtosis gives excess kurtosis (zero for the normal
distribution). All results are vectors, recycled to the longest numerical
input. Empty inputs return an empty vector; missing values propagate.
Invalid parameters return NaN, with a warning. Skewness and excess
kurtosis do not depend on the positive scale.
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, quantile, random generation, and parameter gradients for the split Student-t distribution.
dsplitt(x, mu, df, phi, lmd, log = FALSE, logarithm = NULL) 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, log = FALSE, logarithm = NULL) 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 finite location parameters (the modes of the densities). |
df |
degrees of freedom (> 0, can be non-integer). df = Inf is also allowed. |
phi |
vector of finite positive left-side scale parameters. |
lmd |
vector of finite positive skewness parameters. If 1, reduced to the symmetric student t distribution. |
log |
logical scalar; if TRUE, return log-densities. Defaults to FALSE. |
logarithm |
optional logical scalar retained for backward compatibility.
When non-NULL, overrides |
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 density is
where is the standard Student-t density,
for , and
otherwise. With df = Inf the
distribution is split-normal with sigma = phi. Random values are
sampled from negative and positive half-t distributions, with left-side
probability .
The CDF derivative with respect to df is evaluated by
integrating the analytic density score using R's QUADPACK routines.
Failure to converge returns NaN, with a warning. At df = Inf,
the derivatives with respect to df are zero.
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. Unrequested gradient
components are NaN; an empty denscaller selects both.
Missing inputs propagate. Invalid parameters or probabilities return
NaN, with a warning.
Numerical arguments are recycled to their longest length, or the length
specified by n for random generation. An empty numerical input gives
an empty result, except random generation returns n NaNs with a
warning for an empty parameter vector. log and logarithm
must be logical scalars.
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(): Random 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, log = 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, log = 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 finite positive left-side scale parameters. |
lmd |
vector of finite positive skewness parameters. If 1, reduced to symmetric student t distribution. |
mu |
vector of finite location parameters (the modes of the densities). |
splitt_mean gives the mean. splitt_var gives the
variance. splitt_skewness gives the skewness. splitt_kurtosis
gives excess kurtosis. All results are vectors, recycled to the longest
numerical input. Empty inputs return an empty vector; missing values
propagate. With df = Inf, results equal the split-normal moments.
The mean requires df > 1. Variance is NaN for df <= 1
and Inf for 1 < df <= 2. Skewness and excess kurtosis require
df > 3 and df > 4, respectively. Undefined moments and invalid
parameters return 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)