Version 4.0
o Fixed: bug in cluster() showing an NaN result in divisions by 0 in small clusters.
o Improved: the formulas and output of the smmr() function for sufficiency has been updated to reflect the latest version in case selection guidelines in Schneider, Carsten Q. 2021. Set-Theoretic Multi-Method Research: A Guide to Combining QCA and Case Studies. Cambridge: Cambridge University Press.
o New: the smmr() function now includes analyses of necessity in line with the latest version in case selection guidelines in Schneider, Carsten Q. 2021. Set-Theoretic Multi-Method Research: A Guide to Combining QCA and Case Studies. Cambridge: Cambridge University Press.
Version 3.0
o Improved: the range of functions (rob.calibrange, rob.inclrange, rob.ncutrange, rob.cases, rob.corefit, rob.fit, rob.xyplot, rob.singletest) for performing the robustness test protocol in Oana and Schneider (2021) have been updated to reflect new changes in the protocol;
o Improved: the output of the smmr() function has been updated to reflect the changes in case selection guidelines in Schneider, Carsten Q. 2021. Set-Theoretic Multi-Method Research: A Guide to Combining QCA and Case Studies. Cambridge: Cambridge University Press.
o Fixed: bug in xy.plot() showing an error for max.overlaps has been fixed.
o Improved: function cluster.plot() can now also print units labels.
Version 2.6
o New: function stargazerTT() can be used for exporting truth tables in text, latex, and html format;
o New: function stargazerSol() can be used for exporting truth tables in text, latex, and html format;
o New: replication data for the material in the Oana, Schneider and Thomann (2020) book have been added to the package;
o New: a range of functions (rob.calibrange, rob.inclrange, rob.ncutrange, rob.cases, rob.corefit, rob.fit, rob.xyplot) have been added for performing the robustness test protocol in Oana and Schneider (unpublished manuscript);
o Fixed: bug in esa that sometimes did not identify some conditions in a truth table as 0s;
o Improved: obsolete and helper functions have been moved in the background (such as the functions for SMMR);
o Changed: function mmr() has now been renamed to smmr();
Version 2.5
o Changed: function indirectCalibration() now returns an object of class "numeric", instead of class "SetMethods"
o Improved: functions xy.plot() and pimplot() has a new argument crisp for plotting relations between crisp sets.
o Fixed: function pimplot() now recognizes negation (both with ~ and with neg.out) in solutions (either from minimize or from superSubset) in an automatic fashion. Argument neg.out is now obsolete.
o Fixed: function pimplot() now recognizes the use (or not) of tilde automatically;
o Improved: function pimplot() now plots deviant cases consistency in kind for sufficiency and necessity with a different shape.
o Improved: function mmr(), arguments use.tilde and neg.out are now deprecated. The functions now recognise these automatically.
o New: function cluster() now combines all the previous cluster diagnostics functions. It also includes new options for turning off the printing of within parameters and bug fixes;
o New: function cluster.plot() now allows to plot consistencies and coverages across clusters.
Version 2.4.1
o Changed: function indirectCalibration() now returns an object of class "numeric", instead of class "SetMethods"
Version 2.4
o Changed: xy.plot now works with names of columns in a specified dataset
o New: xy.plot and pimplot have a logical argument "jitter" for not overlapping labels
o New: xy.plot and pimplot have arguments "font", "fontface", "size", and "labcol" for formatting case labels
o Improved: the output of the theory.evaluation() function now also shows the Boolean expression of the intersections between theory and empirics
o Improved: function theory.evaluation() and all related functions now also have the argument "use.tilde" for inputing expressions or solutions that don't use tilde for negation
o New: function negateExp() for negating Boolean expressions
o New: function intersectExp() for intersecting Boolean expressions
o New: function mmr() and its related functions now have a logical argument "use.tilde" and allows solutions in which negation is denoted by either lower case or a tilde
o New: function ambig.cases() that identifyies cases that score exactly 0.5 in one or more conditions;
o New: function skew.check() for diagnosing skewness;
o New: function LR.intersect() to make it easier to intersect SAs and ECs for the outcome and its negation;
o Improved: function QCAfit() now automatically prints condition names and performs the analysis for their negation;
o Changed: function QCAfit() now has option necessity=TRUE as default;
o New: function property.cube() that produces a 3D scatter plot;
o Fixed: bug function mmr() and its related functions working with the focal conjunct principle giving an error when applied to a solution with a single term
o Improved: the output of the mmr() function for typical cases using the focal conjunct principle is now reordered to show uniquely covered cases before the rank
Version 2.3.1
o Improved: the output of the theory.evaluation function now also shows percentage of cases in each intersection between empirics and theory that have and don't have the outcome
o Changed: argument "imposs_LR" in function esa() renamed to "untenable_LR"
o Improved: the output for deviant cases coverage sufficiency is now ordered by truth table row.
Version 2.3
o New: new function mmr() replaces all case identification functions (individual functions are still available as single functions in this version) and can be used to select best available cases for single case studies and best pairs of matching cases for comparative case studies
o New: new function cluster() can now return pooled, within, and between consistencies for the relationship between two sets, for an object of class "qca", and for a Boolean expression
o New: function theory.evaluation() can now perform all theory evaluation analyses together, showing membership of cases in the intersections between theory and empirics, the names and proportion of cases that fall in these, and parameters of fit for the various intersections. The output is an object of class "theoryeval"
o New: function cases.suf.typ.fct() embedded in the mmr() function lists typical cases for sufficiency for each focal conjunct, rather than for the whole term
o New: function QCAradar() can now produce radar visualisation for "qca" solution objects and for Boolean expressions
o New: function QCAfit() can now accept "qca" solution objects and truth table rows as input
o Changed: former function theory.evaluation() is now called theory.data()
o Changed: former function cluster.eqmcc() is now called cluster.minimize()
o Changed: argument "intermed" is now deprecated in all the MMR, cluster, theory evaluation functions
o Changed: all the datasets in the package are now renamed in a more simple way
o Improved: argument "sol" can now work with more complex structures of model ambiguity.
o Improved: documentation for various functions
o Fixed: bug in esa() to work with necessary unions of conditions in argument “nec_cond” and to accept more complex expressions involving both unions and intersections
Version 2.1
o New: pimplot() can now plot specific truth table rows with argument “ttrows”
o New: pimplot() can now plot all truth table rows above a certain consistency
threshold with argument “incl.tt”
o New: pimplot() can now plot necessity results obtained from superSubset() in
package QCA with argument “necessity” set to TRUE and by specifying the “sS”
object in argument “results”
o New: function cases.theory.evaluation() now also shows percentages of cases
in the various intersections between theory and empirics
o Improved: function cases.theory.evaluation() can now be saved in an object of
class “casestheoryeval” which allows for a more user-friendly output
o Improved: documentation for various functions
o Improved: functions QCAfit(), pimplot(), xy.plot(), and xy.plot.lat() also
show the new parameter of fit Haesebrouck’s consistency as Cons.Suf(H)
o Changed: in function QCAfit() argument “negation” renamed to “neg.out”
o Changed: in function QCAfit() the parameter of fit PRODUCT is now optional
and can be shown with logical argument “product”
o Fixed: esa() can now work with necessary unions of conditions in argument
“nec_cond”
o Fixed: argument “imposs_LR” in function esa() can now work with intersections
of conditions
o Fixed: results from matching functions matches.suf.typtyp() and matches.suf.typiir()
can now be saved in an object of class “matchessuf”
o Fixed: bug in pimdata and functions relying on it, now these also work with
intermediate solutions that only have one sufficient term
Version 2.0
o New: functions for MMR that can select single cases for case studies:
cases.suf.dcn(), cases.suf.dcv(), cases.suf.iir(), cases.suf.typ(),
cases.suf.typ.most(), cases.suf.typ.unique()
o New: functions for MMR that can select pairs of cases for comparative case studies:
matches.suf.typdcn(), matches.suf.dcviir()
o New: functions for MMR that can select pairs of cases based on the INUS
principles; matches.suf.typtyp() matches typical cases for each conjunct in a
sufficient term and matches.suf.typiir() matches typical and individually irrelevant
cases for each conjunct in a sufficient term
o New: datasets Schneider and SchneiderLong are added to the package
o New: new function cluster.diagnostics() can perform parameter of diagnostics for
clustered data in the relationship between two single conditions
o New: new function cluster.eqmcc() can perform parameter of diagnostics for
clustered data for analyses of sufficiency using results obtained from the eqmcc()
function in package QCA
o New: new function theory.evaluation() shows membership of cases in the intersections
between a theory specified in boolean terms and an empirical solution obtained from
the eqmcc()function in package QCA
o New: new function theory.fit() shows parameters of fit for the intersections
between theory and empirical results using the object produced by the function
theory.evaluation()
o New: new function cases.theory.evaluation() shows the names of cases in the
intersections between theory and empirical results using the object produced by the
function theory.evaluation()
o New: new function esa() performs Enhanced Standard Analysis and returns a new truth
table in which all truth table rows are set to outcome value 0 that would otherwise
present untenable assumptions.
o Improved: documentation for all functions across the package
o Improved: all MMR functions across the package have follow improved formulas and
have an improved output
o Fixed: bugs in various functions across the package