Mixing multi-value and fuzzy conditions

23 views
Skip to first unread message

Steffen

unread,
Jun 5, 2024, 1:55:32 PM6/5/24
to QCA with R
Hi together,

I'm relatively new to QCA and was wondering if it's possible to mix categorical multi-value and fuzzy conditions. If so, how is it possible to label some values as multi-value and some as fuzzy? I've created a small example below. Condition B has multi-values of 0, 1, 2. while C, and D should be fuzzy values between 0 and 1. However, the output of the superSubset seems to interpret everything as multi-values.

library(QCA)
df <- data.frame(
  Case = c(1, 2, 3, 4),
  A = c(1, 0, 1, 1),
  B = c(2, 1, 2, 0),
  C = c(1, 0.33, 0.33, 1),
  D = c(0.67, 0.33, 0.33, 1))

supset <- superSubset(df, outcome = "A", conditions = c("B", "C", "D"))
supset



Thanks a lot,
Steffen

Adrian Dușa

unread,
Jun 6, 2024, 10:02:30 AM6/6/24
to Steffen, QCA with R
Hello Stephen,

That has always been the case, if at least one of the conditions is multi-value, the whole output is printed in multi-value notation (to avoid confusion).
Perhaps it should be made more clear that there is no fuzzy notation in the output solution. Fuzzy conditions are coerced to crisp values when constructing the truth table, with only two values: 0 and 1.
Same happens with superSubset(), which only outputs crisp values.

Such a set could be printed as C and ~C for its negation, and the interpretation is just the same as C[1] for the presence and C[0] for the absence.

That being said, there is a new development in the package that allows defining custom labels for each and every value of a set, be it crisp, multi-value or fuzzy. That was the topic of my recent presentation at the AQCA conference in Chicago. More to follow soon, perhaps into a draft working paper and surely into a hopefully speedy publication.

Best,
Adrian

--
You received this message because you are subscribed to the Google Groups "QCA with R" group.
To unsubscribe from this group and stop receiving emails from it, send an email to qcawithr+u...@googlegroups.com.
To view this discussion on the web visit https://groups.google.com/d/msgid/qcawithr/f98d0c12-6640-4164-b4c3-d613bb24bfe3n%40googlegroups.com.

Adrian Dușa

unread,
Jun 7, 2024, 5:07:01 AM6/7/24
to Steffen, QCA with R
Hi Steffen,

Yes, mixing multi-value and fuzzy sets has been possible and methodologically sound since many years ago. You can even mix those and crisp as well, and the R package would still not have a problem.

The interpretation of the results is still the same, that is A is the same thing as A[1] and ~A is the same thing as A[0]. The notation might be a little different, but the interpretation is the same.

The "-" sign is definitely not in my book to signal a "don't care". At most, it is used to signal a temporal condition but hardly anyone uses that.
Don't care values are not implemented in the R package QCA. They were imported by Charles Ragin from engineering, and perpetuated as such in his software.

The R package QCA handles remainders in a slightly different way, nonetheless effective and with the same solution output.

Hope this helps,
Adrian

On Fri, Jun 7, 2024 at 10:38 AM Steffen <sspli...@googlemail.com> wrote:
Hi Adrian,

Thanks for your help. Does this mean that my current approach of mixing multi-value and fuzzy values would be fine from a methodology standpoint, I just have to be careful when interpreting the results?

If so, I have a follow-up question: When using fuzzy or crisp conditions, I have used "-" as a "don't care" value as explained in your book. When I try that with multi-value conditions, I always get an error "Possibly uncalibrated multivalue conditions. Please check: B"  while creating a truth table. Is using "don't care" for multi-value conditions also possible?

Here again a small example:

library(QCA)
df <- data.frame(
  Case = c(1, 2, 3, 4),
  A = c(1, 0, 1, 1),
  B = c(2, 1, "-", 0),
  C = c(1, 0.33, 0.66, 1),

  D = c(0.67, 0.33, 0.33, 1))

supset <- superSubset(df, outcome = "A", conditions = c("B", "C", "D"))
supset

tt <- truthTable(df, outcome = "A", conditions = c("B", "C"))
print(tt)

solution <- minimize(tt, details = TRUE)
print(solution)

Thanks a lot
Steffen

Steffen

unread,
Jun 7, 2024, 5:15:05 AM6/7/24
to QCA with R
Thanks a lot, that helps. Yes, looks like I mixed it up with the temporal condition.

Best,
Steffen

Reply all
Reply to author
Forward
0 new messages