12/09/2024
excl.other.med
to semEff()
, allowing calculation of indirect effects for specific SEM pathways, i.e. those comprising only user-specified mediators.getEffTable()
) for returning unformatted tables of effects and confidence intervals.print()
and summary()
output for "semEff"
objects.getFamily()
to flexibly extract a "family"
object from different model classes (mostly for internal use).getData()
incorrectly evaluated variable names in objects supplied to "gls"
models, causing the check against variables in data
to fail.22/08/2022
getX()
threw an error when trying to construct model design matrices using factors with less than two levels (where contrasts can't be applied). Such an error might occur where e.g. the dataset called by a model contained at least one character/factor variable with only one unique value, which was incorrectly coerced to a factor by getX()
(typically in order to gain access to individual dummy variables not in the original design matrix).
bootEff()
failed to name unnamed model lists where the names attribute was a character vector of empty strings (rather than NULL
). Such names are apparently generated by piecewiseSEM::psem()
.
12/10/2021
semEff()
and bootCI()
, accessed via new print()
and summary()
methods.predEff()
."psem"
objects (piecewiseSEM::psem()
) in bootEff()
/semEff()
."semEff"
object (for reference; does not include bootstrapped effects). Extract using getAllInd()
.bootEff()
/semEff()
(names are generated automatically).R2()
(control of negative values, new improved default method for adjusted R-squared -- Olkin-Pratt exact estimator).getX()
, for more flexible construction of model design matrices (mostly for internal use).…
argument of stdEff()
-- arguments to R2()
are now passed as named list to R2.arg
.dirEff()
-> getDirEff()
) and added some new ones.xNam()
was not evaluating factor/character terms correctly. The function now explicitly treats all non-numeric predictor variables as factors and coerces where necessary. It also has improved handling of factor contrasts when evaluating names.pSapply()
did not work with parallel = "multicore"
, due to relying completely on parallel::parSapply()
for parallel processing (which is "snow"
only). The function now wraps parallel::mcmapply()
for "multicore"
(not available on Windows systems).09/04/2021
R2()
can now calculate R-squared based on Spearman's Rho.RVIF()
, to calculate 'root variance inflation factors' (square root of VIFs).unique.x
argument of stdEff()
to unique.eff
(old name temporarily allowed).R
argument of bootEff()
. The number of bootstrap resamples must now be explicitly specified, which is probably better practice (10,000 is often recommended for confidence intervals).type
argument to bootEff()
, to specify the type of bootstrapping to perform (for mixed models). This replaces ran.eff = "crossed"
, previously used to indicate parametric bootstrapping (although it's temporarily allowed).bootEff()
will now treat a list containing both mixed and non-mixed models as all mixed (with a warning). Previously all such models were treated as non-mixed (unintentionally). This is presumably a relatively rare scenario.R2()
did not calculate adjusted R-squared correctly for beta regression models (i.e. did not incorporate the 'phi' parameter in degrees of freedom calculations).xNam()
produced an error when attempting to evaluate factor contrasts in data, expecting that character vectors were factors (related to the change to stringsAsFactors = FALSE
as default in R 4.0.0
, but would have occurred in some cases regardless).01/10/2020
incl.raw
argument to stdEff()
(stdCoeff()
), to append raw effects (unstandardised coefficients) to the output. This facilitates simultaneous bootstrapping of both sets of effects, allowing raw effects to be used alternatively for calculating (semEff(..., use.raw = TRUE)
) or predicting (predEff(..., use.raw = TRUE)
) effects/CIs.stdCoeff()
to stdEff()
, to better reflect the concept of standardised model coefficients as 'effects' (calling stdCoeff()
will still work -- with a warning -- until the next version at least).offset
argument to getY()
and R2()
, to explicitly retain/remove an offset (where present) in/from the response variable or fitted values. Offsets are removed by default, which ensures, for example, that standardised effects are scaled appropriately.env
argument to multiple functions, for explicitly specifying the location of data used to fit models (not necessary in most circumstances). This replaces the ...
argument in many instances, which was previously used to pass an environment to eval()
(via getData()
). env
(and data
) can also now be passed (...
) to bootEff()
and predEff()
.bootCI()
/semEff()
output (i.e. confidence level, type).R2()
no longer calculates predictive R-squared for GLMMs, as the interpretation of the hat matrix used in calculations is not reliable (see https://rdrr.io/cran/lme4/man/hatvalues.merMod.html).getY()
to glt()
, allowing more controlled output of getY(..., link = TRUE)
.bootEff()
specified with correlated errors failed for mixed models of class "lmerModLmerTest"
(issue with re-fitting models using update()
).predEff()
failed to evaluate some complex model terms (e.g. polynomials).stdEff()
(stdCoeff()
) did not re-fit model properly to calculate correct VIFs for a fully 'centred' model (i.e. did not account sufficiently for complex terms such as polynomials or transformations, where mean-centring should occur as the final step).xNam()
generated incorrect term names for categorical predictors under certain circumstances (different contrast types, interactive effects with no 'main' effects).stdEff()
(stdCoeff()
) incorrectly calculated 'centred' intercept for models with an offset specified.predEff()
failed when a nested list of models and list of numeric weights were supplied (i.e. a model averaging scenario).stdEff()
(stdCoeff()
) did not return the 'phi' parameter(s) for beta regression models.25/03/2020
"lmerModLmerTest"
.glt()
, for calculating 'generalised' link transformations for non-gaussian variables.getY()
to glt()
.bootEff()
and getY()
.stdCoeff()
to use variables not present in the model design matrix (e.g. a 'missing' main effect for an interaction).bootEff()
) to the effects
argument of predEff()
.refit.x
argument to stdCoeff()
, allowing control over whether to refit the model with centred predictors (for correct VIFs).xNam()
did not generate correct term names for categorical variables with contrast types other than contr.treatment()
.stdCoeff()
did not correctly adjust for multicollinearity for a model containing categorical variables when centring was specified (cen.x = TRUE
).getY()
failed to generate an estimated working response when a variable with missing values (NA
) was supplied (this functionality now in glt()
).predEff()
failed for models with categorical variables (did not access dummy variables in model matrix).15/01/2020
semEff()
did not output effects properly.08/01/2020
"gls"
)."betareg"
).xNam()
did not generate correct term names for interactions involving multi-coefficient terms (e.g. factors).xNam()
did not generate correct term names for factors when the model intercept is suppressed.R2()
with argument pred = TRUE
threw an error for models where any weights = 0.04/11/2019
New package semEff
, allowing the automatic calculation of effects for 'piecewise' structural equation models.