QCAfit - Qualitative comparative analysis

Hello everyone,

I am currently working on Qualitative comparative analysis and I would like to run a necessity analysis using the QCAfit function. However, I. obtain the following error:

Error in QCAfit(dataset[, 1:4], dataset$outcomevariable, names(dataset[, 1:4]), necessity = TRUE) :
could not find function "QCAfit"

I have library(QCA); library(SetMethods); library(QCAGUI) installed.

Could you please be so kind to help me.

Thanks.

Best regards,

Maria

Add

library(QCAfit)

Thank you. I tried but I feel that QCAfit is part of the SetMethods package, it does not work. May I ask, do you think is there any other way to proceed?

Thanks.

I had to guess without a reprex. See the FAQ. Does the help() example work on your installation and is comparable to your data structure and call?

library(SetMethods)
#> Loading required package: QCA
#> Loading required package: admisc
#> 
#> To cite package QCA in publications, please use:
#>   Dusa, Adrian (2019) QCA with R. A Comprehensive Resource.
#>   Springer International Publishing.
#> 
#> To run the graphical user interface, use: runGUI()
#> Loading required package: ggplot2
#> Loading required package: ggrepel
#> Loading required package: stargazer
#> 
#> Please cite as:
#>  Hlavac, Marek (2022). stargazer: Well-Formatted Regression and Summary Statistics Tables.
#>  R package version 5.2.3. https://CRAN.R-project.org/package=stargazer
#> 
#> 
#>   To cite package SetMethods in publications use: 
#> 
#>   Oana, Ioana-Elena and Carsten Q. Schneider. 2018. SetMethods: An Add-on R Package for 
#>   Advanced QCA. The R Journal 10(1): 507-33. https://journal.r-project.org/archive/2018/RJ-2018-031/index.html
#>   
#> 
# Generate fake data
set.seed(1234)

a <- runif(100, 0, 1)
b <- runif(100, 0, 1)
c <- runif(100, 0, 1)
y <- runif(100, 0, 1)

# Only one condition, for necessity
QCAfit(a, y, cond.lab = "A")
#>   Cons.Nec Cov.Nec   RoN
#> A    0.593   0.705 0.813
# With three conditions and their negation, for necessity
QCAfit(cbind(a, b, c), y)
#>    Cons.Nec Cov.Nec   RoN
#> a     0.593   0.705 0.813
#> b     0.694   0.682 0.737
#> c     0.653   0.677 0.755
#> ~a    0.721   0.666 0.700
#> ~b    0.611   0.675 0.775
#> ~c    0.674   0.702 0.771
# Only one condition, for sufficiency
QCAfit(a, y, cond.lab = "A", necessity = FALSE)
#> Cons.Suf  Cov.Suf      PRI 
#>    0.705    0.593    0.480

# With three conditions, their negation and negated output, for necessity
QCAfit(cbind(a, b, c), y, neg.out = TRUE)
#>    Cons.Nec Cov.Nec   RoN
#> a     0.609   0.668 0.795
#> b     0.681   0.618 0.699
#> c     0.691   0.661 0.746
#> ~a    0.731   0.624 0.674
#> ~b    0.650   0.662 0.769
#> ~c    0.663   0.638 0.735

# Load the Schneider data:

data(SCHF)

# Get parameters of fit for condition EMP as necessary for outcome EXPORT:

QCAfit(SCHF$EMP, SCHF$EXPORT, cond.lab = "EMP")
#>     Cons.Nec Cov.Nec   RoN
#> EMP     0.58   0.607 0.698

QCAfit(1-SCHF$EMP, SCHF$EXPORT, neg.out=TRUE, cond.lab = "~EMP")
#>      Cons.Nec Cov.Nec   RoN
#> ~EMP    0.545   0.518 0.695

# Obtain the parsimonious solution for outcome "EXPORT":

sol_yp <- minimize(SCHF, outcome = "EXPORT",
                   conditions = c("EMP","BARGAIN","UNI","OCCUP","STOCK", "MA"),
                   incl.cut = .9,
                   include = "?",
                   details = TRUE, show.cases = TRUE)

# Get parameters of fit for the parsimonious solution:

QCAfit(x = sol_yp, y = "EXPORT", necessity = FALSE)
#>                   Cons.Suf Cov.Suf   PRI
#> ~EMP*OCCUP           0.836   0.353 0.596
#> BARGAIN*UNI*STOCK    0.796   0.497 0.665
#> ~OCCUP*STOCK*~MA     0.890   0.374 0.788
#> solution_formula     0.790   0.742 0.675

# Get parameters of fit for truth table rows 2,8, and 10:

QCAfit(x = sol_yp, y = "EXPORT", ttrows=c("2","8","10"), necessity = FALSE)
#>    Cons.Suf Cov.Suf    PRI
#> 2    0.7869  0.0461 0.3158
#> 8    0.9303  0.0899 0.7760
#> 10   0.6615  0.0723 0.1585

# Get parameters of fit for truth table rows 2,8, and 10:

QCAfit(x = sol_yp, y = "EXPORT", ttrows=c("2","8","10"), necessity = FALSE)
#>    Cons.Suf Cov.Suf    PRI
#> 2    0.7869  0.0461 0.3158
#> 8    0.9303  0.0899 0.7760
#> 10   0.6615  0.0723 0.1585

Created on 2023-02-05 with reprex v2.0.2

Many thanks, but - even with your new code - it still does not work and I cannot understand why. I have been trying and trying

Try opening a fresh session and cut-and-paste just the new code and run. What you see in the reprex in the lines beginning #> is the actual output generated when I did the reprex.

If it works, as it should, with my fake data, then let's see how my fake data compares to your real data.

This topic was automatically closed 21 days after the last reply. New replies are no longer allowed.

If you have a query related to it or one of the replies, start a new topic and refer back with a link.