Standardized Student-t distribution
dist-std.Rd
Functions to compute density, distribution function, quantile function and to generate random variates for the standardized Student-t distribution.
Usage
dstd(x, mean = 0, sd = 1, nu = 5, log = FALSE)
pstd(q, mean = 0, sd = 1, nu = 5)
qstd(p, mean = 0, sd = 1, nu = 5)
rstd(n, mean = 0, sd = 1, nu = 5)
Arguments
- x, q
a numeric vector of quantiles.
- p
a numeric vector of probabilities.
- n
number of observations to simulate.
- mean
location parameter.
- sd
scale parameter.
- nu
shape parameter (degrees of freedom).
- log
logical; if
TRUE
, densities are given as log densities.
Details
The standardized Student-t distribution is defined so that for a given
sd
it has the same variance, sd^2
, for all degrees of
freedom. For comparison, the variance of the usual Student-t
distribution is nu/(nu-2)
, where nu
is the degrees of
freedom. The usual Student-t distribution is obtained by setting
sd = sqrt(nu/(nu - 2))
.
Argument nu
must be greater than 2. Although there is a default
value for nu
, it is rather arbitrary and relying on it is
strongly discouraged.
dstd
computes the density,
pstd
the distribution function,
qstd
the quantile function,
and
rstd
generates random deviates from the standardized-t
distribution with the specified parameters.
References
Fernandez C., Steel M.F.J. (2000); On Bayesian Modelling of Fat Tails and Skewness, Preprint, 31 pages.
Wuertz D., Chalabi Y. and Luksan L. (2006); Parameter estimation of ARMA models with GARCH/APARCH errors: An R and SPlus software implementation, Preprint, 41 pages, https://github.com/GeoBosh/fGarchDoc/blob/master/WurtzEtAlGarch.pdf
Examples
## std -
pstd(1, sd = sqrt(5/(5-2)), nu = 5) == pt(1, df = 5) # TRUE
#> [1] TRUE
par(mfrow = c(2, 2))
set.seed(1953)
r = rstd(n = 1000)
plot(r, type = "l", main = "sstd", col = "steelblue")
# Plot empirical density and compare with true density:
hist(r, n = 25, probability = TRUE, border = "white", col = "steelblue")
box()
x = seq(min(r), max(r), length = 201)
lines(x, dstd(x), lwd = 2)
# Plot df and compare with true df:
plot(sort(r), (1:1000/1000), main = "Probability", col = "steelblue",
ylab = "Probability")
lines(x, pstd(x), lwd = 2)
# Compute quantiles:
round(qstd(pstd(q = seq(-1, 5, by = 1))), digits = 6)
#> [1] -1 0 1 2 3 4 5