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.