View source: R/tsqca_fiss_core.R
| compute_fiss_core | R Documentation |
Takes a threshold-sweep result produced by otSweep or
ctSweepS and augments it with the Fiss (2011) core/peripheral
classification of the intermediate solution. Results of
ctSweepM and dtSweep are not supported yet and
give an error.
compute_fiss_core(result, conditions = NULL)
result |
A result of |
conditions |
Character vector. Condition names (used for consistent
row ordering in charts). If |
The classification requires that:
The sweep was run with include = "?" (to allow parsimonious
computation)
return_details = TRUE was used (truth tables must be stored)
dir.exp was specified (i.e., the sweep produced intermediate
solutions; core/peripheral is only meaningful when comparing
parsimonious and intermediate solutions)
For each threshold in the result, this function:
Retrieves the intermediate solution already stored in
result$details, and takes the model reported in the sweep
summary (M1).
Identifies the parsimonious solution(s) from which
QCA::minimize() derived that model. With dir.exp,
QCA stores one entry in sol$i.sol for each pair of a
complex solution and a parsimonious minimal solution
(C1P1, C1P2, ...; see print(sol)), holding the
parsimonious model in $p.sol and the intermediate model(s)
obtained from it in $solution. Every entry that lists M1 is
treated as a source.
Classifies each term (configuration) of M1: the conditions of the source parsimonious term(s) contained in that term are core; its other conditions are peripheral.
The original result object with an additional
$fiss_core slot: a named list keyed by threshold (character),
each entry containing:
parsim_expression — the parsimonious solution(s) M1 was
compared with; several are shown with QCA's labels, e.g.
"P1: ...; P2: ..."
interm_expression — the intermediate solution classified
(M1)
parsim_n_solutions — number of tied parsimonious
solutions on the truth table
interm_n_solutions — number of intermediate minimal
solutions
parsim_sources — names of the i.sol entries M1 was
derived from (e.g. "C1P1"), or NA when unavailable
classification — data frame with columns
term_idx, term_expr, condition,
status, type
Fiss (2011) defines core conditions as those that are part of both the parsimonious and the intermediate solution, and peripheral conditions as those that are eliminated in the parsimonious solution and therefore appear only in the intermediate solution. His solution tables apply this configuration by configuration: solutions are grouped by their core conditions, and the same condition can be core in one configuration and peripheral in another. This function follows that practice. A parsimonious term is contained in an intermediate term when every condition it specifies has the same status (present or absent) in the intermediate term; the core conditions of the intermediate term are the conditions of all parsimonious terms contained in it (one of the configurations in Fiss's high-performance table contains two parsimonious terms and has the core conditions of both).
Example: with the parsimonious solution ~A*E + A*B, the intermediate
term ~A*~B*C*E contains ~A*E, so ~A and E are
core and ~B and C are peripheral, even though B
occurs in the other parsimonious term. Versions up to 2.0.7 compared each
condition with the whole parsimonious solution and reported ~B as
core here, which does not match how Fiss's tables are built.
Fiss (2011) does not discuss two situations, which this function handles conservatively and reports with a warning:
Tied parsimonious solutions. If QCA derived M1 from a
single parsimonious solution, that solution alone decides. If QCA
derived the same M1 from several tied parsimonious solutions (the
directional expectations do not single one out), a condition is core
only if it is core relative to every one of them. For example, if
M1 = SUP + TRU*PRC is derived both from TRU + SUP and
from PRC + SUP, then TRU is core relative to the first
and PRC relative to the second, so both are reported as
peripheral. Fiss grounds coreness in the strength of the evidence; a
condition whose status depends on which tied solution is chosen is not
treated as strongly supported. To report core/peripheral status
relative to one particular parsimonious solution, state that choice
explicitly.
No contained parsimonious term. An intermediate term can
be covered by the parsimonious solution without containing any single
parsimonious term (for example B*C*D*E with the parsimonious
solution ~A*E + A*B). Its conditions are then all classified as
peripheral.
Only M1 is classified. When the intermediate solution itself has several
minimal models (see n_solutions in the sweep summary and
interm_n_solutions below), the other models are not included in the
classification or the chart. If the derivation cannot be read from the
stored solution (no $i.sol or $p.sol), M1 is compared with
every tied parsimonious solution.
Fiss, P. C. (2011). Building better causal theories: A fuzzy set approach to typologies in organization research. Academy of Management Journal, 54(2), 393-420.
generate_fiss_chart
## Not run:
library(ThSQCA)
data(sample_data)
# Step 1: Run intermediate sweep (dir.exp required)
res <- otSweep(
dat = sample_data,
outcome = "Y",
conditions = c("X1", "X2", "X3"),
sweep_range = 6:8,
thrX = c(X1 = 7, X2 = 7, X3 = 7),
include = "?",
dir.exp = c(1, 1, 1),
return_details = TRUE
)
# Step 2: Augment with Fiss core/peripheral classification
res_fiss <- compute_fiss_core(res, conditions = c("X1", "X2", "X3"))
# Step 3: Generate Fiss-style chart
cat(generate_fiss_chart(res_fiss, symbol_set = "unicode"))
## End(Not run)
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.