Robustness check for a four-value fuzzy set

61 views
Skip to first unread message

Alexander Strelkov

unread,
Mar 27, 2023, 9:56:59 AM3/27/23
to QCA with R
Dear group members, good afternoon
       How would one record anchors for a fuzzy set that was calibrated via recording/theoretical method?
I ran this code but apparently its for direct calibration
rob.calibrange(raw.data = datastr2,calib.data = INNOV2added,test.cond.raw ="investment",test.cond.calib = "HIGHINV",test.thresholds = c(0.3,0.59,0.99,1), step = 0.1, max.runs = 5,outcome = "HIGHPATENT",conditions = conds,incl.cut = 0.87, n.cut = 1) Error: For fuzzy direct calibration, there should be either 3 or 6 thresholds".

modifying it to 6 values also resulted in a problem
rob.calibrange(raw.data = datastr2,calib.data = INNOV2added,test.cond.raw ="investment",test.cond.calib = "HIGHINV",test.thresholds = c(0,0.3,0.59,0.6,0.99,1), step = 0.1, max.runs = 5,outcome = "HIGHPATENT",conditions = conds,incl.cut = 0.87, n.cut = 1) [1] "Searching for thresholds, this takes me a while for now, sorry..." [1] "Searching for thresholds, this takes me a while for now, sorry..." [1] "Searching for thresholds, this takes me a while for now, sorry..." Error: First crossover threshold not between first exclusion and inclusion thresholds.
I calibrated the values as follows:
“HIGHINV”: >=1 (1), 0.99-0.6 (0.67), 0.59-0.3 (0.33), <0.3 (0)

Many thanks for your help!

Adrian Dușa

unread,
Mar 27, 2023, 2:35:53 PM3/27/23
to QCA with R
Dear Alexander,

I would warmly suggest reading the chapter on calibration that is freely available online, here:

It is my impression you are mixing up the method of "direct assignment”, which I’ve shown in the recode() command earlier, with the “direct method” of calibration, that is indeed using either three or six thresholds.

Direct assignment:

Direct method:

Please also note the function rob.calibrange() is not a calibration function. What it does is to find a range of thresholds for which the calibration seems to be robust. It is part of the add-on package SetMethods.

For the formal calibration function, with all necessary arguments, do have a look at the help page of the function:
?calibrate

I hope this helps,
Adrian

Adrian Dușa

unread,
Mar 28, 2023, 8:52:25 AM3/28/23
to Alexander Strelkov, QCA with R
Dear Alexander,

The short answer is… you can’t, and the reason is already mentioned in the previous email: because you are considering the 4 cutoff values that you used for the “direct assignment” method of calibration, as if they were calibration thresholds for the “direct method” of calibration. They are very different calibration methods, and the main reason I suggested (warmly) to read more about what each method does, in the online free version of my book.

I hope this helps,
Adrian

On 28 Mar 2023 at 15:47:54, Alexander Strelkov <alexander....@gmail.com> wrote:
Dear Adrian,
   Thank you, will be consulting the book you mentioned straight away.
Apologies for not phrasing my question clearly, let me rephrase.
Indeed, I understand that rob.calibrange is not "calibrating" as such but allows to find a range of thresholds within which calibration is robust.

I have been using "Qualitative Comparative Analysis using R: a beginner's guide" as my main source so far.
I am now at the stage where I want to check the robustness of my results.
The example provided in the book has 3 values for the test.threshold function (see below)
rob.calibrange(
  raw.data = PAYR,
  calib.data = PF,
  test.cond.raw = "WEAL",
  test.cond.calib = "HW",
  test.thresholds = c(3000,10500,28500),
  step = 500,
  max.runs = 40,
  outcome  = "HL",
  conditions =  conds,
  incl.cut = 0.87,
  n.cut = 2,
  include = "?"
)

However, for my own data I used 4 calibration anchors, for example for the parameter "HIGHINV" 1 was >=1, 0.67 was <1&>=0.6, 0.33 was <0.6&>=0.3, 0 was <0.3
How do I then put these anchors into "test.threshold" of rob.calibrange? I cannot seem to find such an example in the book / cannot understand how to do it.
Many thanks for your time once again!
Alexander



--
You received this message because you are subscribed to a topic in the Google Groups "QCA with R" group.
To unsubscribe from this topic, visit https://groups.google.com/d/topic/qcawithr/RwGpuV4JYiE/unsubscribe.
To unsubscribe from this group and all its topics, send an email to qcawithr+u...@googlegroups.com.
To view this discussion on the web visit https://groups.google.com/d/msgid/qcawithr/0c5b2c33-198e-4b7f-b58d-a16b799ba776n%40googlegroups.com.

Adrian Dușa

unread,
Mar 29, 2023, 1:24:08 AM3/29/23
to Alexander Strelkov, QCA with R
Hi Alexander, please see below:

On 29 Mar 2023 at 00:17:24, Alexander Strelkov <alexander....@gmail.com> wrote:
Dear Adrian, good evening
      Reading the book does make it clearer. Another question, however.
Running the following code:
rob.calibrange(raw.data = datastr2,calib.data = INNOV2added,test.cond.raw ="investment",test.cond.calib = "HIGHINV",test.thresholds = c(0.3,0.6,1), step = 0.1, max.runs = 5,outcome = "HIGHPATENT",conditions = conds,incl.cut = 0.87, n.cut = 1)

The result is the following:
Exclusion: Lower bound NA Threshold 0.3 Upper bound 1 Crossover: Lower bound 0.6 Threshold 0.6 Upper bound 0.8 Inclusion: Lower bound 0.6 Threshold 1 Upper bound 22.7000000000001
E C I Lower bound NA 0.6 0.6 Upper bound 1 0.8 22.7

How should these results be interpreted? Or where can I read an extensive explanation?

I would first try to read the help page of the function rob.calibrate(). There should be enough information there to explain what happens in the output, and why is a value of NA appearing.
Just guessing, I would interpret this as there is no robust exclusion threshold, or at least the function could not determine a more or less robust such threshold from the available data.

Second, if everything else fails, I would try to reach the developers of the package SetMethods. That is a different package from the main QCA package, with a separate team of developers.
Reply all
Reply to author
Forward
0 new messages