Learn R Programming

VGAMextra (version 0.0-6)

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)

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.

Arguments

x, q, p, n

Same as Chisquare.

df, lower.tail, log, log.p

Same as Chisquare.

Author

V. Miranda

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

Examples

Run this code

  ##  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
  
  # \donttest{
  ##  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