Description Usage Arguments Details Value Note Author(s) References See Also Examples
View source: R/cornish_fisher.r
Lee and Lin's Algorithm AS269 for higher order Cornish Fisher quantile approximation.
1 |
z |
the quantiles of the normal distribution. an atomic vector. |
cumul |
the standardized cumulants of order 3, 4, ..., k. an atomic vector. |
order.max |
the maximum order approximation, must be greater than
|
all.ords |
a logical value. If |
The Cornish Fisher approximation is the Legendre inversion of the Edgeworth expansion of a distribution, but ordered in a way that is convenient when used on the mean of a number of independent draws of a random variable.
Suppose x_1, x_2, ..., x_n are n independent draws from some probability distribution. Letting
X = (x_1 + x_2 + ... x_n) / sqrt(n),
the Central Limit Theorem assures us that, assuming finite variance,
X ~~ N(sqrt(n) mu, sigma),
with convergence in n.
The Cornish Fisher approximation gives a more detailed picture of the quantiles of X, one that is arranged in decreasing powers of sqrt(n). The quantile function is the function q(p) such that P(x <= q(p)) = p. The Cornish Fisher expansion is
q(p) = sqrt{n}mu + sigma (z + sum_{3 <= j} c_j f_j(z)),
where z = qnorm(p), and c_j involves standardized cumulants of the distribution of x_i of order up to j. Moreover, the c_j include decreasing powers of sqrt(n), giving some justification for truncation. When n=1, however, the ordering is somewhat arbitrary.
A matrix, which is, depending on all.ords
, either with one column per
order of the approximation, or a single column giving the maximum order
approximation. There is one row per value in z
.
Invalid arguments will result in return value NaN
with a warning.
A warning will be thrown if any of the z are greater than 3.719017274 in absolute value; the traditional AS269 errors out in this case.
Steven E. Pav shabbychef@gmail.com
Lee, Y-S., and Lin, T-K. "Algorithm AS269: High Order Cornish Fisher Expansion." Appl. Stat. 41, no. 1 (1992): 233-240. http://www.jstor.org/stable/2347649
Lee, Y-S., and Lin, T-K. "Correction to Algorithm AS269: High Order Cornish Fisher Expansion." Appl. Stat. 42, no. 1 (1993): 268-269. http://www.jstor.org/stable/2347433
AS 269. http://lib.stat.cmu.edu/apstat/269
Jaschke, Stefan R. "The Cornish-Fisher-expansion in the context of Delta-Gamma-normal approximations." No. 2001, 54. Discussion Papers, Interdisciplinary Research Project 373: Quantification and Simulation of Economic Processes, 2001. http://www.jaschke-net.de/papers/CoFi.pdf
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 | foo <- AS269(seq(-2,2,0.01),c(0,2,0,4))
# test with the normal distribution:
s.cumul <- c(0,0,0,0,0,0,0,0,0)
pv <- seq(0.001,0.999,0.001)
zv <- qnorm(pv)
apq <- AS269(zv,s.cumul,all.ords=FALSE)
err <- zv - apq
# test with the exponential distribution
rate <- 0.7
n <- 18
# these are 'raw' cumulants'
cumul <- (rate ^ -(1:n)) * factorial(0:(n-1))
# standardize and chop
s.cumul <- cumul[3:length(cumul)] / (cumul[2]^((3:length(cumul))/2))
pv <- seq(0.001,0.999,0.001)
zv <- qnorm(pv)
apq <- cumul[1] + sqrt(cumul[2]) * AS269(zv,s.cumul,all.ords=TRUE)
truq <- qexp(pv, rate=rate)
err <- truq - apq
colSums(abs(err))
# an example from Wikipedia page on CF,
# \url{https://en.wikipedia.org/wiki/Cornish%E2%80%93Fisher_expansion}
s.cumul <- c(5,2)
apq <- 10 + sqrt(25) * AS269(qnorm(0.95),s.cumul,all.ords=TRUE)
|
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.