## Export: inla.pc.ar.rpacf inla.pc.ar.dpacf
##! \name{pc.ar}
##! \alias{inla.pc.ar}
##! \alias{inla.pc.ar.rpacf}
##! \alias{ar.rpacf}
##! \alias{inla.pc.ar.dpacf}
##! \alias{ar.dpacf}
##!
##! \title{Utility functions for the PC prior for a an AR(p) model}
##!
##! \description{Functions to evaluate and sample from the
##! PC prior for an AR(p) model}
##! \usage{
##! inla.pc.ar.rpacf(n=1, p, lambda = 1)
##! inla.pc.ar.dpacf(pac, lambda = 1, log = TRUE)
##! }
##! \arguments{
##! \item{p}{The order of the AR-model}
##! \item{pac}{A vector of partial autocorrelation coefficients}
##! \item{n}{Number of observations}
##! \item{lambda}{The rate parameter in the prior}
##! \item{log}{Logical. Return the density in natural or log-scale.}
##! }
##! \details{
##! }
##! \value{%%
##! \code{inla.pc.ar.rpac} generate samples from the prior, returning a matrix
##! where each row is a sample of \code{theta}.
##! \code{inla.pc.ar.dpac} evaluates the density of \code{pac}.
##! Use \code{inla.ar.pacf2phi}, \code{inla.ar.phi2pacf},
##! \code{inla.ar.pacf2acf} and \code{inla.ar.acf2pacf} to convert between various
##! parameterisations.
##! }
##! \author{Havard Rue \email{hrue@r-inla.org}}
##! \examples{
##! }
inla.pc.ar.rpacf = function(n=1, p, lambda = 1)
{
stopifnot(!missing(p) && p >= 1)
stopifnot(lambda > 0)
stopifnot(n >= 1)
rpac = function(n, p, lambda)
{
gamma = inla.pc.multvar.simplex.r(n=n, b = rep(1/2, p), lambda = lambda)
pac = sqrt(1-exp(-gamma)) * sample(c(-1, 1), size = p, replace=TRUE)
return (pac)
}
x = unlist(lapply(rep(1, n), rpac, p=p, lambda = lambda))
x = matrix(x, n, p, byrow=TRUE)
return (x)
}
inla.pc.ar.dpacf = function(pac, lambda = 1, log = TRUE)
{
p = length(pac)
stopifnot(p >= 1)
gamma = -log(1-pac^2)
ld = (inla.pc.multvar.simplex.d(x = gamma, lambda = lambda, b = rep(1/2, p), log=TRUE)
+
sum(log(abs(pac/(1-pac^2)))))
return (if (log) ld else exp(ld))
}
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.