Density function, distribution function, quantiles and random number generation for the skew-\(t\) (ST) distribution
dst(x, xi=0, omega=1, alpha=0, nu=Inf, dp=NULL, log=FALSE)
pst(x, xi=0, omega=1, alpha=0, nu=Inf, dp=NULL, method=0, ...)
qst(p, xi=0, omega=1, alpha=0, nu=Inf, tol=1e-08, dp=NULL, method=0, ...)
rst(n=1, xi=0, omega=1, alpha=0, nu=Inf, dp=NULL)Density (dst), probability (pst), quantiles (qst)
and random sample (rst) from the skew-\(t\) distribution with given
xi, omega, alpha and nu parameters.
vector of quantiles. Missing values (NAs) are allowed.
vector of probabililities.
vector of location parameters.
vector of scale parameters; must be positive.
vector of slant parameters. With pst and qst,
it must be of length 1.
a single positive value representing the degrees of freedom;
it can be non-integer. Default value is nu=Inf which corresponds
to the skew-normal distribution.
a vector of length 4, whose elements represent location, scale
(positive), slant and degrees of freedom, respectively. If dp is
specified, the individual parameters cannot be set.
a positive integer representing the sample size.
logical; if TRUE, densities are given as log-densities
a scalar value which regulates the accuracy of the result of
qsn, measured on the probability scale.
an integer value between 0 and 4 which selects
the computing method; see ‘Details’ below for the meaning of these
values. If method=0 (default value), an automatic choice is made
among the four actual computing methods, depending on the other
arguments.
additional parameters passed to integrate or pmst.
The family of skew-\(t\) distributions is an extension of the Student's
\(t\) family, via the introduction of a alpha parameter which
regulates skewness; when alpha=0, the skew-\(t\) distribution
reduces to the usual Student's \(t\) distribution.
When nu=Inf, it reduces to the skew-normal distribution.
When nu=1, it reduces to a form of skew-Cauchy distribution.
See Chapter 4 of Azzalini & Capitanio (2014) for additional information.
A multivariate version of the distribution exists; see dmst.
For evaluation of pst, and so indirectly of
qst, four different methods are employed.
Method 1 consists in using pmst with dimension d=1.
Method 2 applies integrate to the density function dst.
Method 3 again uses integrate too but with a different integrand,
as given in Section 4.2 of Azzalini & Capitanio (2003), full version of
the paper.
Method 4 consists in the recursive procedure of Jamalizadeh, Khosravi and
Balakrishnan (2009), which is recalled in Complement 4.3 on
Azzalini & Capitanio (2014); the recursion over nu starts from
the explicit expression for nu=1 given by psc.
Of these, Method 1 and 4 are only suitable for integer values of nu.
Method 4 becomes progressively less efficient as nu increases,
because the value of nu determines the number of nested calls,
but the decay of efficiency is slower for larger values of length(x).
If the default argument value method=0 is retained, an automatic choice
among the above four methods is made, which depends on the values of
nu, alpha, length(x). The numerical accuracy of methods 1, 2 and 3 can
be regulated via the ... argument, while method 4 is conceptually exact,
up to machine precision.
If qst is called with nu>1e4, computation is transferred to
qsn.
Azzalini, A. and Capitanio, A. (2003). Distributions generated by perturbation of symmetry with emphasis on a multivariate skew-t distribution. J.Roy. Statist. Soc. B 65, 367--389. Full version of the paper at https://arXiv.org/abs/0911.2342.
Azzalini, A. with the collaboration of Capitanio, A. (2014). The Skew-normal and Related Families. Cambridge University Press, IMS Monographs series.
Jamalizadeh, A., Khosravi, M., and Balakrishnan, N. (2009). Recurrence relations for distributions of a skew-t and a linear combination of order statistics from a bivariate-t. Comp. Statist. Data An. 53, 847--852.
dmst, dsn, dsc
pdf <- dst(seq(-4, 4, by=0.1), alpha=3, nu=5)
rnd <- rst(100, 5, 2, -5, 8)
q <- qst(c(0.25, 0.50, 0.75), alpha=3, nu=5)
pst(q, alpha=3, nu=5) # must give back c(0.25, 0.50, 0.75)
#
p1 <- pst(x=seq(-3,3, by=1), dp=c(0,1,pi, 3.5))
p2 <- pst(x=seq(-3,3, by=1), dp=c(0,1,pi, 3.5), method=2, rel.tol=1e-9)
Run the code above in your browser using DataLab