Simulate regression coefficients and disturbance variance of Bayesian linear regression model
[
returns a random vector of regression coefficients (BetaSim
,sigma2Sim
]
= simulate(Mdl
)BetaSim
)
and a random disturbance variance (sigma2Sim
) drawn from the
Bayesian linear regression
model
Mdl
of β and
σ2.
[
draws from the marginal posterior distributions produced or updated by
incorporating the predictor data BetaSim
,sigma2Sim
]
= simulate(Mdl
,X
,y
)X
and corresponding response
data y
.
If Mdl
is a joint prior model, then
simulate
produces the marginal posterior
distributions by updating the prior model with information about the
parameters that it obtains from the data.
If Mdl
is a marginal posterior model, then
simulate
updates the posteriors with
information about the parameters that it obtains from the additional
data. The complete data likelihood is composed of the additional
data X
and y
, and the data
that created Mdl
.
NaN
s in the data indicate missing values, which
simulate
removes by using list-wise deletion.
[
uses any of the input argument combinations in the previous syntaxes and
additional options specified by one or more name-value pair arguments. For
example, you can specify a value for β or
σ2 to simulate from the
conditional posterior distribution of one parameter,
given the specified value of the other parameter.BetaSim
,sigma2Sim
]
= simulate(___,Name,Value
)
[
also returns draws from the latent regime distribution if BetaSim
,sigma2Sim
,RegimeSim
]
= simulate(___)Mdl
is a Bayesian linear regression model for stochastic search variable selection
(SSVS), that is, if Mdl
is a mixconjugateblm
or mixsemiconjugateblm
model object.
simulate
cannot draw values from an
improper distribution, that is, a distribution whose
density does not integrate to 1.
If Mdl
is an empiricalblm
model object, then you
cannot specify Beta
or Sigma2
. You
cannot simulate from the conditional posterior distributions by using an
empirical distribution.
Whenever simulate
must estimate a posterior
distribution (for example, when Mdl
represents a prior
distribution and you supply X
and y
)
and the posterior is analytically tractable, simulate
simulates directly from the posterior. Otherwise,
simulate
resorts to Monte Carlo simulation to
estimate the posterior. For more details, see Posterior Estimation and Inference.
If Mdl
is a joint posterior model, then
simulate
simulates data from it differently compared
to when Mdl
is a joint prior model and you supply
X
and y
. Therefore, if you set the
same random seed and generate random values both ways, then you might not obtain
the same values. However, corresponding empirical distributions based on a
sufficient number of draws is effectively equivalent.
This figure shows how simulate
reduces the sample by
using the values of NumDraws
, Thin
,
and BurnIn
.
Rectangles represent successive draws from the distribution.
simulate
removes the white rectangles from the
sample. The remaining NumDraws
black rectangles compose the
sample.
If Mdl
is a semiconjugateblm
model
object, then simulate
samples from the posterior
distribution by applying the Gibbs sampler.
simulate
uses the default value of
Sigma2Start
for
σ2 and draws a
value of β from
π(β|σ2,X,y).
simulate
draws a value of
σ2 from
π(σ2|β,X,y)
by using the previously generated value of
β.
The function repeats steps 1 and 2 until convergence. To assess convergence, draw a trace plot of the sample.
If you specify BetaStart
, then
simulate
draws a value of
σ2 from
π(σ2|β,X,y)
to start the Gibbs sampler. simulate
does not return
this generated value of σ2.
If Mdl
is an empiricalblm
model object and you do
not supply X
and y
, then
simulate
draws from Mdl.BetaDraws
and Mdl.Sigma2Draws
. If NumDraws
is less
than or equal to numel(Mdl.Sigma2Draws)
, then
simulate
returns the first
NumDraws
elements of Mdl.BetaDraws
and
Mdl.Sigma2Draws
as random draws for the corresponding
parameter. Otherwise, simulate
randomly resamples
NumDraws
elements from Mdl.BetaDraws
and Mdl.Sigma2Draws
.
If Mdl
is a customblm
model object, then
simulate
uses an MCMC sampler to draw from the
posterior distribution. At each iteration, the software concatenates the current
values of the regression coefficients and disturbance variance into an
(Mdl.Intercept
+ Mdl.NumPredictors
+
1)-by-1 vector, and passes it to Mdl.LogPDF
. The value of the
disturbance variance is the last element of this vector.
The HMC sampler requires both the log density and its gradient. The gradient
should be a (NumPredictors+Intercept+1)
-by-1 vector. If the
derivatives of certain parameters are difficult to compute, then, in the
corresponding locations of the gradient, supply NaN
values
instead. simulate
replaces NaN
values
with numerical derivatives.
If Mdl
is a lassoblm
, mixconjugateblm
, or mixsemiconjugateblm
model object and you supply
X
and y
, then
simulate
samples from the posterior distribution by
applying the Gibbs sampler. If you do not supply the data, then
simulate
samples from the analytical, unconditional
prior distributions.
simulate
does not return default starting values that
it generates.
If Mdl
is a mixconjugateblm
or mixsemiconjugateblm
, then simulate
draws
from the regime distribution first, given the current state of the chain (the
values of RegimeStart
, BetaStart
, and
Sigma2Start
). If you draw one sample and do not specify
values for RegimeStart
, BetaStart
, and
Sigma2Start
, then simulate
uses
the default values and issues a warning.
conjugateblm
| customblm
| diffuseblm
| empiricalblm
| lassoblm
| mixconjugateblm
| mixsemiconjugateblm
| semiconjugateblm