- New formatted table output for effect summaries for
`semEff()`

and`bootCI()`

, accessed via new`print()`

and`summary()`

methods. - Bootstrap standard errors and bias (mean minus original estimate) now included with effect summaries and fitted values from
`predEff()`

. - Support for
`"psem"`

objects (`piecewiseSEM::psem()`

) in`bootEff()`

/`semEff()`

. - New package vignettes demonstrating some examples.

- All calculated indirect effects (individual, not summed) now also returned as part of
`"semEff"`

object (for reference; does not include bootstrapped effects). Extract using`getAllInd()`

. - Unnamed model lists can now be supplied to
`bootEff()`

/`semEff()`

(names are generated automatically). - Updates to
`R2()`

(control of negative values, new improved default method for adjusted R-squared — Olkin-Pratt exact estimator). - New function
`getX()`

, for more flexible construction of model design matrices (mostly for internal use). - Removed
`…`

argument of`stdEff()`

— arguments to`R2()`

are now passed as named list to`R2.arg`

. - Renamed extractor functions for effects (e.g.
`dirEff()`

->`getDirEff()`

) and added some new ones. - Various other code and documentation updates.

- Amendment to previous incomplete fix for issue where
`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 (binaries)

`R2()`

can now calculate R-squared based on Spearman’s Rho.- New function
`RVIF()`

, to calculate ‘root variance inflation factors’ (square root of VIFs).

- Renamed
`unique.x`

argument of`stdEff()`

to`unique.eff`

(old name temporarily allowed). - Removed default value of
`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). - Added
`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 (binaries)

- Standardised vs raw effects: added
`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.

- Renamed function
`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). - Added
`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. - Added
`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()`

. - Added confidence interval attributes to
`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).- Removed ability to pass arguments from
`getY()`

to`glt()`

, allowing more controlled output of`getY(..., link = TRUE)`

. - Various minor updates to function code and documentation, improvement and addition of some new internal helper functions.

`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 (binaries)

- Support for mixed models of class
`"lmerModLmerTest"`

. - New function
`glt()`

, for calculating ‘generalised’ link transformations for non-gaussian variables.

- Transfer of some functionality from
`getY()`

to`glt()`

. - Minor changes to arguments in
`bootEff()`

and`getY()`

. - Added ability in
`stdCoeff()`

to use variables not present in the model design matrix (e.g. a ‘missing’ main effect for an interaction). - Added ability to pass a boot object (from
`bootEff()`

) to the`effects`

argument of`predEff()`

. - Added a
`refit.x`

argument to`stdCoeff()`

, allowing control over whether to refit the model with centred predictors (for correct VIFs). - Various updates to documentation.

`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 (binaries)

- Function
`semEff()`

did not output effects properly.

08/01/2020 (binaries)

- Added support for generalised least squares models (class
`"gls"`

). - Added support for beta regression models (class
`"betareg"`

).

- Function
`xNam()`

did not generate correct term names for interactions involving multi-coefficient terms (e.g. factors). - Function
`xNam()`

did not generate correct term names for factors when the model intercept is suppressed. - Function
`R2()`

with argument`pred = TRUE`

threw an error for models where any weights = 0.

04/11/2019 (binaries)

New package `semEff`

, allowing the automatic calculation of effects for ‘piecewise’ structural equation models.