% Generated by roxygen2: do not edit by hand
% Please edit documentation in R/priors_for.R
\name{priors_for}
\alias{priors_for}
\title{Specify priors for a SEM}
\usage{
priors_for(...)
}
\arguments{
\item{...}{Named arguments specifying prior distributions for lavaan
parameter types.}
}
\value{
A named character vector of prior specifications, where names
correspond to lavaan parameter types (e.g., "lambda", "beta", "theta",
etc.) and values are character strings specifying the prior distribution
(e.g., \code{"normal(0,10)"}, \code{"gamma(1,0.5)[sd]"},
\code{"gamma(1,1)[prec]"}, etc.).
}
\description{
Specify priors for a SEM, similar to how \code{\link[blavaan:dpriors]{blavaan::dpriors()}} works.
}
\details{
This function provides a convenient way to specify prior distributions for
different types of parameters in a structural equation model (SEM). It uses a
registry of default priors for common lavaan parameter types (e.g., loadings,
regressions, residuals, etc.) and allows users to override these defaults by
passing named arguments.

The parameter names, and default settings, are:
\itemize{
\item \code{nu = "normal(0,32)"}: Observed variable intercepts
\item \code{alpha = "normal(0,10)"}: Latent variable intercepts
\item \code{lambda = "normal(0,10)"}: Factor loadings
\item \code{beta = "normal(0,10)"}: Regression coefficients
\item \code{theta = "gamma(1,.5)[sd]"}: Residual precisions
\item \code{psi = "gamma(1,.5)[sd]"}: Latent variable precisions
\item \code{rho = "beta(1,1)"}: Correlations (both latent and observed)
\item \code{tau = "normal(0,1.5)"}: Thresholds for ordinal variables
}

Note that the normal distributions are parameterised using standard
deviations, and not variances. For example, \code{normal(0,10)} means a
normal distribution with mean 0 and standard deviation 10 (not variance 10).
}
\section{Scale qualifiers}{

For variance parameters (\code{theta}, \code{psi}), the prior distribution
can be placed on a transformed scale by appending a qualifier:
\itemize{
\item \code{[sd]}: Prior is on the standard deviation \eqn{\sigma}.
Example: \code{"gamma(1,0.5)[sd]"} places a Gamma(1, 0.5) prior on
\eqn{\sigma = \sqrt{\text{variance}}}.
\item \code{[prec]}: Prior is on the precision \eqn{\tau = 1/\sigma^2}.
Example: \code{"gamma(1,1)[prec]"} places a Gamma(1, 1) prior on
\eqn{\tau = 1/\text{variance}}. This is the parameterisation used by
blavaan and corresponds to an Inverse-Gamma prior on the variance.
}
The necessary Jacobian adjustment is applied automatically in both cases.
}

\examples{
priors_for(nu = "normal(0,10)", lambda = "normal(0,1)", rho = "beta(3,3)")

# Precision-scale prior for residual variances (blavaan-style)
priors_for(theta = "gamma(1,1)[prec]")
}
\seealso{
\code{\link[=inlavaan]{inlavaan()}}, \code{\link[=acfa]{acfa()}}, \code{\link[=asem]{asem()}}, \code{\link[=agrowth]{agrowth()}}
}
