GarchDistributions {fSeries} | R Documentation |
A collection and description of functions to compute
density, distribution function, quantile function and
to generate random variates for the skew normal, the skew
Student-t, and skew generalized error distribution. In
addition maximum likelihood estimators are available to
fit the parameters of a distribution and to compute
basic statistical properties.
The functions are:
[dpqr]norm | Normal distribution from R's base package, |
[dpqr]snorm | Skew Normal distribution, |
[dpqr]std | Symmetric Student-t Distribution, |
[dpqr]sstd | Skew Student-t Distribution, |
[dpqr]ged | Symmetric GED distribution, |
[dpqr]sged | Skew GED distribution. |
The estimatore are:
normFit | MLE parameter fit for a Normal distribution, |
snormFit | MLE parameter fit for a skew Normal distribution, |
stdFit | MLE parameter fit for a Sudent-t distribution, |
stdFit | MLE parameter fit for a skew Sudent-t distribution, |
gedFit | MLE parameter fit for a generalized error distribution, |
nigFit | MLE parameter fit for a skew generalized error distribution. |
Utility Function:
absMoments | Computes absolute moments of a symmetric density. |
dsnorm(x, mean = 0, sd = 1, xi = 1.5) psnorm(q, mean = 0, sd = 1, xi = 1.5) qsnorm(p, mean = 0, sd = 1, xi = 1.5) rsnorm(n, mean = 0, sd = 1, xi = 1.5) dstd(x, mean = 0, sd = 1, nu = 5) pstd(q, mean = 0, sd = 1, nu = 5) qstd(p, mean = 0, sd = 1, nu = 5) rstd(n, mean = 0, sd = 1, nu = 5) dsstd(x, mean = 0, sd = 1, nu = 5, xi = 1.5) psstd(q, mean = 0, sd = 1, nu = 5, xi = 1.5) qsstd(p, mean = 0, sd = 1, nu = 5, xi = 1.5) rsstd(n, mean = 0, sd = 1, nu = 5, xi = 1.5) dged(x, mean = 0, sd = 1, nu = 2) pged(q, mean = 0, sd = 1, nu = 2) qged(p, mean = 0, sd = 1, nu = 2) rged(n, mean = 0, sd = 1, nu = 2) dsged(x, mean = 0, sd = 1, nu = 2, xi = 1.5) psged(q, mean = 0, sd = 1, nu = 2, xi = 1.5) qsged(p, mean = 0, sd = 1, nu = 2, xi = 1.5) rsged(n, mean = 0, sd = 1, nu = 2, xi = 1.5) normFit(x, ...) snormFit(x, ...) stdFit(x, ...) sstdFit(x, ...) gedFit(x, ...) sgedFit(x, ...) absMoments(n, density = c("dnorm", "dged", "dstd"), ...)
density |
[absMoments] - a character string naming the symmetric density function. |
mean, sd, nu, xi |
location parameter mean ,
scale parameter sd ,
shape parameter nu ,
skewness parameter xi .
|
n |
[rnorm][r*ged][r*std] - the number of observations. [absMoments] - the number of absolute Moments. |
p |
a numeric vector of probabilities. |
x, q |
a numeric vector of quantiles. |
... |
[*Fit] - parameters parsed to the optimization function nlm .[absMoments] - parameters passed to the density function. |
Symmetric Normal Distibution:
The functions for the normal distribution are part of R's
base package. The functions for the symmetric Student-t
distribution are rescaled in such a way that they have unit
variance in contrast to the Student-t family dt
, pt
,
qt
and rt
which are part of R's base package.
The generalized error distribution functions are defined as
described by Nelson (1991).
Skew Normal Distribution:
The skew normal distribution functions are defined as described
by Fernandez and Steel (2000).
cr
Parameter Estimation:
The function nlm
is used to minimize the "negative" maximum
log-likelihood function. nlm
carries out a minimization using
a Newton-type algorithm.
d*
returns the density,
p*
returns the distribution function,
q*
returns the quantile function, and
r*
generates random deviates,
all values are numeric vectors.
*Fit
return a list with the following components:
estimate |
the point at which the maximum value of the log liklihood function is obtained. |
objective |
the value of the estimated maximum, i.e. the value of the log liklihood function. |
message |
an integer indicating why the optimization process terminated. |
code |
an integer indicating why the optimization process terminated. 1: relative gradient is close to zero, current iterate is probably solution; 2: successive iterates within tolerance, current iterate is probably solution; 3: last global step failed to locate a point lower than estimate .
Either estimate is an approximate local minimum of the
function or steptol is too small; 4: iteration limit exceeded; 5: maximum step size stepmax exceeded five consecutive times.
Either the function is unbounded below, becomes asymptotic to a
finite value from above in some direction or stepmax
is too small.
|
gradient |
the gradient at the estimated maximum. |
steps |
number of function calls. |
absMoments
returns a numeric vector of length n
with the
values of the absolute moments of the density function.
Diethelm Wuertz for the Rmetrics R-port.
Nelson D.B. (1991); Conditional Heteroscedasticity in Asset Returns: A New Approach, Econometrica, 59, 347–370.
Fernandez C., Steel M.F.J. (2000); On Bayesian Modelling of Fat Tails and Skewness, Preprint, 31 pages.
## SOURCE("fSeries.4A-GarchDistributions") ## snorm - par(mfrow = c(2, 2), cex = 0.75) set.seed(1953) r = rsnorm(n = 1000, mean = 1, sd = 0.5, xi = 1.5) plot(r, type = "l", main = "snorm: xi = 1.5") # Plot empirical density and compare with true density: hist(r, n = 25, probability = TRUE, border = "white", col = "steelblue") x = seq(-4, 6, 0.1) lines(x, dsnorm(x = x, mean = 1, sd = 0.5, xi = 1.5)) # Plot df and compare with true df: plot(sort(r), (1:1000/1000), main = "Probability", col = "steelblue") lines(x, psnorm(x, mean = 1, sd = 0.5, xi = 1.5)) # Compute quantiles: qsnorm(psnorm(q = -4:6, mean = 1, sd = 0.5, xi = 1.5), mean = 1, sd = 0.5, xi = 1.5) ## sstd - par(mfrow = c(2, 2), cex = 0.75) set.seed(1953) r = rsstd(n = 1000, nu = 4, xi = 1.5) # Print Variance: var(r) plot(r, type = "l", main = "sstd: xi = 1.5") # Plot empirical density and compare with true density: hist(r, n = 30, xlim = c(-5, 5), probability = TRUE, border = "white", col = "steelblue") x = seq(-5, 5, 0.1) lines(x, dsnorm(x = x, xi = 1.5)) # Plot df and compare with true df: plot(sort(r), (1:1000/1000), main = "Probability", col = "steelblue") lines(x, psstd(x, xi = 1.5)) # Compute quantiles: qsstd(psstd(q = -5:5, xi = 1.5), xi = 1.5) ## sged - par(mfrow = c(2, 2), cex = 0.75) set.seed(1953) r = rsged(n = 1000, mean = 1, sd = 0.5, xi = 1.5) plot(r, type = "l", main = "sged: xi = 1.5") # Plot empirical density and compare with true density: hist(r, n = 25, probability = TRUE, border = "white", col = "steelblue") x = seq(-1, 5, 0.1) lines(x, dsged(x = x, mean = 1, sd = 0.5, xi = 1.5)) # Plot df and compare with true df: plot(sort(r), (1:1000/1000), main = "Probability", col = "steelblue") lines(x, psged(x, mean = 1, sd = 0.5, xi = 1.5)) # Compute quantiles: qsged(psged(q = -1:5, mean = 1, sd = 0.5, xi = 1.5), mean = 1, sd = 0.5, xi = 1.5) ## snormFit - options(warn = -1) # suppress negative logs from nlm normFit(rnorm(1000)) snormFit(rnorm(1000)) ## sstdFit - sstdFit(rsstd(1000, mean = 1, sd = 1.5, nu = 7, xi = 2/3)) ## sgedFit - sgedFit(rsged(1000, mean = -1, sd = 0.5, nu = 3, xi = 3/2), print.level = 2)