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 error lavaan
version 0.6-5Minor 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
lavaan.mi
models fitted to multiply imputed multilevel data; resolved issue (#39).fixed.x=TRUE
and conditional.x=TRUE
in lavaan.mi
models, including std.nox
solutions in summary()
, modindices.mi()
, and lavTestScore.mi()
.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
objectslavTestScore.mi()
output when epc=TRUE
lavaan.mi
objects, to quantify additional uncertaintly in the test statistic due to missing data.plotProbe()
and related latent-interaction functions.standardizeMx()
was deprecated in previous versions, now removed.lavaan
version 0.6-3The formerly deprecated lisrel2lavaan()
function has been removed from semTools
compareFit()
now accepts lavaan.mi
objects returned by runMI()
lavaan.mi
objects returned by runMI()
, the anova()
method has been updated to behave more like lavaan's anova()
method:fitMeasures()
methodmodIndices.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.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.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.lavaan
version 0.6-1Minor 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.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()
.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).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
Any scripts or data that you put into this service are public.
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.