Estable | R Documentation |
Density function, distribution function, quantile function and random generation for stable distributions which are maximally skewed to the right. These distributions are called Extremal by Zolotarev (1986).
dEstable(x, stableParamObj, log=FALSE) pEstable(x, stableParamObj, log=FALSE, lower.tail=TRUE) qEstable(p, stableParamObj, log=FALSE, lower.tail=TRUE) tailsEstable(x, stableParamObj)
x |
Vector of quantiles. |
stableParamObj |
An object of class |
p |
Vector of tail probabilities. |
log |
Logical; if |
lower.tail |
Logical; if |
The values are worked out by interpolation, with several different interpolation formulae in various regions.
dEstable
gives the density function;
pEstable
gives the distribution function or its complement;
qEstable
gives quantiles;
tailsEstable
returns a list with the following components
which are all the same length as x
:
The probability density function.
The probability distribution function. i.e. the
probability of being less than or equal to x
.
The probability of being larger than x
.
The probability density function.
The logarithm of the probability of being less than
or equal to x
.
The logarithm of the probability of being
larger than x
.
Chambers, J.M., Mallows, C.L. and Stuck, B.W. (1976). A method for simulating stable random variables. Journal of the American Statistical Association, 71, 340–344.
If x has an extremal stable distribution then
exp(-x) has a finite moment log stable distribution.
The left hand tail probability computed using pEstable
should be
the same as the coresponding right hand tail probability computed using
pFMstable
.
Aspects of extremal stable distributions may also be computed (though
more slowly) using tailsGstable
with beta
=1.
Functions for generation of random variables having stable distributions
are available in package stabledist
.
tailsEstable(-2:3, setMomentsFMstable(mean=1, sd=1.5, alpha=1.7)) # Compare Estable and FMstable obj <- setMomentsFMstable(1.7, mean=.5, sd=.2) x <- c(.001, 1, 10) pFMstable(x, obj, lower.tail=TRUE, log=TRUE) pEstable(-log(x), obj, lower.tail=FALSE, log=TRUE) x <- seq(from=-5, to=10, length=30) plot(x, dEstable(x, setMomentsFMstable(alpha=1.5)), type="l", log="y", ylab="Log(density) for stable distribution", main="log stable distribution with alpha=1.5, mean=1, sd=1" ) x <- seq(from=-2, to=5, length=30) plot(x, x, ylim=c(0,1), type="n", ylab="Distribution function") for (i in 0:2)lines(x, pEstable(x, setParam(location=0, logscale=-.5, alpha=1.5, pm=i)), col=i+1) legend("bottomright", legend=paste("S", 0:2, sep=""), lty=rep(1,3), col=1:3) p <- c(1.e-10, .01, .1, .2, .5, .99, 1-1.e-10) obj <- setMomentsFMstable(alpha=1.95) result <- qEstable(p, obj) pEstable(result, obj) - p # Plot to illustrate continuity near alpha=1 y <- seq(from=-36, to=0, length=30) logprob <- -exp(-y) plot(0, 0, type="n", xlim=c(-25,0), ylim=c(-35, -1), xlab="x (M parametrization)", ylab="-log(-log(distribution function))") for (oneminusalpha in seq(from=-.2, to=0.2, by=.02)){ obj <- setParam(oneminusalpha=oneminusalpha, location=0, logscale=0, pm=0) type <- if(oneminusalpha==0) 2 else 1 lines(qEstable(logprob, obj, log=TRUE), y, lty=type, lwd=type) }
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.