| inv.chisqDist {VGAMextra} | R Documentation |
The Inverse Chi–squared Distribution
Description
Density, CDF, quantile function and random number generator for the Inverse Chi–squared distribution.
Usage
dinv.chisq(x, df, log = FALSE)
pinv.chisq(q, df, lower.tail = TRUE, log.p = FALSE)
qinv.chisq(p, df, lower.tail = TRUE, log.p = FALSE)
rinv.chisq(n, df)
Arguments
x, q, p, n |
Same as |
df, lower.tail, log, log.p |
Same as |
Details
The inverse chi–squared distribution with non–negative
df = \nu degrees
of freedom implemented here has density
f(x; \nu) = \frac{ 2^{-\nu / 2} x^{-\nu/2 - 1}
e^{-1 / (2x)} }{ \Gamma(\nu / 2) },
where x > 0, and
\Gamma is the gamma function.
The mean is 1 / (\nu - 2), for \nu > 2, and the variance is
given by 2 / [(\nu - 2)^2 (\nu - 4)], for \nu > 4.
Also, as with Chisquare, the degrees
of freedom can be non–integer.
Value
dinv.chisq returns the density, pinv.chisq returns the
distribution function, qinv.chisq gives the quantiles, and
rinv.chisq generates random numbers from this distribution.
Source
Specifically, it is the probability distribution of a random variable whose reciprocal follows a chi–squared distribution, i.e.,
If Y \sim chi–squared(\nu), then 1/Y \sim
Inverse chi–squared(\nu).
As a result, dinv.chisq, pinv.chisq, qinv.chisq and
rinv.chisq use the functions
Chisquare as a basis. Hence,
invalid arguments will lead these functions to return
NA or NaN accordingly.
Note
Yet to do: A non–central parameter as an argument, if amenable.
Two similar versions of the Inverse chi–squared distribution with
\nu degrees of freedom may be found in the literature, as
follows:
Let Y \sim chi–squared(\nu), then
I. 1 / Y \sim Inverse chi–squared(\nu), and
II. \nu / Y \sim Inverse chi–squared(\nu).
Here, the former, which is the popular version, has been implemented.
Author(s)
V. Miranda
References
Johnson, N.L., Kotz, S. and Balakrishnan, N. (1995) Continuous Univariate Distributions. Chapters 18 (volume 1) and 29 (volume 2). Wiley, New York.
See Also
Examples
## Example 1 ##
nn <- 50; df <- 1.4
data.1 <- ppoints(nn)
data.q <- qinv.chisq(-data.1, df = df, log.p = TRUE)
data.p <- -log(pinv.chisq(data.q, df = df))
max(abs(data.p - data.1)) # Should be zero
## Example 2 ##
xx <- seq(0, 3.0, len = 301)
yy <- dinv.chisq(xx, df = df)
qtl <- seq(0.1, 0.9, by = 0.1)
d.qtl <- qinv.chisq(qtl, df = df)
plot(xx, yy, type = "l", col = "orange",
main = "Orange is density, blue is cumulative distribution function",
sub = "Brown dashed lines represent the 10th, ... 90th percentiles",
las = 1, xlab = "x", ylab = "", ylim = c(0, 1))
abline(h = 0, col= "navy", lty = 2)
lines(xx, pinv.chisq(xx, df = df), col = "blue")
lines(d.qtl, dinv.chisq(d.qtl, df = df), type ="h", col = "brown", lty = 3)