stable {stable} | R Documentation |
These functions provide information about the stable distribution
with the location, the dispersion, the skewness and the tail thickness
respectively modelled by the parameters loc
, disp
,
skew
and tail
.
dstable
, pstable
, qstable
and hstable
compute the density, the distribution, the quantile and the hazard functions
of a stable variate. rstable
generates random deviates with
the prescribed stable distribution.
loc
is a location parameter in the same way as the mean
in the normal distribution: it can take any real value.
disp
is a dispersion parameter in the same way as the standard
deviation in the normal distribution: it can take any positive value.
skew
is a skewness parameter: it can take any value in (-1,1).
The distribution is right-skewed, symmetric and left-skewed
when skew
is negative, null or positive respectively.
tail
is a tail parameter (often named the characteristic exponent):
it can take any value in (0,2) (with tail=1
and tail=2
yielding the Cauchy and the normal distributions respectively
when symmetry holds).
If loc
, disp
, skew
, or tail
are not
specified they assume the default values of 0, 1/sqrt(2),
0 and 2 respectively. This corresponds to a normal
variate with mean=0 and variance=1/2 disp^2.
The stable characteristic function is given by
phi(t) = i loc t - disp |t|^tail [1+i skew sign(t) omega(t,tail)]
where
omega(t,tail) = (2/pi) log|t|
when tail=1
, and
omega(t,tail) = tan(pi alpha / 2)
otherwise.
The characteristic function is inverted using Fourier's transform
to obtain the corresponding stable density. This inversion requires the
numerical evaluation of an integral from 0 to infinity.
Two algorithms
are proposed for this. The default is Romberg's method
(integration
="Romberg") which is used to evaluate the integral
with an error bounded by eps
.
The alternative method is Simpson's integration
(integration
="Simpson"): it approximates the
integral from 0 to infinity by an integral
from 0 to up
with npt
points subdividing (O, up).
These three extra arguments – integration
, up
and
npt
– are only available when using dstable
.
The other functions are all based on Romberg's algorithm.
dstable(y, loc=0, disp=1/sqrt(2), skew=0, tail=2, npt=501, up=10, eps=1.0e-6, integration="Romberg") pstable(y, loc=0, disp=1/sqrt(2), skew=0, tail=2, eps=1.0e-6) qstable(q, loc=0, disp=1/sqrt(2), skew=0, tail=2, eps=1.0e-6) hstable(y, loc=0, disp=1/sqrt(2), skew=0, tail=2, eps=1.0e-6) rstable(n=1, loc=0, disp=1/sqrt(2), skew=0, tail=2, eps=1.0e-6)
y,q |
vector of quantiles. |
p |
vector of probabilites. |
n |
number of observations. |
loc |
vector of (real) location parameters. |
disp |
vector of (positive) dispersion parameters. |
skew |
vector of skewness parameters (in [-1,1]). |
tail |
vector of parameters (in [0,2]) related to the tail thickness. |
eps |
scalar giving the required precision in computation. |
Philippe Lambert (Catholic University of Louvain, Belgium, phlambert@stat.ucl.ac.be) and Jim Lindsey.
Lambert, P. and Lindsey, J.K. (1999) Analysing financial returns using regression models based on non-symmetric stable distributions. Applied Statistics, 48, 409-424.
stablereg
to fit generalized nonlinear regression models
for the stable distribution parameters.
stable.mode
to compute the mode of a stable
distribution.
par(mfrow=c(2,2)) x <- seq(-5,5,by=0.1) # Influence of loc (location) plot(x,dstable(x,loc=-2,disp=1/sqrt(2),skew=-0.8,tail=1.5), type="l",ylab="",main="Varying LOCation") lines(x,dstable(x,loc=0,disp=1/sqrt(2),skew=-0.8,tail=1.5)) lines(x,dstable(x,loc=2,disp=1/sqrt(2),skew=-0.8,tail=1.5)) # Influence of disp (dispersion) plot(x,dstable(x,loc=0,disp=0.5,skew=0,tail=1.5), type="l",ylab="",main="Varying DISPersion") lines(x,dstable(x,loc=0,disp=1/sqrt(2),skew=0,tail=1.5)) lines(x,dstable(x,loc=0,disp=0.9,skew=0,tail=1.5)) # Influence of skew (skewness) plot(x,dstable(x,loc=0,disp=1/sqrt(2),skew=-0.8,tail=1.5), type="l",ylab="",main="Varying SKEWness") lines(x,dstable(x,loc=0,disp=1/sqrt(2),skew=0,tail=1.5)) lines(x,dstable(x,loc=0,disp=1/sqrt(2),skew=0.8,tail=1.5)) # Influence of tail (tail) plot(x,dstable(x,loc=0,disp=1/sqrt(2),skew=0,tail=0.8), type="l",ylab="",main="Varying TAIL thickness") lines(x,dstable(x,loc=0,disp=1/sqrt(2),skew=0,tail=1.5)) lines(x,dstable(x,loc=0,disp=1/sqrt(2),skew=0,tail=2))