reliability()
and reliabilityL2()
deprecated.
AVE()
function.compRelSEM()
function provides more comprehensive
options for estimating composite reliability coefficients (various
alphas and omegas) than the reliability()
function.
compRelSEM()
also estimates reliability for a composite
representing a higher-order factor (using the higher=
argument to name such factors) and implements Lai’s (2021) recently
proposed composite-reliability coefficients for different types of
multilevel constructs (named with the config=
and
shared=
arguments). See issue 106 for a
conversation with Lai about the implementation, as well as links to
documentation of tests.monteCarloMed()
now works for lavaan.mi
objects, which is much easier than combining multiple imputation with
bootstrapping.monteCarloMed()
now optionally returns CIs for the
standardized solution, only for lavaan
objects (not
lavaan.mi
).htmt()
gains an argument htmt2=TRUE
to use
the geometric mean (default) rather than the arithmetic mean (which
assumes tau-equivalence).moreFitIndices()
includes 3 new extended BICs discussed
by Bollen et
al. (2014)miPowerFit()
can now pass further arguments to
lavaan::modificationIndices()
via ...
tag=
argument to customize character used to
flag preferred models in summary()
method for
FitDiff
class (i.e., compareFit()
output). Set
tag=NA
or NULL
to omit tags.plausibleValues()
applied to blavaan
objects now passes (via ...
) arguments to
blavaan::blavPredict()
, just as it already passed arguments
to lavPredict()
for objects of lavaan
or
lavaan.mi
classes. Thus, setting type="ypred"
will return plausible values of latent item-responses underlying ordinal
observations (analogous to Mplus option
SAVE: LRESPONSES
).probe2/3WayM/RC()
: When the moderator was listed first
in nameX=
and some (not all) slopes were
labeled in the user’s model syntax, an error was caused by creating
incorrect labels. Fixes issue 103.
probe2/3WayM/RC()
help pages have a new
Reference entry to a tutorial paper written about how
to use them.lrv2ord()
provides univariate and
bivariate population parameters for multivariate-normal data that have
been discretized but treated as continuous.reliability()
has new what=
,
omit.factors=
, and omit.indicators=
arguments
to customize composite-reliability estimates.SSpower()
now allows multigroup population models to be
specified with lavaan
syntax via the popModel=
argument.SSpower()
and findRMSEApower()
functionality is now available with a graphical user interface:
monteCarloMed()
has been replaced by
monteCarloCI()
because the method generalizes beyond
evaluating mediation (indirect effects), and can be applied to any
function of model parameters. monteCarloCI()
now accepts a
set of functions to sample simultaneously (e.g., both the indirect and
total effects), rather than drawing parameters again for each function
of parameters. More conveniently, if user-defined parameters are already
specified when fitting the lavaan
model, then
monteCarloCI()
obtains all necessary information from the
lavaan
object.permuteMeasEq()
returned an error when
parallelType = "multicore"
.reliability()
could use the wrong thresholds when a
sequence of ordinal indicator names overlapped (e.g., x1
and x10
); now fixed.probe*Way*C()
functions for probing latent interactions
formerly returned an error when users specified custom labels for the
relevant regression parameters in lavaan
syntax. And in
multigroup models, only group-1 SEs were used regardless of
which group=
was specified. Both issues resolved.show()
method for compareFit()
now
behaves as expected: nothing is printed when assigning
compareFit()
output to an object, but something is printed
when there is no assignment. The summary()
method prints
either way and invisibly returns the object itself.summary()
method for lavaan.mi
objects now
passes arguments to lavTestLRT.mi()
via
...
.reliability()
incorrectly used standardized thresholds
rather than the model’s parameter estimates (i.e., on the
latent-response scales) to calculate omega for categorical
indicators.net()
returned an error for models with categorical
indicators, now fixed.lavaan.mi
objects.emmeans
methods appropriately deal with incomplete
data.probe2WayMC()
and probe2WayRC()
treated
the wrong variable as moderator for point or SE estimates,
depending on the order in nameX=
.discriminantValidity()
function added.emmeans
package (see
?lavaan2emmeans
for examples)class?lavaan.mi
methods and functions can optionally
specify particular imputation numbers to omit, in addition to the
general omission criteria in omit.imps=
. Simply include
specific imputation numbers in the omit.imps=
vector.probe2WayMC()
) now
work for lavaan.mi
objects. The ?indProd
documentation now includes an example adding product indicators to
multiple imputed data sets.update()
method for
class?measEq.syntax
has a new argument
change.syntax
. Users can pass lavaan syntax specifying an
existing model parameter in order to change the labels or the fixed/free
values. This provies some flexibility not found in the
measEq.syntax()
function itself (e.g., releasing an
equality constraint in only one of >2 groups, whereas
group.partial=
can only release constraints across all
groups).
as.character()
method for
class?measEq.syntax
now accepts the argument
package = "mplus"
, which prints the syntax as an
Mplus MODEL command. The as.character()
method
also has 2 new arguments:
groups.as.blocks=TRUE
optionally prints multigroup
syntax in “block” format, which enables users to hack
measEq.syntax()
to specify multilevel CFA models with
invariance constraints.params=
allows users to select specific types of
parameters to print, making it easier to check particular aspects of the
model specification (e.g.,
params = c("loadings","lv.variances")
in metric invariance
models).net()
now accepts models fitted to categorical
outcomes.reliability()
includes 2 new arguments:
dropSingle = TRUE
is consistent with old
behavior.return.total = TRUE
when multiple
factors are multiple dimensions of a single scale composite.chisqSmallN()
function. Also accepts lavaan.mi
objects now.efaUnrotate()
now accepts summary statistics when
data=NULL
.reliability()
and maximalRelia()
returned
an error with categorical single-group models
reliability()
only ignored higher-order factors without
any observed indicators, and returned an error when first-order factors
had categorical indicators. Both issues have been resolved:
fitMeasures()
for lavaan.mi
sometimes
returned an errorRequires lavaan
version 0.6-5
Minor bug fixes
Addition of the plausibleValues()
function to
extract plausible values (i.e., multiple imputations) of factor scores
from objects of class lavaan
, lavaan.mi
, or
blavaan
Full support for lavaan.mi
models fitted to multiply
imputed multilevel data; resolved issue (#39).
Full support for fixed.x=TRUE
and
conditional.x=TRUE
in lavaan.mi
models,
including std.nox
solutions in summary()
,
modindices.mi()
, and
lavTestScore.mi()
.
Added the omit.imps=
argument to all
lavaan.mi
-related functions, optionally excluding solutions
that did not converge, failed to estimate SEs, or contained NPD
matrices (Heywood cases are a special case). Only the first 2 are
excluded by default.
reliability()
, reliabilityL2()
, and
maximalRelia()
now accept lavaan.mi
objects
Added (S)EPCs to lavTestScore.mi()
output when
epc=TRUE
Added (A)RIV/FMI to all pooled tests when available for
lavaan.mi
objects, to quantify additional uncertaintly in
the test statistic due to missing data.
Allow multigroup models in plotProbe()
and related
latent-interaction functions.
standardizeMx()
was deprecated in previous versions,
now removed.
Requires lavaan
version 0.6-3
Minor bug fixes
The formerly deprecated lisrel2lavaan()
function has
been removed from semTools
compareFit()
now accepts lavaan.mi
objects returned by runMI()
For lavaan.mi
objects returned by
runMI()
, the anova()
method has been updated
to behave more like lavaan’s anova()
method:
fitMeasures()
methodGiven the previous addition of score-test functions
modIndices.mi()
and lavTestScore.mi()
for
lavaan.mi
objects (parallel to modIndices()
and lavTestScore()
for lavaan
objects), the
remaining “trilogy” of tests in lavaan (lavTestLRT()
and
lavTestWald()
) now have parallel functions for
lavaan.mi
objects: lavTestLRT.mi()
and
lavTestWald.mi()
lavTestWald.mi()
implements what was formerly available
in using anova(..., test = "D1")
lavTestLRT.mi()
implements what was formerly available
in using anova(..., test = "D3")
lavTestLRT.mi()
cannot compare more than 2 nested
models. The anova()
method internally calls the
compareFit()
function to compare multiple
lavaan.mi
objects.calculate.D2()
that can be used to pool any set of Wald
chi-squared or z statistics.The runMI()
function can now be applied to
multilevel SEMs that can be fitted with lavaan()
fitted()
and resid()
methods will not yet work
in models with both multiple levels and multiple groups. This will be
resolved in a future version.The 3 functions measurementInvariance()
,
measurementInvarianceCat()
, and
longInvariance()
have been deprecated, redirecting users to
the new measEq.syntax()
function. It is much more general,
capable of combining features of all 3 deprecated functions without
their restrictions.
?measEq.syntax
help-page
examples for how to fit and compare several levels of invariance.Requires lavaan
version 0.6-1
Minor bugs fixed
Minor convenience features added
Redesigned runMI()
function, which no longer
produces an object of class lavaanStar
(that object class
is no longer supported), which inherited from class lavaan
.
It now produces an object of class lavaan.mi
, which
inherits from lavaan’s new lavaanList
class (see the
?lavaanList
help page for details). The reasons to redesign
runMI()
include:
lavaanStar
class could inadvertently mislead users
into thinking that certain results were available from multiple
imputations that were not. For example, the modindices()
function would return modification indices for the first imputation, but
those were not appropriately pooled statistics.The new runMI()
no longer includes the
chi=
argument, because those options have been moved to an
anova()
method written for lavaan.mi
objects.
Additional methods have been written: see the
class?lavaan.mi
help page for a list of methods and details
about their use. Additionally, appropriately pooled modification indices
and (S)EPCs are now available for multiple imputations (via
modindices.mi()
), as well as a general score test via
lavTestScore.mi()
.
The parcelAllocation()
has also been redesigned with
new arguments to improve its flexibility and ease of use. Users are now
required to provide lavaan syntax not only for the parcel-level model,
but also for the item-level model. This allows parcel allocation to be
automatically detected, no longer requiring users to provide a list of
item-to-parcel assignments (see new examples on the help page).
The OpenMx enhancements in previous versions of semTools are
obsolete now that OpenMx provides fit indices and standardized paths, so
they have been removed. However, standardizeMx()
is still
available (temporarily deprecated) to provide standardized
mean-structure parameters, until the OpenMx maintainers add that feature
to OpenMx::mxStandardizeRAMpaths()
.
measurementInvariance()
and
measurementInvarianceCat()
now require users to name all
arguments passed to cfa()
, including the first argument:
model=
. This is to prevent errors that occurred when some
previous users had passed arguments in a different order than expected,
which should not be a limitation.
Find our remaining version history on GitHub:
https://github.com/simsem/semTools/wiki/Version-History