dhalfnormal {bayesmeta}R Documentation

Half-normal, half-Student-t and half-Cauchy distributions.


Half-normal, half-Student-t and half-Cauchy density, distribution, quantile functions, random number generation, and expectation and variance.


  dhalfnormal(x, scale=1, log=FALSE)
  phalfnormal(q, scale=1)
  qhalfnormal(p, scale=1)
  rhalfnormal(n, scale=1)

  dhalft(x, df, scale=1, log=FALSE)
  phalft(q, df, scale=1)
  qhalft(p, df, scale=1)
  rhalft(n, df, scale=1)
  ehalft(df, scale=1)
  vhalft(df, scale=1)

  dhalfcauchy(x, scale=1, log=FALSE)
  phalfcauchy(q, scale=1)
  qhalfcauchy(p, scale=1)
  rhalfcauchy(n, scale=1)


x, q





number of observations.


scale parameter (>0).


degrees-of-freedom parameter (>0).


logical; if TRUE, logarithmic density will be returned.


The half-normal distribution is simply a zero-mean normal distribution that is restricted to take only positive values. The scale parameter σ here corresponds to the underlying normal distribution's standard deviation: if X ~ Normal(0,sigma), then |X| ~ halfNormal(scale=sigma). Its mean is sigma*sqrt(2/pi), and its variance is sigma^2*(1-2/pi). Analogously, the half-t distribution is a truncated Student-t distribution with df degrees-of-freedom, and the half-Cauchy distribution is again a special case of the half-t distribution with df=1 degrees of freedom.

Note that (half-) Student-t and Cauchy distributions arise as continuous mixture distributions of (half-) normal distributions. If

Y|sigma ~ Normal(0,sigma^2)

where the standard deviation is sigma=sqrt(k/X) and X is drawn from a χ^2-distribution with k degrees of freedom, then the marginal distribution of Y is Student-t with k degrees of freedom.


dhalfnormal()’ gives the density function, ‘phalfnormal()’ gives the cumulative distribution function (CDF), ‘qhalfnormal()’ gives the quantile function (inverse CDF), and ‘rhalfnormal()’ generates random deviates. The ‘ehalfnormal()’ and ‘vhalfnormal()’ functions return the corresponding half-normal distribution's expectation and variance, respectively. For the ‘dhalft()’, ‘dhalfcauchy()’ and related function it works analogously.


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.

A. Gelman. Prior distributions for variance parameters in hierarchical models. Bayesian Analysis, 1(3):515-534, 2006. doi: 10.1214/06-BA117A.

F. C. Leone, L. S. Nelson, R. B. Nottingham. The folded normal distribution. Technometrics, 3(4):543-550, 1961. doi: 10.2307/1266560.

N. G. Polson, J. G. Scott. On the half-Cauchy prior for a global scale parameter. Bayesian Analysis, 7(4):887-902, 2012. doi: 10.1214/12-BA730.

S. Psarakis, J. Panaretos. The folded t distribution. Communications in Statistics - Theory and Methods, 19(7):2717-2734, 1990. doi: 10.1080/03610929008830342.

See Also

dnorm, dt, dcauchy, dlomax, drayleigh, TurnerEtAlPrior, RhodesEtAlPrior, bayesmeta.


# illustrate densities:
x <- seq(0,6,le=200)
plot(x, dhalfnormal(x), type="l", col="red", ylim=c(0,1),
     xlab=expression(tau), ylab=expression("probability density "*f(tau)))
lines(x, dhalft(x, df=3), col="green")
lines(x, dhalfcauchy(x), col="blue")
lines(x, dexp(x), col="cyan")
abline(h=0, v=0, col="grey")

# show log-densities (note the differing tail behaviour):
plot(x, dhalfnormal(x), type="l", col="red", ylim=c(0.001,1), log="y",
     xlab=expression(tau), ylab=expression("probability density "*f(tau)))
lines(x, dhalft(x, df=3), col="green")
lines(x, dhalfcauchy(x), col="blue")
lines(x, dexp(x), col="cyan")
abline(v=0, col="grey")

[Package bayesmeta version 2.7 Index]