mxJiggle | R Documentation |
Jiggle free parameter values, subject to box constraints. imxJiggle()
is called internally by mxTryHard()
(q.v.). mxJiggle()
provides a more user-friendly wrapper to imxJiggle()
, and can alternately emulate the 'JIGGLE' behavior of classic Mx.
mxJiggle(model, classic=FALSE, dsn=c("runif","rnorm","rcauchy"), loc=1, scale=0.25)
imxJiggle(params, lbounds, ubounds, dsn, loc, scale)
model |
An object of class MxModel. |
classic |
Logical; should |
dsn |
Character string naming which random-number distribution–either uniform (rectangular), normal (Gaussian), or Cauchy–to be used to perturb free-parameter values. Defaults to the uniform distribution (for |
loc , scale |
Numeric. The location and scale parameters of the distribution from which random values are drawn to perturb free-parameter values, defaulting respectively to 1 and 0.25 (for |
params |
Numeric vector of current free parameter values. |
lbounds |
Numeric vector of lower bounds on parameters. |
ubounds |
Numeric vector of upper bounds on parameters. |
If mxJiggle()
argument classic=FALSE
(the default), mxJiggle()
calls imxJiggle()
. In that case, mxJiggle()
passes imxJiggle()
its own values for arguments dsn
, loc
, and scale
, and extracts values for arguments params
, lbounds
, and ubounds
from model
. Then, model
's free-parameter values are randomly perturbed before being re-assigned to it. The distributional family from which the perturbations are randomly generated is dictated by argument dsn
. The distribution is parameterized by arguments loc
and scale
, respectively the location and scale parameters. The location parameter is the distribution's median. For the uniform distribution, scale
is the absolute difference between its median and extrema (i.e., half the width of the rectangle); for the normal distribution, scale
is its standard deviation; and for the Cauchy, scale
is one-half its interquartile range. Free-parameter values are first multiplied by random draws from a distribution with the provided loc
and scale
, then added to random draws from a distribution with the same scale
but with a median of zero.
If mxJiggle()
argument classic=TRUE
, then each free-parameter value x_i
is replaced with x_i + 0.1(x_i + 0.5)
; this is the same behavior elicited in classic Mx by keyword JIGGLE.
imxJiggle()
returns a numeric vector of randomly perturbed free-parameter values. mxJiggle()
returns model
, with its free parameter values altered according to the other function arguments.
mxTryHard()
data(demoOneFactor)
manifests <- names(demoOneFactor)
latents <- c("G")
factorModel <- mxModel(
"One Factor",
type="RAM",
manifestVars = manifests,
latentVars = latents,
mxPath(from=latents, to=manifests,values=0.8),
mxPath(from=manifests, arrows=2,values=1),
mxPath(from=latents, arrows=2,
free=FALSE, values=1.0),
mxData(cov(demoOneFactor), type="cov",
numObs=500)
)
iniPars <- coef(factorModel)
print(iniPars)
pars2 <- imxJiggle(params=iniPars,lbounds=NA,ubounds=NA,dsn="runif",loc=1,scale=0.05)
print(pars2)
mod2 <- mxJiggle(model=factorModel,scale=0.05)
coef(mod2)
mod3 <- mxJiggle(model=factorModel,classic=TRUE)
coef(mod3)
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.