Nothing
## ----include=FALSE------------------------------------------------------------
knitr::opts_chunk$set(
collapse = TRUE,
comment = "#>"
)
## -----------------------------------------------------------------------------
library(TSQCA)
library(QCA)
## -----------------------------------------------------------------------------
# Adjust the file name as needed
library(TSQCA)
data("sample_data")
dat <- sample_data
# Outcome and conditions
outcome <- "Y"
conditions <- c("X1", "X2", "X3")
# Quick inspection
str(dat)
summary(dat)
## -----------------------------------------------------------------------------
thrY_base <- 7
thrX_base <- 7
# Fixed X thresholds (for OTS–QCA)
thrX_vec <- c(
X1 = thrX_base,
X2 = thrX_base,
X3 = thrX_base
)
thrX_vec
## -----------------------------------------------------------------------------
# Example: Three solution types at single threshold
thrX <- c(X1 = 7, X2 = 7, X3 = 7)
# Complex (default)
res_comp <- otSweep(dat, "Y", c("X1", "X2", "X3"), sweep_range = 7, thrX = thrX)
cat("Complex:", res_comp$summary$expression, "\n")
# Parsimonious
res_pars <- otSweep(dat, "Y", c("X1", "X2", "X3"), sweep_range = 7, thrX = thrX,
include = "?")
cat("Parsimonious:", res_pars$summary$expression, "\n")
# Intermediate
res_int <- otSweep(dat, "Y", c("X1", "X2", "X3"), sweep_range = 7, thrX = thrX,
include = "?", dir.exp = c(1, 1, 1))
cat("Intermediate:", res_int$summary$expression, "\n")
## ----error=TRUE---------------------------------------------------------------
try({
sweep_var <- "X3" # Condition (X) whose threshold is swept
sweep_range <- 6:9 # Candidate threshold values to evaluate
thrY <- 7 # Outcome (Y) threshold (fixed)
thrX_default <- 7 # Threshold for other X conditions (fixed)
# Default: Complex solution (include = "", dir.exp = NULL)
res_cts <- ctSweepS(
dat = dat,
outcome = "Y",
conditions = c("X1", "X2", "X3"),
sweep_var = "X3",
sweep_range = 6:9,
thrY = 7,
thrX_default = 7,
return_details = TRUE
)
summary(res_cts)
})
## ----error=TRUE---------------------------------------------------------------
try({
# Intermediate solution: specify include = "?" and dir.exp
res_cts_int <- ctSweepS(
dat = dat,
outcome = "Y",
conditions = c("X1", "X2", "X3"),
sweep_var = "X3",
sweep_range = 6:9,
thrY = 7,
thrX_default = 7,
include = "?",
dir.exp = c(1, 1, 1),
return_details = TRUE
)
summary(res_cts_int)
})
## ----eval=FALSE---------------------------------------------------------------
# write.csv(res_cts$summary, file = "TSQCA_CTS_results.csv", row.names = FALSE)
## ----error=TRUE---------------------------------------------------------------
try({
# Create a sweep list specifying thresholds for each condition
sweep_list <- list(
X1 = 6:7,
X2 = 6:7,
X3 = 6:7
)
# Default: Complex solution
res_mcts <- ctSweepM(
dat = dat,
outcome = "Y",
conditions = c("X1", "X2", "X3"),
sweep_list = sweep_list,
thrY = 7,
return_details = TRUE
)
summary(res_mcts)
})
## ----error=TRUE---------------------------------------------------------------
try({
# Intermediate solution: specify include = "?" and dir.exp
res_mcts_int <- ctSweepM(
dat = dat,
outcome = "Y",
conditions = c("X1", "X2", "X3"),
sweep_list = sweep_list,
thrY = 7,
include = "?",
dir.exp = c(1, 1, 1),
return_details = TRUE
)
summary(res_mcts_int)
})
## ----eval=FALSE---------------------------------------------------------------
# write.csv(res_mcts$summary, file = "TSQCA_MCTS_results.csv", row.names = FALSE)
## -----------------------------------------------------------------------------
sweep_range_ots <- 6:8
# Default: Complex solution
res_ots <- otSweep(
dat = dat,
outcome = "Y",
conditions = c("X1", "X2", "X3"),
sweep_range = sweep_range_ots,
thrX = thrX_vec,
return_details = TRUE
)
summary(res_ots)
## -----------------------------------------------------------------------------
# Intermediate solution: specify include = "?" and dir.exp
res_ots_int <- otSweep(
dat = dat,
outcome = "Y",
conditions = c("X1", "X2", "X3"),
sweep_range = sweep_range_ots,
thrX = thrX_vec,
include = "?",
dir.exp = c(1, 1, 1),
return_details = TRUE
)
summary(res_ots_int)
## ----eval=FALSE---------------------------------------------------------------
# write.csv(res_ots$summary, file = "TSQCA_OTS_results.csv", row.names = FALSE)
## -----------------------------------------------------------------------------
sweep_list_dts_X <- list(
X1 = 6:7,
X2 = 6:7,
X3 = 6:7
)
sweep_range_dts_Y <- 6:7
# Default: Complex solution
res_dts <- dtSweep(
dat = dat,
outcome = "Y",
conditions = c("X1", "X2", "X3"),
sweep_list_X = sweep_list_dts_X,
sweep_range_Y = sweep_range_dts_Y,
dir.exp = c(1, 1, 1),
return_details = TRUE
)
summary(res_dts)
## -----------------------------------------------------------------------------
# Intermediate solution: specify include = "?" and dir.exp
res_dts_int <- dtSweep(
dat = dat,
outcome = "Y",
conditions = c("X1", "X2", "X3"),
sweep_list_X = sweep_list_dts_X,
sweep_range_Y = sweep_range_dts_Y,
include = "?",
dir.exp = c(1, 1, 1),
return_details = TRUE
)
summary(res_dts_int)
## ----eval=FALSE---------------------------------------------------------------
# write.csv(res_dts$summary, file = "TSQCA_DTS_results.csv", row.names = FALSE)
## ----eval=FALSE---------------------------------------------------------------
# res_all <- otSweep(
# dat = dat,
# outcome = "Y",
# conditions = c("X1", "X2", "X3"),
# sweep_range = 6:8,
# thrX = thrX_vec,
# include = "?", # Include logical remainders
# dir.exp = c(1, 1, 1), # Intermediate solution
# extract_mode = "all",
# return_details = TRUE
# )
#
# # View results with n_solutions column
# head(res_all$summary)
## ----eval=FALSE---------------------------------------------------------------
# res_essential <- otSweep(
# dat = dat,
# outcome = "Y",
# conditions = c("X1", "X2", "X3"),
# sweep_range = 6:8,
# thrX = thrX_vec,
# include = "?", # Include logical remainders
# dir.exp = c(1, 1, 1), # Intermediate solution
# extract_mode = "essential",
# return_details = TRUE
# )
#
# # View results with essential prime implicants, selective terms, and unique terms
# head(res_essential$summary)
## ----eval=FALSE---------------------------------------------------------------
# generate_report(res_ots, "TSQCA_OTS_report_full.md", dat = dat, format = "full")
## ----eval=FALSE---------------------------------------------------------------
# generate_report(res_ots, "TSQCA_OTS_report_simple.md", dat = dat, format = "simple")
## ----eval=FALSE---------------------------------------------------------------
# # Standard: conditions for Y >= threshold (intermediate solution)
# res_Y <- otSweep(
# dat = dat,
# outcome = "Y",
# conditions = c("X1", "X2", "X3"),
# sweep_range = 6:8,
# thrX = thrX_vec,
# include = "?", # Include logical remainders
# dir.exp = c(1, 1, 1) # Intermediate solution
# )
#
# # Negated: conditions for Y < threshold (intermediate solution)
# res_negY <- otSweep(
# dat = dat,
# outcome = "~Y",
# conditions = c("X1", "X2", "X3"),
# sweep_range = 6:8,
# thrX = thrX_vec,
# include = "?", # Include logical remainders
# dir.exp = c(1, 1, 1) # Intermediate solution
# )
#
# # Compare results
# res_Y$summary
# res_negY$summary
#
# # Check negation flag
# res_negY$params$negate_outcome
# # [1] TRUE
## ----eval=FALSE---------------------------------------------------------------
# # View stored parameters
# res_ots$params
#
# # Example output:
# # $outcome
# # [1] "Y"
# # $conditions
# # [1] "X1" "X2" "X3"
# # $thrX
# # X1 X2 X3
# # 7 7 7
# # $incl.cut
# # [1] 0.8
# # $n.cut
# # [1] 1
# # $pri.cut
# # [1] 0
## -----------------------------------------------------------------------------
# From path strings
paths <- c("A*B*~C", "A*D")
chart <- config_chart_from_paths(paths)
cat(chart)
## ----eval=FALSE---------------------------------------------------------------
# # Charts are included by default
# generate_report(result, "report.md", dat = dat, format = "full")
#
# # Use LaTeX symbols for academic papers
# generate_report(result, "report.md", dat = dat, chart_symbol_set = "latex")
## -----------------------------------------------------------------------------
sessionInfo()
Any scripts or data that you put into this service are public.
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.