NEWS.md
Bug fix in testOMF()
. Now the saturated argument is passed to the discrepancy/fit measures.
Bug fix in .resampleData()
when crossvalidation is used. Empty datasets are not possible anymore.
Implemented several other prediction metrics.
Bug fix: Revision of the predict metrics in the predict
function.
Update the .eval_plan argument since the multiprocess argument of the future package is deprecated. Now multisession or multicore need to be used. Note multicore does not work on Windows machines.
Bug fix: Calculation of the R2 and adjR2 in the print function of the assess function
Revise the description of the two-stage approach in the csem help file (#418)
Bug fix: fix print method for summarize()
when disattenuate is set to TRUE internally. Now disattenuate as treated in csem is reported and not the value provided by the user. (#419)
Use singular value decomposition in GSCAm to deal with large datasets (#444)
Bug fix: GSCAm (i.e., .approach_weights = "GSCA"
with constructs modeled as common factors) no longer fails when a single indicator construct is supplied (#441)
The default value for argument .r
(the number of repetitions) of predict()
was changed from 10 to 1 since more than one repetition is hardly ever necessary.
predict()
is now able to predict categorical indicators (a procedure known as OrdPLScPredict). predict()
therefore gains a number of new arguments, namely: .approach_score_target
, .sim_points
, .treat_as_continuous
, and .approach_score_benchmark
.
Removed argument .verbose
from testOMF()
as it did not have any effect (#445).
Bug fix: GSCAm (i.e., .approach_weights = "GSCA"
with constructs modeled as common factors) no longer fails when a single indicator construct is supplied (#441)
Bug fix: predict()
no longer fails when LOOCV is used (#337)
Bug fix: fix print method for summarize()
when resampling with constant values (weights or loadings) is conducted. The standard error, t-value, p-value and CI are properly set to NA
now. (#433)
postestimate_test_CVPAT()
: Perform a Cross-Validated Predictive Ability Test (CVPAT) to compare the predictive performance of two models (#455)
predict()
is now able to perform predictions either based on the earliest antecedents, i.e., the values of the indicators associated to exogenous constructs or based on the direct antecedents, i.e., based on the values or predictions associated to the direct antecedents (3485)
predict()
a variety of prediction metrics are added
exportToExcel()
. The function conveniently exports the results from assess()
, predict()
, summarize()
and testOMF()
to an .xlsx file.Critical bug fix: calculateVifModeB()
did not calculate the VIFs for modeB constructs correctly because of a bug in the calculation of the R^2. PLEASE REVIEW YOUR CALCULATIONS in cSEM version < 0.3.1:9000! (thanks to @Benjamin Liengaard for pointing it out).
Bug fix: predict()
no longer silently returns empty predictions when .test_data
does not contain rownames.
Bug fix: calculation of the MSE in modelSelectionCriteria()
resulted in a vector of incorrect length. In some cases this affected the computation of “GM” and “Mallows_cp”.
Bug fix: summarize()
no longer fails when .object
is a of class cSEMResults_2ndorder
and contains no indirect effects.
Add argument type_htmt
to calculateHTMT()
. type_htmt = "htmt2"
calculates a consistent estimator for congeneric measurement models.
Add lifecylce badges to postestimation functions.(#376)
Some arguments accepted by assess()
’s ...
argument had not been documented properly. This has been fixed. See args_assess_dotdotdot
for a complete list of available arguments.
calculateHTMT()
now allows users to chose the type of confidence interval to use when computing the critical (1-alpha)% quantile of the HTMT values (#379)
testMGD()
gains a new .output_type
argument. By default (.output_type = "structured"
), the standard output is returned. If .output_type = "structured"
, however, a tibble (data frame) summarizing the test decisions in a user-friendly way is returned. (#398)
Remove warning from fit()
when polycoric or polyserial indicator correlation is used during estimation. (#413)
print.cSEMAssess()
no longer prints zero for VIF values of constructs that are not part of a particular structural equation.
print.cSEMAssess()
now prints the results of calculateVIFModeB()
. This had been missing in previous releases. (#384)
Breaking: calculateVIFModeB()
now returns a matrix with the dependent construct in the rows and the VIFs for the coresponding weights in the columns. Previously, the output was a list.
Add model selection criteria. See the calculateModelSelectionCriteria()
function for details. As usual, all criteria are available via assess()
. (#412)
Combine functions for surface, floodlight and simple effects analysis in the doNonlinearEffectsAnalysis()
function; Breaking: functions doFloodlightAnalysis()
and doSurfaceAnalysis()
have been removed!
Progress bars are now supported for every function that does resampling. Progress bars are fully customizable via the progressr
framework created by
progressr::handlers("void")
and then run your csem commands. (#359)Fix bug in the computation of the Bc and Bca interval. Computation failed for models that had no indirect effects.
List element “reliability” of assess()
is changed to “Reliability” to be consistent with the naming scheme of the other list elements.
infer()
automatically computes bootstrap resamples now by default if .object
does not have class cSEMResults_resampled
already. (#389)
Remove .alpha
argument from testMICOM()
. The argument is no longer required as decisions are made via (possibly adjusted) p-values. (#393)
Add checks to plot methods for predict()
, doFloodlightAnalysis
, and, doFloodlightAnalysis
.
Several documentation updates and typo corrections.
The Fornell-Larcker criterion is now computed by its own function calculateFLCriterion()
. Previously, it was only available via assess()
. (#387)
Implement importance-performance matrix analysis via doIPMA()
. A corresponding plot method is also available.
testMICOM()
gains the .approach_p_adjust
argument. The argument takes a single character string or a vector of character strings naming the p-value adjustment for multiple comparisons. (#138)
Review calculateHTMT()
. 1.) Add inference; 2) fix wrong handling of single-indicator constructs (#351); 3) Remove warning produced by calculateHTMT()
when the estimated model contains less than 2 common factors. (#325)
Breaking: Rename argument in doFloodlightAnalysis()
. (#343)
New function doSurfaceAnalysis()
. See ?doSurfaceAnalysis()
(#349)
Implement degrees of freedom calculation for second-order constructs.
Add new function getConstructScores()
. The function returns the standardized or unstandardized construct scores. Requires a cSEMResults
object as input. (#340)
Fix bug in doFloodlightAnalysis()
. There was an internal bug. Earlier versions returned the wrong direct effect. If you have used doFloodlightAnalysis()
from cSEM v. 0.1.0 results are likely wrong.
Export plot method for cSEMFloodlight
objects.
Allow users to specify a lavaan model without a structural model. Now, users can specify a model with several measurement equations (via <~
or =~
) but no strucutral equations. Instead the correlations between all! constructs must be given. Failing to do so causes an error.
Add indicator correlation matrix for a modified version of Summers (1965) model. See ?Sigma_Summers_composites
Add example data sets used in Henseler (2020). See ?BergamiBagozzi2000
, ?ITFlex
, ?LancelotMiltgenetal2016
, ?Russett
, ?Switching
, and ?Yooetal2000
.
Update documentation and vignettes
The following functions called by assess()
are now exported and support all of cSEM’s native classes (#357, #369):
calculateAVE()
calculateDf()
calculateGoF()
calculateHTMT()
(does not support models containing second-order constructs)calculateRhoT()
calculateRhoT()
calculatef2()
calculateDML()
calculateDG()
calculateDL()
calculateChiSquare()
calculateChiSquareDf()
calculateGFI()
calculateNFI()
calculateNNFI()
calculateIFI()
calculateCFI()
calculateSRMR()
calculateRMSEA()
calculateRMSTheta()
calculateVIFModeB()
assess()
now also computes and prints the total and indirect effects for each variable as they are often used for model assessment and may thus be considered a quality criteria. In addition, the variance accounted for (VAF) is computed and printed as well. (#335)
Breaking: change the name of the the quality criterion “effect size (f2)” from esize
to f2
and the corresponding function from calculateEffectSize()
to calculatef2()
as this is more common. (#336)
Add the Chi_square statistic and the Chi_square statistic divided by its degrees of freedom to the list of fit indices. See: ?calculateChiSquare()
and ?calculateChiSquareDf()
Fix bug in calculatef2()
/assess()
when one of the equations of the structural model has only one explanatory variable.
Fix bug related to dotdotdot arguments incorrectly passed to functions supplied to .user_funs
when resampling. Add additional example to assess()
illustrating the use of the .user_funs
arguments when given multiple functions. (#334)
Remove warning produced when printing a cSEMAssess
object based on a model containing only constructs modeled as composites.
Update documentation for predict()
.
Integrate and document cSEMPredict
method for generic function plot()
. Now users may call plot()
on an object created by predict()
. (#337)
Add the density of the residuals as plot to plot.cSEMPredict()
. (#337)
Remove argument .only_common_factors
for postestimation function predict()
. Now predict()
retruns predictions for composite models as well. This will break existing code that uses predict(..., .only_common_factors = ...)
. You will get an unused argument (.only_common_factors = FALSE)
error. Simply remove the argument to fix it. (#330)
Fixed error in predict()
when the dataset used to obtain .object
contained a character column. (#345)
.fit_measures
argument to testOMF()
. Now other fit measures such as the RMSEA or the GFI can be used as the test statistic. This is a rather experimental feature and may be removed in future versions.Using .approach_weights = "GSCA"
for models containing nonlinear terms gives a more meaningful error message. (#342)
print.cSEMTestMICOM()
no longer prints the decision but additional bootstrap information. (in parts: #339)
If the weighting scheme is "PLS-PM"
and .disattenuate = TRUE
, dissatenuation is longer applied to constructs using modes other than “modeA”” or “modeB”. (#352)
Model-implied indicator correlation matrix for non-recursive models should now be calculated correctly. (#264)
calculatef2()
gives an error when the path model estimator is not “OLS”. (#360, #370)
Add .type
argument to calculateGFI()
. Now GFI based on the ML and ULS fitting function can be computed. (#371)
csem()
gives a meaningful error when the structural model contains only second-order constructs (#366)
Fix bug in testMICOM()
. Function produced an error if the data set provided contained more columns than indicators used in the model used for csem()
. (#355)
Fix bug in testMICOM()
. Function produced an error if the data set provided contained an id-column even if the id-column was correctly supplied to csem()
. (#344, #338)
When calculating the HTMT via assess()
the geometric mean of the average monotrait−heteromethod correlation construct eta_i with the average monotrait−heteromethod correlation of other constructs can be negative. NaNs produced are produced in this case and the HTMT was not printed. Added a warning and forced printing the NaNs as well. (#346)
Add CITATION file (#331)
Add informative error message if .data
contains missing values.
Update vignettes csem-notation