ThSQCA の紹介: Rで閾値スイープQCAを行う
質的比較分析(QCA)では、連続的な得点を集合への所属に変える閾値を、ふつう、分析の前に1つに決めます。そのため、得られる解は、ある1つの定義への答えになります。たとえば、「利用意向が高い」を7点以上と定義したときの答えです。ThSQCA は、閾値そのものを分析の対象にする R パッケージです。同じ QCA の分析を、同じ設定のまま、閾値の範囲全体で繰り返し、十分条件の解がどう変わるかを記録します。
考え方
閾値を変えると、どの事例が集合に入るかが変わります。すると、真理表も、適合度の指標も、Boolean最小化の結果も変わることがあります。したがって、閾値 t と十分条件の解 S の関係は、1つの解というより、対応関係 t → S(t) として記述するほうが適切です。
これは、頑健性の確認とは、別の問いです。頑健性の確認は、気に入った解が、別の設定でも残るかを問います。また、最良の閾値を探すことでもありません。閾値スイープQCAは、記述的な問いを立てます。十分条件の構造は、閾値の定義にわたって、どのように分布するのか。どこで持続し、現れ、消えるのか。方法論は、下に挙げる論文で展開しています。
パッケージが行うこと
ThSQCA は、独自の最小化アルゴリズムを実装していません。真理表の作成と最小化は、QCA パッケージに任せています。計算の中心は、通常の分析と同じです。ThSQCA が加えるのは、その周りの作業の流れです。
- 一貫性閾値、頻度閾値、解の種類、方向性の期待を、スイープのすべての段階で同じにします。
- 項、解の一貫性、カバレッジを、共通の形式にまとめます。
- 解がない場合や、最小解が複数ある場合も、失わずに記録します。
- 結果は、表と構成図で示せます。Markdown 形式のレポートとしても書き出せます。結果の表は、R の通常のグラフ機能で図にすることもできます。
4つのスイープ関数
| 問い | 関数 | 動かす閾値 |
|---|---|---|
| アウトカムの目標水準が変わると、解はどう変わるか | otSweep() |
アウトカム |
| 1つの条件の基準が変わると、どう変わるか | ctSweepS() |
1つの条件 |
| 複数の条件の基準が一緒に変わると、どうなるか | ctSweepM() |
複数の条件 |
| アウトカムと条件の基準が一緒に変わると、どう変わるか | dtSweep() |
アウトカムと条件 |
はじめてみる
install.packages("ThSQCA")
library(ThSQCA)パッケージには、小さな例のデータ sample_data が入っています。アウトカム Y と、3つの条件 X1、X2、X3 で、どれも0〜10点です。次は、そのまま動く、最小のアウトカム閾値スイープです。
library(ThSQCA)
head(sample_data)
res <- otSweep(
dat = sample_data,
outcome = "Y",
conditions = c("X1", "X2", "X3"),
sweep_range = 6:9,
thrX = c(X1 = 7, X2 = 7, X3 = 7)
)
summary(res)このスイープは、「高いアウトカム」を Y >= 6、Y >= 7、Y >= 8、Y >= 9 と定義したときに、十分条件の解がどう変わるかを調べます。各条件は、得点が7以上のとき「高い」とします。各行の意味や、結果の表の読み方を、ゆっくり、順を追って知りたい方は、入門シリーズの第1回をご覧ください。
実行すると、次のような表が出ます(結果の部分だけを示します)。
thrY expression inclS covS n_solutions
6 ~X1*X3 + ~X2*X3 + X1*X2*~X3 0.906 0.853 1
7 ~X1*X3 + ~X2*X3 + X1*X2*~X3 0.906 0.879 1
8 No solution NA NA 0
9 No solution NA NA 0
1行が、1つのアウトカム閾値です。expression の列では、* が AND、+ が OR、~ が NOT を表します。Y >= 6 と Y >= 7 では、同じ3つの十分な経路が現れます。Y >= 8 と Y >= 9 では、一貫性の条件を満たす解がありません。閾値を1つにした分析だけでは、答えがどこで成り立たなくなるかは見えません。スイープなら、それが見えます。
パッケージのビネットには、4つの関数すべてについて、実例つきの説明があります。
使うときの注意
ThSQCA は、いちばん魅力的な結果を出す閾値を探すための道具ではありません。閾値の範囲は、尺度の意味、理論、実務上の目標に基づいて、あらかじめ正当化しておく必要があります。探索した範囲は、すべて報告してください。generate_report() 関数は、その記録を残すために作られています。
リンク
- 論文: Toyoda, Y. (2026). Threshold-sweep QCA: threshold dependence as an analytical dimension. Quality & Quantity. https://doi.org/10.1007/s11135-026-03092-3
- CRAN のパッケージ: ThSQCA
- ソースコード: GitHub
- ドキュメント(英語): im-research-yt.github.io/ThSQCA
- ブラウザのツール: QCA Quickstart、Sweep Builder