Learn R Programming

VGAMextra (version 0.0-1)

inv.chisqDist: 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 Chisquare.

df, lower.tail, log, log.p

Same as Chisquare.

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.

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.

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

Chisquare, gamma.

Examples

Run this code
# NOT RUN {
  ##  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
  
  
# }
# NOT RUN {
  ##  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)
  
# }

Run the code above in your browser using DataLab