dinvchi {bayesmeta} | R Documentation |
(Scaled) inverse-Chi density, distribution, and quantile functions, random number generation and expectation and variance.
dinvchi(x, df, scale=1, log=FALSE) pinvchi(q, df, scale=1, lower.tail=TRUE, log.p=FALSE) qinvchi(p, df, scale=1, lower.tail=TRUE, log.p=FALSE) rinvchi(n, df, scale=1) einvchi(df, scale=1) vinvchi(df, scale=1)
x, q |
quantile. |
p |
probability. |
n |
number of observations. |
df |
degrees-of-freedom parameter (>0). |
scale |
scale parameter (>0). |
log |
logical; if |
lower.tail |
logical; if |
log.p |
logical; if |
The (scaled) inverse-Chi distribution is defined as the distribution of the (scaled) inverse of the square root of a Chi-square-distributed random variable. It is a special case of the square-root inverted-gamma distribution (with α=ν/2 and β=1/2) (Bernardo and Smith; 1994). Its probability density function is given by
p(x)=2^(1-nu/2)/(s*Gamma(nu/2)) * (s/x)^(nu+1) * exp(-s^2/(2x^2))
where ν is the degrees-of-freedom and s the scale parameter.
‘dinvchi()
’ gives the density function,
‘pinvchi()
’ gives the cumulative distribution
function (CDF),
‘qinvchi()
’ gives the quantile function (inverse CDF),
and ‘rinvchi()
’ generates random deviates.
The ‘einvchi()
’ and ‘vinvchi()
’
functions return the corresponding distribution's
expectation and variance, respectively.
Christian Roever christian.roever@med.uni-goettingen.de
C. Roever, R. Bender, S. Dias, C.H. Schmid, H. Schmidli, S. Sturtz, S. Weber, T. Friede. On weakly informative prior distributions for the heterogeneity parameter in Bayesian random-effects meta-analysis. Research Synthesis Methods, 12(4):448-474, 2021. doi: 10.1002/jrsm.1475.
J.M. Bernardo, A.F.M. Smith. Bayesian theory, Appendix A.1. Wiley, Chichester, UK, 1994.
################################# # illustrate Chi^2 - connection; # generate Chi^2-draws: chi2 <- rchisq(1000, df=10) # transform: invchi <- sqrt(1 / chi2) # show histogram: hist(invchi, probability=TRUE, col="grey") # show density for comparison: x <- seq(0, 1, length=100) lines(x, dinvchi(x, df=10, scale=1), col="red") # compare theoretical and empirical moments: rbind("theoretical" = c("mean" = einvchi(df=10, scale=1), "var" = vinvchi(df=10, scale=1)), "Monte Carlo" = c("mean" = mean(invchi), "var" = var(invchi))) ############################################################## # illustrate the normal/Student-t - scale mixture connection; # specify degrees-of-freedom: df <- 5 # generate standard normal draws: z <- rnorm(1000) # generate random scalings: sigma <- rinvchi(1000, df=df, scale=sqrt(df)) # multiply to yield Student-t draws: t <- z * sigma # check Student-t distribution via a Q-Q-plot: qqplot(qt(ppoints(length(t)), df=df), t) abline(0, 1, col="red")