| inv.chisqDist | R Documentation |
Density, CDF, quantile function and random number generator for the Inverse Chi–squared distribution.
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)
x, q, p, n |
Same as |
df, lower.tail, log, log.p |
Same as |
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.
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.
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.
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.
V. Miranda
Johnson, N.L., Kotz, S. and Balakrishnan, N. (1995) Continuous Univariate Distributions. Chapters 18 (volume 1) and 29 (volume 2). Wiley, New York.
Chisquare,
gamma.
## 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)
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.