<?xml version="1.0" encoding="UTF-8"?>
<rss  xmlns:atom="http://www.w3.org/2005/Atom" 
      xmlns:media="http://search.yahoo.com/mrss/" 
      xmlns:content="http://purl.org/rss/1.0/modules/content/" 
      xmlns:dc="http://purl.org/dc/elements/1.1/" 
      version="2.0">
<channel>
<title>Yuki Toyoda&#39;s Blog</title>
<link>https://im-research-yt.github.io/ja/</link>
<atom:link href="https://im-research-yt.github.io/ja/index.xml" rel="self" type="application/rss+xml"/>
<description>Threshold-sweep QCA, marketing science, and data analysis tools</description>
<image>
<url>https://im-research-yt.github.io/thumbnail-site.png</url>
<title>Yuki Toyoda&#39;s Blog</title>
<link>https://im-research-yt.github.io/ja/</link>
<height>76</height>
<width>144</width>
</image>
<generator>quarto-1.10.18</generator>
<lastBuildDate>Thu, 05 Nov 2026 15:00:00 GMT</lastBuildDate>
<item>
  <title>ThS-QCA を使ってみる(2)ユニクロの物差しで、無印良品を測ってみる</title>
  <link>https://im-research-yt.github.io/ja/articles/thsqca-case-muji-same-conditions/</link>
  <description><![CDATA[ 




<p><em>連載第2弾。この記事だけで読めるように書いています。</em></p>
<p>前回(第1弾)は、ユニクロの「推奨」レベルを9点から5点まで動かし、7〜8点以上では、ベーシックとは認識されていない状態で、価格×品質×着回しがすべて揃うことが十分条件になることを示しました。では、この<strong>ユニクロ用の物差し</strong>を、そのまま無印良品に当てはめると、何が見えるでしょうか。</p>
<section id="方法とデータ連載共通" class="level2">
<h2 class="anchored" data-anchor-id="方法とデータ連載共通">方法とデータ(連載共通)</h2>
<ul>
<li><strong>方法</strong>:Threshold-Sweep QCA(ThS-QCA)。「友人や知人に勧めたい度合い」(0〜10点。0=まったく勧めたくない、10=ぜひ勧めたい)について、「推奨」とみなすレベル（閾値）を動かしながら、推奨をもたらす<strong>十分条件</strong>(その組み合わせを持つ人の多くが、推奨に至っている組み合わせ)を並べて記述します(Toyoda, 2026, <em>Quality &amp; Quantity</em>)。最適な閾値を探す方法ではありません。</li>
<li><strong>データ</strong>:2026年6月、法政大学大学院イノベーション・マネジメント研究科の講義「マーケティング２」で行った自主調査「カジュアルファッション調査(300名)：Freeasy社にて実施」の一部を、事例用に公開しています。対象は、スクリーニング調査で、カジュアルファッションブランドを選ぶことを「まったく意識していない」とは答えなかった人です(一般の消費者を代表する標本ではありません)。各ブランドを評価した人が分析の対象です(「わからない」は除外)。</li>
<li><strong>対象</strong>:無印良品を評価した251名。</li>
<li><strong>条件(X)</strong>:ユニクロと同じ4つの認識(「買いやすい価格帯」「品質がよい」「着回しやすい」「トレンドを抑えた商品がある(以下、ベーシック)」)。各ブランドについて、「あてはまると思う項目をすべて選ぶ」形式で聞き、選ばれた/選ばれなかったで分けています。ここで取り上げる4つは、<strong>手法の使い方を示す例</strong>です。例示に適したものを、結果を見て選んでいます。実際の分析では、事前に、仮説や先行研究にもとづいて、条件を決める必要があります。</li>
<li><strong>一貫性</strong>:その組み合わせを持つ人のうち、推奨した人の割合(基準は0.80以上)。<strong>カバレッジ</strong>:推奨した人のうち、その組み合わせで説明できた人の割合。</li>
<li><strong>設定</strong>(全レベル共通):最小事例数4。<strong>中間解</strong>を使います(データにない組み合わせにも、「その認識があれば推奨に寄与する」という方向の仮定を置いて、式を短くします。ただし、ベーシックだけは、どちらの方向とも決められないため、方向の仮定を置きません)。</li>
</ul>
</section>
<section id="結果同じ物差しで同じ推奨レベルを動かす" class="level2">
<h2 class="anchored" data-anchor-id="結果同じ物差しで同じ推奨レベルを動かす">結果:同じ物差しで、同じ推奨レベルを動かす</h2>
<table class="caption-top table">
<colgroup>
<col style="width: 20%">
<col style="width: 20%">
<col style="width: 20%">
<col style="width: 20%">
<col style="width: 20%">
</colgroup>
<thead>
<tr class="header">
<th>「推奨」のレベル</th>
<th>無印良品の該当割合(ユニクロ)</th>
<th>無印良品の十分条件</th>
<th>一貫性</th>
<th>カバレッジ</th>
</tr>
</thead>
<tbody>
<tr class="odd">
<td>9点以上</td>
<td>14%(18%)</td>
<td>なし</td>
<td>−</td>
<td>−</td>
</tr>
<tr class="even">
<td>8点以上</td>
<td>29%(41%)</td>
<td>なし</td>
<td>−</td>
<td>−</td>
</tr>
<tr class="odd">
<td>7点以上</td>
<td>46%(58%)</td>
<td>なし</td>
<td>−</td>
<td>−</td>
</tr>
<tr class="even">
<td>6点以上</td>
<td>58%(67%)</td>
<td>価格でない×品質×着回しでない / 価格×品質×着回し×ベーシックでない</td>
<td>0.87</td>
<td>0.28</td>
</tr>
<tr class="odd">
<td>5点以上</td>
<td>79%(86%)</td>
<td>ベーシック / 価格×着回し / 品質×着回しでない</td>
<td>0.93</td>
<td>0.40</td>
</tr>
</tbody>
</table>
<p>(「/」は「または」、「〜でない」は、その認識が選ばれなかったことです。表の一貫性とカバレッジは、「/」で結んだ解全体の値です。)</p>
<ul>
<li><strong>無印良品で十分条件が得られるのは、6点以上までです。</strong>ユニクロでは8点以上まで得られました。</li>
<li>ユニクロでは、7〜8点以上で、ベーシックとは認識されていない状態で、価格×品質×着回しがすべて揃うことが十分条件でした。無印良品では、この形は、6点以上で初めて現れます。</li>
<li>6点以上のもう1つの形は、価格も着回しも認識されていない状態で、品質があれば十分、というものです。価格の認識がなくても、品質だけで推奨に至る人が目立ちます。</li>
<li>認識の持たれ方も違います。「買いやすい価格帯」と認識する人は、ユニクロで44%、無印良品で30%でした。</li>
</ul>
<p>つまり、共通の4条件を使ったところ、無印良品では、<strong>7点以上で基準を満たす解が得られませんでした</strong>。7点以上の割合も、ユニクロ58%、無印良品46%と異なります。同じ条件・設定でも、得られる解は、ブランドによって異なりました。</p>
</section>
<section id="マーケティング的な読み方仮説として" class="level2">
<h2 class="anchored" data-anchor-id="マーケティング的な読み方仮説として">マーケティング的な読み方(仮説として)</h2>
<p>結果から言えるのは、「どの認識の組み合わせを持つ人が、どの程度の推奨に至っているか」までです。以下は、そこから考えられる、マーケティング上の解釈で、あくまで仮説です。</p>
<ol type="1">
<li><strong>同じ条件・設定でも、解の得られ方が違います。</strong>ユニクロでは、8点以上で解が得られました。無印良品では、6点以上でようやく解が得られます。ユニクロの推奨に当てはまった「価格・品質・着回し」を中心とした見方は、そのまま無印良品に持ち込めるとは限りません。</li>
<li><strong>価格の認識の持たれ方が違います。</strong>「買いやすい価格帯」が選ばれた割合は、ユニクロの44%に対して、無印良品は30%です。6点以上では、価格が選ばれていない状態で、品質があれば十分、という形も現れます。ただし、これは認識の割合の違いです。無印良品を薦める人が価格を見ていない、とまでは言えません。</li>
<li><strong>5点以上では、ユニクロと無印良品で、「ベーシック」の現れ方が違います。</strong>ユニクロの解には、「ベーシックでない」が含まれていました。無印良品の5点以上の解には、「ベーシック」そのものが含まれます。ただし、無印良品でベーシックが選ばれた人は8%と少数です(ユニクロは11%)。この点は、第3弾でもう一度見ます。</li>
</ol>
</section>
<section id="読むときの注意" class="level2">
<h2 class="anchored" data-anchor-id="読むときの注意">読むときの注意</h2>
<ul>
<li>この4つの条件は、ユニクロの分析用に選んだ例示です。別の条件を選べば、無印良品の結果は変わります。</li>
<li>「十分条件が得られなかった」は、「理由がない」という意味ではありません。</li>
<li>講義の一環で実施したオンライン調査(300名)であり、一般の消費者を代表する標本ではありません。</li>
</ul>
</section>
<section id="再現用コードr" class="level2">
<h2 class="anchored" data-anchor-id="再現用コードr">再現用コード(R)</h2>
<p>データ(同じフォルダ): <a href="fashion_muji.csv">fashion_muji.csv</a></p>
<div class="cell">
<div class="code-copy-outer-scaffold"><div class="sourceCode cell-code" id="cb1" style="background: #f1f3f5;"><pre class="sourceCode r code-with-copy"><code class="sourceCode r"><span id="cb1-1"><span class="fu" style="color: #4758AB;
background-color: null;
font-style: inherit;">library</span>(QCA); <span class="fu" style="color: #4758AB;
background-color: null;
font-style: inherit;">library</span>(ThSQCA)</span>
<span id="cb1-2">dat   <span class="ot" style="color: #003B4F;
background-color: null;
font-style: inherit;">&lt;-</span> <span class="fu" style="color: #4758AB;
background-color: null;
font-style: inherit;">read.csv</span>(<span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"fashion_muji.csv"</span>)</span>
<span id="cb1-3">conds <span class="ot" style="color: #003B4F;
background-color: null;
font-style: inherit;">&lt;-</span> <span class="fu" style="color: #4758AB;
background-color: null;
font-style: inherit;">c</span>(<span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"PRICE"</span>, <span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"QUALITY"</span>, <span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"VERSATILE"</span>, <span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"BASIC"</span>)</span>
<span id="cb1-4">res <span class="ot" style="color: #003B4F;
background-color: null;
font-style: inherit;">&lt;-</span> <span class="fu" style="color: #4758AB;
background-color: null;
font-style: inherit;">otSweep</span>(<span class="at" style="color: #657422;
background-color: null;
font-style: inherit;">dat =</span> dat, <span class="at" style="color: #657422;
background-color: null;
font-style: inherit;">outcome =</span> <span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"REC"</span>, <span class="at" style="color: #657422;
background-color: null;
font-style: inherit;">conditions =</span> conds,</span>
<span id="cb1-5">  <span class="at" style="color: #657422;
background-color: null;
font-style: inherit;">sweep_range =</span> <span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">5</span><span class="sc" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">:</span><span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">9</span>,</span>
<span id="cb1-6">  <span class="at" style="color: #657422;
background-color: null;
font-style: inherit;">thrX =</span> <span class="fu" style="color: #4758AB;
background-color: null;
font-style: inherit;">setNames</span>(<span class="fu" style="color: #4758AB;
background-color: null;
font-style: inherit;">rep</span>(<span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">1</span>, <span class="fu" style="color: #4758AB;
background-color: null;
font-style: inherit;">length</span>(conds)), conds),</span>
<span id="cb1-7">  <span class="at" style="color: #657422;
background-color: null;
font-style: inherit;">include =</span> <span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"?"</span>, <span class="at" style="color: #657422;
background-color: null;
font-style: inherit;">dir.exp =</span> <span class="fu" style="color: #4758AB;
background-color: null;
font-style: inherit;">ifelse</span>(conds <span class="sc" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">==</span> <span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"BASIC"</span>, <span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"-"</span>, <span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"1"</span>),</span>
<span id="cb1-8">  <span class="at" style="color: #657422;
background-color: null;
font-style: inherit;">incl.cut =</span> <span class="fl" style="color: #AD0000;
background-color: null;
font-style: inherit;">0.80</span>, <span class="at" style="color: #657422;
background-color: null;
font-style: inherit;">n.cut =</span> <span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">4</span>)</span>
<span id="cb1-9">res<span class="sc" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">$</span>summary[, <span class="fu" style="color: #4758AB;
background-color: null;
font-style: inherit;">c</span>(<span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"thrY"</span>, <span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"expression"</span>, <span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"inclS"</span>, <span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"covS"</span>, <span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"n_solutions"</span>)]</span></code></pre></div></div>
<div class="cell-output cell-output-stdout">
<pre><code>  thrY                                                 expression     inclS
1    5               BASIC + PRICE*VERSATILE + QUALITY*~VERSATILE 0.9302326
2    6 ~PRICE*QUALITY*~VERSATILE + PRICE*QUALITY*VERSATILE*~BASIC 0.8723404
3    7                                                No solution        NA
4    8                                                No solution        NA
5    9                                                No solution        NA
       covS n_solutions
1 0.4020101           1
2 0.2827586           1
3        NA           0
4        NA           0
5        NA           0</code></pre>
</div>
</div>
<p>論文:Toyoda, Y. (2026). Threshold-sweep QCA: threshold dependence as an analytical dimension. <em>Quality &amp; Quantity</em>. https://doi.org/10.1007/s11135-026-03092-3</p>
</section>
<section id="次に読むもの" class="level2">
<h2 class="anchored" data-anchor-id="次に読むもの">次に読むもの</h2>
<ul>
<li><a href="../../../ja/articles/thsqca-case-uniqlo/index.html">第1弾 ユニクロ</a></li>
<li><a href="../../../ja/articles/thsqca-case-muji-swap/index.html">第3弾 同じ無印良品のデータで、条件を入れ替える</a></li>
<li><a href="../../../ja/articles/thsqca-case-overview/index.html">ここから読む:ThS-QCAの事例</a></li>
</ul>
</section>
<section id="このページのrの環境" class="level2">
<h2 class="anchored" data-anchor-id="このページのrの環境">このページのRの環境</h2>
<div class="cell">
<div class="code-copy-outer-scaffold"><div class="sourceCode cell-code" id="cb3" style="background: #f1f3f5;"><pre class="sourceCode r code-with-copy"><code class="sourceCode r"><span id="cb3-1"><span class="fu" style="color: #4758AB;
background-color: null;
font-style: inherit;">sessionInfo</span>()</span></code></pre></div></div>
<div class="cell-output cell-output-stdout">
<pre><code>R version 4.6.1 (2026-06-24 ucrt)
Platform: x86_64-w64-mingw32/x64
Running under: Windows 11 x64 (build 26300)

Matrix products: default
  LAPACK version 3.12.1

locale:
[1] LC_COLLATE=Japanese_Japan.utf8  LC_CTYPE=Japanese_Japan.utf8   
[3] LC_MONETARY=Japanese_Japan.utf8 LC_NUMERIC=C                   
[5] LC_TIME=Japanese_Japan.utf8    

time zone: Asia/Tokyo
tzcode source: internal

attached base packages:
[1] stats     graphics  grDevices utils     datasets  methods   base     

other attached packages:
[1] ThSQCA_2.0.9 QCA_3.25.5   admisc_0.41 

loaded via a namespace (and not attached):
 [1] digest_0.6.39     fastmap_1.2.0     xfun_0.60         knitr_1.52       
 [5] htmltools_0.5.9   rmarkdown_2.32    cli_3.6.6         venn_1.13        
 [9] declared_0.27     compiler_4.6.1    rstudioapi_0.19.0 tools_4.6.1      
[13] evaluate_1.0.5    yaml_2.3.12       otel_0.2.0        rlang_1.3.0      
[17] jsonlite_2.0.0    htmlwidgets_1.6.4</code></pre>
</div>
</div>


</section>

 ]]></description>
  <category>marketing</category>
  <category>tutorial</category>
  <guid>https://im-research-yt.github.io/ja/articles/thsqca-case-muji-same-conditions/</guid>
  <pubDate>Thu, 05 Nov 2026 15:00:00 GMT</pubDate>
  <media:content url="https://im-research-yt.github.io/ja/articles/thsqca-case-muji-same-conditions/thumbnail.png" medium="image" type="image/png" height="76" width="144"/>
</item>
<item>
  <title>ThS-QCA を使ってみる(3)無印良品に合わせた物差しを選び直す</title>
  <link>https://im-research-yt.github.io/ja/articles/thsqca-case-muji-swap/</link>
  <description><![CDATA[ 




<p><em>連載第3弾。この記事だけで読めるように書いています。</em></p>
<p>第1弾では、ユニクロの推奨を、ベーシックとは認識されていない状態で、価格×品質×着回しがすべて揃うこと、で説明できました。第2弾では、その物差しで無印良品を測ると、7点以上の推奨を説明できませんでした。今回は、<strong>同じ無印良品の251名で、分析に入れる条件を入れ替える</strong>と、見える組み合わせがどう変わるかを確かめます。</p>
<section id="方法とデータ連載共通" class="level2">
<h2 class="anchored" data-anchor-id="方法とデータ連載共通">方法とデータ(連載共通)</h2>
<ul>
<li><strong>方法</strong>:Threshold-Sweep QCA(ThS-QCA)。「友人や知人に勧めたい度合い」(0〜10点。0=まったく勧めたくない、10=ぜひ勧めたい)について、「推奨」とみなすレベル（閾値）を動かしながら、推奨をもたらす<strong>十分条件</strong>(その組み合わせを持つ人の多くが、推奨に至っている組み合わせ)を並べて記述します(Toyoda, 2026, <em>Quality &amp; Quantity</em>)。最適な閾値を探す方法ではありません。</li>
<li><strong>データ</strong>:2026年6月、法政大学大学院イノベーション・マネジメント研究科の講義「マーケティング２」で行った自主調査「カジュアルファッション調査(300名)：Freeasy社にて実施」の一部を、事例用に公開しています。対象は、スクリーニング調査で、カジュアルファッションブランドを選ぶことを「まったく意識していない」とは答えなかった人です(一般の消費者を代表する標本ではありません)。各ブランドを評価した人が分析の対象です(「わからない」は除外)。</li>
<li><strong>対象</strong>:無印良品を評価した251名。</li>
<li><strong>条件(X)</strong>:ブランドへの認識(「品質がよい」「着回しやすい」「実店舗に入りやすい」「トレンドを抑えた商品がある(以下、ベーシック)」)。無印良品のデータを見て、7点以上で十分条件が得られる組み合わせから、選んだものです。第2弾とは、「価格」を外して「実店舗に入りやすい」を入れています。各ブランドについて、「あてはまると思う項目をすべて選ぶ」形式で聞き、選ばれた/選ばれなかったで分けています。ここで取り上げる4つは、<strong>手法の使い方を示す例</strong>です。例示に適したものを、結果を見て選んでいます。実際の分析では、事前に、仮説や先行研究にもとづいて、条件を決める必要があります。</li>
<li><strong>一貫性</strong>:その組み合わせを持つ人のうち、推奨した人の割合(基準は0.80以上)。<strong>カバレッジ</strong>:推奨した人のうち、その組み合わせで説明できた人の割合。</li>
<li><strong>設定</strong>(全レベル共通):最小事例数4。<strong>中間解</strong>を使います(データにない組み合わせにも、「その認識があれば推奨に寄与する」という方向の仮定を置いて、式を短くします。ただし、ベーシックだけは、どちらの方向とも決められないため、方向の仮定を置きません)。</li>
<li><strong>補足</strong>:調査の他の項目も含めて、4つの条件の組み合わせを、ほかにも試しました。9点以上では、どの組み合わせでも十分条件が得られませんでした。8点以上では、解全体の一貫性が0.80以上になる組み合わせはありますが、説明できる人は、72名中6名以下とごくわずかでした。この探索には、公開CSVに含まれない項目も使っているため、公開CSVでは再現できません。</li>
</ul>
</section>
<section id="結果無印良品に合わせた条件での十分条件" class="level2">
<h2 class="anchored" data-anchor-id="結果無印良品に合わせた条件での十分条件">結果:無印良品に合わせた条件での十分条件</h2>
<table class="caption-top table">
<colgroup>
<col style="width: 20%">
<col style="width: 20%">
<col style="width: 20%">
<col style="width: 20%">
<col style="width: 20%">
</colgroup>
<thead>
<tr class="header">
<th>「推奨」のレベル</th>
<th>該当割合</th>
<th>十分条件</th>
<th>一貫性</th>
<th>カバレッジ</th>
</tr>
</thead>
<tbody>
<tr class="odd">
<td>9点以上</td>
<td>14%</td>
<td>なし</td>
<td>−</td>
<td>−</td>
</tr>
<tr class="even">
<td>8点以上</td>
<td>29%</td>
<td>なし</td>
<td>−</td>
<td>−</td>
</tr>
<tr class="odd">
<td>7点以上</td>
<td>46%</td>
<td>品質×ベーシック / 品質×着回し×実店舗に入りやすい</td>
<td>0.82</td>
<td>0.16</td>
</tr>
<tr class="even">
<td>6点以上</td>
<td>58%</td>
<td>品質×着回しでない×実店舗に入りにくい / 品質×着回し×実店舗に入りやすい×ベーシックでない</td>
<td>0.85</td>
<td>0.24</td>
</tr>
<tr class="odd">
<td>5点以上</td>
<td>79%</td>
<td>品質 / ベーシック / 着回し×実店舗に入りやすい</td>
<td>0.90</td>
<td>0.43</td>
</tr>
</tbody>
</table>
<p>(「/」は「または」、「〜でない」「入りにくい」は、その認識が選ばれなかったことです。表の一貫性とカバレッジは、「/」で結んだ解全体の値です。)</p>
<ul>
<li>同じ無印良品の251名でも、「価格」を「実店舗に入りやすい」に入れ替えると、第2弾では得られなかった<strong>7点以上で、十分条件が得られました</strong>。なお、この条件の組み合わせは、7点以上で解が得られるものを、同じデータから選んでいます。</li>
<li>7点以上の十分条件には、いずれも<strong>品質</strong>が含まれます。「品質に、ベーシックの選択が加わる経路」と、「品質に、着回しと実店舗への入りやすさが加わる経路」の2つです。</li>
<li>5点以上では、品質があるだけで十分です。</li>
</ul>
</section>
<section id="マーケティング的な読み方仮説として" class="level2">
<h2 class="anchored" data-anchor-id="マーケティング的な読み方仮説として">マーケティング的な読み方(仮説として)</h2>
<p>結果から言えるのは、「どの認識の組み合わせを持つ人が、どの程度の推奨に至っているか」までです。以下は、そこから考えられる、マーケティング上の解釈で、あくまで仮説です。</p>
<ol type="1">
<li><strong>条件の入れ替えで、見える組み合わせが変わります。</strong>第2弾の4条件では、7点以上で解が得られませんでした。条件を入れ替えると、7点以上で、品質を含む2つの経路が見えました。分析に何を入れるかで、見える組み合わせが変わる、ということです。</li>
<li><strong>「ベーシック」の現れ方は、解によって異なります。</strong>ユニクロの解には「ベーシックでない」が含まれ、無印良品の解の一部には「ベーシック」が含まれました。ただし、投入した条件が異なるため、直接の比較はできません。ベーシックが選ばれた人は、無印良品でも8%と少数です。また、調査で聞いたのは「トレンドを抑えた商品があるか」であり、これがブランドの何を表しているのかは、この調査だけでは分かりません。</li>
<li><strong>実務では、条件は事前に、自社の仮説にもとづいて決めます。</strong>ここでは、条件の入れ替えで結果が変わることを示すために、結果を見て選んだ条件を使っています。実際の分析では、事前に決めた条件で行い、条件を変えたときの結果の違いを、感度分析として示します。</li>
<li><strong>十分条件は、推奨の道筋の「一部」です。</strong>解に当てはまる人は22名で、そのうち18名が7点以上です(一貫性0.82)。一方、7点以上の116名のうち、解に当てはまるのは18名(約16%、カバレッジ0.16)です。</li>
</ol>
</section>
<section id="読むときの注意" class="level2">
<h2 class="anchored" data-anchor-id="読むときの注意">読むときの注意</h2>
<ul>
<li>条件は、無印良品のデータを見て選んだ例示です。別のデータで確かめるまでは、仮説です。</li>
<li>「十分条件が得られなかった」は、「理由がない」という意味ではありません。</li>
<li>講義の一環で実施したオンライン調査(300名)であり、一般の消費者を代表する標本ではありません。</li>
</ul>
</section>
<section id="再現用コードr" class="level2">
<h2 class="anchored" data-anchor-id="再現用コードr">再現用コード(R)</h2>
<p>データ(同じフォルダ): <a href="fashion_muji.csv">fashion_muji.csv</a></p>
<div class="cell">
<div class="code-copy-outer-scaffold"><div class="sourceCode cell-code" id="cb1" style="background: #f1f3f5;"><pre class="sourceCode r code-with-copy"><code class="sourceCode r"><span id="cb1-1"><span class="fu" style="color: #4758AB;
background-color: null;
font-style: inherit;">library</span>(QCA); <span class="fu" style="color: #4758AB;
background-color: null;
font-style: inherit;">library</span>(ThSQCA)</span>
<span id="cb1-2">dat   <span class="ot" style="color: #003B4F;
background-color: null;
font-style: inherit;">&lt;-</span> <span class="fu" style="color: #4758AB;
background-color: null;
font-style: inherit;">read.csv</span>(<span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"fashion_muji.csv"</span>)</span>
<span id="cb1-3">conds <span class="ot" style="color: #003B4F;
background-color: null;
font-style: inherit;">&lt;-</span> <span class="fu" style="color: #4758AB;
background-color: null;
font-style: inherit;">c</span>(<span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"QUALITY"</span>, <span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"VERSATILE"</span>, <span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"EASYSTORE"</span>, <span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"BASIC"</span>)</span>
<span id="cb1-4">res <span class="ot" style="color: #003B4F;
background-color: null;
font-style: inherit;">&lt;-</span> <span class="fu" style="color: #4758AB;
background-color: null;
font-style: inherit;">otSweep</span>(<span class="at" style="color: #657422;
background-color: null;
font-style: inherit;">dat =</span> dat, <span class="at" style="color: #657422;
background-color: null;
font-style: inherit;">outcome =</span> <span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"REC"</span>, <span class="at" style="color: #657422;
background-color: null;
font-style: inherit;">conditions =</span> conds,</span>
<span id="cb1-5">  <span class="at" style="color: #657422;
background-color: null;
font-style: inherit;">sweep_range =</span> <span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">5</span><span class="sc" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">:</span><span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">9</span>,</span>
<span id="cb1-6">  <span class="at" style="color: #657422;
background-color: null;
font-style: inherit;">thrX =</span> <span class="fu" style="color: #4758AB;
background-color: null;
font-style: inherit;">setNames</span>(<span class="fu" style="color: #4758AB;
background-color: null;
font-style: inherit;">rep</span>(<span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">1</span>, <span class="fu" style="color: #4758AB;
background-color: null;
font-style: inherit;">length</span>(conds)), conds),</span>
<span id="cb1-7">  <span class="at" style="color: #657422;
background-color: null;
font-style: inherit;">include =</span> <span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"?"</span>, <span class="at" style="color: #657422;
background-color: null;
font-style: inherit;">dir.exp =</span> <span class="fu" style="color: #4758AB;
background-color: null;
font-style: inherit;">ifelse</span>(conds <span class="sc" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">==</span> <span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"BASIC"</span>, <span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"-"</span>, <span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"1"</span>),</span>
<span id="cb1-8">  <span class="at" style="color: #657422;
background-color: null;
font-style: inherit;">incl.cut =</span> <span class="fl" style="color: #AD0000;
background-color: null;
font-style: inherit;">0.80</span>, <span class="at" style="color: #657422;
background-color: null;
font-style: inherit;">n.cut =</span> <span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">4</span>)</span>
<span id="cb1-9">res<span class="sc" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">$</span>summary[, <span class="fu" style="color: #4758AB;
background-color: null;
font-style: inherit;">c</span>(<span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"thrY"</span>, <span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"expression"</span>, <span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"inclS"</span>, <span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"covS"</span>, <span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"n_solutions"</span>)]</span></code></pre></div></div>
<div class="cell-output cell-output-stdout">
<pre><code>  thrY                                                         expression
1    5                              QUALITY + BASIC + VERSATILE*EASYSTORE
2    6 QUALITY*~VERSATILE*~EASYSTORE + QUALITY*VERSATILE*EASYSTORE*~BASIC
3    7                        QUALITY*BASIC + QUALITY*VERSATILE*EASYSTORE
4    8                                                        No solution
5    9                                                        No solution
      inclS      covS n_solutions
1 0.9042553 0.4271357           1
2 0.8536585 0.2413793           1
3 0.8181818 0.1551724           1
4        NA        NA           0
5        NA        NA           0</code></pre>
</div>
</div>
<p>論文:Toyoda, Y. (2026). Threshold-sweep QCA: threshold dependence as an analytical dimension. <em>Quality &amp; Quantity</em>. https://doi.org/10.1007/s11135-026-03092-3</p>
</section>
<section id="次に読むもの" class="level2">
<h2 class="anchored" data-anchor-id="次に読むもの">次に読むもの</h2>
<ul>
<li><a href="../../../ja/articles/thsqca-case-muji-same-conditions/index.html">第2弾 ユニクロの条件のまま、無印良品を分析する</a></li>
<li><a href="../../../ja/articles/thsqca-case-overview/index.html">ここから読む:ThS-QCAの事例</a></li>
</ul>
</section>
<section id="このページのrの環境" class="level2">
<h2 class="anchored" data-anchor-id="このページのrの環境">このページのRの環境</h2>
<div class="cell">
<div class="code-copy-outer-scaffold"><div class="sourceCode cell-code" id="cb3" style="background: #f1f3f5;"><pre class="sourceCode r code-with-copy"><code class="sourceCode r"><span id="cb3-1"><span class="fu" style="color: #4758AB;
background-color: null;
font-style: inherit;">sessionInfo</span>()</span></code></pre></div></div>
<div class="cell-output cell-output-stdout">
<pre><code>R version 4.6.1 (2026-06-24 ucrt)
Platform: x86_64-w64-mingw32/x64
Running under: Windows 11 x64 (build 26300)

Matrix products: default
  LAPACK version 3.12.1

locale:
[1] LC_COLLATE=Japanese_Japan.utf8  LC_CTYPE=Japanese_Japan.utf8   
[3] LC_MONETARY=Japanese_Japan.utf8 LC_NUMERIC=C                   
[5] LC_TIME=Japanese_Japan.utf8    

time zone: Asia/Tokyo
tzcode source: internal

attached base packages:
[1] stats     graphics  grDevices utils     datasets  methods   base     

other attached packages:
[1] ThSQCA_2.0.9 QCA_3.25.5   admisc_0.41 

loaded via a namespace (and not attached):
 [1] digest_0.6.39     fastmap_1.2.0     xfun_0.60         knitr_1.52       
 [5] htmltools_0.5.9   rmarkdown_2.32    cli_3.6.6         venn_1.13        
 [9] declared_0.27     compiler_4.6.1    rstudioapi_0.19.0 tools_4.6.1      
[13] evaluate_1.0.5    yaml_2.3.12       otel_0.2.0        rlang_1.3.0      
[17] jsonlite_2.0.0    htmlwidgets_1.6.4</code></pre>
</div>
</div>


</section>

 ]]></description>
  <category>marketing</category>
  <category>tutorial</category>
  <guid>https://im-research-yt.github.io/ja/articles/thsqca-case-muji-swap/</guid>
  <pubDate>Thu, 05 Nov 2026 15:00:00 GMT</pubDate>
  <media:content url="https://im-research-yt.github.io/ja/articles/thsqca-case-muji-swap/thumbnail.png" medium="image" type="image/png" height="76" width="144"/>
</item>
<item>
  <title>ThS-QCAの事例: ユニクロと無印良品で見る「推奨」レベルごとの十分条件(ここから読む)</title>
  <link>https://im-research-yt.github.io/ja/articles/thsqca-case-overview/</link>
  <description><![CDATA[ 




<p><em>連載の入口の記事です。ここから読み始めてください。各回は、下のリンクから読めます。</em></p>
<p>「友人や知人に勧めたい」という気持ちを、何点以上で「推奨する」と考えるか。NPSでは9点以上が「推奨者」ですが、この推奨レベルを動かすと、推奨をもたらす条件の組み合わせ(十分条件)は変わります。このシリーズは、その様子を、ユニクロと無印良品の調査データで見ていきます。</p>
<section id="ths-qca-とは" class="level2">
<h2 class="anchored" data-anchor-id="ths-qca-とは">ThS-QCA とは</h2>
<p>質的比較分析(QCA)は、「どの条件の組み合わせが、結果に十分か」を調べる方法です。Threshold-Sweep QCA(ThS-QCA)は、結果(ここでは、勧めたい度合い)について、「推奨」とみなすレベル(閾値)を、段階的に動かして、そのたびに十分条件を並べて記述します(Toyoda, 2026, <em>Quality &amp; Quantity</em>)。この連載では、ThS-QCAで、結果側の閾値(推奨レベル)を動かします。最適な閾値を探す方法ではなく、「閾値によって、見え方がどう変わるか」を見る方法です。Rパッケージ ThSQCA(CRAN公開中)で実行できます。</p>
</section>
<section id="データ" class="level2">
<h2 class="anchored" data-anchor-id="データ">データ</h2>
<ul>
<li>2026年6月、法政大学大学院イノベーション・マネジメント研究科の講義「マーケティング２」で行った自主調査「カジュアルファッション調査(300名)：Freeasy社にて実施」の一部を、事例用に公開しています(再現用CSV: <code>fashion_uniqlo.csv</code>、<code>fashion_muji.csv</code>)。</li>
<li>対象は、スクリーニング調査で、カジュアルファッションブランドを選ぶことを「まったく意識していない」とは答えなかった人です。一般の消費者を代表する標本ではありません。</li>
<li>結果(Y):「友人や知人に、どの程度勧めたいと思いますか」(0=まったく勧めたくない 〜 10=ぜひ勧めたい)。</li>
<li>条件(X):各ブランドについて、「あてはまると思う項目をすべて選ぶ」形式で聞いた項目から、5項目(「買いやすい価格帯か」「品質がよいか」「着回しやすいか」「実店舗に入りやすいか」「トレンドを抑えた商品があるか(以下、ベーシック)」)を取り上げます。1回の分析で使うのは、4項目です。第1弾と第2弾は、価格・品質・着回し・ベーシックの4項目、第3弾は、価格を外して実店舗に入りやすいを加えた、品質・着回し・実店舗に入りやすい・ベーシックの4項目です。</li>
</ul>
</section>
<section id="条件についての大切な注意" class="level2">
<h2 class="anchored" data-anchor-id="条件についての大切な注意">条件についての大切な注意</h2>
<p>調査には、他にも項目がありますが、ここでは、手法の使い方を示す例として、5項目を取り上げ、1回の分析には、そのうちの4項目を使います。この項目の選び方は、例示に適したものを、結果を見て選んでいます。<strong>実際の分析では、事前に、仮説や先行研究にもとづいて、条件を決める必要があります。</strong></p>
</section>
<section id="シリーズの構成" class="level2">
<h2 class="anchored" data-anchor-id="シリーズの構成">シリーズの構成</h2>
<ol type="1">
<li><strong><a href="../../../ja/articles/thsqca-case-uniqlo/index.html">第1弾 ユニクロ</a></strong>:「推奨」レベルを9点から5点まで動かして、十分条件を並べます。</li>
<li><strong><a href="../../../ja/articles/thsqca-case-muji-same-conditions/index.html">第2弾 ユニクロの条件のまま、無印良品を分析する</a></strong>:同じ条件・設定で、ブランドだけを変えます。</li>
<li><strong><a href="../../../ja/articles/thsqca-case-muji-swap/index.html">第3弾 同じ無印良品のデータで、条件を入れ替える</a></strong>:ブランドを固定して、分析に入れる条件を入れ替えます。</li>
</ol>
</section>
<section id="結果のポイントは2つ結果の予告" class="level2">
<h2 class="anchored" data-anchor-id="結果のポイントは2つ結果の予告">結果のポイントは2つ(結果の予告)</h2>
<ol type="1">
<li><strong>推奨レベルを変えると、解が変わります。</strong>ユニクロでは、8点以上の解には、価格・品質・着回しの3つが含まれました。推奨レベルを5点以上に下げると、より短い組み合わせが現れます。</li>
<li><strong>分析に入れる条件を変えると、解が変わります。</strong>共通の4条件では、無印良品の7点以上で、基準を満たす解が得られませんでした。同じ251名で、価格を実店舗への入りやすさに入れ替えると、7点以上で、品質を含む2つの経路が見えました。</li>
</ol>
<p>どちらも、9点以上では、今回の条件では十分条件が得られていません。これは、「手立てがない」という意味ではなく、選んだ条件に、高い推奨をもたらす要因が含まれていないだけかもしれません。</p>
</section>
<section id="設定" class="level2">
<h2 class="anchored" data-anchor-id="設定">設定</h2>
<p>最小事例数4、一貫性の基準0.80、中間解(ベーシックだけは、方向の仮定を置かない)。</p>
<p>論文:Toyoda, Y. (2026). Threshold-sweep QCA: threshold dependence as an analytical dimension. <em>Quality &amp; Quantity</em>. https://doi.org/10.1007/s11135-026-03092-3</p>


</section>

 ]]></description>
  <category>marketing</category>
  <category>tutorial</category>
  <guid>https://im-research-yt.github.io/ja/articles/thsqca-case-overview/</guid>
  <pubDate>Thu, 05 Nov 2026 15:00:00 GMT</pubDate>
  <media:content url="https://im-research-yt.github.io/ja/articles/thsqca-case-overview/thumbnail.png" medium="image" type="image/png" height="76" width="144"/>
</item>
<item>
  <title>ThS-QCA を使ってみる(1)ユニクロ: 「推奨」レベルを9点から5点まで動かす</title>
  <link>https://im-research-yt.github.io/ja/articles/thsqca-case-uniqlo/</link>
  <description><![CDATA[ 




<p><em>連載第1弾。この記事だけで読めるように書いています。</em></p>
<p>NPS(ネット・プロモーター・スコア)では、0から10点で測定した推奨意向の得点から、9点以上を「推奨者」と呼びます。この「9点」を8点、7点、6点、5点と動かしたら、ユニクロの推奨をもたらす十分条件は、どう変わるでしょうか。</p>
<section id="方法とデータ連載共通" class="level2">
<h2 class="anchored" data-anchor-id="方法とデータ連載共通">方法とデータ(連載共通)</h2>
<ul>
<li><strong>方法</strong>:Threshold-Sweep QCA(ThS-QCA)。「友人や知人に勧めたい度合い」(0〜10点。0=まったく勧めたくない、10=ぜひ勧めたい)について、「推奨」とみなすレベル（閾値）を動かしながら、推奨をもたらす<strong>十分条件</strong>(その組み合わせを持つ人の多くが、推奨に至っている組み合わせ)を並べて記述します(Toyoda, 2026, <em>Quality &amp; Quantity</em>)。最適な閾値を探す方法ではありません。</li>
<li><strong>データ</strong>:2026年6月、法政大学大学院イノベーション・マネジメント研究科の講義「マーケティング２」で行った自主調査「カジュアルファッション調査(300名)：Freeasy社にて実施」の一部を、事例用に公開しています。対象は、スクリーニング調査で、カジュアルファッションブランドを選ぶことを「まったく意識していない」とは答えなかった人です(一般の消費者を代表する標本ではありません)。各ブランドを評価した人が分析の対象です(「わからない」は除外)。</li>
<li><strong>対象</strong>:ユニクロを評価した267名。</li>
<li><strong>条件(X)</strong>:ブランドへの認識(「買いやすい価格帯」「品質がよい」「着回しやすい」「トレンドを抑えた商品がある(以下、ベーシック)」)。各ブランドについて、「あてはまると思う項目をすべて選ぶ」形式で聞き、選ばれた/選ばれなかったで分けています。ここで取り上げる4つは、<strong>手法の使い方を示す例</strong>です。例示に適したものを、結果を見て選んでいます。実際の分析では、事前に、仮説や先行研究にもとづいて、条件を決める必要があります。</li>
<li><strong>一貫性</strong>:その組み合わせを持つ人のうち、推奨した人の割合(基準は0.80以上)。<strong>カバレッジ</strong>:推奨した人のうち、その組み合わせで説明できた人の割合。</li>
<li><strong>設定</strong>(全レベル共通):最小事例数4。<strong>中間解</strong>を使います(データにない組み合わせにも、「その認識があれば推奨に寄与する」という方向の仮定を置いて、式を短くします。ただし、ベーシックだけは、どちらの方向とも決められないため、方向の仮定を置きません)。</li>
</ul>
</section>
<section id="結果十分条件の列挙9点から5点" class="level2">
<h2 class="anchored" data-anchor-id="結果十分条件の列挙9点から5点">結果:十分条件の列挙(9点から5点)</h2>
<table class="caption-top table">
<colgroup>
<col style="width: 20%">
<col style="width: 20%">
<col style="width: 20%">
<col style="width: 20%">
<col style="width: 20%">
</colgroup>
<thead>
<tr class="header">
<th>「推奨」のレベル</th>
<th>該当する人の割合</th>
<th>十分条件</th>
<th>一貫性</th>
<th>カバレッジ</th>
</tr>
</thead>
<tbody>
<tr class="odd">
<td>9点以上</td>
<td>18%</td>
<td>なし</td>
<td>−</td>
<td>−</td>
</tr>
<tr class="even">
<td>8点以上</td>
<td>41%</td>
<td>価格×品質×着回し×ベーシックでない</td>
<td>0.81</td>
<td>0.19</td>
</tr>
<tr class="odd">
<td>7点以上</td>
<td>58%</td>
<td>価格×品質×着回し×ベーシックでない</td>
<td>0.88</td>
<td>0.15</td>
</tr>
<tr class="even">
<td>6点以上</td>
<td>67%</td>
<td>価格×着回し×ベーシックでない / 品質×着回しでない×ベーシックでない</td>
<td>0.89</td>
<td>0.39</td>
</tr>
<tr class="odd">
<td>5点以上</td>
<td>86%</td>
<td>価格×ベーシックでない / 品質×ベーシックでない / 着回し×ベーシックでない / 価格×品質×着回し</td>
<td>0.93</td>
<td>0.66</td>
</tr>
</tbody>
</table>
<p>(「/」は「または」、「ベーシックでない」は、「トレンドを抑えた商品がある」とは認識されていない(選ばれなかった)ことです。表の一貫性とカバレッジは、「/」で結んだ解全体の値です。)</p>
<ul>
<li>5点以上では、ベーシックと認識されていない状態であれば、価格・品質・着回しのどれか1つがあれば十分です(3つが揃う場合は、ベーシックかどうかを問いません)。条件が緩く、十分条件の形も多様です。</li>
<li>7〜8点以上では、ベーシックとは認識されていない状態で、<strong>価格×品質×着回しがすべて揃う</strong>ことが、十分条件です。</li>
<li>なお、9点以上では、この4つの条件では十分条件が得られませんでした。</li>
</ul>
<p>目標のレベルが上がるほど、十分条件は「どれか1つ」から「複数が揃う」へと厳しくなることがわかります。</p>
</section>
<section id="マーケティング的な読み方仮説として" class="level2">
<h2 class="anchored" data-anchor-id="マーケティング的な読み方仮説として">マーケティング的な読み方(仮説として)</h2>
<p>結果から言えるのは、「どの認識の組み合わせを持つ人が、どの程度の推奨に至っているか」までです。以下は、そこから考えられる、マーケティング上の解釈で、あくまで仮説です。</p>
<ol type="1">
<li><strong>推奨レベルを下げるほど、短い組み合わせが解に現れます。</strong>8点以上(41%)で得られた解には、価格・品質・着回しの3つが含まれていました。5点以上(86%)と定義した場合は、ベーシックと認識されていない状態であれば、価格・品質・着回しのどれか1つを含む、より短い組み合わせが現れます。高い得点で薦める人たちには、複数の認識が重なった組み合わせが見えている、と読めます。</li>
<li><strong>どのレベルの解にも、「ベーシックでない」が含まれています。</strong>「トレンドを抑えた商品がある」が選ばれなかったことが、すべての解に入っています。ただし、この項目が選ばれなかったことが、ブランドのどんな見方を表しているのかは、この調査だけでは分かりません。「新しさや流行を感じている」とまでは、読めません。</li>
<li><strong>十分条件は、推奨の道筋の「一部」です。</strong>「価格×品質×着回し×ベーシックでない」に当てはまる人は26名で、そのうち23名が7点以上です(一貫性0.88)。一方、7点以上の154名(58%)のうち、この組み合わせに当てはまるのは23名(約15%、カバレッジ0.15)にとどまります。7点以上の人の大半は、ほかの道筋で推奨しています。この組み合わせを満たす施策だけで、推奨者が大きく増えるとは限りません。</li>
</ol>
</section>
<section id="読むときの注意" class="level2">
<h2 class="anchored" data-anchor-id="読むときの注意">読むときの注意</h2>
<ul>
<li>「十分条件が得られなかった」は、「理由がない」という意味ではありません。選んだ条件に、高い推奨をもたらす要因が含まれていないだけかもしれません。別の条件を選べば、十分条件は変わります。</li>
<li>4つの条件は例示です(上記のとおり、実際は事前に決めます)。</li>
<li>講義の一環で実施したオンライン調査(300名)であり、一般の消費者を代表する標本ではありません。</li>
</ul>
</section>
<section id="再現用コードr" class="level2">
<h2 class="anchored" data-anchor-id="再現用コードr">再現用コード(R)</h2>
<p>データ(同じフォルダ): <a href="fashion_uniqlo.csv">fashion_uniqlo.csv</a></p>
<div class="cell">
<div class="code-copy-outer-scaffold"><div class="sourceCode cell-code" id="cb1" style="background: #f1f3f5;"><pre class="sourceCode r code-with-copy"><code class="sourceCode r"><span id="cb1-1"><span class="fu" style="color: #4758AB;
background-color: null;
font-style: inherit;">library</span>(QCA); <span class="fu" style="color: #4758AB;
background-color: null;
font-style: inherit;">library</span>(ThSQCA)</span>
<span id="cb1-2">dat   <span class="ot" style="color: #003B4F;
background-color: null;
font-style: inherit;">&lt;-</span> <span class="fu" style="color: #4758AB;
background-color: null;
font-style: inherit;">read.csv</span>(<span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"fashion_uniqlo.csv"</span>)</span>
<span id="cb1-3">conds <span class="ot" style="color: #003B4F;
background-color: null;
font-style: inherit;">&lt;-</span> <span class="fu" style="color: #4758AB;
background-color: null;
font-style: inherit;">c</span>(<span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"PRICE"</span>, <span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"QUALITY"</span>, <span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"VERSATILE"</span>, <span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"BASIC"</span>)</span>
<span id="cb1-4">res <span class="ot" style="color: #003B4F;
background-color: null;
font-style: inherit;">&lt;-</span> <span class="fu" style="color: #4758AB;
background-color: null;
font-style: inherit;">otSweep</span>(<span class="at" style="color: #657422;
background-color: null;
font-style: inherit;">dat =</span> dat, <span class="at" style="color: #657422;
background-color: null;
font-style: inherit;">outcome =</span> <span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"REC"</span>, <span class="at" style="color: #657422;
background-color: null;
font-style: inherit;">conditions =</span> conds,</span>
<span id="cb1-5">  <span class="at" style="color: #657422;
background-color: null;
font-style: inherit;">sweep_range =</span> <span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">5</span><span class="sc" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">:</span><span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">9</span>,</span>
<span id="cb1-6">  <span class="at" style="color: #657422;
background-color: null;
font-style: inherit;">thrX =</span> <span class="fu" style="color: #4758AB;
background-color: null;
font-style: inherit;">setNames</span>(<span class="fu" style="color: #4758AB;
background-color: null;
font-style: inherit;">rep</span>(<span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">1</span>, <span class="fu" style="color: #4758AB;
background-color: null;
font-style: inherit;">length</span>(conds)), conds),</span>
<span id="cb1-7">  <span class="at" style="color: #657422;
background-color: null;
font-style: inherit;">include =</span> <span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"?"</span>, <span class="at" style="color: #657422;
background-color: null;
font-style: inherit;">dir.exp =</span> <span class="fu" style="color: #4758AB;
background-color: null;
font-style: inherit;">ifelse</span>(conds <span class="sc" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">==</span> <span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"BASIC"</span>, <span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"-"</span>, <span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"1"</span>),</span>
<span id="cb1-8">  <span class="at" style="color: #657422;
background-color: null;
font-style: inherit;">incl.cut =</span> <span class="fl" style="color: #AD0000;
background-color: null;
font-style: inherit;">0.80</span>, <span class="at" style="color: #657422;
background-color: null;
font-style: inherit;">n.cut =</span> <span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">4</span>)</span>
<span id="cb1-9">res<span class="sc" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">$</span>summary[, <span class="fu" style="color: #4758AB;
background-color: null;
font-style: inherit;">c</span>(<span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"thrY"</span>, <span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"expression"</span>, <span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"inclS"</span>, <span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"covS"</span>, <span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"n_solutions"</span>)]</span></code></pre></div></div>
<div class="cell-output cell-output-stdout">
<pre><code>  thrY
1    5
2    6
3    7
4    8
5    9
                                                                  expression
1 PRICE*~BASIC + QUALITY*~BASIC + VERSATILE*~BASIC + PRICE*QUALITY*VERSATILE
2                         PRICE*VERSATILE*~BASIC + QUALITY*~VERSATILE*~BASIC
3                                             PRICE*QUALITY*VERSATILE*~BASIC
4                                             PRICE*QUALITY*VERSATILE*~BASIC
5                                                                No solution
      inclS      covS n_solutions
1 0.9263804 0.6565217           1
2 0.8860759 0.3888889           1
3 0.8846154 0.1493506           1
4 0.8076923 0.1926606           1
5        NA        NA           0</code></pre>
</div>
</div>
<p>論文:Toyoda, Y. (2026). Threshold-sweep QCA: threshold dependence as an analytical dimension. <em>Quality &amp; Quantity</em>. https://doi.org/10.1007/s11135-026-03092-3</p>
</section>
<section id="次に読むもの" class="level2">
<h2 class="anchored" data-anchor-id="次に読むもの">次に読むもの</h2>
<ul>
<li><a href="../../../ja/articles/thsqca-case-muji-same-conditions/index.html">第2弾 ユニクロの条件のまま、無印良品を分析する</a></li>
<li><a href="../../../ja/articles/thsqca-case-overview/index.html">ここから読む:ThS-QCAの事例</a></li>
</ul>
</section>
<section id="このページのrの環境" class="level2">
<h2 class="anchored" data-anchor-id="このページのrの環境">このページのRの環境</h2>
<div class="cell">
<div class="code-copy-outer-scaffold"><div class="sourceCode cell-code" id="cb3" style="background: #f1f3f5;"><pre class="sourceCode r code-with-copy"><code class="sourceCode r"><span id="cb3-1"><span class="fu" style="color: #4758AB;
background-color: null;
font-style: inherit;">sessionInfo</span>()</span></code></pre></div></div>
<div class="cell-output cell-output-stdout">
<pre><code>R version 4.6.1 (2026-06-24 ucrt)
Platform: x86_64-w64-mingw32/x64
Running under: Windows 11 x64 (build 26300)

Matrix products: default
  LAPACK version 3.12.1

locale:
[1] LC_COLLATE=Japanese_Japan.utf8  LC_CTYPE=Japanese_Japan.utf8   
[3] LC_MONETARY=Japanese_Japan.utf8 LC_NUMERIC=C                   
[5] LC_TIME=Japanese_Japan.utf8    

time zone: Asia/Tokyo
tzcode source: internal

attached base packages:
[1] stats     graphics  grDevices utils     datasets  methods   base     

other attached packages:
[1] ThSQCA_2.0.9 QCA_3.25.5   admisc_0.41 

loaded via a namespace (and not attached):
 [1] digest_0.6.39     fastmap_1.2.0     xfun_0.60         knitr_1.52       
 [5] htmltools_0.5.9   rmarkdown_2.32    cli_3.6.6         venn_1.13        
 [9] declared_0.27     compiler_4.6.1    rstudioapi_0.19.0 tools_4.6.1      
[13] evaluate_1.0.5    yaml_2.3.12       otel_0.2.0        rlang_1.3.0      
[17] jsonlite_2.0.0    htmlwidgets_1.6.4</code></pre>
</div>
</div>


</section>

 ]]></description>
  <category>marketing</category>
  <category>tutorial</category>
  <guid>https://im-research-yt.github.io/ja/articles/thsqca-case-uniqlo/</guid>
  <pubDate>Thu, 05 Nov 2026 15:00:00 GMT</pubDate>
  <media:content url="https://im-research-yt.github.io/ja/articles/thsqca-case-uniqlo/thumbnail.png" medium="image" type="image/png" height="76" width="144"/>
</item>
<item>
  <title>潜在変数を入れる前に: 尺度化とパス解析でできること</title>
  <link>https://im-research-yt.github.io/ja/articles/before-latent-variables/</link>
  <description><![CDATA[ 




<!--
公開前のメモ(公開前に消す。HTMLコメントはページに出ません)
1. 動画2本は第3章に置きました。位置を変えたいときは、動画の行(video で始まる行)を移動してください。
2. categories は案です: [marketing, notes]。R は付けません(Rのコードがなく、R-bloggers の対象でもありません)。
3. slug は案です: before-latent-variables
-->
<p>　前の記事「アンケートから尺度を作り、回帰分析・QCAに進む手順」では、アンケートの複数の項目から、因子分析、クロンバックのα、下位尺度の得点を経て、回帰分析に進む流れを書きました。以下、その記事の続きです。</p>
<p>　以前より、院生や他の研究者から、同じ種類の質問を受けることがありました。「構成概念を使うのに、先に因子分析などで因子得点を作ったり、下位尺度を作らなくても、（回帰分析やパス解析ではなく）潜在変数入りのSEMを使うべきではないでしょうか」という質問です。もちろん、数学的に理解したうえでの質問であることもありますが、私の見聞きした範囲では、「SEMのほうがかっこいいから」という本質的ではない理由が少なくありません（ちゃんとSEMを理解している人からはそもそもそんな質問は出ない）。大学院の指導の場でも、「とりあえず（潜在変数入りの）SEMで」といわれたという話を耳にすることがあります。</p>
<p>　この記事は、その質問に対する、<strong>私自身の考え</strong>を書いたものです。私の立場は、次の一点にまとめられます。</p>
<blockquote class="blockquote">
<p><strong>潜在変数を入れたモデルは、上位版の分析ではありません。潜在変数を入れることで答えられる問いがある一方、仮定、判断、推定上の責任も増えます。したがって、その必要があるときに使えばよい、と私は考えます。</strong></p>
</blockquote>
<p>　もちろん、「潜在変数入りのモデルを使うな」という意味ではありません。使うなら、使う理由を自分の言葉で説明できる状態で使ってほしい、ということです。高度な手法ほど理屈を知らないで使ったときのミスが致命的になることも少なくないからです。</p>
<p>　潜在変数を組み入れず、下位尺度の得点を使うと、得点に含まれる測定誤差のために、構造の部分の係数が小さめに出たり、偏ったりすることがあります。そのことを承知していても、初心者に尺度化から始めることを勧めるのは、潜在変数を入れると、仮定、判断、推定上の責任が増え、それを説明できない状態で使うと、別の種類の問題が生じるからです。測定誤差の問題への答えの一つが潜在変数入りのモデルであることは認めたうえで、その必要があるかを、問いに照らして確かめてほしい、というのが、この記事の趣旨です(第4章の問いA)。</p>
<p>　なお、SEMの使い方には様々な意見があります。以下の主張は、すべて「私（豊田）は〜と考えます」という意味で読んでください。</p>
<hr>
<section id="言葉の整理-論点はsemかどうかではない" class="level2">
<h2 class="anchored" data-anchor-id="言葉の整理-論点はsemかどうかではない">1. 言葉の整理: 論点は「SEMかどうか」ではない</h2>
<p>　最初に、言葉をそろえておきます。ここが曖昧だと、あとの議論が噛み合わなくなるからです。</p>
<p><strong>SEM(構造方程式モデリング)</strong> は、複数の変数どうしの関係を、一つの統一的なモデルとして表現し、推定する広い枠組みの名前です。その中に、いくつかの種類のモデルが入ります。</p>
<ul>
<li><p><strong>観測変数だけのモデル(パス解析)：</strong> 実際に測定した変数(そこから作成した下位尺度の得点を含む)だけを使い、変数どうしの関係を推定します（重回帰分析は、パス解析の特別な場合と見ることができます）。つまり、パス解析も、広い意味ではSEMの一部です。</p></li>
<li><p><strong>潜在変数を含むモデル：</strong> 直接は測定できない構成概念を「潜在変数」として置き、複数の観測項目が、その潜在変数を測っているとします。この「項目と潜在変数との関係の部分」を<strong>測定モデル</strong>と呼びます。さらに、潜在変数どうしの関係を組み込む場合には、<strong>構造モデル</strong>(構成概念どうしの関係の部分)を、あわせて扱います。</p></li>
<li><p><strong>確証的因子分析(CFA)</strong>は、潜在変数を含みますが、構造モデルを持たない場合もある、潜在変数モデルの一つです。</p></li>
</ul>
<p>　そのため、この記事では、「SEMを使うか、使わないか」という言い方を避けます。そう言うと、「パス解析もSEMの一種ではないか」という、もっともな指摘を受けるからです。この記事の論点は、次の一点です。</p>
<blockquote class="blockquote">
<p><strong>潜在変数を、モデルの中に入れるかどうか。</strong></p>
</blockquote>
<p>　事前に尺度を作り、下位尺度の得点を使って、回帰分析やパス解析を行う方法は、潜在変数を入れない方法です。この記事では、それを「観測変数のモデル」と呼びます。潜在変数を入れる方法は、「潜在変数入りのモデル」と呼びます。</p>
<p>　なお、ここでいう「潜在変数を入れない」とは、尺度を検討する段階で因子分析を使わない、という意味ではありません。因子分析そのものは、潜在変数のモデルです。この記事で区別したいのは、次の2つです。一つは、測定の段階で因子分析などを使って尺度を作り、その得点を観測変数として、回帰分析やパス解析に使う方法です。もう一つは、測定モデルを構造モデルの中に組み込んで、潜在変数どうしの関係を推定する方法です。</p>
<p>　なお、この記事では、変数どうしの結びつきを、「関連」と書きます。パス解析の矢印や、回帰係数は、横断的なアンケートのデータ（観測データ）だけでは、因果関係を示すものではありません。モデルの形が、潜在変数入りであっても、観測変数だけであっても、この点は同じです。</p>
<hr>
</section>
<section id="なぜ何でも潜在変数入りになりやすいのか" class="level2">
<h2 class="anchored" data-anchor-id="なぜ何でも潜在変数入りになりやすいのか">2. なぜ「何でも潜在変数入り」になりやすいのか</h2>
<p>　私が見聞きしている範囲で、理由は、おおよそ次の3つに分けられると考えています(これは観察であり、調査の結果ではありません)。</p>
<ol type="1">
<li><strong>論文で見かけるから。</strong> 学術論文では、潜在変数入りのモデルが、よく使われています。「論文らしい分析」に見えるため、まねたくなります。</li>
<li><strong>構成概念があると考えるから。</strong> 「ブランド信頼」のような概念を扱うので、潜在変数にするのが自然だ、と感じます。しかし、構成概念を持つことと、分析で潜在変数を使うことは、別のことです。前の記事で書いたとおり、構成概念を先に定義し、複数の項目で測り、信頼性を確かめ、下位尺度の得点にして使う方法も、構成概念を大切にした方法です。</li>
<li><strong>ソフトが、使えてしまうから。</strong>AMOSなどのソフトを使って図を描いてボタンを押せば、結果が出ます（本当は構造方程式を書けばその複雑さがわかるのですが、図でモデルを書くと簡単に思えてしまっている）。使えてしまうことと、結果を説明できることは、別です。</li>
</ol>
<p>　どれも、「研究の問い」から出てきた理由ではありません。手法が先に立っています。私は、順番は逆であってほしいと考えています。問いがあり、測定の条件があり、そのあとに、手法を選ぶ、という順番です。</p>
<hr>
</section>
<section id="潜在変数を入れると何が増えるのか" class="level2">
<h2 class="anchored" data-anchor-id="潜在変数を入れると何が増えるのか">3. 潜在変数を入れると、何が増えるのか</h2>
<p>　潜在変数を入れると、モデルの表現力は増えます。同時に、<strong>自分で判断しなければならないことが、増えます。</strong></p>
<section id="たとえ話で考える-矢印をバネに見立てる" class="level3">
<h3 class="anchored" data-anchor-id="たとえ話で考える-矢印をバネに見立てる">たとえ話で考える「 矢印をバネに見立てる」</h3>
<p>　潜在変数を含むモデルを、イメージで理解するために、私は次のたとえを使います（講義では、バネがビヨーンと伸びたり縮んだりすると言ったりしています）。ただし、あくまでイメージです。厳密な説明ではありません。</p>
<p>　モデルの中の矢印の1本1本を、<strong>バネ</strong>だと思ってください。それぞれのバネは、変数どうしの関係を表しています。バネの強さが、推定値です。バネが何本もつながっていると、1本の強さを変えたとき、ほかのバネも引っぱられて、全体が動き直します。そして、全体が<strong>釣り合う位置</strong>（計算が落ち着く位置）で安定します。その位置が、最終的に報告される、推定値です。</p>
<video controls="" preload="metadata" playsinline="" style="width:100%;max-width:100%;height:auto;">
  <source src="spring_1_observed_ja.mp4" type="video/mp4">
</video>
<p><em>動画1: 観測変数だけのモデル。数値と動きは説明用の例です。</em></p>
<p>　バネが増えて、複雑にからみ合うと、どこか1箇所の指定が不適切なとき、そのゆがみが、ほかのバネにも伝わり、<strong>思いがけない位置で釣り合う</strong>ことがあります。しかも、釣り合っているので、見た目は「落ち着いた、もっともらしい結果」に見えます。</p>
<p>　実際のモデルでは、これに近いことが、次のような形で起こります。</p>
<ul>
<li>構造モデルの部分の指定が変わると、測定モデルの部分の推定値も動きうる(解釈上の交絡。Burt, 1976)。</li>
<li>推定がうまく収束しない、または、分散が負になるような、不適切な解が出る。</li>
<li>同じくらいよく合う、別の形のモデルが、ほかにも存在する(等価モデル。MacCallum et al., 1993)。</li>
</ul>
<p>　ここで、3つのことを分けておきます。「計算が落ち着くこと(収束)」「データによく合うこと(適合)」「理論的に妥当であること」は、別のことです。バネが釣り合って落ち着いていても、それが<strong>正しい位置</strong>であるとは限りません。計算が収束しても、適合の悪いモデルはありますし、適合が良くても、理論的に妥当だとは限りません。</p>
<p><strong>たとえの限界：</strong> 実際の推定は、バネが揺れて動く物理現象ではなく、データとモデルのずれが、最も小さくなるように、数値を探す計算です。また、「バネが多い=悪いモデル」という意味でもありません。複雑なモデルは、強力でもあります。ただ、複雑になるほど、全体が連動するため、<strong>どこで何が起きているのか、自分で点検しにくくなる</strong>、というのが、このたとえの伝えたい点です。</p>
<section id="たとえ話の続き-固定された点と見えない接続点" class="level4">
<h4 class="anchored" data-anchor-id="たとえ話の続き-固定された点と見えない接続点">たとえ話の続き: 固定された点と、見えない接続点</h4>
<p>　バネの両端には、「点」があります。この点には、2種類あります。</p>
<ul>
<li><strong>観測変数は、データによって位置が決められた、固定点です。</strong> 位置は、動きません（たとえ話なのでイメージです）</li>
<li><strong>潜在変数は、直接観測されていない、見えない接続点です。</strong> データで位置が決まっていないので、その点をどこにあると考えるかも、全体の関係を見ながら、モデルの中で決めます。(ここで言う「位置」は、実際の空間上の座標ではありません。複数の項目に共通して現れるまとまりを、どう位置づけるか、というイメージです。)</li>
</ul>
<p>　固定点どうしを、バネで結ぶだけなら、点は動かないので、動くのは、主としてバネの強さです。ただし、同じ点につながったバネどうしは連動します。1本を外したり、足したりすれば、ほかのバネの強さも、変わりえます。</p>
<p>　そこに、見えない接続点を加えると、状況が変わります。その接続点がどこにあると考えるかと、そこにつながるバネの強さを、全体の関係を見ながら、同時に決めることになります。そのため、1つのつなぎ方を変えると、見えない接続点の位置づけも変わり、そこにつながる別の関係の推定にも、影響が及ぶことがあります。しかも、接続点は見えないので、「どこで何が動いたか」を、外から確かめにくくなります。</p>
<video controls="" preload="metadata" playsinline="" style="width:100%;max-width:100%;height:auto;">
  <source src="spring_2_latent_ja.mp4" type="video/mp4">
</video>
<p><em>動画2: 潜在変数入りのモデル。数値と動きは説明用の例です。</em></p>
<p>　では、「測定」にあたる、尺度を作る手順(因子分析、α、下位尺度の得点：前の記事を参照)は、このたとえで、どう見えるでしょうか。下位尺度を作る方法は、見えない接続点そのものを、モデルの中で動かす代わりに、複数の項目から代表値(項目の平均)を作り、それを、1つの観測された点(固定点)として扱う方法だと、考えられます。固定する前に、項目のまとまりが妥当かどうかを、因子分析とαで点検します。点検が済んでから、固定点どうしを、バネ(回帰やパス解析)でつなぎます。</p>
<p>　最初から、見えない接続点を含めたまま、全部を同時につなぐ方法は、強力です。ただし、釣り合った位置が妥当かどうかを、自分で判断しなければなりません。私は、初心者が、最初に選ぶ道筋として、先に固定して、1段ずつ確かめる方法が、向いていると考えます。</p>
<p><strong>この続きのたとえの限界：</strong> 観測変数のモデルは、位置を固定して分析する方法です。ただし、「固定した点は、測定誤差のぶんだけ、本当は少しぐらついている」と考えることができます(第4章の問いAで扱います)。潜在変数入りのモデルは、そのぐらつきまで、モデルの中で扱おうとする方法です。ただし、それは、測定モデルの仮定が成り立つ場合の話です。また、「観測変数のモデルなら安全」という意味でもありません。固定点だけでも、バネが多くなれば、全体が連動し、同じくらいよく合う別のつなぎ方が出てきます。</p>
</section>
<section id="バネのたとえとこのあとの議論との対応" class="level4">
<h4 class="anchored" data-anchor-id="バネのたとえとこのあとの議論との対応">バネのたとえと、このあとの議論との対応</h4>
<ul>
<li>「解釈上の交絡」は、見えない接続点の位置づけが、ほかのバネに引っぱられて変わることにあたります。</li>
<li>「測定を先に確かめる(2段階の手順)」は、見えない接続点を、先に確かめてから扱うことにあたります。</li>
<li>「潜在変数入りのモデルを検討する理由がある」場面は、固定した点のぐらつき(測定誤差)まで、モデルの中で扱いたい場面や、見えない接続点どうしの関係そのものを確かめたい場面にあたります。</li>
</ul>
</section>
</section>
<section id="増える判断の例" class="level3">
<h3 class="anchored" data-anchor-id="増える判断の例">増える判断の例</h3>
<p>　ここでは、増える判断の例を、4つ挙げます。いずれも、観測変数のモデルに、まったく無いわけではありません。ただし、潜在変数を入れると、重みが大きく変わります。</p>
<p><strong>(1) 識別：</strong> モデルの中の未知の数(推定したいパラメータ数)が、データから、一意に決められるかどうかの問題です。決められないモデルでは、推定値が定まりません。観測変数のモデルにも識別の問題はありますが、潜在変数を入れると、潜在変数の単位を決めるなど、決める点が増えます。</p>
<p><strong>(2) 標本数とモデルの複雑さの釣り合い：</strong> 潜在変数を含むモデルでは、推定すべきパラメータが増えることが多く、標本数とモデルの複雑さの釣り合いを、より慎重に検討する必要があります。必要な標本数は、因子の数、指標の数、因子負荷量の大きさ、パス係数の大きさ、欠測の有無、推定法などによって、大きく変わります。一律の経験則は、適切ではないと考えられています。この記事では、数字は挙げません。</p>
<p><strong>(3) 適合度の見方：</strong> 潜在変数入りのモデルでは、データとモデルの合い具合(適合度)を、複数の指標で見ます。指標ごとに、意味と限界があり、「この値なら良い」という単純な基準は、ありません。カットオフ値を、機械的な合格基準として扱うことには、批判もあります。</p>
<p><strong>(4) 測定の部分と、構造の部分の関係：</strong> 一般的な潜在変数入りのモデルでは、最終的には、測定の部分と構造の部分を、一つのモデルの中で推定します。そのため、潜在変数の意味は、その変数自身の項目だけでなく、モデルの中のほかの変数との関連からも、影響を受けます。たとえば、構造の部分の指定が変わると、測定の部分の推定値(たとえば、因子負荷量)も変わり、その潜在変数が、実質的に何を表しているのかという解釈も、変わりうることがあります。これは、「解釈上の交絡」と呼ばれる問題です。Burt (1976) は、潜在変数に、研究者があらかじめ与えた意味とは別の意味が、推定の過程で実質的に与えられてしまうことを、この問題として論じました。</p>
<p>　なお、測定の部分を先に確かめてから、構造の部分を推定する、という考え方(2段階の手順)があります。Anderson &amp; Gerbing (1988) は、まず測定モデルを推定して確かめることを勧めており、1段階で推定できるからといって、それが望ましいとは限らない、という立場です。また、測定の部分と構造の部分を分けて推定する方法として、SAM (Rosseel &amp; Loh, 2024) が提案されています。SAMについて、著者らは、局所的なモデルの誤指定に頑健であること、小さい標本でも推定の収束の問題が起きにくいこと、モデルが正しく指定されているとき、有限標本でのバイアスが小さいことを、利点として挙げています。なお、著者らは、SAMを推定の方法として位置づけており、モデルを組み立てる手順としての2段階の手順とは、区別しています。ここで、違いを一文で言っておきます。平均尺度を使って回帰する手順では、測定誤差を、後段のモデルで明示的に扱いません。SAMは、測定と構造を分けながらも、潜在変数入りのモデルとして、測定誤差を扱います。「測定を先に行う」点は似ていますが、同じ方法ではありません。潜在変数入りのモデルが、必ず「すべてを同時に推定する」ものとは限りません。</p>
<p>　観測変数のモデルでは、尺度の作り方(測定)と、回帰やパス解析(構造)を、別の段階で行います。それぞれの段階の結果を、別々に点検できます。私は、この分けやすさを、初心者にとっての、大きな利点だと考えています。</p>
<hr>
</section>
</section>
<section id="潜在変数が必要な場面と避けられる場面" class="level2">
<h2 class="anchored" data-anchor-id="潜在変数が必要な場面と避けられる場面">4. 潜在変数が必要な場面と、避けられる場面</h2>
<p>この章が、この記事の中心です。同時に、いちばん議論になりやすい部分でもあると思います。そのため、判断を、<strong>2つの段階に分けて</strong>書きます。</p>
<blockquote class="blockquote">
<p><strong>第1段階: 潜在変数を使う必要があるか。</strong> <strong>第2段階: そのモデルを、適切に推定し、解釈できるか。</strong></p>
</blockquote>
<p>　この2つは、別の問いです。第1段階は、「使う理由があるか」であり、第2段階は、「使える条件がそろっているか」です。たとえば、標本数が十分にあることは、第2段階の条件です。標本数が十分だからといって、第1段階の「使う理由」になるわけではありません。逆に、第1段階で理由があっても、第2段階の条件がそろっていなければ、そのモデルを使うのは、難しいことになります。</p>
<section id="第1段階-潜在変数を使う必要があるか" class="level3">
<h3 class="anchored" data-anchor-id="第1段階-潜在変数を使う必要があるか">4.1 第1段階: 潜在変数を使う必要があるか</h3>
<p>　まず、あまり適切ではない使い分けの考え方を、書いておきます（あくまで私の一意見です）。</p>
<p>「変数どうしの関連の大きさを知りたいときは観測変数のモデル、構成概念どうしの構造を知りたいときは潜在変数入りのモデル」という分け方は、よく見かけます。しかし、私はこの分け方は適切ではないと考えています。下位尺度の得点を使った回帰やパス解析でも、実際には、構成概念どうしの関連を調べているからです。研究の問いの種類だけでは、2つを分けられません。</p>
<p>　私は、分かれ目を、問いの種類ではなく、<strong>測定の扱い</strong>に置いています。具体的には次の3つの問いから判断しています。</p>
<table class="caption-top table">
<colgroup>
<col style="width: 33%">
<col style="width: 33%">
<col style="width: 33%">
</colgroup>
<thead>
<tr class="header">
<th>問い</th>
<th>観測変数のモデル（つまりパス解析）で足りる、と私が考える場合</th>
<th>潜在変数入りのモデルを検討する理由になる場合</th>
</tr>
</thead>
<tbody>
<tr class="odd">
<td>A. 測定誤差を明示的にモデル化したうえで、構成概念どうしの関連を推定する必要があるか</td>
<td>尺度の信頼性が十分に高く、測定誤差の影響が、結論を左右しないと判断できる</td>
<td>測定誤差の影響が、結論を左右しうると考えられ、その影響を明示的に考慮したい</td>
</tr>
<tr class="even">
<td>B. 測定モデルそのものが、研究の対象か</td>
<td>既存の尺度や、自作の尺度を、道具として使う</td>
<td>尺度の構造(項目と構成概念の関係)を、研究の中心として確かめたい</td>
</tr>
<tr class="odd">
<td>C. 集団どうしで、尺度が同じ意味を持つかを、検証する必要があるか</td>
<td>集団比較をしない。または、同一性を前提として置き、その根拠と限界を明記できる</td>
<td>集団比較が結論の中心で、同一性が成り立つか、前提のままにできない</td>
</tr>
</tbody>
</table>
<p>　この表は、もちろん、手法の優劣を示すものではありません。<strong>問いと条件との相性</strong>を整理するためのものです。また、「観測変数のモデルで足りる」は、「潜在変数入りのモデルを避けるべき」という意味ではありません。「必要性を説明できないなら、急がなくてよい」という意味です。</p>
</section>
<section id="第1段階の各問いの説明" class="level3">
<h3 class="anchored" data-anchor-id="第1段階の各問いの説明">4.2 第1段階の各問いの説明</h3>
<p><strong>問い A: 測定誤差を、明示的に考慮する必要があるか。</strong></p>
<p>　観測変数のモデルでは、下位尺度の得点を、誤差のない値として扱います。実際には、得点には、測定誤差が含まれています。</p>
<p>　測定誤差があると、説明変数が1つの回帰では、係数が、本来より小さく出る傾向があります(希薄化と呼ばれます)。説明変数が複数あり、それらが相関しているときは、話がもう少し複雑です。ある変数の測定誤差が、他の変数の係数にも偏りを与えることがあり、その偏りの方向は、上向きにも下向きにもなりえます。なお、Rosseel &amp; Loh (2024) も、尺度得点や因子得点には測定誤差が残り、構造の部分の回帰係数に偏りが生じうることを指摘しています。</p>
<p>　この影響の大きさは、尺度の信頼性に依存します。信頼性が高いことは、観測変数のモデルを使ううえで、有利な条件です。ただし、それだけで、測定誤差が結論に影響しないとは判断できません。説明変数どうしの相関なども、係数への影響の大きさに関わるからです。</p>
<p>　ここで、1つ、強調しておきたいことがあります。<strong>信頼性が低いからといって、潜在変数入りのモデルに入れれば解決するわけではありません。</strong> 信頼性が低いなら、まず疑うべきは、尺度の測り方そのものです。項目の意味、項目の数、回答のしやすさなどを、見直す必要があります。潜在変数入りのモデルに入れれば、悪い尺度が救われる、ということはありません。ただし、尺度の見直しと、測定誤差を考慮する必要性は、両立します。尺度を改善したうえでなお、測定誤差の影響が結論を左右しうると考えられるなら、それは、潜在変数を使う理由になります。</p>
<p>　潜在変数入りのモデルは、測定誤差を、魔法のように「除去」するわけではありません。特定の測定モデルの仮定のもとで、測定誤差を、明示的にモデル化します。そのため、測定モデルの仮定が成り立たないとき、結果の解釈も、難しくなります。</p>
<p>　また、αが高いことは、信頼性の十分な証拠のすべてではありません。αは、信頼性の目安のひとつであり、項目の数や、項目の性質にも影響されます。判断には、αのほかに、尺度の中身(項目の意味、反復での安定性など)も、含めて考えます。</p>
<p><strong>問い B: 測定モデルそのものが、研究の対象か。</strong></p>
<p>　新しい尺度を開発する研究で、測定の構造を、論文の中心に据えるときは、潜在変数を含むモデル(確証的因子分析など)が、自然な選択です。一方、既存の尺度を、道具として借りる研究では、測定の構造の検証は、研究の中心ではありません。この場合は、尺度を確かめたうえで、下位尺度を作る、という手順を、まず考えてよいと、私は思います。</p>
<p><strong>問い C: 測定の同一性を、検討する必要があるか。</strong></p>
<p>　「ある尺度が、男性と女性、あるいは、国どうしで、同じ意味で測れているか」を確かめたいとします。集団どうしで平均などを比べるには、尺度が、集団どうしで同じ意味を持つ必要があります。これは、測定の同一性(測定不変性)の検討と呼ばれ、潜在変数入りのモデルで行う、代表的な分析です。</p>
<p>なお、単純に、下位尺度の得点を比較するだけでは、この問いに、直接答えることはできません。ただし、測定の同一性に関連する方法は、SEM以外にも、あります(項目反応理論や、項目の機能差の検討など)。ここでは、潜在変数入りのモデルが、代表的な方法である、と述べるにとどめます。</p>
</section>
<section id="第2段階-そのモデルを適切に推定し解釈できるか" class="level3">
<h3 class="anchored" data-anchor-id="第2段階-そのモデルを適切に推定し解釈できるか">4.3 第2段階: そのモデルを、適切に推定し、解釈できるか</h3>
<p>第1段階で、潜在変数を使う理由が見つかったとします。次に、第2段階として、次の点を確かめます。</p>
<table class="caption-top table">
<colgroup>
<col style="width: 50%">
<col style="width: 50%">
</colgroup>
<thead>
<tr class="header">
<th>確認する点</th>
<th>見ること</th>
</tr>
</thead>
<tbody>
<tr class="odd">
<td>標本数とモデルの複雑さの釣り合い</td>
<td>因子の数、指標の数、パラメータの数に対して、標本数が十分か。「何人以上」という一律の目安には、頼らない。</td>
</tr>
<tr class="even">
<td>識別</td>
<td>モデルが識別されているか。識別の条件を、自分の言葉で説明できるか。</td>
</tr>
<tr class="odd">
<td>推定法とデータの性質</td>
<td>5件法のデータを、どう扱うか。分布の前提は、妥当か。</td>
</tr>
<tr class="even">
<td>結果の説明</td>
<td>識別、推定法、適合度の判断を、読者と審査者に、説明できるか。</td>
</tr>
</tbody>
</table>
<p>　5件法のようなデータを、連続量として扱ってよいかどうかは、論点の一つです。順序のあるカテゴリとして扱う推定法も、あります。ただし、カテゴリの数や、分布の形によっては、連続量として扱う方法が、十分に機能する場合もあります。「5件法だから、必ず順序カテゴリの方法」と、機械的に決めるものでもありません。</p>
<p>　私は、この表の最後の行、「説明できるか」が、実務上、いちばん大切だと考えています。研究の結果は、読者と審査者に、説明できなければなりません。「なぜ、潜在変数を入れたのか」「識別は、どう確かめたのか」「適合度は、どう判断したのか」という質問に、答えられない状態で使うと、結果への信頼が、損なわれます。</p>
</section>
<section id="具体例" class="level3">
<h3 class="anchored" data-anchor-id="具体例">4.4 具体例</h3>
<p><strong>例1: 観測変数のモデルで足りる、と私が考える場合</strong></p>
<p>　ある院生が、百貨店の顧客を対象に、「ブランド信頼」「品質評価」「価格納得」が、購買意向とどう関連するかを、アンケートで調べるとします。既存の尺度を使い、各概念を、4〜5項目で測ったとします。項目の構成について、因子分析で大きな問題がないことを確認し、信頼性も十分です。この研究では、集団どうしの比較は行いません。仮に比較するとしても、尺度が集団間で同じ意味をもつことは、確かめるのではなく、前提として置きます。つまり、第1段階の問いCにあたる「尺度が集団間で同じように働くかを確かめること」は、この研究の目的ではありません。標本数は、小〜中規模です。</p>
<p>　この場合、まず、下位尺度を作り、回帰分析を行う方法から検討することが、合理的だと、私は考えます。第1段階の3つの問いのどれにも、潜在変数を入れる強い理由が、見当たらないからです。ただし、測定誤差の影響が結論を左右しうると考えられるなら、その時点で、見直します。</p>
<p><strong>例2: 潜在変数入りのモデルを、検討する意味がある、と私が考える場合</strong></p>
<p>　ある研究者が、ある尺度が、国どうしで、同じ意味で測れているかを確かめたうえで、国どうしの平均を比べたいと考えます。各国の標本数も、十分にあります。</p>
<p>　この場合、第1段階の問いCに、はっきりした理由があります。さらに、第2段階の条件も、そろっています。潜在変数入りのモデルを使う理由が明確で、説明もできます。</p>
<p>2つの例の違いは、手法の難しさや、格好よさではありません。<strong>潜在変数入りのモデルが、問いに必要か、そして、それを適切に扱えるか、という点です。</strong></p>
<hr>
</section>
</section>
<section id="初心者へのすすめ方私の考え" class="level2">
<h2 class="anchored" data-anchor-id="初心者へのすすめ方私の考え">5. 初心者へのすすめ方(私の考え)</h2>
<p>　ここまでの議論を、初心者への、すすめ方としてまとめます。</p>
<ol type="1">
<li><strong>まず、尺度を作って、確かめる。</strong> 理論から構成概念を定義し、項目を準備し、因子分析とαで確かめ、下位尺度の得点にします。この手順の詳細は、前の記事に書きました。</li>
<li><strong>次に、観測変数のモデルで、分析する。</strong> 下位尺度を使い、回帰分析や、パス解析を行います。各段階の結果を、別々に点検できるため、誤りに気づきやすく、説明もしやすい方法です。ただし、下位尺度の得点には測定誤差が含まれるため、構造の部分の係数が、小さめに出たり、偏ったりすることがあります(第4章の問いA)。その影響が結論を左右しうるかどうかを考えることが、次の3番の判断につながります。</li>
<li><strong>必要性が見えてから、潜在変数入りのモデルに進む。</strong> 測定誤差の影響を、明示的に考慮したい、測定の同一性を確かめたい、などの理由が、研究の中で、はっきりしてからで、遅くないと考えます。</li>
</ol>
<p>　ひとつだけ、強調したいことがあります。<strong>「潜在変数入りのモデルを使えること」と、「潜在変数入りのモデルを使うべき研究であること」は別です。</strong></p>
<p>　また、「すべてを一度に推定する」と「すべてを別々に行う」の間にも、中間的な選択肢があります。測定の部分を先に確かめる2段階の手順(Anderson &amp; Gerbing, 1988)や、測定と構造を分けて推定する方法(SAMなど。Rosseel &amp; Loh, 2024)です。</p>
<hr>
</section>
<section id="参考-より詳しく知りたい人のための話" class="level2">
<h2 class="anchored" data-anchor-id="参考-より詳しく知りたい人のための話">6. 参考: より詳しく知りたい人のための話</h2>
<p>　この章は、より詳しく知りたい人への参考として書きます。潜在変数入りのモデルを使う前に、自分で確かめるための視点を、まとめたものです。</p>
<p>　この章の趣旨は、「潜在変数入りのモデルは悪い」ではありません。<strong>数学的な性質を理解しないまま使うと、何が起こりうるか</strong>を知っておくと役立つ、という点です。</p>
<section id="起こりうる問題" class="level3">
<h3 class="anchored" data-anchor-id="起こりうる問題">6.1 起こりうる問題</h3>
<p><strong>(1) 適合度が良いことは、モデルが正しいことを意味しない。</strong></p>
<p>　適合度は、データとモデルの、合い具合の指標です。同じデータに、同じように合う、別のモデル(等価モデル)が存在することがあります。MacCallum et al.&nbsp;(1993) は、心理学の応用研究53件を調べ、等価モデルが、しばしば、多数存在することを示しました。適合度が良いという結果だけでは、「ほかの説明は成り立たない」ことは示せません。「適合が良かったので、仮説が支持された」という書き方を、そのまま受け入れないほうがよい、と私は考えます。</p>
<p><strong>(2) 識別の問題</strong></p>
<p>　識別されないモデルでは、推定値が、一意に決まりません。ソフトが、数字を出すこともあります。しかし、その数字が何を意味するのかを、説明できないことがあります。</p>
<p><strong>(3) 解釈上の交絡</strong></p>
<p>　第3章で触れたとおり、構造の部分の指定によって、測定の部分の推定値(因子負荷量など)が影響を受け、潜在変数が実質的に何を表しているのかという解釈が、変わる可能性があります(Burt, 1976)。Burt は、ある潜在変数の項目どうしの共分散が低く、かつ、それらと他の潜在変数の項目との共分散が大きく異なるとき、同時推定では、その潜在変数の意味が、他の潜在変数の項目の変動に左右されやすいと述べています(指標が2つの潜在変数についての、先行する分析を引いています)。そのため、項目どうしの関連が弱い尺度ほど、注意が必要だと考えます。この点は、自分の分析でも、意識しておくとよいと思います。</p>
<p><strong>(4) 修正指標による試行錯誤</strong></p>
<p>　適合が悪いとき、ソフトが示す「修正指標」にしたがって、モデルを直すことができます（無批判にこの修正を受け入れる人が少なからずいます）。ただし、データを見て、モデルを直し続けると、そのデータに特有の偶然な特徴に、モデルを合わせることになります。直した理由と、直した順番を、記録して、報告しているかを、確認したいところです。</p>
<p><strong>(5) 推定の前提</strong></p>
<p>　標準的な推定法は、データの分布について、ある前提を置いています。5件法のようなデータの扱いは、第4章で触れたとおり、論点です。標本数がモデルに対して小さいと、推定がうまくいかない、あるいは、不適切な解(分散が負になる、など)が出ることもあります。</p>
<p><strong>(6) 因果の読み込み</strong></p>
<p>　パス解析や、潜在変数入りのモデルで、矢印を描くと、因果関係を示したかのように読まれやすくなります。横断的なアンケートでは、矢印は、研究者の仮定を表すものであり、因果の証明ではありません。報告では、「関連」と書くのが、安全だと考えます。</p>
<p><strong>(7) 手法選択上の問題</strong></p>
<p>　結果を、自力で再現できない、あるいは、説明できない場合、誤りに気づくことも、他の人に確認してもらうことも、難しくなります。観測変数のモデルでは、測定と構造を段階ごとに分けて確認しやすく、どの段階で結果が変わったのかを追跡しやすいという利点があります。潜在変数入りのモデルでは、多くのパラメータが連動するため、問題の所在を切り分けるには、より多くの理解が必要になります。</p>
</section>
<section id="手法選択のときの問いかけのチェックリスト" class="level3">
<h3 class="anchored" data-anchor-id="手法選択のときの問いかけのチェックリスト">6.2 手法選択のときの、問いかけのチェックリスト</h3>
<p>　手法を選ぶときの、自分への問いかけを、チェックリストにまとめておきます。</p>
<p>　潜在変数入りのモデルを使う前に、次の点を、自分に問いかけてみてください。</p>
<ul>
<li>潜在変数を入れる理由を、<strong>一文で</strong>説明できるか。(第1段階の問いのどれに当たるか)</li>
<li>下位尺度と、観測変数のモデルでは、<strong>何が足りない</strong>のか。</li>
<li>標本数、識別、推定法の選択を、<strong>自分の言葉で</strong>説明できるか。(第2段階)</li>
<li>修正指標でモデルを直した場合、その<strong>記録</strong>は残っているか。</li>
<li>適合度が良い場合でも、<strong>ほかの説明</strong>はないか、検討したか。</li>
<li>結果の書き方は、<strong>因果の主張</strong>になっていないか。</li>
</ul>
</section>
<section id="公平のために" class="level3">
<h3 class="anchored" data-anchor-id="公平のために">6.3 公平のために</h3>
<p>　もちろん、潜在変数入りのモデルは素晴らしい手法です。測定誤差を明示的に考慮した関連の推定、測定の同一性の検証、測定そのものを主題にした研究などです。これらの研究では、潜在変数入りのモデルは、すぐれた道具です。適切に使えるなら積極的に使うべきです。</p>
<p>　使うことをやめるのではなく、大切なのは、<strong>使う理由が、研究の問いに根ざしているか、結果を自分の言葉で説明できるかを、確かめること</strong>だと、私は考えます。</p>
<hr>
</section>
</section>
<section id="おわりに" class="level2">
<h2 class="anchored" data-anchor-id="おわりに">おわりに</h2>
<p>　繰り返しになりますが、潜在変数入りのモデルは、強力な道具です。強力であるからこそ、使う理由を、説明できる状態で使うのがよい、というのが、私の考えです。</p>
<p>　初心者には、尺度を作って確かめ、観測変数のモデルで分析する、という道筋を、おすすめします。その経験を重ねるうちに、「ここは、測定誤差を明示的に考慮したい」「ここは、測定そのものを検討したい」という、潜在変数入りのモデルが必要になる場面が、自然に見えてくると思います。そのときが、次の一歩です。</p>
<hr>
</section>
<section id="本文で引用した文献" class="level2">
<h2 class="anchored" data-anchor-id="本文で引用した文献">本文で引用した文献</h2>
<ul>
<li>Anderson, J. C., &amp; Gerbing, D. W. (1988). Structural equation modeling in practice: A review and recommended two-step approach. <em>Psychological Bulletin</em>, 103(3), 411–423. https://doi.org/10.1037/0033-2909.103.3.411</li>
<li>Burt, R. S. (1976). Interpretational confounding of unobserved variables in structural equation models. <em>Sociological Methods &amp; Research</em>, 5(1), 3–52. https://doi.org/10.1177/004912417600500101</li>
<li>MacCallum, R. C., Wegener, D. T., Uchino, B. N., &amp; Fabrigar, L. R. (1993). The problem of equivalent models in applications of covariance structure analysis. <em>Psychological Bulletin</em>, 114(1), 185–199. https://doi.org/10.1037/0033-2909.114.1.185</li>
<li>Rosseel, Y., &amp; Loh, W. W. (2024). A structural after measurement approach to structural equation modeling. <em>Psychological Methods</em>, 29(3), 561–588. https://doi.org/10.1037/met0000503</li>
</ul>
</section>
<section id="詳しく知りたい人にお勧めの文献" class="level2">
<h2 class="anchored" data-anchor-id="詳しく知りたい人にお勧めの文献">詳しく知りたい人にお勧めの文献</h2>
<p>　ここに挙げるのは、本文で引用した文献ではありません。SEMを使うなら、読んでおいたほうがよいと私が考える、入門書や解説書です。それぞれの本のレベルや向き不向きは、私の印象です。</p>
<section id="日本語" class="level3">
<h3 class="anchored" data-anchor-id="日本語">日本語</h3>
<ul>
<li>豊田秀樹 編著『共分散構造分析[Amos編]:構造方程式モデリング』東京図書, 2007年.</li>
<li>小杉考司 編著『M-plusとRによる構造方程式モデリング入門』北大路書房, 2014年.</li>
<li>豊田秀樹『共分散構造分析 疑問編』朝倉書店, 2003年.</li>
</ul>
</section>
<section id="英語" class="level3">
<h3 class="anchored" data-anchor-id="英語">英語</h3>
<ul>
<li>Kline, R. B. (2023). <em>Principles and Practice of Structural Equation Modeling</em> (5th ed.). The Guilford Press. <a href="https://www.guilford.com/books/Principles-and-Practice-of-Structural-Equation-Modeling/Rex-Kline/9781462551910">出版社のページ</a></li>
<li>Brown, T. A. (2015). <em>Confirmatory Factor Analysis for Applied Research</em> (2nd ed.). The Guilford Press. <a href="https://www.guilford.com/books/Confirmatory-Factor-Analysis-for-Applied-Research/Timothy-Brown/9781462515363">出版社のページ</a></li>
<li>Beaujean, A. A. (2014). <em>Latent Variable Modeling Using R: A Step-by-Step Guide</em>. Routledge.</li>
<li>Rosseel, Y. (2012). lavaan: An R package for structural equation modeling. <em>Journal of Statistical Software</em>, 48(2), 1–36. https://doi.org/10.18637/jss.v048.i02</li>
</ul>


</section>
</section>

 ]]></description>
  <category>marketing</category>
  <category>notes</category>
  <guid>https://im-research-yt.github.io/ja/articles/before-latent-variables/</guid>
  <pubDate>Mon, 26 Oct 2026 15:00:00 GMT</pubDate>
  <media:content url="https://im-research-yt.github.io/ja/articles/before-latent-variables/thumbnail.png" medium="image" type="image/png" height="76" width="144"/>
</item>
<item>
  <title>論文ガイド:定量と定性は、優劣ではなく「2つの文化」(Mahoney &amp; Goertz, 2006)</title>
  <link>https://im-research-yt.github.io/ja/articles/paper-guide-mahoney-goertz/</link>
  <description><![CDATA[ 




<p><strong>書誌情報</strong>: Mahoney, J., &amp; Goertz, G. (2006). A tale of two cultures: Contrasting quantitative and qualitative research. <em>Political Analysis</em>, 14(3), 227-249. <a href="https://doi.org/10.1093/pan/mpj017" class="uri">https://doi.org/10.1093/pan/mpj017</a></p>
<p><strong>要点</strong>: 定量研究と定性研究を、優劣ではなく「ゴールが違う2つの文化」として整理した論文です。リサーチ設計する際の指針になる必読論文として推奨します。自分の問いがどちらなのかを先に決めると、分析手法を選びやすくなることが分かります。</p>
<section id="概要" class="level2">
<h2 class="anchored" data-anchor-id="概要">概要</h2>
<p>　「平均的な効果」を知りたい統計学をベースにした定量研究と、「特定の出来事が起きた原因」を突き止めたい事例研究（定性研究）とでは、そもそも問いが違います。相対的には、定量研究は「原因が平均してどれだけ効くか」を、定性研究は「この事例で、なぜその結果が起きたか」を問うています。この論文は、双方のやり方が、それぞれのゴールに対して合理的であることを示しています。</p>
</section>
<section id="この論文を選んだ理由" class="level2">
<h2 class="anchored" data-anchor-id="この論文を選んだ理由">この論文を選んだ理由</h2>
<p>　MBAの研究やビジネスリサーチでは、こんな壁に当たることがあります。A/B テストや回帰分析で全体の傾向はつかめるのに、一番大事な顧客がなぜ離脱したのかは分からない。</p>
<p>　この論文は、その理由を考える手がかりになります。全体の「平均的な傾向」を測る頭の使い方と、個別の出来事の「原因のメカニズム」を追う頭の使い方は、別のものだからです。自分の知りたい問いに合わせて分析手法を選ぶための、「思考の地図」として読めます。MBAの院生であれば、各自の研究を始める前に読んでおくべき論文の一つだと考え、この論文を選びました。</p>
</section>
<section id="この論文の骨子" class="level2">
<h2 class="anchored" data-anchor-id="この論文の骨子">この論文の骨子</h2>
<p>　この論文は、2つの伝統の違いを、10の領域(説明への接近法、因果概念、多変量モデル、等結果性、適用範囲、事例選定、観察値の重み付け、実質的に重要な事例の扱い、適合不足、概念と測定)で比べています。このメモでは、全体像をつかみやすいように、問いの目的、因果の捉え方、事例の選び方の3つに絞ります。残りの領域は、論文で確かめてください。</p>
<table class="caption-top table">
<colgroup>
<col style="width: 14%">
<col style="width: 40%">
<col style="width: 45%">
</colgroup>
<thead>
<tr class="header">
<th>3つの軸</th>
<th>定性的研究の文化(探偵の視点)</th>
<th>定量的研究の文化(実験者の視点)</th>
</tr>
</thead>
<tbody>
<tr class="odd">
<td><strong>問いの目的</strong></td>
<td>特定の事例で、なぜその結果が起きたかを解明する</td>
<td>要因が、平均してどれくらい影響を与えるかを測る</td>
</tr>
<tr class="even">
<td><strong>因果の捉え方</strong></td>
<td>条件の「掛け算」(組み合わせ)で考える</td>
<td>典型的には、変数の「足し算」(平均的な影響度)で考える</td>
</tr>
<tr class="odd">
<td><strong>事例の選び方</strong></td>
<td>結果が起きた事例を中心に、深く調べる</td>
<td>偏りを防ぐため、結果(従属変数)では事例を選ばない</td>
</tr>
</tbody>
</table>
<p>　表を左から順に読むと、2つの文化の違いが、1本の筋でつながっていることが分かります。論文は、定性研究を探偵になぞらえて説明しています。定量研究は、統計の手法が統制実験の考え方をモデルにしている、という説明です。この記事の「実験者の視点」は、その対比のための呼び名です。</p>
<p>　探偵は、起きてしまった事件の原因を知りたいので、事件が起きた事例を深く調べます。そして、原因は1つではなく、いくつかの条件の組み合わせだと考えます。</p>
<p>　一方、実験者は、要因の平均的な効果を知りたいので、結果で事例を選んで偏らないように気をつけます。そして、各要因の影響を足し合わせて考えます。</p>
<p>　ゴールが違えば、事例の選び方も、因果の捉え方も変わる、という関係です。</p>
</section>
<section id="本論文の貢献" class="level2">
<h2 class="anchored" data-anchor-id="本論文の貢献">本論文の貢献</h2>
<p>　1つ目は、「問いのゴール」の違いを、はっきり見えるようにした点です。「なぜこの事案が起きたのか」を解き明かす問いと、「この要因は、平均してどんな効果を持つか」を測る問いは、別物です。分析手法をめぐる議論がかみ合わない原因の多くは、手法の良し悪しではなく、この目的の違いにあります。</p>
<p>　2つ目は、「条件の組み合わせ」に光を当てた点です。ある要因が単独で効くのではなく、「条件 A・B・C がそろったときだけ結果が出る」ことがあります。また、同じ結果に至るルートが、1つとは限りません(これを等結果性と呼びます)。平均的な足し算のモデルでは見落としやすい、こうした現実の構造を、論理的に整理しています。</p>
<hr>
<p>ここからは、論文を踏まえた私見です。</p>
</section>
<section id="注目すべきと感じた部分" class="level2">
<h2 class="anchored" data-anchor-id="注目すべきと感じた部分">注目すべきと感じた部分</h2>
<p>　私がこの論文で特に大事だと思うのは、定性研究と定量研究を対比しながら理解できることです。2つを並べて見ると、それぞれが何を目指し、なぜそのやり方を取るのかが、はっきりします。</p>
<p>　もう1つは、<strong>QCA</strong> という手法を理解する上での基礎になりうることです。定性研究の論理(条件の組み合わせ、複数のルート)を押さえておくと、QCA が何を引き継いだ手法なのかが見えてきます。</p>
</section>
<section id="ビジネスへの応用を考える顧客離脱のケース" class="level2">
<h2 class="anchored" data-anchor-id="ビジネスへの応用を考える顧客離脱のケース">ビジネスへの応用を考える:顧客離脱のケース</h2>
<p>　論文を離れ、応用を考えてみます。たとえば、E コマース企業で、顧客の離脱を分析する場面を考えてみましょう(数字は、理解を助けるための架空の例です)。</p>
<p>　統計や A/B テストのような定量的なアプローチは、「クーポンを発行すると、顧客全体の離脱率が、平均で3%下がる」といった、全体の傾向を導くのに向いています。ただし、これだけでは、購入額が最も大きかった優良顧客の A さんが、なぜ突然利用をやめたのかという個別の理由は見えてきません。</p>
<p>　そこで定性的・論理的なアプローチの出番になります。「配送の遅れ」「問い合わせ対応への不満」「競合の割引キャンペーン」のように、複数の条件が重なったときに離脱が起きやすい、という組み合わせの候補を浮かび上がらせることができます。ただし、これは原因を確定するものではなく、あとで確かめるべき仮説の材料です。</p>
</section>
<section id="qca-への接続" class="level2">
<h2 class="anchored" data-anchor-id="qca-への接続">QCA への接続</h2>
<p>　この論文は、定性と定量の文化の違いを整理したものでした。両者をつなぐ方法のひとつに、QCA(質的比較分析)があります。定性研究の「条件の組み合わせと、複数のルートを重視する考え方」を保ちながら、データセットを使って、体系的に分析する手法です。QCA の考え方は、<a href="../../../ja/articles/why-qca-decisions/index.html">「なぜ QCA は意思決定に向くのか」</a>の記事（Yuki Toyoda’s Blog）でも紹介しています。</p>
<hr>
<p>※以下、ポイントの整理</p>
</section>
<section id="見返すときのポイント" class="level2">
<h2 class="anchored" data-anchor-id="見返すときのポイント">見返すときのポイント</h2>
<ul>
<li>分析に入る前に、自分の問いが「この事例はなぜ起きたか」なのか、「この要因は平均してどう効くか」なのかを決める。</li>
<li>問いが決まれば、事例の選び方と因果の捉え方も、おのずと決まってくる。</li>
<li>QCA を学ぶときは、この論文の「条件の組み合わせ」と「複数のルート」に戻る。</li>
</ul>
</section>
<section id="用語解説" class="level2">
<h2 class="anchored" data-anchor-id="用語解説">用語解説</h2>
<ul>
<li><strong>帰結の原因(causes-of-effects)</strong>: 「なぜこの出来事が起きたのか」と、結果から原因をさかのぼる、探偵的な問い。</li>
<li><strong>原因の効果(effects-of-causes)</strong>: 「この要因を加えると、平均してどんな効果があるか」を測る、実験者的な問い。</li>
<li><strong>等結果性(equifinality)</strong>: 同じ結果に至るルートが、1つではなく複数あること。</li>
</ul>
</section>
<section id="参考文献" class="level2">
<h2 class="anchored" data-anchor-id="参考文献">参考文献</h2>
<p>Mahoney, J., &amp; Goertz, G. (2006). A tale of two cultures: Contrasting quantitative and qualitative research. <em>Political Analysis</em>, 14(3), 227-249. <a href="https://doi.org/10.1093/pan/mpj017" class="uri">https://doi.org/10.1093/pan/mpj017</a></p>
<p>論文ガイドの一覧に戻る: <a href="../../../ja/articles/paper-guides-intro/index.html">この棚について</a></p>


</section>

 ]]></description>
  <category>QCA</category>
  <category>notes</category>
  <guid>https://im-research-yt.github.io/ja/articles/paper-guide-mahoney-goertz/</guid>
  <pubDate>Wed, 14 Oct 2026 15:00:00 GMT</pubDate>
  <media:content url="https://im-research-yt.github.io/ja/articles/paper-guide-mahoney-goertz/thumbnail.png" medium="image" type="image/png" height="76" width="144"/>
</item>
<item>
  <title>論文ガイド:「成功の条件」をどう評価するか(Ragin, 2006)</title>
  <link>https://im-research-yt.github.io/ja/articles/paper-guide-ragin/</link>
  <description><![CDATA[ 




<p><strong>書誌情報</strong>: Ragin, C. C. (2006). Set relations in social research: Evaluating their consistency and coverage. <em>Political Analysis</em>, 14(3), 291-310. <a href="https://doi.org/10.1093/pan/mpj019" class="uri">https://doi.org/10.1093/pan/mpj019</a></p>
<p><strong>要点</strong>: 「ある条件があれば成功する」と「成功するにはその条件が必要だ」は、別の主張です。この論文は、この違いを集合の関係(十分条件と必要条件)として捉え、その関係がどれほど一貫しているかを一貫性(consistency)で、どれほどの範囲をカバーしているかをカバレッジ(coverage)で評価する方法を示しています。「成功要因」という言葉の中身を問い直したい人に、薦めたい論文です。</p>
<section id="概要" class="level2">
<h2 class="anchored" data-anchor-id="概要">概要</h2>
<p>　成功企業の多くが顧客志向だったとして、顧客志向を徹底すれば成功する、といえるでしょうか。この問いに関わる論理上の問題を、Ragin は扱っています。</p>
<p>　Charles C. Ragin は、QCA を提唱した社会学者として知られています。この論文の出発点は、理論が述べている関係と、分析で確かめている関係は、一致しているのかという問いです。</p>
<p>　たとえば、「民主主義国どうしは戦争をしない」という主張を考えます。この主張は、「民主主義国どうしの組み合わせは、戦争をしない国の組み合わせの一部である」という、集合の関係を述べています。一方、民主主義国どうしでなくても、戦争をしない国の組み合わせは数多くあるため、「民主主義国どうしであること」と「戦争をしないこと」の相関は、強くならないことがあります。しかし、そのことで、もとの主張が否定されるわけではありません。</p>
<p>　これらを踏まえ、Ragin は、<strong>集合の関係で述べられた理論が、分析では、相関についての仮説に置き換えられがちだ</strong>と指摘します。そのうえで、集合の関係を、その形のまま評価するための、簡単な記述的指標を示しています。</p>
</section>
<section id="この論文を選んだ理由" class="level2">
<h2 class="anchored" data-anchor-id="この論文を選んだ理由">この論文を選んだ理由</h2>
<p>　MBAでの研究では、ある事象の発生メカニズム、たとえば企業が成功した際の要因を分析したいことがあります。ただし成功企業の共通点を、そのまま成功の法則と見なせないことがあります。</p>
<p>　経営の事例でいえば、「成功企業は顧客志向を徹底している」「高業績の店舗は接客がよい」といった説明に出会います。しかし、そこから何が言えるかを判断するには、次の3つの問いを区別する必要があります。</p>
<ul>
<li>その条件を備えれば、成功しているのか。</li>
<li>成功するには、その条件が不可欠なのか。</li>
<li>その条件で説明できる成功事例は、全体のどれほどなのか。</li>
</ul>
<p>　この論文を読む意義は、QCA の指標を覚えることだけではありません。「成功要因」という言葉の中身を明確にし、主張に合った証拠を求める視点を身につけられることにあります。QCAを使うか否かにかかわらずMBA の院生として知っておきたい視点が書かれている論文として、薦めたい論文です。</p>
</section>
<section id="この論文の骨子" class="level2">
<h2 class="anchored" data-anchor-id="この論文の骨子">この論文の骨子</h2>
<p>　この論文は、集合の関係を評価する2つの指標(一貫性とカバレッジ)を中心に、その使い方までを論じています。このメモでは、4つの点に絞ります。</p>
<section id="相関と集合の関係は別の問いに答える" class="level3">
<h3 class="anchored" data-anchor-id="相関と集合の関係は別の問いに答える">1. 相関と集合の関係は、別の問いに答える</h3>
<p>　相関は、2つの変数がどのように連動しているかを見ます。集合の関係では、ある条件を備えた事例の集まりが、結果を達成した事例の集まりに含まれるか(あるいは、その逆か)を見ます。条件を <img src="https://latex.codecogs.com/png.latex?X">、結果を <img src="https://latex.codecogs.com/png.latex?Y"> とすると、十分条件と必要条件は、次のように区別できます。</p>
<table class="caption-top table">
<colgroup>
<col style="width: 29%">
<col style="width: 42%">
<col style="width: 28%">
</colgroup>
<thead>
<tr class="header">
<th>関係</th>
<th>問い</th>
<th>集合としての表現</th>
</tr>
</thead>
<tbody>
<tr class="odd">
<td><img src="https://latex.codecogs.com/png.latex?X"> は <img src="https://latex.codecogs.com/png.latex?Y"> の十分条件</td>
<td>X があれば、Y があるか</td>
<td><img src="https://latex.codecogs.com/png.latex?X%20%5Csubseteq%20Y"></td>
</tr>
<tr class="even">
<td><img src="https://latex.codecogs.com/png.latex?X"> は <img src="https://latex.codecogs.com/png.latex?Y"> の必要条件</td>
<td>Y があるなら、X があるか</td>
<td><img src="https://latex.codecogs.com/png.latex?Y%20%5Csubseteq%20X"></td>
</tr>
</tbody>
</table>
<p>　たとえば、「好立地と優れた接客の組み合わせを備えた店舗は、高業績である」という主張を考えます。これは、「この組み合わせを備えた店舗の集まりは、高業績の店舗の集まりに含まれる」という、十分条件の主張です。この主張が述べているのは、組み合わせを備えた店舗が、高業績になっているかどうかだけです。逆向きの「高業績の店舗は、すべてこの組み合わせを備えている」とは、述べていません。たとえば、立地は平凡でも、独自の商品構成と強いブランド力で高業績を実現している店舗があるかもしれません。そうした店舗は、この主張の外側にあるだけで、主張に反する例にはなりません。(この記事の店舗の例と数値は、説明のための架空の例です。ただし、17/20 = 0.85 という数値だけは、論文が挙げる例に合わせてあります。)</p>
<p>　主張に反する例は、「好立地で接客も優れているのに、高業績ではない店舗」です。十分条件の主張を点検するときは、このような店舗がどれだけあるかを見ます。</p>
<ul>
<li>組み合わせを備えた店舗が20店舗あり、そのうち17店舗が高業績で、3店舗が高業績ではない。この3店舗が、主張に反する例です。</li>
<li>高業績の店舗は全体で50店舗あり、そのうち17店舗がこの組み合わせを備えている。残りの33店舗は、この組み合わせを備えずに高業績を実現しています。これは、主張に反する例ではありません。</li>
</ul>
<p>　前者の割合(17/20)が、次に説明する「一貫性」の考え方につながります。後者(17/50)は、その次の「カバレッジ」につながります。</p>
</section>
<section id="一貫性は主張にどれだけ一貫して合っているかを示す" class="level3">
<h3 class="anchored" data-anchor-id="一貫性は主張にどれだけ一貫して合っているかを示す">2. 一貫性は、主張にどれだけ一貫して合っているかを示す</h3>
<p>　一貫性は、観察された事例が、想定する集合の関係にどれだけ沿っているかを示します。2値の集合(クリスプ集合)の十分条件では、ある条件を備えた事例のうち、結果も示した事例の割合です。たとえば、ある条件の組み合わせを備えた20店舗のうち17店舗が高業績なら、一貫性は 17/20 = 0.85 です。</p>
<p>　ファジィ集合(所属の程度を 0 から 1 で表す集合)では、事例 <img src="https://latex.codecogs.com/png.latex?i"> の条件への所属度を <img src="https://latex.codecogs.com/png.latex?X_i">、結果への所属度を <img src="https://latex.codecogs.com/png.latex?Y_i"> として、十分条件の一貫性を、次の式で表します。</p>
<p><img src="https://latex.codecogs.com/png.latex?%5Ctext%7B%E4%B8%80%E8%B2%AB%E6%80%A7%7D(X%20%5Cto%20Y)%20=%20%5Cfrac%7B%5Csum_i%20%5Cmin(X_i,%20Y_i)%7D%7B%5Csum_i%20X_i%7D"></p>
<p>　すべての事例で <img src="https://latex.codecogs.com/png.latex?X_i%20%5Cle%20Y_i"> なら、一貫性は 1 です。</p>
<p>　この式は、一貫している事例と一貫していない事例を、単純に数えるものではありません。条件への所属度が高い事例ほど、重みが大きくなります。また、条件への所属度が結果への所属度をわずかに上回る程度の外れは、小さな減点にとどまり、大きく上回る外れは、大きく減点されます。論文は、これが、事例を「一貫・不一貫」の2つに分けて割合を数える方法との違いだと説明しています(pp.295-297)。</p>
<p>　また、一貫性は、所属度の分布にも影響されます。条件への所属度が全体に低く、結果への所属度が全体に高いと、十分条件のように見えるだけで、実際には所属度の偏りが生んだ結果であることがあります。論文は、そのため、所属度を割り当てるキャリブレーションを慎重に行い、その手続きを公開して再現できるようにすべきだと述べています(pp.298-299)。</p>
</section>
<section id="カバレッジはその関係がカバーする範囲を示す" class="level3">
<h3 class="anchored" data-anchor-id="カバレッジはその関係がカバーする範囲を示す">3. カバレッジは、その関係がカバーする範囲を示す</h3>
<p>　十分条件のカバレッジは、その条件(または条件の組み合わせ)が、結果を示した事例のどれほどをカバーしているかを示します。先ほどの17店舗が、全体で50店舗ある高業績店舗の一部なら、カバレッジは 17/50 = 0.34 です。その組み合わせは、高業績と一貫して結びついていますが、高業績の店舗全体を広くカバーしているわけではありません。</p>
<p>　参考までにファジィ集合では、次の式です。</p>
<p><img src="https://latex.codecogs.com/png.latex?%5Ctext%7B%E3%82%AB%E3%83%90%E3%83%AC%E3%83%83%E3%82%B8%7D(X%20%5Cto%20Y)%20=%20%5Cfrac%7B%5Csum_i%20%5Cmin(X_i,%20Y_i)%7D%7B%5Csum_i%20Y_i%7D"></p>
<p>　論文は、2つの指標に順序をつけて使うことを求めています。まず一貫性を確かめ、そのあとでカバレッジを見ます。一貫性が十分でなければ、カバレッジが大きくても、十分条件として経験的に重要だとは評価できないからです。また、一貫性とカバレッジは、ときに逆向きに働きます。多くの条件を重ねて細かく絞り込んだ組み合わせは、一貫性が高くても、カバレッジが非常に小さくなりがちです。なお、カバレッジが測るのは、経験的な重要性であって、理論上の重要性ではないと、論文は注記しています。</p>
</section>
<section id="複数の経路には重複する部分と固有の部分がある" class="level3">
<h3 class="anchored" data-anchor-id="複数の経路には重複する部分と固有の部分がある">4. 複数の経路には、重複する部分と固有の部分がある</h3>
<p>　同じ結果に至る経路は、1つとは限りません。異なる条件の組み合わせが、同じ結果に結びつくことを、等結果性(equifinality)と呼びます。</p>
<p>　複数の経路が、同じ成功事例をカバーしているとき、それぞれのカバレッジを単純に足すと、重複して数えてしまいます。そこで論文は、各経路のカバレッジを、重複も含めた素カバレッジ(raw coverage)と、ほかの経路ではカバーされない部分を示す固有カバレッジ(unique coverage)に分けて評価します。これは、回帰分析で、説明される分散を各変数に分ける考え方に、いくぶん似ていると、論文は述べています。ただし、条件どうしの相関を取り除く話ではなく、1つの事例が複数の経路に当てはまることを扱う、と説明しています。</p>
</section>
</section>
<section id="本論文の貢献" class="level2">
<h2 class="anchored" data-anchor-id="本論文の貢献">本論文の貢献</h2>
<p>　1つ目は、集合の関係を評価するための、簡単な記述的指標を示したことです。論文自身は、一貫性とカバレッジが、複雑でも、まったく新しいものでもないと述べています。新しいのは、これらを集合論的な考え方と明確に結びつけたことであり、相関を前提にした通常の定量分析との違いを示したことだ、としています。</p>
<p>　2つ目は、必要条件についても、一貫しているだけでは足りないと論じたことです。結果の有無にかかわらず、ほとんどの事例に備わっている条件は、必要条件としての一貫性が高くても、結果の理解にはあまり役に立ちません。必要条件のカバレッジは、このような自明な条件を見分ける手がかりになります。この点は、Goertz の議論を土台にしています。</p>
<p>　3つ目は、複数の経路のカバレッジを、重複する部分と固有の部分に分けたことです。これにより、成功のパターンの多様性と、それぞれの経路の重みを評価できます。</p>
<hr>
<p>ここからは、論文を踏まえた私見です。</p>
</section>
<section id="注目すべきと感じた部分" class="level2">
<h2 class="anchored" data-anchor-id="注目すべきと感じた部分">注目すべきと感じた部分</h2>
<p>　特に重要だと感じるのは、先に一貫性を確かめ、そのうえでカバレッジを解釈するという順序です。十分条件としての一貫性が乏しいのに、結果を広くカバーしているという理由だけで、有力な成功パターンだと評価することはできません。</p>
<p>　もう1つは、結論で強調されている、指標そのものを研究の目的にしないという姿勢です。Ragin は、一貫性とカバレッジを判断の助けとしつつ、分析の結果が、個々の事例や、そこで働く過程・仕組みを理解するのに役立つかを重視しています。MBA で経営事例を研究するときにも、数値と事例の中身を行き来するこの姿勢は、大切だと思います。</p>
</section>
<section id="ビジネスへの応用を考える成功要因の分析を丁寧にする" class="level2">
<h2 class="anchored" data-anchor-id="ビジネスへの応用を考える成功要因の分析を丁寧にする">ビジネスへの応用を考える:成功要因の分析を丁寧にする</h2>
<p>　たとえば、高業績の店舗を比べるとき、「価格の安さが最も重要だ」という1つの説明にまとめる前に、「好立地と優れた接客」「強いブランド力と独自の商品構成」のように、異なる組み合わせを検討できます(架空の例です)。その際には、各組み合わせについて、どれだけ一貫して高業績と結びついているか、どれだけの高業績店舗をカバーしているか、どの店舗が例外なのかを確認します。</p>
<p>　ただし、一貫性が高いことは、その組み合わせを導入すれば業績が上がるという、因果効果の保証ではありません。カバレッジが大きいことも、そのまま投資の優先順位を意味しません。施策を判断するには、費用、実行可能性、因果の仕組みなども検討する必要があります。</p>
</section>
<section id="qca-への接続" class="level2">
<h2 class="anchored" data-anchor-id="qca-への接続">QCA への接続</h2>
<p>　QCA の結果を読むときには、条件の組み合わせの式だけでなく、一貫性とカバレッジ、そして対応する具体的な事例を確認します。「高い値が出たか」に加えて、「何についての一貫性なのか」「何を分母にしたカバレッジなのか」「どんな例外があるか」を説明できることが、分析の理解につながります。QCA の考え方は、<a href="../../../ja/articles/why-qca-decisions/index.html">「なぜ QCA は意思決定に向くのか」</a>の記事でも紹介しています。</p>
<hr>
<p>※以下、ポイントの整理</p>
</section>
<section id="見返すときのポイント" class="level2">
<h2 class="anchored" data-anchor-id="見返すときのポイント">見返すときのポイント</h2>
<ul>
<li>十分条件と必要条件を区別する。「条件があれば結果がある」と「結果があるなら条件がある」は、別の主張です。</li>
<li>一貫性とカバレッジを区別する。十分条件では、前者は関係の一貫性、後者は結果をカバーする範囲です。先に一貫性を確かめてから、カバレッジを見ます。</li>
<li>一貫性の値だけで判断しない。論文は、クリスプ集合の説明の中で、0.75 を下回ると、大まかな集合の関係さえ主張しにくくなると述べています。ただし、0.75 以上なら妥当という意味ではなく、事例の数と中身も確かめる必要があります。</li>
<li>必要条件では、分母が入れ替わる(下の表)。</li>
<li>指標は、記述的な評価です。因果効果を証明するものではありません。</li>
</ul>
<p>　下の表では、<img src="https://latex.codecogs.com/png.latex?M%20=%20%5Csum_i%20%5Cmin(X_i,%20Y_i)"> とします。</p>
<table class="caption-top table">
<thead>
<tr class="header">
<th>評価する関係</th>
<th>一貫性</th>
<th>カバレッジ</th>
</tr>
</thead>
<tbody>
<tr class="odd">
<td><img src="https://latex.codecogs.com/png.latex?X"> が <img src="https://latex.codecogs.com/png.latex?Y"> の十分条件</td>
<td><img src="https://latex.codecogs.com/png.latex?M%20/%20%5Csum_i%20X_i"></td>
<td><img src="https://latex.codecogs.com/png.latex?M%20/%20%5Csum_i%20Y_i"></td>
</tr>
<tr class="even">
<td><img src="https://latex.codecogs.com/png.latex?X"> が <img src="https://latex.codecogs.com/png.latex?Y"> の必要条件</td>
<td><img src="https://latex.codecogs.com/png.latex?M%20/%20%5Csum_i%20Y_i"></td>
<td><img src="https://latex.codecogs.com/png.latex?M%20/%20%5Csum_i%20X_i"></td>
</tr>
</tbody>
</table>
<p>　必要条件のカバレッジは、十分条件の「結果全体をどれだけ網羅するか」とは、読み方が違います。必要条件とされる X の集合が、結果 Y の集合に比べて大きすぎず、経験的に自明な条件になっていないかを見る指標です。</p>
</section>
<section id="用語解説" class="level2">
<h2 class="anchored" data-anchor-id="用語解説">用語解説</h2>
<ul>
<li><strong>QCA(質的比較分析)</strong>: 事例を条件の組み合わせとして捉え、集合の関係と論理的な比較から、結果との関係を調べる方法。</li>
<li><strong>条件(condition)</strong>: QCA で、結果を説明する側の変数(この記事の <img src="https://latex.codecogs.com/png.latex?X">)を指す呼び方。</li>
<li><strong>アウトカム(outcome)</strong>: QCA で、説明したい結果(この記事の <img src="https://latex.codecogs.com/png.latex?Y">)を指す呼び方。この記事では、読みやすさを優先して「結果」と書く。</li>
<li><strong>クリスプ集合(crisp set)</strong>: 所属を 0 か 1 で表す集合。</li>
<li><strong>ファジィ集合(fuzzy set)</strong>: 所属の程度を 0 から 1 の値で表す集合。値は、概念の意味に即してキャリブレーション(較正)する。</li>
<li><strong>一貫性(consistency)</strong>: 想定した集合の関係に、事例がどれだけ一貫して沿っているか。</li>
<li><strong>カバレッジ(coverage)</strong>: 一貫した関係の、経験的な重要性。十分条件では、結果をカバーする範囲。</li>
<li><strong>等結果性(equifinality)</strong>: 異なる条件の組み合わせが、同じ結果に結びつくこと。</li>
<li><strong>素カバレッジ・固有カバレッジ(raw / unique coverage)</strong>: ある経路がカバーする範囲全体と、そのうち、ほかの経路ではカバーされない部分。</li>
<li><strong>自明な必要条件(trivial necessary condition)</strong>: 結果の有無にかかわらず広く存在し、必要条件として一貫していても、結果の理解に役立たない条件。</li>
</ul>
</section>
<section id="原典で確かめてほしいこと" class="level2">
<h2 class="anchored" data-anchor-id="原典で確かめてほしいこと">原典で確かめてほしいこと</h2>
<p>　この記事は、原典の要点を私の言葉で整理したものです。原典を読むときは、次の3か所から入ると、全体をつかみやすいと思います。</p>
<ul>
<li>導入(pp.291-292): 集合の関係で述べられた理論を、相関の仮説に置き換えると、何が問題になるのか。</li>
<li>図1と図2の説明(pp.294-297): 散布図に、集合の関係はどのように現れるのか。相関で見ると「誤差」に見える事例が、なぜ主張に反しないのか。</li>
<li>結論(pp.309-310): なぜ、指標の高さよりも、事例の理解が重要だとされるのか。</li>
</ul>
</section>
<section id="参考文献" class="level2">
<h2 class="anchored" data-anchor-id="参考文献">参考文献</h2>
<p>Ragin, C. C. (2006). Set relations in social research: Evaluating their consistency and coverage. <em>Political Analysis</em>, 14(3), 291-310. <a href="https://doi.org/10.1093/pan/mpj019" class="uri">https://doi.org/10.1093/pan/mpj019</a></p>
<p>論文ガイドの一覧に戻る: <a href="../../../ja/articles/paper-guides-intro/index.html">この棚について</a></p>


</section>

 ]]></description>
  <category>QCA</category>
  <category>notes</category>
  <guid>https://im-research-yt.github.io/ja/articles/paper-guide-ragin/</guid>
  <pubDate>Wed, 14 Oct 2026 15:00:00 GMT</pubDate>
  <media:content url="https://im-research-yt.github.io/ja/articles/paper-guide-ragin/thumbnail.png" medium="image" type="image/png" height="76" width="144"/>
</item>
<item>
  <title>論文ガイドについて:このブログで文献を紹介していきます</title>
  <link>https://im-research-yt.github.io/ja/articles/paper-guides-intro/</link>
  <description><![CDATA[ 




<p>このブログでは、質的比較分析(QCA)、マーケティング・サイエンス、ブランド・マネジメント、統計学に関係する論文を、随時、1本ずつ読み解いて紹介していきます。</p>
<section id="この棚の目的" class="level2">
<h2 class="anchored" data-anchor-id="この棚の目的">この棚の目的</h2>
<p>論文を読む前に、「何が書かれているか」「どこが大事か」を、短い時間でつかめるようにすることが目的です。同時に、私自身が後から読み返すための文献メモにもなるように書いています。</p>
</section>
<section id="紹介する論文" class="level2">
<h2 class="anchored" data-anchor-id="紹介する論文">紹介する論文</h2>
<p>このブログで扱う内容に関係する論文を選びます。QCA の方法論、閾値(しきい値)の扱い、データ分析の基礎、マーケティングへの応用などです。</p>
</section>
<section id="各記事の構成" class="level2">
<h2 class="anchored" data-anchor-id="各記事の構成">各記事の構成</h2>
<p>どの記事も、同じ順序で書きます。</p>
<ul>
<li>書誌情報と要点</li>
<li>概要</li>
<li>この論文を選んだ理由</li>
<li>この論文の骨子</li>
<li>本論文の貢献</li>
<li>私が重視する点</li>
<li>見返すときのポイント、用語解説、参考文献</li>
</ul>
<p>ビジネスへの応用例と、関連記事への接続は、必要なときだけ付けます。</p>
</section>
<section id="読むときの注意" class="level2">
<h2 class="anchored" data-anchor-id="読むときの注意">読むときの注意</h2>
<ul>
<li>各記事は、論文の本文や図表を転載せず、私の言葉で書いています。</li>
<li>内容の解釈は、私の理解にもとづきます。引用や研究で使うときは、必ず原典で確かめてください。</li>
</ul>
</section>
<section id="公開済みの論文ガイド" class="level2">
<h2 class="anchored" data-anchor-id="公開済みの論文ガイド">公開済みの論文ガイド</h2>
<ul>
<li><a href="../../../ja/articles/paper-guide-mahoney-goertz/index.html">論文ガイド:定量と定性は、優劣ではなく「2つの文化」(Mahoney &amp; Goertz, 2006)</a></li>
<li><a href="../../../ja/articles/paper-guide-ragin/index.html">論文ガイド:「成功の条件」をどう評価するか(Ragin, 2006)</a></li>
</ul>


</section>

 ]]></description>
  <category>notes</category>
  <guid>https://im-research-yt.github.io/ja/articles/paper-guides-intro/</guid>
  <pubDate>Wed, 14 Oct 2026 15:00:00 GMT</pubDate>
  <media:content url="https://im-research-yt.github.io/ja/articles/paper-guides-intro/thumbnail.png" medium="image" type="image/png" height="76" width="144"/>
</item>
<item>
  <title>アンケートから尺度を作り、回帰分析・QCAに進む手順</title>
  <dc:creator>Yuki Toyoda</dc:creator>
  <link>https://im-research-yt.github.io/ja/articles/scale-to-regression/</link>
  <description><![CDATA[ 




<div class="callout callout-style-default callout-note callout-titled" title="この記事、アプリ、Rスクリプトの関係">
<div class="callout-header d-flex align-content-center">
<div class="callout-icon-container">
<i class="callout-icon"></i>
</div>
<div class="callout-title-container flex-fill">
<span class="screen-reader-only">Note</span>この記事、アプリ、Rスクリプトの関係
</div>
</div>
<div class="callout-body-container callout-body">
<p>このブログの手順記事には、同じ手順を試せるアプリ(ブラウザで動くツール)があります。3つの役割は、次のとおりです。</p>
<ul>
<li><strong>記事</strong>: 考え方と手順を説明します。計算は、Rのコードで示します。</li>
<li><strong>アプリ(<a href="https://im-research-yt.github.io/analysis-tools/scale_maker.html" target="_blank">Scale Maker</a>)</strong>: データ(CSV)を読み込むと、記事と同じ計算の結果が、画面で見られます。Rを使わなくても、手順の流れと、数値の意味を学べます。</li>
<li><strong>Rスクリプト</strong>: アプリは、画面での設定どおりの結果を再現するRスクリプトを出せます。Rで実行して、アプリの数値と一致することを確かめられます。研究では、このスクリプトを、分析の記録としても使えます。</li>
</ul>
<p>Rを使う方は、記事のコードから読んでください。アプリで学ぶ方は、まずアプリの数値を見ながら記事を読み、慣れたらRスクリプトで再現してください。</p>
</div>
</div>
<section id="この記事の問い" class="level2">
<h2 class="anchored" data-anchor-id="この記事の問い">この記事の問い</h2>
<p>マーケティングや経営学の研究では、「ブランド信頼」「知覚品質」「顧客満足」「価格感度」のように、1つの質問だけでは測りにくい概念を扱います。こうした概念は<strong>構成概念</strong>と呼ばれ、複数の質問項目で測ります。</p>
<p>たとえば「ブランド信頼」を、次の3項目で測るとします。</p>
<ul>
<li>Q1: このブランドは誠実である</li>
<li>Q2: このブランドは約束を守ると思う</li>
<li>Q3: このブランドは安心して利用できる</li>
</ul>
<p>知りたいのは、Q1、Q2、Q3それぞれの効果ではありません。3つを合わせた「ブランド信頼」が、購買意向などとどう関係するかです。さらに、そうした概念を、回帰分析、ロジスティック回帰、QCA、クラスター分析、決定木など、あとの分析で使いたいことも多くあります。</p>
<p>なお、共分散構造分析(SEM)は素晴らしい手法ですが、最初から使う必要はありません(使う場合には、SEMの特徴をしっかり理解して使わないと、かえって危険です)。大切なのは、「どの手法が高度か」ではなく、<strong>研究上の構成概念をどう測り、研究質問にいちばん合う形でどう分析するか</strong>です。</p>
<p>この記事では、MBAの研究や実証研究で使いやすい手順を、Rの例で示します。例題のデータは、乱数で作ったものです(本物の調査データではありません)。</p>
<section id="この記事の範囲" class="level3">
<h3 class="anchored" data-anchor-id="この記事の範囲">この記事の範囲</h3>
<ul>
<li><p><strong>理論的に想定した構成概念を、複数項目で測る場合</strong>を扱います。データから構成概念を探す探索的な研究を、否定するものではありません。</p></li>
<li><p>ブランド信頼のように、「<strong>背後に1つの概念があり、それが複数の項目への回答を共通に動かしている</strong>」と考えられる測定を扱います。ブランド信頼が高い人は、Q1もQ2もQ3も高く答える、という関係です。そのため、項目どうしが相関することが前提になります(このような測定を、反映的な測定と呼びます)。</p>
<p>一方、購入頻度・購入金額・利用年数を組み合わせて、「顧客の行動指標」を作るような場合は違います。頻度が高い人が、金額も高いとは限りません。項目が互いに強く相関するとは限らないので、ここで示す因子分析とαの手順は、そのまま当てはまりません。「どんな指標でも、αを高くして平均すればよい」わけではないのです。</p></li>
</ul>
</section>
</section>
<section id="全体の流れ" class="level2">
<h2 class="anchored" data-anchor-id="全体の流れ">全体の流れ</h2>
<ol type="1">
<li>理論と先行研究から、構成概念を定義する</li>
<li>構成概念ごとに、複数の質問項目を用意する</li>
<li>探索的因子分析(EFA)で、想定した項目のまとまりと、データとの整合性を探索的に検討する</li>
<li>逆転項目の向きをそろえる</li>
<li>内的一貫性(Cronbachのα)を確認する</li>
<li>項目の平均で、下位尺度を作る</li>
<li>下位尺度を、回帰分析やQCAに使う</li>
</ol>
<p>順番に説明します。</p>
<div class="callout callout-style-default callout-tip callout-titled" title="アプリで学ぶ方へ(この記事の場合)">
<div class="callout-header d-flex align-content-center">
<div class="callout-icon-container">
<i class="callout-icon"></i>
</div>
<div class="callout-title-container flex-fill">
<span class="screen-reader-only">Tip</span>アプリで学ぶ方へ(この記事の場合)
</div>
</div>
<div class="callout-body-container callout-body">
<p>アプリ(<a href="https://im-research-yt.github.io/analysis-tools/scale_maker.html" target="_blank">Scale Maker</a>)の「例題3」が、この記事と同じデータです。アプリの手順2〜7が、この記事の手順3〜6にあたります。回帰分析とQCAは、Rで行います。アプリの計算は、Rの標準の <code>promax</code> と同じです。psych のバージョンによっては、因子負荷量の小数第3位が、少しずれることがあります。</p>
</div>
</div>
</section>
<section id="手順1-理論で構成概念を定義する因子分析の前にやること" class="level2">
<h2 class="anchored" data-anchor-id="手順1-理論で構成概念を定義する因子分析の前にやること">手順1: 理論で構成概念を定義する(因子分析の前にやること)</h2>
<p>ここがいちばん大切です。因子分析の前に、「何を測りたいのか」を研究者自身が決めておく必要があります。「ブランド信頼」や「知覚品質」は、統計ソフトが自動的に見つけてくれる概念ではありません。</p>
<p>避けたいのは、次の進め方です。</p>
<blockquote class="blockquote">
<p>「とりあえず20問聞いて、因子分析をして、出てきた因子に名前をつけよう」</p>
</blockquote>
<p>特に初学者が陥りやすい誤解です。望ましい順序は、次のとおりです。</p>
<p>先行研究や理論から「ブランド信頼とは何か」を定義し、その概念を観測するために必要な質問項目を考えます。上のQ1〜Q3を用意した時点で、研究者は調査を始める前から、「この3項目は、ブランド信頼という1つの構成概念を測っているはずだ」という理論的な想定を持っています。そのうえで因子分析を行い、<strong>実際の回答データでも、その3項目が同じ方向にまとまっているか</strong>を確かめます。</p>
<p><img src="https://latex.codecogs.com/png.latex?%0A%5Ctext%7B%E7%90%86%E8%AB%96%7D%20%5Crightarrow%20%5Ctext%7B%E6%A7%8B%E6%88%90%E6%A6%82%E5%BF%B5%E3%81%AE%E5%AE%9A%E7%BE%A9%7D%20%5Crightarrow%20%5Ctext%7B%E6%B8%AC%E5%AE%9A%E9%A0%85%E7%9B%AE%E3%81%AE%E8%A8%AD%E8%A8%88%7D%20%5Crightarrow%20%5Ctext%7B%E3%83%87%E3%83%BC%E3%82%BF%E5%8F%8E%E9%9B%86%7D%20%5Crightarrow%20%5Ctext%7B%E5%9B%A0%E5%AD%90%E5%88%86%E6%9E%90%E3%81%AB%E3%82%88%E3%82%8B%E6%95%B4%E5%90%88%E6%80%A7%E3%81%AE%E6%A4%9C%E8%A8%8E%7D%0A"></p>
<p>因子分析から理論を作るのではなく、理論的に想定した測定構造と、実際のデータとの整合性を、探索的に検討します。そのためにも、事前の先行研究や理論のリサーチは、非常に重要です。</p>
<section id="因子分析は項目を自動で分類する機械ではない" class="level3">
<h3 class="anchored" data-anchor-id="因子分析は項目を自動で分類する機械ではない">因子分析は「項目を自動で分類する機械」ではない</h3>
<p>20項目を因子分析して、4つの因子が得られたとします。それだけでは、「人間の態度は4つの構成概念から成り立っている」とは言えません。因子分析が示すのは、「このサンプルでは、この項目群の相関構造を、4つほどの共通因子で整理すると、比較的うまく説明できる」という統計的な事実だけです。</p>
<p>その4因子が、ブランド信頼なのか、品質評価なのか、ブランド愛着なのかは、統計の結果からは決まりません。先行研究、質問項目の内容、概念の定義、研究目的を踏まえて、解釈する必要があります。出てきた因子に、もっともらしい名前をつける方法は避けてください。</p>
</section>
<section id="統計的なまとまりと理論上の妥当性は別のもの" class="level3">
<h3 class="anchored" data-anchor-id="統計的なまとまりと理論上の妥当性は別のもの">統計的なまとまりと、理論上の妥当性は別のもの</h3>
<p>「品質が高い」「デザインが良い」「価格が手頃」「有名ブランドである」の4項目が、統計的に1つの因子にまとまったとします。それだけで、その因子を「ブランド価値」と呼んでよいとは限りません。統計的にまとまる理由には、次のような可能性があります。</p>
<ul>
<li>本当に同じ構成概念を測っている</li>
<li>回答者が全体に高く評価する傾向がある</li>
<li>ハロー効果がある</li>
<li>質問文の表現が似ている</li>
<li>同じ尺度形式による、方法の影響(method effect)がある</li>
</ul>
<p>因子負荷量が高いことは、理論上も同じ概念であることの証明にはなりません。</p>
</section>
</section>
<section id="手順2-構成概念ごとに複数の項目を用意する" class="level2">
<h2 class="anchored" data-anchor-id="手順2-構成概念ごとに複数の項目を用意する">手順2: 構成概念ごとに、複数の項目を用意する</h2>
<p>原則として、1つの構成概念に複数の項目を用意します。このとき、同じ文章を言い換えただけの項目を並べないでください。意味が同じ項目を並べると、Cronbachのαは高くなりやすいのですが、それは、構成概念の必要な側面を十分にカバーしていることを意味しません。項目は、構成概念の異なる側面を、適切に表すものであることが望ましいです。</p>
<p>たとえば、ブランド信頼を測る項目として、次の2通りを比べてみます。</p>
<p><strong>言い換えを並べた例</strong></p>
<ul>
<li>このブランドは信頼できる</li>
<li>このブランドは頼りになる</li>
<li>このブランドは信用できる</li>
</ul>
<p>3つとも、ほぼ同じことを聞いています。回答は似通うので、αは高くなります。しかし、αを高くするために内容を重複させると、ブランド信頼の必要な側面を十分にカバーしているかが、分からなくなります。カバーしているかどうかは、別に検討する必要があります。なお、測定したい概念が狭い場合は、意味の近い項目が適切なこともあります。表現の違いによる誤差を、平均化する役割もあります。</p>
<p><strong>異なる側面を表す例</strong></p>
<ul>
<li>このブランドは約束を守ると思う(約束を果たす、という側面)</li>
<li>このブランドは誠実である(相手のことを考える、という側面)</li>
<li>このブランドは安心して利用できる(使うときの安心感、という側面)</li>
</ul>
<p>3つとも「ブランド信頼」の一部ですが、見ている側面が違います。ブランド信頼という概念を、より幅広く捉えられます。ただし、側面を変えすぎると、項目どうしの相関が下がり、1つの因子にまとまらなくなります。概念の定義に照らして、「同じ概念の別の側面」と言える範囲で選びます。</p>
<div class="callout callout-style-default callout-tip callout-titled" title="調査票のコツ: 7件法の選択肢のつけ方">
<div class="callout-header d-flex align-content-center">
<div class="callout-icon-container">
<i class="callout-icon"></i>
</div>
<div class="callout-title-container flex-fill">
<span class="screen-reader-only">Tip</span>調査票のコツ: 7件法の選択肢のつけ方
</div>
</div>
<div class="callout-body-container callout-body">
<p>選択肢のラベルの付け方には、主に2つの方法があります。</p>
<ul>
<li><strong>7つすべてに、言葉のラベルを付ける</strong>: 各選択肢の意味が明確になります。一方で、「とても」「非常に」「かなり」のような言葉は、受け取る人によって強さの感じ方が違います。</li>
<li><strong>両端にだけラベルを付け、間は数字だけにする</strong>: 言葉の強さの感じ方の違いを、避けやすくなります。</li>
</ul>
<pre><code>あてはまらない  1 － 2 － 3 － 4 － 5 － 6 － 7  あてはまる</code></pre>
<p>どちらを使うかは、研究の目的と、使う既存尺度の形式に合わせて決めます。注意したいのは、どちらの形でも、<strong>得点を等間隔の数値として扱うことは、分析者の前提(簡略化)である</strong>点です。ラベルの付け方で、等間隔性が保証されるわけではありません。この記事では、この前提のもとで、回答を数値として扱います。</p>
</div>
</div>
<p>先行研究で十分に使われている尺度があるなら、一から項目を作るよりも、既存尺度を使うほうがよいことが多くあります。妥当性が検討されていて、他の研究と比べやすいからです。ただし、「既存研究で3項目だから、そのまま使えばよい」という意味ではありません。産業、文化、回答者、調査目的が違えば、同じ因子構造が再現されないこともあります。既存尺度でも、今回のデータで構造を確かめる意味があります。</p>
</section>
<section id="例題データ" class="level2">
<h2 class="anchored" data-anchor-id="例題データ">例題データ</h2>
<p>ここからは、Rで手順を追います。9項目を、7件法で測ったとします。理論的な想定は、次の3つです。</p>
<table class="caption-top table">
<thead>
<tr class="header">
<th>構成概念</th>
<th>項目</th>
<th>質問文(例)</th>
</tr>
</thead>
<tbody>
<tr class="odd">
<td>ブランド信頼</td>
<td>Q1</td>
<td>このブランドは誠実である</td>
</tr>
<tr class="even">
<td></td>
<td>Q2</td>
<td>このブランドは約束を守ると思う</td>
</tr>
<tr class="odd">
<td></td>
<td>Q3</td>
<td>このブランドは安心して利用できる</td>
</tr>
<tr class="even">
<td>知覚品質</td>
<td>Q4</td>
<td>このブランドの商品は品質が高い</td>
</tr>
<tr class="odd">
<td></td>
<td>Q5</td>
<td>このブランドの商品は性能が優れている</td>
</tr>
<tr class="even">
<td></td>
<td>Q6(逆転項目)</td>
<td>このブランドの商品は品質にばらつきがある</td>
</tr>
<tr class="odd">
<td>価格感度</td>
<td>Q7</td>
<td>少しの価格差でも気になる</td>
</tr>
<tr class="even">
<td></td>
<td>Q8</td>
<td>値引きがあると買いたくなる</td>
</tr>
<tr class="odd">
<td></td>
<td>Q9</td>
<td>同じような商品なら、安い方を選ぶ</td>
</tr>
</tbody>
</table>
<p>質問文は、例です(データは乱数で作ったもので、質問文に対応する調査があるわけではありません)。</p>
<p>結果の変数 Y は、購買意向(7件法の1項目)とします。</p>
<div class="callout callout-style-default callout-note callout-titled">
<div class="callout-header d-flex align-content-center">
<div class="callout-icon-container">
<i class="callout-icon"></i>
</div>
<div class="callout-title-container flex-fill">
Note
</div>
</div>
<div class="callout-body-container callout-body">
<p>この記事では、7件法の回答を数値として扱い、ピアソンの相関と、線形の回帰分析を使います。実務では、よく使われる簡略化です。回答の分布が強く偏る場合などは、順序尺度として扱う方法も検討できます。たとえば、因子分析では、ポリコリック相関を使う方法(<code>fa(..., cor = "poly")</code>)があります。購買意向を1項目で測っている場合は、線形回帰のほかに、順序ロジスティック回帰も選べます。</p>
</div>
</div>
<p>次のコードで、例題のデータを作ります(乱数のシードを固定してあるので、同じデータになります)。</p>
<div class="cell">
<div class="code-copy-outer-scaffold"><div class="sourceCode cell-code" id="cb2" style="background: #f1f3f5;"><pre class="sourceCode r code-with-copy"><code class="sourceCode r"><span id="cb2-1"><span class="fu" style="color: #4758AB;
background-color: null;
font-style: inherit;">set.seed</span>(<span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">2026</span>)</span>
<span id="cb2-2">n   <span class="ot" style="color: #003B4F;
background-color: null;
font-style: inherit;">&lt;-</span> <span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">300</span></span>
<span id="cb2-3">Phi <span class="ot" style="color: #003B4F;
background-color: null;
font-style: inherit;">&lt;-</span> <span class="fu" style="color: #4758AB;
background-color: null;
font-style: inherit;">matrix</span>(<span class="fu" style="color: #4758AB;
background-color: null;
font-style: inherit;">c</span>(<span class="fl" style="color: #AD0000;
background-color: null;
font-style: inherit;">1.0</span>, <span class="fl" style="color: #AD0000;
background-color: null;
font-style: inherit;">0.5</span>, <span class="sc" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">-</span><span class="fl" style="color: #AD0000;
background-color: null;
font-style: inherit;">0.2</span>,</span>
<span id="cb2-4">                <span class="fl" style="color: #AD0000;
background-color: null;
font-style: inherit;">0.5</span>, <span class="fl" style="color: #AD0000;
background-color: null;
font-style: inherit;">1.0</span>, <span class="sc" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">-</span><span class="fl" style="color: #AD0000;
background-color: null;
font-style: inherit;">0.1</span>,</span>
<span id="cb2-5">               <span class="sc" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">-</span><span class="fl" style="color: #AD0000;
background-color: null;
font-style: inherit;">0.2</span>,<span class="sc" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">-</span><span class="fl" style="color: #AD0000;
background-color: null;
font-style: inherit;">0.1</span>,  <span class="fl" style="color: #AD0000;
background-color: null;
font-style: inherit;">1.0</span>), <span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">3</span>, <span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">3</span>, <span class="at" style="color: #657422;
background-color: null;
font-style: inherit;">byrow =</span> <span class="cn" style="color: #8f5902;
background-color: null;
font-style: inherit;">TRUE</span>)   <span class="co" style="color: #5E5E5E;
background-color: null;
font-style: inherit;"># 3つの概念の相関</span></span>
<span id="cb2-6">Fm  <span class="ot" style="color: #003B4F;
background-color: null;
font-style: inherit;">&lt;-</span> <span class="fu" style="color: #4758AB;
background-color: null;
font-style: inherit;">matrix</span>(<span class="fu" style="color: #4758AB;
background-color: null;
font-style: inherit;">rnorm</span>(n <span class="sc" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">*</span> <span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">3</span>), n) <span class="sc" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">%*%</span> <span class="fu" style="color: #4758AB;
background-color: null;
font-style: inherit;">chol</span>(Phi)</span>
<span id="cb2-7">lam <span class="ot" style="color: #003B4F;
background-color: null;
font-style: inherit;">&lt;-</span> <span class="fu" style="color: #4758AB;
background-color: null;
font-style: inherit;">c</span>(.<span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">80</span>,.<span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">75</span>,.<span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">70</span>,  .<span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">78</span>,.<span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">72</span>,.<span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">68</span>,  .<span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">75</span>,.<span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">70</span>,.<span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">65</span>)       <span class="co" style="color: #5E5E5E;
background-color: null;
font-style: inherit;"># 各項目の負荷量(理想の値)</span></span>
<span id="cb2-8">fac <span class="ot" style="color: #003B4F;
background-color: null;
font-style: inherit;">&lt;-</span> <span class="fu" style="color: #4758AB;
background-color: null;
font-style: inherit;">rep</span>(<span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">1</span><span class="sc" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">:</span><span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">3</span>, <span class="at" style="color: #657422;
background-color: null;
font-style: inherit;">each =</span> <span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">3</span>)</span>
<span id="cb2-9">to7 <span class="ot" style="color: #003B4F;
background-color: null;
font-style: inherit;">&lt;-</span> <span class="cf" style="color: #003B4F;
background-color: null;
font-weight: bold;
font-style: inherit;">function</span>(z) <span class="fu" style="color: #4758AB;
background-color: null;
font-style: inherit;">as.integer</span>(<span class="fu" style="color: #4758AB;
background-color: null;
font-style: inherit;">cut</span>(z, <span class="fu" style="color: #4758AB;
background-color: null;
font-style: inherit;">c</span>(<span class="sc" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">-</span><span class="cn" style="color: #8f5902;
background-color: null;
font-style: inherit;">Inf</span>,<span class="sc" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">-</span><span class="fl" style="color: #AD0000;
background-color: null;
font-style: inherit;">1.6</span>,<span class="sc" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">-</span><span class="fl" style="color: #AD0000;
background-color: null;
font-style: inherit;">1.0</span>,<span class="sc" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">-</span><span class="fl" style="color: #AD0000;
background-color: null;
font-style: inherit;">0.4</span>,<span class="fl" style="color: #AD0000;
background-color: null;
font-style: inherit;">0.4</span>,<span class="fl" style="color: #AD0000;
background-color: null;
font-style: inherit;">1.0</span>,<span class="fl" style="color: #AD0000;
background-color: null;
font-style: inherit;">1.6</span>,<span class="cn" style="color: #8f5902;
background-color: null;
font-style: inherit;">Inf</span>)))  <span class="co" style="color: #5E5E5E;
background-color: null;
font-style: inherit;"># 7件法にする</span></span>
<span id="cb2-10">X <span class="ot" style="color: #003B4F;
background-color: null;
font-style: inherit;">&lt;-</span> <span class="fu" style="color: #4758AB;
background-color: null;
font-style: inherit;">sapply</span>(<span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">1</span><span class="sc" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">:</span><span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">9</span>, <span class="cf" style="color: #003B4F;
background-color: null;
font-weight: bold;
font-style: inherit;">function</span>(j) <span class="fu" style="color: #4758AB;
background-color: null;
font-style: inherit;">to7</span>(lam[j] <span class="sc" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">*</span> Fm[, fac[j]] <span class="sc" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">+</span> <span class="fu" style="color: #4758AB;
background-color: null;
font-style: inherit;">sqrt</span>(<span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">1</span> <span class="sc" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">-</span> lam[j]<span class="sc" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">^</span><span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">2</span>) <span class="sc" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">*</span> <span class="fu" style="color: #4758AB;
background-color: null;
font-style: inherit;">rnorm</span>(n)))</span>
<span id="cb2-11">X[, <span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">6</span>] <span class="ot" style="color: #003B4F;
background-color: null;
font-style: inherit;">&lt;-</span> <span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">8</span>L <span class="sc" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">-</span> X[, <span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">6</span>]                                    <span class="co" style="color: #5E5E5E;
background-color: null;
font-style: inherit;"># Q6は逆転項目として記録する</span></span>
<span id="cb2-12"><span class="fu" style="color: #4758AB;
background-color: null;
font-style: inherit;">colnames</span>(X) <span class="ot" style="color: #003B4F;
background-color: null;
font-style: inherit;">&lt;-</span> <span class="fu" style="color: #4758AB;
background-color: null;
font-style: inherit;">paste0</span>(<span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"Q"</span>, <span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">1</span><span class="sc" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">:</span><span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">9</span>)</span>
<span id="cb2-13">b <span class="ot" style="color: #003B4F;
background-color: null;
font-style: inherit;">&lt;-</span> <span class="fu" style="color: #4758AB;
background-color: null;
font-style: inherit;">c</span>(.<span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">45</span>, .<span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">30</span>, <span class="sc" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">-</span>.<span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">20</span>)                       <span class="co" style="color: #5E5E5E;
background-color: null;
font-style: inherit;"># 3つの概念から購買意向への効果</span></span>
<span id="cb2-14">v <span class="ot" style="color: #003B4F;
background-color: null;
font-style: inherit;">&lt;-</span> <span class="fu" style="color: #4758AB;
background-color: null;
font-style: inherit;">drop</span>(<span class="fu" style="color: #4758AB;
background-color: null;
font-style: inherit;">t</span>(b) <span class="sc" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">%*%</span> Phi <span class="sc" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">%*%</span> b)                <span class="co" style="color: #5E5E5E;
background-color: null;
font-style: inherit;"># 信号部分の分散(概念どうしの相関を含む)</span></span>
<span id="cb2-15">Y <span class="ot" style="color: #003B4F;
background-color: null;
font-style: inherit;">&lt;-</span> <span class="fu" style="color: #4758AB;
background-color: null;
font-style: inherit;">to7</span>(<span class="fu" style="color: #4758AB;
background-color: null;
font-style: inherit;">drop</span>(Fm <span class="sc" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">%*%</span> b) <span class="sc" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">+</span> <span class="fu" style="color: #4758AB;
background-color: null;
font-style: inherit;">sqrt</span>(<span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">1</span> <span class="sc" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">-</span> v) <span class="sc" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">*</span> <span class="fu" style="color: #4758AB;
background-color: null;
font-style: inherit;">rnorm</span>(n))   <span class="co" style="color: #5E5E5E;
background-color: null;
font-style: inherit;"># 全体の分散が1になるように、誤差を足す</span></span>
<span id="cb2-16">dat <span class="ot" style="color: #003B4F;
background-color: null;
font-style: inherit;">&lt;-</span> <span class="fu" style="color: #4758AB;
background-color: null;
font-style: inherit;">data.frame</span>(X, <span class="at" style="color: #657422;
background-color: null;
font-style: inherit;">Y =</span> Y)</span>
<span id="cb2-17"><span class="fu" style="color: #4758AB;
background-color: null;
font-style: inherit;">head</span>(dat)</span></code></pre></div></div>
<div class="cell-output cell-output-stdout">
<pre><code>  Q1 Q2 Q3 Q4 Q5 Q6 Q7 Q8 Q9 Y
1  5  5  3  3  3  3  4  4  6 6
2  2  4  2  3  3  5  5  4  5 3
3  4  4  3  3  4  5  5  6  3 4
4  5  4  4  4  5  1  5  4  4 3
5  4  4  4  4  2  7  3  4  4 4
6  2  1  1  2  2  6  4  5  5 1</code></pre>
</div>
</div>
</section>
<section id="手順3-探索的因子分析で想定した項目のまとまりを検討する" class="level2">
<h2 class="anchored" data-anchor-id="手順3-探索的因子分析で想定した項目のまとまりを検討する">手順3: 探索的因子分析で、想定した項目のまとまりを検討する</h2>
<p>項目を用意したら、それらがどうまとまっているかを、探索的因子分析(EFA)で検討します。ここでEFAに期待する役割は、「何も分からない状態から、構成概念を発明すること」ではありません。<strong>理論的に想定した項目構造と、実際のデータが整合しているかを、探索的に検討すること</strong>です。EFAは、「どの項目がどの因子を測るか」を事前にモデルとして指定して検証する方法(確証的因子分析、CFA)とは違います。EFAの結果は、想定との整合性を見る材料であり、測定構造が検証されたという意味ではありません。</p>
<p>まず、因子数の目安として、相関行列の固有値と、平行分析を見ます。固有値1以上の数は、あくまで目安です。平行分析は、実データの固有値を、乱数のデータから得た固有値と比べて、因子数の手がかりにする方法です。理論上の想定とあわせて、因子数を決めます。そのうえで、主因子法・プロマックス回転で、3因子を求めます。</p>
<div class="cell">
<div class="code-copy-outer-scaffold"><div class="sourceCode cell-code" id="cb4" style="background: #f1f3f5;"><pre class="sourceCode r code-with-copy"><code class="sourceCode r"><span id="cb4-1"><span class="fu" style="color: #4758AB;
background-color: null;
font-style: inherit;">library</span>(psych)</span>
<span id="cb4-2">items <span class="ot" style="color: #003B4F;
background-color: null;
font-style: inherit;">&lt;-</span> <span class="fu" style="color: #4758AB;
background-color: null;
font-style: inherit;">paste0</span>(<span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"Q"</span>, <span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">1</span><span class="sc" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">:</span><span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">9</span>)</span>
<span id="cb4-3"><span class="fu" style="color: #4758AB;
background-color: null;
font-style: inherit;">round</span>(<span class="fu" style="color: #4758AB;
background-color: null;
font-style: inherit;">eigen</span>(<span class="fu" style="color: #4758AB;
background-color: null;
font-style: inherit;">cor</span>(dat[, items]))<span class="sc" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">$</span>values, <span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">3</span>)</span></code></pre></div></div>
<div class="cell-output cell-output-stdout">
<pre><code>[1] 2.918 1.921 1.107 0.640 0.584 0.528 0.490 0.462 0.350</code></pre>
</div>
<div class="code-copy-outer-scaffold"><div class="sourceCode cell-code" id="cb6" style="background: #f1f3f5;"><pre class="sourceCode r code-with-copy"><code class="sourceCode r"><span id="cb6-1"><span class="fu" style="color: #4758AB;
background-color: null;
font-style: inherit;">set.seed</span>(<span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">2026</span>)</span>
<span id="cb6-2"><span class="fu" style="color: #4758AB;
background-color: null;
font-style: inherit;">fa.parallel</span>(dat[, items], <span class="at" style="color: #657422;
background-color: null;
font-style: inherit;">fa =</span> <span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"fa"</span>, <span class="at" style="color: #657422;
background-color: null;
font-style: inherit;">fm =</span> <span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"pa"</span>)   <span class="co" style="color: #5E5E5E;
background-color: null;
font-style: inherit;"># 平行分析(図が出ます)</span></span></code></pre></div></div>
<div class="cell-output-display">
<div>
<figure class="figure">
<p><img src="https://im-research-yt.github.io/ja/articles/scale-to-regression/index_files/figure-html/unnamed-chunk-2-1.png" class="img-fluid figure-img" width="672"></p>
</figure>
</div>
</div>
<div class="cell-output cell-output-stdout">
<pre><code>Parallel analysis suggests that the number of factors =  3  and the number of components =  NA </code></pre>
</div>
<div class="code-copy-outer-scaffold"><div class="sourceCode cell-code" id="cb8" style="background: #f1f3f5;"><pre class="sourceCode r code-with-copy"><code class="sourceCode r"><span id="cb8-1">fa3 <span class="ot" style="color: #003B4F;
background-color: null;
font-style: inherit;">&lt;-</span> <span class="fu" style="color: #4758AB;
background-color: null;
font-style: inherit;">fa</span>(dat[, items], <span class="at" style="color: #657422;
background-color: null;
font-style: inherit;">nfactors =</span> <span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">3</span>, <span class="at" style="color: #657422;
background-color: null;
font-style: inherit;">fm =</span> <span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"pa"</span>, <span class="at" style="color: #657422;
background-color: null;
font-style: inherit;">rotate =</span> <span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"Promax"</span>,</span>
<span id="cb8-2">          <span class="at" style="color: #657422;
background-color: null;
font-style: inherit;">min.err =</span> <span class="fl" style="color: #AD0000;
background-color: null;
font-style: inherit;">1e-8</span>, <span class="at" style="color: #657422;
background-color: null;
font-style: inherit;">max.iter =</span> <span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">1000</span>)   <span class="co" style="color: #5E5E5E;
background-color: null;
font-style: inherit;"># 反復計算の収束条件を、厳しくしています</span></span></code></pre></div></div>
<div class="cell-output cell-output-stderr">
<pre><code>Loading required namespace: GPArotation</code></pre>
</div>
<div class="code-copy-outer-scaffold"><div class="sourceCode cell-code" id="cb10" style="background: #f1f3f5;"><pre class="sourceCode r code-with-copy"><code class="sourceCode r"><span id="cb10-1"><span class="fu" style="color: #4758AB;
background-color: null;
font-style: inherit;">print</span>(fa3<span class="sc" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">$</span>loadings, <span class="at" style="color: #657422;
background-color: null;
font-style: inherit;">cutoff =</span> <span class="fl" style="color: #AD0000;
background-color: null;
font-style: inherit;">0.3</span>)</span></code></pre></div></div>
<div class="cell-output cell-output-stdout">
<pre><code>
Loadings:
   PA1    PA3    PA2   
Q1         0.731       
Q2         0.724       
Q3         0.582       
Q4  0.769              
Q5  0.775              
Q6 -0.632              
Q7                0.695
Q8                0.674
Q9                0.639

                PA1   PA3   PA2
SS loadings    1.62 1.430 1.350
Proportion Var 0.18 0.159 0.150
Cumulative Var 0.18 0.339 0.489</code></pre>
</div>
<div class="code-copy-outer-scaffold"><div class="sourceCode cell-code" id="cb12" style="background: #f1f3f5;"><pre class="sourceCode r code-with-copy"><code class="sourceCode r"><span id="cb12-1"><span class="fu" style="color: #4758AB;
background-color: null;
font-style: inherit;">round</span>(fa3<span class="sc" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">$</span>Phi, <span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">2</span>)</span></code></pre></div></div>
<div class="cell-output cell-output-stdout">
<pre><code>     PA1   PA3   PA2
PA1 1.00  0.54  0.01
PA3 0.54  1.00 -0.20
PA2 0.01 -0.20  1.00</code></pre>
</div>
</div>
<div class="callout callout-style-default callout-note callout-titled">
<div class="callout-header d-flex align-content-center">
<div class="callout-icon-container">
<i class="callout-icon"></i>
</div>
<div class="callout-title-container flex-fill">
Note
</div>
</div>
<div class="callout-body-container callout-body">
<p>この記事では、結果を再現しやすいように、<code>rotate = "Promax"</code>(先頭が大文字)を使っています。小文字の <code>"promax"</code> でも誤りではありませんが、計算の途中の正規化が異なるため、値が少し変わります。</p>
<p><code>min.err = 1e-8, max.iter = 1000</code> は、主因子法の反復計算を、厳しい条件で収束させる指定です。初期設定の条件は緩いため、因子の抽出の結果が、小数第3位あたりで少しずれることがあります。この記事では、結果をそろえるために、厳しい条件を使っています。</p>
<p>なお、psych のバージョンによって、プロマックス回転の計算が少し異なり、因子負荷量の小数第3位が変わることがあります(psych 2.4.1 と 2.6.5 で、最大0.003の差を確認しました)。因子の抽出(主因子法)の結果は、同じです。解釈は変わりません。</p>
</div>
</div>
<p>見る場所は、次のとおりです。</p>
<ul>
<li><strong>因子数</strong>: 固有値(1以上の数)と、平行分析の図(実データの固有値が、乱数データの固有値を上回る数)を見て、理論上の想定の3因子と整合しているかを確かめます。</li>
<li><strong>項目のまとまり</strong>: Q1〜Q3、Q4〜Q6、Q7〜Q9が、想定どおり同じ因子に載っているか。(<code>PA1</code> などの記号は、並び順を表すだけです。因子の中身は、載っている項目で読みます。)</li>
<li><strong>Q6の負荷量が負になっている点</strong>: 同じ因子の中で、Q4・Q5と符号が逆です。Q6が逆転項目である可能性を示す手がかりです。ただし、符号は目安です(因子全体の符号は、向きを反転できます)。逆転項目かどうかは、質問文の意味で決めます。</li>
<li><strong>複数の因子に大きく載る項目(cross-loading)がないか</strong>。</li>
</ul>
<p>たとえば、Q3だけが知覚品質の因子に強く載った場合は、削除する前に、次のことを検討します。</p>
<ul>
<li>Q3の表現は適切だったか</li>
<li>ブランド信頼と知覚品質が、概念的に近すぎないか</li>
<li>翻訳や言い回しに、問題がないか</li>
<li>回答者が、想定とは違う意味に受け取っていないか</li>
</ul>
<p>EFAの結果は、「採用・削除の判定」ではなく、<strong>理論的に想定した測定モデルと、実際の回答行動とのズレを理解する材料</strong>として使います。因子負荷量が少し低いという理由だけで、内容上重要な項目を機械的に削除すると、かえって内容的妥当性が損なわれることがあります。</p>
</section>
<section id="手順4-逆転項目の向きをそろえる" class="level2">
<h2 class="anchored" data-anchor-id="手順4-逆転項目の向きをそろえる">手順4: 逆転項目の向きをそろえる</h2>
<p>Q6は逆転項目です。実務では、分析の前に、質問文の意味から逆転項目を決めて、向きをそろえておくほうが分かりやすいでしょう。この記事では、負の負荷量が手がかりになることを見せるために、先にEFAを行いました。尺度の最小値と最大値(ここでは1と7)を使い、(最小値 + 最大値) − 元の値、つまり <code>8 - Q6</code> で向きをそろえます。1〜7なら <code>8 - Q6</code>、1〜5なら <code>6 - Q6</code> です。最小値が1でない尺度(たとえば0〜10)でも、同じ式で逆転できます。最小値と最大値は、データの最小値・最大値ではなく、調査票の尺度の端(7件法なら1と7)を使ってください。逆転項目かどうかは、質問文の意味(理論)で決めます。</p>
<div class="cell">
<div class="code-copy-outer-scaffold"><div class="sourceCode cell-code" id="cb14" style="background: #f1f3f5;"><pre class="sourceCode r code-with-copy"><code class="sourceCode r"><span id="cb14-1">dat<span class="sc" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">$</span>Q6r <span class="ot" style="color: #003B4F;
background-color: null;
font-style: inherit;">&lt;-</span> <span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">8</span> <span class="sc" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">-</span> dat<span class="sc" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">$</span>Q6</span></code></pre></div></div>
</div>
</section>
<section id="手順5-内的一貫性cronbachのαを確認する" class="level2">
<h2 class="anchored" data-anchor-id="手順5-内的一貫性cronbachのαを確認する">手順5: 内的一貫性(Cronbachのα)を確認する</h2>
<p>因子構造を検討したら、項目群ごとに内的一貫性を確認します。代表的な指標がCronbachのαです。たとえば <img src="https://latex.codecogs.com/png.latex?%5Calpha%20=%20.84"> なら、その項目群には、比較的高い内的一貫性があると言えます。</p>
<div class="cell">
<div class="code-copy-outer-scaffold"><div class="sourceCode cell-code" id="cb15" style="background: #f1f3f5;"><pre class="sourceCode r code-with-copy"><code class="sourceCode r"><span id="cb15-1">a_trust   <span class="ot" style="color: #003B4F;
background-color: null;
font-style: inherit;">&lt;-</span> <span class="fu" style="color: #4758AB;
background-color: null;
font-style: inherit;">alpha</span>(dat[, <span class="fu" style="color: #4758AB;
background-color: null;
font-style: inherit;">c</span>(<span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"Q1"</span>, <span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"Q2"</span>, <span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"Q3"</span>)],  <span class="at" style="color: #657422;
background-color: null;
font-style: inherit;">check.keys =</span> <span class="cn" style="color: #8f5902;
background-color: null;
font-style: inherit;">FALSE</span>)</span>
<span id="cb15-2">a_quality <span class="ot" style="color: #003B4F;
background-color: null;
font-style: inherit;">&lt;-</span> <span class="fu" style="color: #4758AB;
background-color: null;
font-style: inherit;">alpha</span>(dat[, <span class="fu" style="color: #4758AB;
background-color: null;
font-style: inherit;">c</span>(<span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"Q4"</span>, <span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"Q5"</span>, <span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"Q6r"</span>)], <span class="at" style="color: #657422;
background-color: null;
font-style: inherit;">check.keys =</span> <span class="cn" style="color: #8f5902;
background-color: null;
font-style: inherit;">FALSE</span>)</span>
<span id="cb15-3">a_price   <span class="ot" style="color: #003B4F;
background-color: null;
font-style: inherit;">&lt;-</span> <span class="fu" style="color: #4758AB;
background-color: null;
font-style: inherit;">alpha</span>(dat[, <span class="fu" style="color: #4758AB;
background-color: null;
font-style: inherit;">c</span>(<span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"Q7"</span>, <span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"Q8"</span>, <span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"Q9"</span>)],  <span class="at" style="color: #657422;
background-color: null;
font-style: inherit;">check.keys =</span> <span class="cn" style="color: #8f5902;
background-color: null;
font-style: inherit;">FALSE</span>)</span>
<span id="cb15-4"><span class="fu" style="color: #4758AB;
background-color: null;
font-style: inherit;">round</span>(<span class="fu" style="color: #4758AB;
background-color: null;
font-style: inherit;">c</span>(<span class="at" style="color: #657422;
background-color: null;
font-style: inherit;">trust   =</span> a_trust<span class="sc" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">$</span>total<span class="sc" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">$</span>raw_alpha,</span>
<span id="cb15-5">        <span class="at" style="color: #657422;
background-color: null;
font-style: inherit;">quality =</span> a_quality<span class="sc" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">$</span>total<span class="sc" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">$</span>raw_alpha,</span>
<span id="cb15-6">        <span class="at" style="color: #657422;
background-color: null;
font-style: inherit;">price   =</span> a_price<span class="sc" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">$</span>total<span class="sc" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">$</span>raw_alpha), <span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">3</span>)</span></code></pre></div></div>
<div class="cell-output cell-output-stdout">
<pre><code>  trust quality   price 
  0.731   0.774   0.705 </code></pre>
</div>
</div>
<p>注意点が2つあります。</p>
<ul>
<li><strong>αが高くても、1因子構造が証明されたわけではありません。</strong> αは内的一貫性の指標であって、因子構造を検証する指標ではありません。また、<strong>αだけで、信頼性全般や妥当性を判断することはできません。</strong> 順序は、「因子分析で構造を検討する → その項目群の内的一貫性を確認する」です。</li>
<li>αは、項目数が多いほど高くなりやすい指標です。必要に応じて、McDonaldのωを併用してもかまいません。</li>
</ul>
</section>
<section id="手順6-下位尺度を作る" class="level2">
<h2 class="anchored" data-anchor-id="手順6-下位尺度を作る">手順6: 下位尺度を作る</h2>
<p>構造を検討し、内的一貫性を確認したら、構成概念ごとに下位尺度を作ります。通常は、項目の単純平均を基本とします。</p>
<p><img src="https://latex.codecogs.com/png.latex?%0A%5Ctext%7BTrust%7D%20=%20%5Cfrac%7BQ_1%20+%20Q_2%20+%20Q_3%7D%7B3%7D,%20%5Cqquad%0A%5Ctext%7BQuality%7D%20=%20%5Cfrac%7BQ_4%20+%20Q_5%20+%20Q_%7B6r%7D%7D%7B3%7D%0A"></p>
<div class="cell">
<div class="code-copy-outer-scaffold"><div class="sourceCode cell-code" id="cb17" style="background: #f1f3f5;"><pre class="sourceCode r code-with-copy"><code class="sourceCode r"><span id="cb17-1">dat<span class="sc" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">$</span>Trust   <span class="ot" style="color: #003B4F;
background-color: null;
font-style: inherit;">&lt;-</span> <span class="fu" style="color: #4758AB;
background-color: null;
font-style: inherit;">rowMeans</span>(dat[, <span class="fu" style="color: #4758AB;
background-color: null;
font-style: inherit;">c</span>(<span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"Q1"</span>, <span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"Q2"</span>, <span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"Q3"</span>)])</span>
<span id="cb17-2">dat<span class="sc" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">$</span>Quality <span class="ot" style="color: #003B4F;
background-color: null;
font-style: inherit;">&lt;-</span> <span class="fu" style="color: #4758AB;
background-color: null;
font-style: inherit;">rowMeans</span>(dat[, <span class="fu" style="color: #4758AB;
background-color: null;
font-style: inherit;">c</span>(<span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"Q4"</span>, <span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"Q5"</span>, <span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"Q6r"</span>)])</span>
<span id="cb17-3">dat<span class="sc" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">$</span>Price   <span class="ot" style="color: #003B4F;
background-color: null;
font-style: inherit;">&lt;-</span> <span class="fu" style="color: #4758AB;
background-color: null;
font-style: inherit;">rowMeans</span>(dat[, <span class="fu" style="color: #4758AB;
background-color: null;
font-style: inherit;">c</span>(<span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"Q7"</span>, <span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"Q8"</span>, <span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"Q9"</span>)])</span>
<span id="cb17-4"><span class="fu" style="color: #4758AB;
background-color: null;
font-style: inherit;">round</span>(<span class="fu" style="color: #4758AB;
background-color: null;
font-style: inherit;">cor</span>(dat[, <span class="fu" style="color: #4758AB;
background-color: null;
font-style: inherit;">c</span>(<span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"Trust"</span>, <span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"Quality"</span>, <span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"Price"</span>)]), <span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">2</span>)</span></code></pre></div></div>
<div class="cell-output cell-output-stdout">
<pre><code>        Trust Quality Price
Trust    1.00    0.43 -0.14
Quality  0.43    1.00  0.01
Price   -0.14    0.01  1.00</code></pre>
</div>
</div>
<p>単純平均で作った尺度にも、測定誤差は残ります。その尺度を使う通常の回帰分析は、測定誤差を明示的にモデル化していません。そのため、得られた係数は、潜在的な構成概念どうしの関係そのものとは、同じとは限りません。信頼性が低いと、この影響は大きくなりえます。特に重回帰では、測定誤差の影響は説明変数どうしの相関にも左右されるため、係数への影響を、信頼性だけから判断することはできません。</p>
<p>単純平均には、次の利点があります。</p>
<ul>
<li>算出方法が明確で、再現性が高い</li>
<li>サンプルへの依存が、比較的小さい</li>
<li>元の質問尺度の単位が保たれ、解釈しやすい</li>
<li>回帰分析にも、QCAにも使える</li>
</ul>
<section id="因子得点は使わないのか" class="level3">
<h3 class="anchored" data-anchor-id="因子得点は使わないのか">因子得点は使わないのか</h3>
<p>因子得点を使うこと自体が、誤りというわけではありません。ただし、因子得点には、重みがサンプルに依存する、推定方法によって値が変わる、得点そのものの意味が分かりにくい、別のサンプルでは同じ尺度にならない可能性がある、という問題があります。特別な理由がなければ、MBAレベルの研究では、信頼性を確かめた単純平均の尺度を基本にする方針は、十分に合理的です。</p>
</section>
<section id="確証的因子分析cfaはどこで使うのか" class="level3">
<h3 class="anchored" data-anchor-id="確証的因子分析cfaはどこで使うのか">確証的因子分析(CFA)はどこで使うのか</h3>
<p>MBAの探索的な研究では、項目の内容、EFAの結果、内的一貫性を踏まえて、単純平均の尺度を作る進め方は、実用的です。ただし、それだけで、測定の妥当性が十分に確立したとは言えません。</p>
<p>どこまで検証するかは、既存尺度の検証の実績、今回の変更の程度、研究で求める主張の強さで決まります。測定構造を明示的に検証したいときや、尺度を新しく作った、あるいは大きく変更したときは、CFAなどによる追加の検証を検討します。CFAでは、どの項目がどの因子を測るかを、事前にモデルとして指定します。既存の測定モデルがはっきりしているなら、EFAを経ずに、CFAから始める選択もあります。したがって、「EFAのあとに、必ずCFAを行う」という固定した順序ではありません。</p>
<p>標本数に余裕があるなら、探索用と検証用に標本を分け、探索用でEFA、検証用でCFAを行うのが、より望ましい方法です。ただし、CFAを行ったからといって、そのあと必ずCFAの因子得点を使わなければならないわけではありません。</p>
</section>
</section>
<section id="手順7-下位尺度を回帰分析とqcaに使う" class="level2">
<h2 class="anchored" data-anchor-id="手順7-下位尺度を回帰分析とqcaに使う">手順7: 下位尺度を、回帰分析とQCAに使う</h2>
<section id="回帰分析" class="level3">
<h3 class="anchored" data-anchor-id="回帰分析">回帰分析</h3>
<p>下位尺度ができたら、通常の回帰分析ができます。</p>
<p><img src="https://latex.codecogs.com/png.latex?%0AY%20=%20%5Cbeta_0%20+%20%5Cbeta_1%20%5Ctext%7BTrust%7D%20+%20%5Cbeta_2%20%5Ctext%7BQuality%7D%20+%20%5Cbeta_3%20%5Ctext%7BPrice%7D%20+%20%5Cvarepsilon%0A"></p>
<div class="cell">
<div class="code-copy-outer-scaffold"><div class="sourceCode cell-code" id="cb19" style="background: #f1f3f5;"><pre class="sourceCode r code-with-copy"><code class="sourceCode r"><span id="cb19-1"><span class="fu" style="color: #4758AB;
background-color: null;
font-style: inherit;">summary</span>(<span class="fu" style="color: #4758AB;
background-color: null;
font-style: inherit;">lm</span>(Y <span class="sc" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">~</span> Trust <span class="sc" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">+</span> Quality <span class="sc" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">+</span> Price, <span class="at" style="color: #657422;
background-color: null;
font-style: inherit;">data =</span> dat))</span></code></pre></div></div>
<div class="cell-output cell-output-stdout">
<pre><code>
Call:
lm(formula = Y ~ Trust + Quality + Price, data = dat)

Residuals:
     Min       1Q   Median       3Q      Max 
-3.11817 -0.87767  0.06223  0.76259  2.85718 

Coefficients:
            Estimate Std. Error t value Pr(&gt;|t|)    
(Intercept)  1.42862    0.37338   3.826 0.000159 ***
Trust        0.57160    0.06622   8.632 3.78e-16 ***
Quality      0.36507    0.05991   6.093 3.44e-09 ***
Price       -0.27133    0.05812  -4.668 4.61e-06 ***
---
Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1

Residual standard error: 1.157 on 296 degrees of freedom
Multiple R-squared:  0.4399,    Adjusted R-squared:  0.4342 
F-statistic: 77.49 on 3 and 296 DF,  p-value: &lt; 2.2e-16</code></pre>
</div>
</div>
</section>
<section id="qca" class="level3">
<h3 class="anchored" data-anchor-id="qca">QCA</h3>
<p>QCAでは、ケースごとに条件の値が必要です。この例なら、ブランド信頼、知覚品質、価格感度の下位尺度を、条件として使えます。ファジィセットQCA(fsQCA)では、それぞれを、集合のメンバーシップ(0から1の値)へ<strong>キャリブレーション</strong>します。結果の購買意向 Y も、「購買意向が高い」という集合へ、キャリブレーションします。</p>
<p>そのうえで、たとえば「ブランド信頼が高く、知覚品質が高く、価格感度が低い」という組み合わせについて、次のような十分条件の関係を検討します(<code>~</code> は否定、<code>*</code> は論理積です)。</p>
<p><img src="https://latex.codecogs.com/png.latex?%0A%5Cmathrm%7BTRUST%7D%20*%20%5Cmathrm%7BQUALITY%7D%20*%20%7B%5Csim%7D%5Cmathrm%7BPRICE%7D%20%5Crightarrow%20%5Cmathrm%7BPURCHASE%7D%0A"></p>
<p>注意点は、次のとおりです。</p>
<ul>
<li>この式は、分析の結果ではありません。検討する組み合わせの<strong>例</strong>です。</li>
<li>キャリブレーションの基準(完全に含まれる、完全に含まれない、どちらでもない点)は、尺度の平均を、機械的に0から1へ変換するのではなく、集合の意味に基づいて決めます。</li>
<li>例題の Y は、購買「意向」を測ったものです。実際の購買「行動」とは、区別して書いてください。</li>
</ul>
<p>キャリブレーションと分析の実際は、<a href="../../../ja/articles/thsqca-beginners-1/index.html">ThSQCA 入門のシリーズ</a>を見てください。</p>
</section>
<section id="回帰分析とqcaを併用する意味" class="level3">
<h3 class="anchored" data-anchor-id="回帰分析とqcaを併用する意味">回帰分析とQCAを併用する意味</h3>
<p>同じ下位尺度で回帰分析とQCAを行うと、同じ現象を、別の観点から見られます。回帰分析では、他の変数を一定としたときの<strong>平均的な関連</strong>を見ます。QCAでは、<strong>どの条件の組み合わせが結果につながるか</strong>を見ます。両者は、競合する方法というより、異なる観点を持つ、補完的な方法として位置づけられます。共通の下位尺度を使えば、測定を、2つの分析で統一できます。</p>
</section>
</section>
<section id="報告に書くこと" class="level2">
<h2 class="anchored" data-anchor-id="報告に書くこと">報告に書くこと</h2>
<p>論文や報告書には、少なくとも次を書いておくと、読者が手順をたどれます。</p>
<ul>
<li>構成概念の定義と、項目の出典(既存尺度か、自作か)</li>
<li>標本数と、欠損値の扱い(完全なケースだけを使った、など)</li>
<li>因子分析の推定法(主因子法など)、回転(プロマックス)、因子数の根拠</li>
<li>逆転項目</li>
<li>下位尺度ごとの項目数と、α</li>
<li>下位尺度の作り方(項目の単純平均)</li>
</ul>
</section>
<section id="この手順を一言でまとめると" class="level2">
<h2 class="anchored" data-anchor-id="この手順を一言でまとめると">この手順を、一言でまとめると</h2>
<p>実務的な標準手順は、次の11段階です。この記事の手順1〜7は、このうち、CFA(8)とSEM(11)を除く部分を、尺度づくりの順に並べ直したものです(逆転項目の確認を加えています)。</p>
<ol type="1">
<li>先行研究から、構成概念を定義する</li>
<li>各構成概念について、複数の質問項目を準備する</li>
<li>「どの項目が、どの構成概念を測るか」という理論的想定を、事前に持つ</li>
<li>EFAで、その想定と実際のデータ構造との整合性を、探索的に検討する</li>
<li>理論と統計の両面から、項目を検討する</li>
<li>内的一貫性として、Cronbachのα(必要ならMcDonaldのω)を確認する</li>
<li>単純平均で、下位尺度を作る</li>
<li>必要に応じて、CFAで測定構造を追加検証する</li>
<li>下位尺度を、回帰分析などに使う</li>
<li>QCAでは、下位尺度をキャリブレーションして使う</li>
<li>潜在変数間の構造そのものが研究目的なら、SEMを検討する</li>
</ol>
<p>最も大切なのは、「データを取ってから、因子分析で意味を探す」のではなく、「理論的に意味を定義し、その意味がデータ上でも整合しているかを、因子分析で探索的に検討する」ことです。</p>
<p><img src="https://latex.codecogs.com/png.latex?%0A%5Ctext%7B%E7%90%86%E8%AB%96%7D%20%5Crightarrow%20%5Ctext%7B%E6%A7%8B%E6%88%90%E6%A6%82%E5%BF%B5%7D%20%5Crightarrow%20%5Ctext%7B%E6%B8%AC%E5%AE%9A%E9%A0%85%E7%9B%AE%7D%20%5Crightarrow%20%5Ctext%7B%E6%B8%AC%E5%AE%9A%E6%A7%8B%E9%80%A0%E3%81%AE%E6%A4%9C%E8%A8%8E%7D%20%5Crightarrow%20%5Ctext%7B%E5%B0%BA%E5%BA%A6%E5%8C%96%7D%20%5Crightarrow%20%5Ctext%7B%E5%9B%9E%E5%B8%B0%E3%83%BBQCA%E3%81%AA%E3%81%A9%E3%81%AB%E3%82%88%E3%82%8B%E4%BB%AE%E8%AA%AC%E6%A4%9C%E8%A8%BC%7D%0A"></p>
<p>構成概念を使うからSEMを使う、という機械的な判断をする必要はありません。重要なのは、<strong>研究質問、理論、測定方法、尺度の作り方、分析方法が一貫していること</strong>です。</p>
<p>なお、SEMを使わない理由や、SEMとの比べ方は、この記事では扱いません。別の記事(Notes)で書く予定です。</p>
</section>
<section id="次に読むもの" class="level2">
<h2 class="anchored" data-anchor-id="次に読むもの">次に読むもの</h2>
<p>この記事で作った下位尺度は、QCAにも使えます。回帰分析が、他の変数を一定としたときの平均的な関連を見るのに対し、QCAは、<strong>どの条件の組み合わせが結果につながるか</strong>を探します。ThSQCA は、結果の目標水準(閾値)を動かしたときに、その組み合わせがどう変わるかを調べるRパッケージです。</p>
<ul>
<li><a href="../../../ja/articles/why-qca-decisions/index.html">なぜ QCA は意思決定に向くのか: 「単独の効果」ではなく「レシピ」を探す分析</a></li>
<li><a href="../../../ja/articles/introducing-thsqca/index.html">ThSQCA の紹介: Rで閾値スイープQCAを行う</a></li>
<li><a href="../../../ja/articles/thsqca-beginners-1/index.html">ThSQCA 入門 第1回: はじめての閾値スイープ</a></li>
<li><a href="../../../ja/index.html">日本語版トップページ</a>: すべての記事を、読む順に並べています</li>
</ul>
</section>
<section id="このページのrの環境" class="level2">
<h2 class="anchored" data-anchor-id="このページのrの環境">このページのRの環境</h2>
<p>結果は、次の環境で確かめたものです。固定したシードで同じデータが作られますが、Rやパッケージのバージョンが違うと、結果が少し変わることがあります。</p>
<div class="cell">
<div class="code-copy-outer-scaffold"><div class="sourceCode cell-code" id="cb21" style="background: #f1f3f5;"><pre class="sourceCode r code-with-copy"><code class="sourceCode r"><span id="cb21-1">R.version.string</span></code></pre></div></div>
<div class="cell-output cell-output-stdout">
<pre><code>[1] "R version 4.6.1 (2026-06-24 ucrt)"</code></pre>
</div>
<div class="code-copy-outer-scaffold"><div class="sourceCode cell-code" id="cb23" style="background: #f1f3f5;"><pre class="sourceCode r code-with-copy"><code class="sourceCode r"><span id="cb23-1"><span class="fu" style="color: #4758AB;
background-color: null;
font-style: inherit;">packageVersion</span>(<span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"psych"</span>)</span></code></pre></div></div>
<div class="cell-output cell-output-stdout">
<pre><code>[1] '2.6.5'</code></pre>
</div>
</div>


</section>

 ]]></description>
  <category>marketing</category>
  <category>tutorial</category>
  <guid>https://im-research-yt.github.io/ja/articles/scale-to-regression/</guid>
  <pubDate>Wed, 07 Oct 2026 15:00:00 GMT</pubDate>
  <media:content url="https://im-research-yt.github.io/ja/articles/scale-to-regression/thumbnail.png" medium="image" type="image/png" height="76" width="144"/>
</item>
<item>
  <title>マーケティング・経営学で QCA を使った論文: 最初に読む 10 本(応用編)</title>
  <dc:creator>Yuki Toyoda</dc:creator>
  <link>https://im-research-yt.github.io/ja/articles/reading-list-applied/</link>
  <description><![CDATA[ 




<p>基礎編では、QCA を学ぶときの標準的な文献を紹介しました。次に出てくる疑問は、「実際にどんな研究で使われているのか」でしょう。ここでは、マーケティングと経営学の分野で、自分の研究の手本にするために読む価値のある論文と、経営・組織研究での理論的な背景を、目的別に紹介します。</p>
<section id="マーケティングサービスでの応用" class="level2">
<h2 class="anchored" data-anchor-id="マーケティングサービスでの応用">1. マーケティング・サービスでの応用</h2>
<ul>
<li>Ordanini, A., Parasuraman, A., &amp; Rubera, G. (2014). When the recipe is more important than the ingredients: A qualitative comparative analysis (QCA) of service innovation configurations. <em>Journal of Service Research</em>, 17(2), 134-149. <a href="https://doi.org/10.1177/1094670513513337">https://doi.org/10.1177/1094670513513337</a> 高級ホテルのサービスを対象に、新しいサービスの採用につながる属性の組み合わせを、QCA で検討しています。個々の属性だけでなく、それらがどう組み合わされるかに注目する応用例です。</li>
<li>Frambach, R. T., Fiss, P. C., &amp; Ingenbleek, P. T. M. (2016). How important is customer orientation for firm performance? A fuzzy set analysis of orientations, strategies, and environments. <em>Journal of Business Research</em>, 69(4), 1428-1436. <a href="https://doi.org/10.1016/j.jbusres.2015.10.120">https://doi.org/10.1016/j.jbusres.2015.10.120</a> 顧客志向を、他の戦略的志向、戦略タイプ、市場環境と組み合わせ、高い企業業績につながる構成を fsQCA で検討しています。顧客志向の役割を、他の条件との組み合わせから考える応用例です。</li>
</ul>
</section>
<section id="経営組織研究での理論的な背景" class="level2">
<h2 class="anchored" data-anchor-id="経営組織研究での理論的な背景">2. 経営・組織研究での理論的な背景</h2>
<ul>
<li>Fiss, P. C. (2007). A set-theoretic approach to organizational configurations. <em>Academy of Management Review</em>, 32(4), 1180-1198. <a href="https://doi.org/10.5465/amr.2007.26586092">https://doi.org/10.5465/amr.2007.26586092</a> 組織を複数の要素の組み合わせとして捉え、その組み合わせと成果の関係を、集合論的に分析する意義を論じています。同じ成果に至る複数の組み合わせを考えるための、基礎となる論文です。</li>
<li>Fiss, P. C. (2011). Building better causal theories: A fuzzy set approach to typologies in organization research. <em>Academy of Management Journal</em>, 54(2), 393-420. <a href="https://doi.org/10.5465/amj.2011.60263120">https://doi.org/10.5465/amj.2011.60263120</a> 組織の類型をファジィ集合で分析し、成果につながる条件の組み合わせを検討しています。成果の有無で、因果が非対称になりうることを理解するうえで重要な論文です。</li>
<li>Woodside, A. G. (2013). Moving beyond multiple regression analysis to algorithms: Calling for adoption of a paradigm shift from symmetric to asymmetric thinking in data analysis and crafting theory. <em>Journal of Business Research</em>, 66(4), 463-472. <a href="https://doi.org/10.1016/j.jbusres.2012.12.021">https://doi.org/10.1016/j.jbusres.2012.12.021</a> 重回帰分析による各変数の効果の検討に加え、条件の組み合わせと因果の非対称性に注目する分析を提案しています。同じデータを用いた重回帰分析と fsQCA の例を通じて、分析と理論構築の考え方を論じています。</li>
<li>Misangyi, V. F., Greckhamer, T., Furnari, S., Fiss, P. C., Crilly, D., &amp; Aguilera, R. (2017). Embracing causal complexity: The emergence of a neo-configurational perspective. <em>Journal of Management</em>, 43(1), 255-282. <a href="https://doi.org/10.1177/0149206316679252">https://doi.org/10.1177/0149206316679252</a> 経営・組織研究における QCA の展開をレビューし、因果の複雑さを捉える「新しいコンフィギュレーションの視点」を整理しています。集合への所属、必要・十分関係、反実仮想分析などを、理論的な視点と結びつけています。</li>
</ul>
</section>
<section id="分析の進め方報告のしかた実務ガイド" class="level2">
<h2 class="anchored" data-anchor-id="分析の進め方報告のしかた実務ガイド">3. 分析の進め方・報告のしかた(実務ガイド)</h2>
<ul>
<li>Greckhamer, T., Furnari, S., Fiss, P. C., &amp; Aguilera, R. V. (2018). Studying configurations with qualitative comparative analysis: Best practices in strategy and organization research. <em>Strategic Organization</em>, 16(4), 482-495. <a href="https://doi.org/10.1177/1476127018786487">https://doi.org/10.1177/1476127018786487</a> 戦略・組織研究における QCA の実践上の指針を整理しています。モデル構築、事例の選定、キャリブレーション、分析、報告、結果の解釈まで、研究全体の進め方を確認するのに役立ちます。</li>
<li>Pappas, I. O., &amp; Woodside, A. G. (2021). Fuzzy-set qualitative comparative analysis (fsQCA): Guidelines for research practice in information systems and marketing. <em>International Journal of Information Management</em>, 58, Article 102310. <a href="https://doi.org/10.1016/j.ijinfomgt.2021.102310">https://doi.org/10.1016/j.ijinfomgt.2021.102310</a> 情報システムとマーケティングの研究で、fsQCA を用いるための実践的なガイドです。既存研究のデータを用いて分析手順を説明し、予測妥当性の検討や、SEM などの手法との併用にも触れています。</li>
<li>Park, Y., Fiss, P. C., &amp; El Sawy, O. A. (2020). Theorizing the multiplicity of digital phenomena: The ecology of configurations, causal recipes, and guidelines for applying QCA. <em>MIS Quarterly</em>, 44(4), 1493-1520. <a href="https://doi.org/10.25300/MISQ/2020/13879">https://doi.org/10.25300/MISQ/2020/13879</a> 複数の理論的視点や条件の組み合わせが関わるデジタル現象について、QCA を理論構築に結びつける枠組みを示しています。実例を通じて、演繹的な理論検証と帰納的な理論構築への適用手順を説明しています。</li>
</ul>
</section>
<section id="しきい値の選び方を扱った論文" class="level2">
<h2 class="anchored" data-anchor-id="しきい値の選び方を扱った論文">4. しきい値の選び方を扱った論文</h2>
<ul>
<li>Krogslund, C., Choi, D. D., &amp; Poertner, M. (2015). Fuzzy sets on shaky ground: Parameter sensitivity and confirmation bias in fsQCA. <em>Political Analysis</em>, 23(1), 21-41. <a href="https://doi.org/10.1093/pan/mpu016">https://doi.org/10.1093/pan/mpu016</a> fsQCA の結果が、利用者が選ぶパラメータのわずかな変更に左右されうること、そして、ランダムに作った変数を含む組み合わせも、十分条件として見つかりやすいことを論じています。既存の3つの研究を再分析し、感度分析とモンテカルロ・シミュレーションで示しています。</li>
</ul>
<p>基準の置き方が結果をどう変えるかを扱ったものとして、Toyoda (2026), <em>Quality &amp; Quantity</em>, <a href="https://doi.org/10.1007/s11135-026-03092-3">https://doi.org/10.1007/s11135-026-03092-3</a> もあります。</p>


</section>

 ]]></description>
  <category>QCA</category>
  <category>marketing</category>
  <category>notes</category>
  <guid>https://im-research-yt.github.io/ja/articles/reading-list-applied/</guid>
  <pubDate>Sun, 04 Oct 2026 15:00:00 GMT</pubDate>
  <media:content url="https://im-research-yt.github.io/ja/articles/reading-list-applied/thumbnail.png" medium="image" type="image/png" height="76" width="144"/>
</item>
<item>
  <title>QCA を知るための論文と本: 最初に読む 6 点(基礎編)</title>
  <dc:creator>Yuki Toyoda</dc:creator>
  <link>https://im-research-yt.github.io/ja/articles/reading-list-basics/</link>
  <description><![CDATA[ 




<p>前回までは、QCA が意思決定に向く理由と、基準の置き方を説明しました。ここでは、QCA を学ぶときに、分野を問わず最初に読まれる標準的な文献を、目的別に紹介します。</p>
<section id="考え方と測り方論文" class="level2">
<h2 class="anchored" data-anchor-id="考え方と測り方論文">1. 考え方と測り方(論文)</h2>
<ul>
<li>Mahoney, J., &amp; Goertz, G. (2006). A tale of two cultures: Contrasting quantitative and qualitative research. <em>Political Analysis</em>, 14(3), 227-249. <a href="https://doi.org/10.1093/pan/mpj017">https://doi.org/10.1093/pan/mpj017</a> 量的研究と質的研究を、価値観、信念、規範の異なる「2つの文化」として対比し、説明、因果、事例の選び方、測定など、10の側面から比べています。QCA がどのような研究の伝統に立っているかを知る出発点になります。<a href="../../../ja/articles/paper-guide-mahoney-goertz/index.html">論文ガイドあり</a></li>
<li>Ragin, C. C. (2006). Set relations in social research: Evaluating their consistency and coverage. <em>Political Analysis</em>, 14(3), 291-310. <a href="https://doi.org/10.1093/pan/mpj019">https://doi.org/10.1093/pan/mpj019</a> 集合の関係を評価する2つの指標、一貫性(consistency)とカバレッジ(coverage)を紹介した論文です。ファジィ集合を使うことで、二値の変数や誤差の扱いに関するそれまでの制約を乗り越えられることを示しています。<a href="../../../ja/articles/paper-guide-ragin/index.html">論文ガイドあり</a></li>
<li>Schneider, C. Q., &amp; Wagemann, C. (2010). Standards of good practice in qualitative comparative analysis (QCA) and fuzzy-sets. <em>Comparative Sociology</em>, 9(3), 397-418. <a href="https://doi.org/10.1163/156913210X12493538729793">https://doi.org/10.1163/156913210X12493538729793</a> QCA とファジィ集合を用いるときの、標準的な良い実践(good practice)を整理した論文です。分析を始める前に、守るべき手続きを確認するのに役立ちます。</li>
</ul>
</section>
<section id="手法を体系的に学ぶ本" class="level2">
<h2 class="anchored" data-anchor-id="手法を体系的に学ぶ本">2. 手法を体系的に学ぶ(本)</h2>
<ul>
<li>Ragin, C. C. (2008). <em>Redesigning Social Inquiry: Fuzzy Sets and Beyond</em>. University of Chicago Press. 集合論的な分析と従来の量的研究を対比しながら、キャリブレーション、条件の組み合わせ、因果の複雑さを解説しています。QCA の手順だけでなく、その背後にある研究の考え方を学ぶための本です。</li>
<li>Schneider, C. Q., &amp; Wagemann, C. (2012). <em>Set-Theoretic Methods for the Social Sciences: A Guide to Qualitative Comparative Analysis</em>. Cambridge University Press. <a href="https://doi.org/10.1017/CBO9781139004244">https://doi.org/10.1017/CBO9781139004244</a> 集合論の基礎から QCA の実践までを、体系的に解説した教科書です。分析上の注意点や陥りやすい問題も扱い、手順と判断の根拠をあわせて理解するのに役立ちます。</li>
<li>Oana, I.-E., Schneider, C. Q., &amp; Thomann, E. (2021). <em>Qualitative Comparative Analysis Using R: A Beginner’s Guide</em>. Cambridge University Press. <a href="https://doi.org/10.1017/9781009006781">https://doi.org/10.1017/9781009006781</a> QCA を R で行うための、初学者向けの入門書です。R で分析を進めたい読者が、基本の操作を確認するのに向いています。</li>
</ul>
<p>次の記事では、マーケティング・経営学で QCA を使った論文と、経営・組織研究での理論的な背景(応用編)を紹介します。</p>


</section>

 ]]></description>
  <category>QCA</category>
  <category>notes</category>
  <guid>https://im-research-yt.github.io/ja/articles/reading-list-basics/</guid>
  <pubDate>Sun, 04 Oct 2026 15:00:00 GMT</pubDate>
  <media:content url="https://im-research-yt.github.io/ja/articles/reading-list-basics/thumbnail.png" medium="image" type="image/png" height="76" width="144"/>
</item>
<item>
  <title>ThSQCA 入門 第1回: はじめての閾値スイープ</title>
  <dc:creator>Yuki Toyoda</dc:creator>
  <link>https://im-research-yt.github.io/ja/articles/thsqca-beginners-1/</link>
  <description><![CDATA[ 




<p>これは、閾値スイープ質的比較分析(QCA)のRパッケージ <strong>ThSQCA</strong> を学ぶ、入門シリーズの第1回です。QCAを事前に知っている必要はありません。この回の終わりには、閾値スイープを自分で実行して、結果を読めるようになります。</p>
<section id="知っておくべきひとつの考え方" class="level2">
<h2 class="anchored" data-anchor-id="知っておくべきひとつの考え方">知っておくべき、ひとつの考え方</h2>
<p>QCAは、あるアウトカムにとって「十分」な条件の組み合わせを探します。顧客ロイヤルティを例にしましょう。「品質が高く、かつサービスが高い」という組み合わせは、それをもつ顧客のほぼ全員が、ロイヤルティも高いなら、ロイヤルティが高いことに十分です。</p>
<p>これを行うために、QCAはまず、「高い」とは誰のことかを決めなければなりません。0〜10点の調査の得点なら、<strong>閾値</strong>を選びます。得点が閾値以上なら、その変数で「高い」とします。このシリーズでは、得点を閾値で「高い」と「高くない」の2つに分ける、二値(crisp-set)QCA を使います。</p>
<p>ここに落とし穴があります。閾値7も閾値8も、どちらも妥当ですが、答えが変わることがあります。通常のQCA分析は、閾値を1つ選んで、答えを1つ報告します。ThSQCAは、同じ分析を、閾値の範囲全体で繰り返し、すべての答えを1つの表にまとめます。答えが保たれるところと、変わるところが、見えるようになります。</p>
<p>ThSQCAは、<a href="https://cran.r-project.org/package=QCA">QCA</a> パッケージの代わりではありません。閾値ごとに、QCAの <code>truthTable()</code> と <code>minimize()</code> を、毎回同じ設定で呼び出して、結果を集めます。</p>
</section>
<section id="ステップ1-パッケージをインストールする" class="level2">
<h2 class="anchored" data-anchor-id="ステップ1-パッケージをインストールする">ステップ1: パッケージをインストールする</h2>
<p>1回だけ実行します。(すでにインストールしてあれば、省略してください。)</p>
<div class="cell">
<div class="code-copy-outer-scaffold"><div class="sourceCode cell-code" id="cb1" style="background: #f1f3f5;"><pre class="sourceCode r code-with-copy"><code class="sourceCode r"><span id="cb1-1"><span class="fu" style="color: #4758AB;
background-color: null;
font-style: inherit;">install.packages</span>(<span class="fu" style="color: #4758AB;
background-color: null;
font-style: inherit;">c</span>(<span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"QCA"</span>, <span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"ThSQCA"</span>))</span></code></pre></div></div>
</div>
<p>そのあと、新しいRのセッションごとに、ThSQCAを読み込みます。</p>
<div class="cell">
<div class="code-copy-outer-scaffold"><div class="sourceCode cell-code" id="cb2" style="background: #f1f3f5;"><pre class="sourceCode r code-with-copy"><code class="sourceCode r"><span id="cb2-1"><span class="fu" style="color: #4758AB;
background-color: null;
font-style: inherit;">library</span>(ThSQCA)</span></code></pre></div></div>
</div>
</section>
<section id="ステップ2-小さな練習用データを作る" class="level2">
<h2 class="anchored" data-anchor-id="ステップ2-小さな練習用データを作る">ステップ2: 小さな練習用データを作る</h2>
<p>再現できるように、400人の顧客をシミュレーションで作ります。各顧客は、0〜10点の4つの得点をもちます。ロイヤルティ(<code>LOY</code>)と、品質(<code>QUA</code>)、サービス(<code>SER</code>)、店舗環境(<code>ENV</code>)の評価です。この模擬の世界では、品質とサービスがどちらも高いとき、または、(それより少し弱く)品質と環境がどちらも高いときに、ロイヤルティが高くなります。良い分析なら、これを見つけ出すはずです。</p>
<div class="cell">
<div class="code-copy-outer-scaffold"><div class="sourceCode cell-code" id="cb3" style="background: #f1f3f5;"><pre class="sourceCode r code-with-copy"><code class="sourceCode r"><span id="cb3-1">make_demo_data <span class="ot" style="color: #003B4F;
background-color: null;
font-style: inherit;">&lt;-</span> <span class="cf" style="color: #003B4F;
background-color: null;
font-weight: bold;
font-style: inherit;">function</span>(<span class="at" style="color: #657422;
background-color: null;
font-style: inherit;">n =</span> <span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">400</span>, <span class="at" style="color: #657422;
background-color: null;
font-style: inherit;">seed =</span> <span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">2026</span>) {</span>
<span id="cb3-2">  <span class="fu" style="color: #4758AB;
background-color: null;
font-style: inherit;">set.seed</span>(seed)</span>
<span id="cb3-3">  clip <span class="ot" style="color: #003B4F;
background-color: null;
font-style: inherit;">&lt;-</span> <span class="cf" style="color: #003B4F;
background-color: null;
font-weight: bold;
font-style: inherit;">function</span>(x) <span class="fu" style="color: #4758AB;
background-color: null;
font-style: inherit;">pmin</span>(<span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">10</span>, <span class="fu" style="color: #4758AB;
background-color: null;
font-style: inherit;">pmax</span>(<span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">0</span>, <span class="fu" style="color: #4758AB;
background-color: null;
font-style: inherit;">round</span>(x)))</span>
<span id="cb3-4">  QUA <span class="ot" style="color: #003B4F;
background-color: null;
font-style: inherit;">&lt;-</span> <span class="fu" style="color: #4758AB;
background-color: null;
font-style: inherit;">clip</span>(<span class="fu" style="color: #4758AB;
background-color: null;
font-style: inherit;">rnorm</span>(n, <span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">6</span>, <span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">2</span>))</span>
<span id="cb3-5">  SER <span class="ot" style="color: #003B4F;
background-color: null;
font-style: inherit;">&lt;-</span> <span class="fu" style="color: #4758AB;
background-color: null;
font-style: inherit;">clip</span>(<span class="fu" style="color: #4758AB;
background-color: null;
font-style: inherit;">rnorm</span>(n, <span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">6</span>, <span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">2</span>))</span>
<span id="cb3-6">  ENV <span class="ot" style="color: #003B4F;
background-color: null;
font-style: inherit;">&lt;-</span> <span class="fu" style="color: #4758AB;
background-color: null;
font-style: inherit;">clip</span>(<span class="fu" style="color: #4758AB;
background-color: null;
font-style: inherit;">rnorm</span>(n, <span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">6</span>, <span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">2</span>))</span>
<span id="cb3-7">  core <span class="ot" style="color: #003B4F;
background-color: null;
font-style: inherit;">&lt;-</span> <span class="fu" style="color: #4758AB;
background-color: null;
font-style: inherit;">pmax</span>(<span class="fu" style="color: #4758AB;
background-color: null;
font-style: inherit;">pmin</span>(QUA, SER), <span class="fu" style="color: #4758AB;
background-color: null;
font-style: inherit;">pmin</span>(QUA, ENV) <span class="sc" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">-</span> <span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">1</span>)</span>
<span id="cb3-8">  LOY  <span class="ot" style="color: #003B4F;
background-color: null;
font-style: inherit;">&lt;-</span> <span class="fu" style="color: #4758AB;
background-color: null;
font-style: inherit;">clip</span>(core <span class="sc" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">+</span> <span class="fu" style="color: #4758AB;
background-color: null;
font-style: inherit;">rnorm</span>(n, <span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">0</span>, <span class="fl" style="color: #AD0000;
background-color: null;
font-style: inherit;">0.7</span>))</span>
<span id="cb3-9">  <span class="fu" style="color: #4758AB;
background-color: null;
font-style: inherit;">data.frame</span>(LOY, QUA, SER, ENV)</span>
<span id="cb3-10">}</span>
<span id="cb3-11"></span>
<span id="cb3-12">demo <span class="ot" style="color: #003B4F;
background-color: null;
font-style: inherit;">&lt;-</span> <span class="fu" style="color: #4758AB;
background-color: null;
font-style: inherit;">make_demo_data</span>()</span>
<span id="cb3-13"><span class="fu" style="color: #4758AB;
background-color: null;
font-style: inherit;">head</span>(demo)</span></code></pre></div></div>
<div class="cell-output cell-output-stdout">
<pre><code>  LOY QUA SER ENV
1   7   7   9   3
2   5   4   7   5
3   4   6   4   4
4   6   6   6   4
5   5   5   4   7
6   0   1   2   5</code></pre>
</div>
</div>
<p>1行が、1人の顧客です。上の関数は、理解しなくても構いません。練習用データを作るためだけのものです。自分のデータでは、このような列をもつデータフレームに、ファイルを読み込むだけです。</p>
</section>
<section id="ステップ3-スイープを実行する" class="level2">
<h2 class="anchored" data-anchor-id="ステップ3-スイープを実行する">ステップ3: スイープを実行する</h2>
<p>知りたいのは、<em>「高いロイヤルティ」の基準を上げると、答えがどう変わるか</em>、です。そこで、3つの条件の閾値は7に固定し、アウトカムの閾値を5から8まで動かします。これを<strong>アウトカム閾値スイープ</strong>と呼び、関数は <code>otSweep()</code> です。</p>
<div class="cell">
<div class="code-copy-outer-scaffold"><div class="sourceCode cell-code" id="cb5" style="background: #f1f3f5;"><pre class="sourceCode r code-with-copy"><code class="sourceCode r"><span id="cb5-1">res <span class="ot" style="color: #003B4F;
background-color: null;
font-style: inherit;">&lt;-</span> <span class="fu" style="color: #4758AB;
background-color: null;
font-style: inherit;">otSweep</span>(</span>
<span id="cb5-2">  <span class="at" style="color: #657422;
background-color: null;
font-style: inherit;">dat         =</span> demo,</span>
<span id="cb5-3">  <span class="at" style="color: #657422;
background-color: null;
font-style: inherit;">outcome     =</span> <span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"LOY"</span>,</span>
<span id="cb5-4">  <span class="at" style="color: #657422;
background-color: null;
font-style: inherit;">conditions  =</span> <span class="fu" style="color: #4758AB;
background-color: null;
font-style: inherit;">c</span>(<span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"QUA"</span>, <span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"SER"</span>, <span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"ENV"</span>),</span>
<span id="cb5-5">  <span class="at" style="color: #657422;
background-color: null;
font-style: inherit;">sweep_range =</span> <span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">5</span><span class="sc" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">:</span><span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">8</span>,</span>
<span id="cb5-6">  <span class="at" style="color: #657422;
background-color: null;
font-style: inherit;">thrX        =</span> <span class="fu" style="color: #4758AB;
background-color: null;
font-style: inherit;">c</span>(<span class="at" style="color: #657422;
background-color: null;
font-style: inherit;">QUA =</span> <span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">7</span>, <span class="at" style="color: #657422;
background-color: null;
font-style: inherit;">SER =</span> <span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">7</span>, <span class="at" style="color: #657422;
background-color: null;
font-style: inherit;">ENV =</span> <span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">7</span>)</span>
<span id="cb5-7">)</span></code></pre></div></div>
</div>
<p>各行の意味は、次のとおりです。</p>
<table class="caption-top table">
<thead>
<tr class="header">
<th>引数</th>
<th>意味</th>
</tr>
</thead>
<tbody>
<tr class="odd">
<td><code>dat</code></td>
<td>分析するデータフレーム</td>
</tr>
<tr class="even">
<td><code>outcome</code></td>
<td>アウトカムの列</td>
</tr>
<tr class="odd">
<td><code>conditions</code></td>
<td>条件の列</td>
</tr>
<tr class="even">
<td><code>sweep_range</code></td>
<td>試すアウトカムの閾値。ここでは5、6、7、8</td>
</tr>
<tr class="odd">
<td><code>thrX</code></td>
<td>各条件の固定した閾値。「高い」は7以上</td>
</tr>
</tbody>
</table>
<p>ここに書いていない設定が2つあります。既定値があるためです。組み合わせが十分と認められる最低の一貫性(<code>incl.cut</code>、既定は0.8)と、組み合わせごとの最低の事例数(<code>n.cut</code>、既定は1)です。</p>
</section>
<section id="ステップ4-結果を読む" class="level2">
<h2 class="anchored" data-anchor-id="ステップ4-結果を読む">ステップ4: 結果を読む</h2>
<div class="cell">
<div class="code-copy-outer-scaffold"><div class="sourceCode cell-code" id="cb6" style="background: #f1f3f5;"><pre class="sourceCode r code-with-copy"><code class="sourceCode r"><span id="cb6-1"><span class="fu" style="color: #4758AB;
background-color: null;
font-style: inherit;">summary</span>(res)</span></code></pre></div></div>
<div class="cell-output cell-output-stdout">
<pre><code>OTS Summary
=========== 

Analysis Parameters:
  Outcome: LOY 
  Conditions: QUA, SER, ENV 
  Consistency cutoff: 0.8 
  Frequency cutoff: 1 

Results by Threshold:

 thrY        expression inclS  covS n_solutions
    5 QUA*SER + QUA*ENV 0.981 0.403           1
    6 QUA*SER + QUA*ENV 0.926 0.565           1
    7           QUA*SER 0.894 0.656           1
    8       No solution    NA    NA           0</code></pre>
</div>
</div>
<p>表は、アウトカムの閾値ごとに1行です。列は、次のとおりです。</p>
<ul>
<li><code>thrY</code>: その行で使ったアウトカムの閾値。1行目では、「高いロイヤルティ」は <code>LOY &gt;= 5</code> を意味します。</li>
<li><code>expression</code>: 見つかった十分な組み合わせ。<code>*</code> はAND、<code>+</code> はOR、<code>~</code> はNOTです。</li>
<li><code>inclS</code>: 解の一貫性。解がカバーする事例が、どれだけ確実に、アウトカムの集合に入っているか。高いほどよく、1が完全です。</li>
<li><code>covS</code>: 解のカバレッジ。アウトカムをもつ事例のうち、解が説明する割合です。</li>
<li><code>n_solutions</code>: 見つかった、等価な最小解の数(ここでは1)。</li>
</ul>
<p>では、<code>expression</code> の列を、上から下へ読みましょう。</p>
<ul>
<li><code>LOY &gt;= 5</code> と <code>LOY &gt;= 6</code> では、2つの組み合わせが十分です。<code>QUA*SER</code>(品質が高く、サービスが高い)と、<code>QUA*ENV</code>(品質が高く、店舗環境が高い)です。</li>
<li><code>LOY &gt;= 7</code> では、<code>QUA*SER</code> だけが残ります。</li>
<li><code>LOY &gt;= 8</code> では、結果は <strong>No solution</strong>(解なし)です。この水準では、3つの条件のどの組み合わせも、必要な一貫性に届きませんでした。</li>
</ul>
<p>これは、シミュレーションに入れておいたとおりの結果で、スイープが役立つ理由も示しています。<code>LOY &gt;= 6</code> だけを分析していたら、経路が2つあると報告したでしょう。<code>LOY &gt;= 7</code> だけなら、1つと報告したでしょう。スイープは、答えが、目標がどれだけ高いかに左右されること、そして、どこで通用しなくなるかを、見せてくれます。</p>
<p>「No solution」についての注意です。これは技術的な結果で、高いロイヤルティへの経路が存在しない、という意味ではありません。このデータとこの設定では、QCAが、一貫性の条件を満たす最小解を作れなかった、という意味です。</p>
</section>
<section id="ステップ5-結果を図で見る" class="level2">
<h2 class="anchored" data-anchor-id="ステップ5-結果を図で見る">ステップ5: 結果を図で見る</h2>
<p>表は正確ですが、図にすると、傾向がひと目で分かります。要約の表は普通のデータフレーム(<code>res$summary</code>)なので、基本のRで図にできます。次のチャンクは、アウトカムの閾値ごとに、解のカバレッジと解の一貫性を描きます。図の中の語は英語のままです。</p>
<div class="cell">
<div class="code-copy-outer-scaffold"><div class="sourceCode cell-code" id="cb8" style="background: #f1f3f5;"><pre class="sourceCode r code-with-copy"><code class="sourceCode r"><span id="cb8-1">tab <span class="ot" style="color: #003B4F;
background-color: null;
font-style: inherit;">&lt;-</span> res<span class="sc" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">$</span>summary</span>
<span id="cb8-2"></span>
<span id="cb8-3"><span class="fu" style="color: #4758AB;
background-color: null;
font-style: inherit;">plot</span>(tab<span class="sc" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">$</span>thrY, tab<span class="sc" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">$</span>covS, <span class="at" style="color: #657422;
background-color: null;
font-style: inherit;">type =</span> <span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"b"</span>, <span class="at" style="color: #657422;
background-color: null;
font-style: inherit;">pch =</span> <span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">19</span>, <span class="at" style="color: #657422;
background-color: null;
font-style: inherit;">lwd =</span> <span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">2</span>, <span class="at" style="color: #657422;
background-color: null;
font-style: inherit;">col =</span> <span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"#233A9A"</span>,</span>
<span id="cb8-4">     <span class="at" style="color: #657422;
background-color: null;
font-style: inherit;">xlim =</span> <span class="fu" style="color: #4758AB;
background-color: null;
font-style: inherit;">c</span>(<span class="fl" style="color: #AD0000;
background-color: null;
font-style: inherit;">4.8</span>, <span class="fl" style="color: #AD0000;
background-color: null;
font-style: inherit;">8.2</span>), <span class="at" style="color: #657422;
background-color: null;
font-style: inherit;">ylim =</span> <span class="fu" style="color: #4758AB;
background-color: null;
font-style: inherit;">c</span>(<span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">0</span>, <span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">1</span>), <span class="at" style="color: #657422;
background-color: null;
font-style: inherit;">xaxt =</span> <span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"n"</span>,</span>
<span id="cb8-5">     <span class="at" style="color: #657422;
background-color: null;
font-style: inherit;">xlab =</span> <span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"Outcome threshold (thrY)"</span>, <span class="at" style="color: #657422;
background-color: null;
font-style: inherit;">ylab =</span> <span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"Score"</span>,</span>
<span id="cb8-6">     <span class="at" style="color: #657422;
background-color: null;
font-style: inherit;">main =</span> <span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"Coverage and consistency by threshold"</span>)</span>
<span id="cb8-7"><span class="fu" style="color: #4758AB;
background-color: null;
font-style: inherit;">axis</span>(<span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">1</span>, <span class="at" style="color: #657422;
background-color: null;
font-style: inherit;">at =</span> tab<span class="sc" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">$</span>thrY)</span>
<span id="cb8-8"><span class="fu" style="color: #4758AB;
background-color: null;
font-style: inherit;">lines</span>(tab<span class="sc" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">$</span>thrY, tab<span class="sc" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">$</span>inclS, <span class="at" style="color: #657422;
background-color: null;
font-style: inherit;">type =</span> <span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"b"</span>, <span class="at" style="color: #657422;
background-color: null;
font-style: inherit;">pch =</span> <span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">17</span>, <span class="at" style="color: #657422;
background-color: null;
font-style: inherit;">lwd =</span> <span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">2</span>, <span class="at" style="color: #657422;
background-color: null;
font-style: inherit;">col =</span> <span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"#F28018"</span>)</span>
<span id="cb8-9"><span class="fu" style="color: #4758AB;
background-color: null;
font-style: inherit;">abline</span>(<span class="at" style="color: #657422;
background-color: null;
font-style: inherit;">v =</span> <span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">8</span>, <span class="at" style="color: #657422;
background-color: null;
font-style: inherit;">lty =</span> <span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">3</span>, <span class="at" style="color: #657422;
background-color: null;
font-style: inherit;">col =</span> <span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"grey60"</span>)</span>
<span id="cb8-10"><span class="fu" style="color: #4758AB;
background-color: null;
font-style: inherit;">text</span>(<span class="fl" style="color: #AD0000;
background-color: null;
font-style: inherit;">7.9</span>, <span class="fl" style="color: #AD0000;
background-color: null;
font-style: inherit;">0.3</span>, <span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"No solution</span><span class="sc" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">\n</span><span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">at thrY = 8"</span>, <span class="at" style="color: #657422;
background-color: null;
font-style: inherit;">adj =</span> <span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">1</span>, <span class="at" style="color: #657422;
background-color: null;
font-style: inherit;">col =</span> <span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"grey40"</span>)</span>
<span id="cb8-11"><span class="fu" style="color: #4758AB;
background-color: null;
font-style: inherit;">legend</span>(<span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"bottomleft"</span>, <span class="at" style="color: #657422;
background-color: null;
font-style: inherit;">legend =</span> <span class="fu" style="color: #4758AB;
background-color: null;
font-style: inherit;">c</span>(<span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"Coverage (covS)"</span>, <span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"Consistency (inclS)"</span>),</span>
<span id="cb8-12">       <span class="at" style="color: #657422;
background-color: null;
font-style: inherit;">col =</span> <span class="fu" style="color: #4758AB;
background-color: null;
font-style: inherit;">c</span>(<span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"#233A9A"</span>, <span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"#F28018"</span>), <span class="at" style="color: #657422;
background-color: null;
font-style: inherit;">pch =</span> <span class="fu" style="color: #4758AB;
background-color: null;
font-style: inherit;">c</span>(<span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">19</span>, <span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">17</span>), <span class="at" style="color: #657422;
background-color: null;
font-style: inherit;">lwd =</span> <span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">2</span>, <span class="at" style="color: #657422;
background-color: null;
font-style: inherit;">bty =</span> <span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"n"</span>)</span></code></pre></div></div>
<div class="cell-output-display">
<div class="quarto-figure quarto-figure-center">
<figure class="figure">
<p><img src="https://im-research-yt.github.io/ja/articles/thsqca-beginners-1/index_files/figure-html/unnamed-chunk-6-1.png" class="img-fluid figure-img" alt="横軸にアウトカムの閾値(5から8)、縦軸にスコア(0から1)をとった折れ線グラフ。カバレッジは、閾値5の約0.40から、閾値7の約0.66へ上がる。一貫性は、約0.98から約0.89へ下がる。閾値8には点がなく、解なしと注記されている。" width="672"></p>
<figcaption>アウトカムの閾値ごとの、解のカバレッジ(covS)と解の一貫性(inclS)。thrY = 8 では解が見つかりませんでした。</figcaption>
</figure>
</div>
</div>
</div>
<p>目標が高くなるほど、カバレッジは上がり(解が、高ロイヤルティの顧客のより大きな割合を説明します)、一貫性はゆっくり下がります。<code>thrY = 8</code> では、プロットする解がないので、線がそこで止まります。</p>
</section>
<section id="次回" class="level2">
<h2 class="anchored" data-anchor-id="次回">次回</h2>
<p>次回は、4種類のスイープ(アウトカム、1つの条件、複数の条件、その両方)を、もう少し詳しく見ます。あわせて、擁護できる閾値の範囲の決め方を扱います。</p>
<p>パッケージの完全なチュートリアルは、<a href="https://im-research-yt.github.io/ThSQCA/articles/ThSQCA_Tutorial_EN.html">ThSQCAのドキュメント</a>(英語)にあります。手法そのものは、<a href="https://doi.org/10.1007/s11135-026-03092-3">Toyoda (2026), <em>Quality &amp; Quantity</em></a> で説明しています。</p>
<p><em>使ったソフトウェア: R 4.6.1、QCA 3.25.5、ThSQCA 2.0.9</em></p>


</section>

 ]]></description>
  <category>ThSQCA</category>
  <category>tutorial</category>
  <guid>https://im-research-yt.github.io/ja/articles/thsqca-beginners-1/</guid>
  <pubDate>Sun, 04 Oct 2026 15:00:00 GMT</pubDate>
  <media:content url="https://im-research-yt.github.io/ja/articles/thsqca-beginners-1/thumbnail.png" medium="image" type="image/png" height="76" width="144"/>
</item>
<item>
  <title>ThSQCA 入門 第2回: 4つのスイープと、範囲の決め方</title>
  <dc:creator>Yuki Toyoda</dc:creator>
  <link>https://im-research-yt.github.io/ja/articles/thsqca-beginners-2/</link>
  <description><![CDATA[ 




<p><a href="../../../ja/articles/thsqca-beginners-1/index.html">第1回</a>では、アウトカム閾値スイープを実行して、結果を読みました。ThSQCAには、スイープの関数が全部で4つあります。この回では、同じ練習用データで4つすべてを実行し、最後に、閾値の範囲の選び方についての、実践的な助言を述べます。</p>
<section id="つのスイープの一覧" class="level2">
<h2 class="anchored" data-anchor-id="つのスイープの一覧">4つのスイープの一覧</h2>
<table class="caption-top table">
<colgroup>
<col style="width: 25%">
<col style="width: 25%">
<col style="width: 25%">
<col style="width: 25%">
</colgroup>
<thead>
<tr class="header">
<th>問い</th>
<th>関数</th>
<th>動かすもの</th>
<th>固定するもの</th>
</tr>
</thead>
<tbody>
<tr class="odd">
<td>アウトカムの目標水準が上がると、解はどう変わるか</td>
<td><code>otSweep()</code></td>
<td>アウトカムの閾値</td>
<td>すべての条件の閾値</td>
</tr>
<tr class="even">
<td>1つの条件の「高い」の定義に、どれだけ敏感か</td>
<td><code>ctSweepS()</code></td>
<td>1つの条件の閾値</td>
<td>アウトカムと、ほかの条件</td>
</tr>
<tr class="odd">
<td>複数の条件の定義が、一緒に変わったらどうなるか</td>
<td><code>ctSweepM()</code></td>
<td>複数の条件の閾値(格子状)</td>
<td>アウトカムの閾値</td>
</tr>
<tr class="even">
<td>目標水準と、条件の定義の両方が変わったらどうなるか</td>
<td><code>dtSweep()</code></td>
<td>アウトカムと条件</td>
<td>なし</td>
</tr>
</tbody>
</table>
</section>
<section id="準備-第1回と同じ練習用データ" class="level2">
<h2 class="anchored" data-anchor-id="準備-第1回と同じ練習用データ">準備: 第1回と同じ練習用データ</h2>
<div class="cell">
<div class="code-copy-outer-scaffold"><div class="sourceCode cell-code" id="cb1" style="background: #f1f3f5;"><pre class="sourceCode r code-with-copy"><code class="sourceCode r"><span id="cb1-1"><span class="fu" style="color: #4758AB;
background-color: null;
font-style: inherit;">library</span>(ThSQCA)</span></code></pre></div></div>
</div>
<div class="cell">
<details class="code-fold">
<summary>練習用データ(第1回と同じ)</summary>
<div class="code-copy-outer-scaffold"><div class="sourceCode cell-code" id="cb2" style="background: #f1f3f5;"><pre class="sourceCode r code-with-copy"><code class="sourceCode r"><span id="cb2-1">make_demo_data <span class="ot" style="color: #003B4F;
background-color: null;
font-style: inherit;">&lt;-</span> <span class="cf" style="color: #003B4F;
background-color: null;
font-weight: bold;
font-style: inherit;">function</span>(<span class="at" style="color: #657422;
background-color: null;
font-style: inherit;">n =</span> <span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">400</span>, <span class="at" style="color: #657422;
background-color: null;
font-style: inherit;">seed =</span> <span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">2026</span>) {</span>
<span id="cb2-2">  <span class="fu" style="color: #4758AB;
background-color: null;
font-style: inherit;">set.seed</span>(seed)</span>
<span id="cb2-3">  clip <span class="ot" style="color: #003B4F;
background-color: null;
font-style: inherit;">&lt;-</span> <span class="cf" style="color: #003B4F;
background-color: null;
font-weight: bold;
font-style: inherit;">function</span>(x) <span class="fu" style="color: #4758AB;
background-color: null;
font-style: inherit;">pmin</span>(<span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">10</span>, <span class="fu" style="color: #4758AB;
background-color: null;
font-style: inherit;">pmax</span>(<span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">0</span>, <span class="fu" style="color: #4758AB;
background-color: null;
font-style: inherit;">round</span>(x)))</span>
<span id="cb2-4">  QUA <span class="ot" style="color: #003B4F;
background-color: null;
font-style: inherit;">&lt;-</span> <span class="fu" style="color: #4758AB;
background-color: null;
font-style: inherit;">clip</span>(<span class="fu" style="color: #4758AB;
background-color: null;
font-style: inherit;">rnorm</span>(n, <span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">6</span>, <span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">2</span>))</span>
<span id="cb2-5">  SER <span class="ot" style="color: #003B4F;
background-color: null;
font-style: inherit;">&lt;-</span> <span class="fu" style="color: #4758AB;
background-color: null;
font-style: inherit;">clip</span>(<span class="fu" style="color: #4758AB;
background-color: null;
font-style: inherit;">rnorm</span>(n, <span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">6</span>, <span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">2</span>))</span>
<span id="cb2-6">  ENV <span class="ot" style="color: #003B4F;
background-color: null;
font-style: inherit;">&lt;-</span> <span class="fu" style="color: #4758AB;
background-color: null;
font-style: inherit;">clip</span>(<span class="fu" style="color: #4758AB;
background-color: null;
font-style: inherit;">rnorm</span>(n, <span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">6</span>, <span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">2</span>))</span>
<span id="cb2-7">  core <span class="ot" style="color: #003B4F;
background-color: null;
font-style: inherit;">&lt;-</span> <span class="fu" style="color: #4758AB;
background-color: null;
font-style: inherit;">pmax</span>(<span class="fu" style="color: #4758AB;
background-color: null;
font-style: inherit;">pmin</span>(QUA, SER), <span class="fu" style="color: #4758AB;
background-color: null;
font-style: inherit;">pmin</span>(QUA, ENV) <span class="sc" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">-</span> <span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">1</span>)</span>
<span id="cb2-8">  LOY  <span class="ot" style="color: #003B4F;
background-color: null;
font-style: inherit;">&lt;-</span> <span class="fu" style="color: #4758AB;
background-color: null;
font-style: inherit;">clip</span>(core <span class="sc" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">+</span> <span class="fu" style="color: #4758AB;
background-color: null;
font-style: inherit;">rnorm</span>(n, <span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">0</span>, <span class="fl" style="color: #AD0000;
background-color: null;
font-style: inherit;">0.7</span>))</span>
<span id="cb2-9">  <span class="fu" style="color: #4758AB;
background-color: null;
font-style: inherit;">data.frame</span>(LOY, QUA, SER, ENV)</span>
<span id="cb2-10">}</span>
<span id="cb2-11"></span>
<span id="cb2-12">demo <span class="ot" style="color: #003B4F;
background-color: null;
font-style: inherit;">&lt;-</span> <span class="fu" style="color: #4758AB;
background-color: null;
font-style: inherit;">make_demo_data</span>()</span></code></pre></div></div>
</details>
</div>
<p>データの背景を思い出してください。品質(<code>QUA</code>)とサービス(<code>SER</code>)がどちらも高いとき、または、それより少し弱く、品質と店舗環境(<code>ENV</code>)がどちらも高いときに、ロイヤルティ(<code>LOY</code>)が高くなります。</p>
</section>
<section id="スイープ1-ctsweeps-で1つの条件を動かす" class="level2">
<h2 class="anchored" data-anchor-id="スイープ1-ctsweeps-で1つの条件を動かす">スイープ1: <code>ctSweepS()</code> で、1つの条件を動かす</h2>
<p>「サービスが高い」の線をどこに引くか、迷っているとします。6で十分でしょうか。7でしょうか。9でしょうか。アウトカムを <code>LOY &gt;= 7</code> に固定し、ほかの条件を7に固定して、<code>SER</code> の閾値を5から9まで動かします。</p>
<div class="cell">
<div class="code-copy-outer-scaffold"><div class="sourceCode cell-code" id="cb3" style="background: #f1f3f5;"><pre class="sourceCode r code-with-copy"><code class="sourceCode r"><span id="cb3-1">res_cts <span class="ot" style="color: #003B4F;
background-color: null;
font-style: inherit;">&lt;-</span> <span class="fu" style="color: #4758AB;
background-color: null;
font-style: inherit;">ctSweepS</span>(</span>
<span id="cb3-2">  <span class="at" style="color: #657422;
background-color: null;
font-style: inherit;">dat          =</span> demo,</span>
<span id="cb3-3">  <span class="at" style="color: #657422;
background-color: null;
font-style: inherit;">outcome      =</span> <span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"LOY"</span>,</span>
<span id="cb3-4">  <span class="at" style="color: #657422;
background-color: null;
font-style: inherit;">conditions   =</span> <span class="fu" style="color: #4758AB;
background-color: null;
font-style: inherit;">c</span>(<span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"QUA"</span>, <span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"SER"</span>, <span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"ENV"</span>),</span>
<span id="cb3-5">  <span class="at" style="color: #657422;
background-color: null;
font-style: inherit;">sweep_var    =</span> <span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"SER"</span>,</span>
<span id="cb3-6">  <span class="at" style="color: #657422;
background-color: null;
font-style: inherit;">sweep_range  =</span> <span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">5</span><span class="sc" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">:</span><span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">9</span>,</span>
<span id="cb3-7">  <span class="at" style="color: #657422;
background-color: null;
font-style: inherit;">thrY         =</span> <span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">7</span>,</span>
<span id="cb3-8">  <span class="at" style="color: #657422;
background-color: null;
font-style: inherit;">thrX_default =</span> <span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">7</span></span>
<span id="cb3-9">)</span>
<span id="cb3-10"></span>
<span id="cb3-11"><span class="fu" style="color: #4758AB;
background-color: null;
font-style: inherit;">summary</span>(res_cts)</span></code></pre></div></div>
<div class="cell-output cell-output-stdout">
<pre><code>CTS (single) Summary
==================== 

Analysis Parameters:
  Outcome: LOY 
  Conditions: QUA, SER, ENV 
  Consistency cutoff: 0.8 
  Frequency cutoff: 1 

Results by Threshold:

 threshold   expression inclS  covS n_solutions
         5  No solution    NA    NA           0
         6  No solution    NA    NA           0
         7      QUA*SER 0.894 0.656           1
         8      QUA*SER 0.909 0.333           1
         9 QUA*SER*~ENV 0.917 0.122           1</code></pre>
</div>
</div>
<p>新しい引数は、<code>sweep_var</code>(閾値を動かす条件)、<code>thrY</code>(固定するアウトカムの閾値)、<code>thrX_default</code>(ほかのすべての条件の、固定する閾値)です。</p>
<p>表を上から下へ読みます。「サービスが高い」を5または6と定義すると、解はありません。定義がゆるすぎて、「サービスを十分に受けた」顧客の集団が、もはや確実にはロイヤルではなくなるからです。7と8では、解は <code>QUA*SER</code> です。9では、解に3つ目の要素が加わって <code>QUA*SER*~ENV</code> になり、カバレッジは、7での0.656から、9での0.122へと、大きく下がります。いちばん厳しい定義の背後に、顧客が何人いるかを数えると、理由が分かります。</p>
<div class="cell">
<div class="code-copy-outer-scaffold"><div class="sourceCode cell-code" id="cb5" style="background: #f1f3f5;"><pre class="sourceCode r code-with-copy"><code class="sourceCode r"><span id="cb5-1"><span class="fu" style="color: #4758AB;
background-color: null;
font-style: inherit;">sum</span>(demo<span class="sc" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">$</span>QUA <span class="sc" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">&gt;=</span> <span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">7</span> <span class="sc" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">&amp;</span> demo<span class="sc" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">$</span>SER <span class="sc" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">&gt;=</span> <span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">9</span>)                 <span class="co" style="color: #5E5E5E;
background-color: null;
font-style: inherit;"># 品質とサービスの両方が高い顧客</span></span></code></pre></div></div>
<div class="cell-output cell-output-stdout">
<pre><code>[1] 16</code></pre>
</div>
<div class="code-copy-outer-scaffold"><div class="sourceCode cell-code" id="cb7" style="background: #f1f3f5;"><pre class="sourceCode r code-with-copy"><code class="sourceCode r"><span id="cb7-1"><span class="fu" style="color: #4758AB;
background-color: null;
font-style: inherit;">sum</span>(demo<span class="sc" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">$</span>QUA <span class="sc" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">&gt;=</span> <span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">7</span> <span class="sc" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">&amp;</span> demo<span class="sc" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">$</span>SER <span class="sc" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">&gt;=</span> <span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">9</span> <span class="sc" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">&amp;</span> demo<span class="sc" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">$</span>ENV <span class="sc" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">&lt;</span> <span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">7</span>)  <span class="co" style="color: #5E5E5E;
background-color: null;
font-style: inherit;"># 解 QUA*SER*~ENV を満たす顧客</span></span></code></pre></div></div>
<div class="cell-output cell-output-stdout">
<pre><code>[1] 12</code></pre>
</div>
</div>
<p>その水準で、品質とサービスの両方が高い顧客は、400人のうち16人です。そのうち、店舗環境が7未満で、解 <code>QUA*SER*~ENV</code> を満たす顧客は、12人だけです。そこでの結果は、ごく少数の事例に支えられています。これは役に立つ習慣です。解が格子の端にしか現れないときは、その背後にある事例の数を確かめてください。</p>
</section>
<section id="スイープ2-ctsweepm-で複数の条件を動かす" class="level2">
<h2 class="anchored" data-anchor-id="スイープ2-ctsweepm-で複数の条件を動かす">スイープ2: <code>ctSweepM()</code> で、複数の条件を動かす</h2>
<p>次に、3つの条件の閾値を、一度に動かします。<code>QUA</code>、<code>SER</code>、<code>ENV</code> のそれぞれを、6、7、8で試します。3 x 3 x 3 = 27通りの組み合わせです。アウトカムは <code>LOY &gt;= 7</code> のままです。</p>
<div class="cell">
<div class="code-copy-outer-scaffold"><div class="sourceCode cell-code" id="cb9" style="background: #f1f3f5;"><pre class="sourceCode r code-with-copy"><code class="sourceCode r"><span id="cb9-1">res_mcts <span class="ot" style="color: #003B4F;
background-color: null;
font-style: inherit;">&lt;-</span> <span class="fu" style="color: #4758AB;
background-color: null;
font-style: inherit;">ctSweepM</span>(</span>
<span id="cb9-2">  <span class="at" style="color: #657422;
background-color: null;
font-style: inherit;">dat        =</span> demo,</span>
<span id="cb9-3">  <span class="at" style="color: #657422;
background-color: null;
font-style: inherit;">outcome    =</span> <span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"LOY"</span>,</span>
<span id="cb9-4">  <span class="at" style="color: #657422;
background-color: null;
font-style: inherit;">conditions =</span> <span class="fu" style="color: #4758AB;
background-color: null;
font-style: inherit;">c</span>(<span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"QUA"</span>, <span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"SER"</span>, <span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"ENV"</span>),</span>
<span id="cb9-5">  <span class="at" style="color: #657422;
background-color: null;
font-style: inherit;">sweep_list =</span> <span class="fu" style="color: #4758AB;
background-color: null;
font-style: inherit;">list</span>(<span class="at" style="color: #657422;
background-color: null;
font-style: inherit;">QUA =</span> <span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">6</span><span class="sc" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">:</span><span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">8</span>, <span class="at" style="color: #657422;
background-color: null;
font-style: inherit;">SER =</span> <span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">6</span><span class="sc" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">:</span><span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">8</span>, <span class="at" style="color: #657422;
background-color: null;
font-style: inherit;">ENV =</span> <span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">6</span><span class="sc" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">:</span><span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">8</span>),</span>
<span id="cb9-6">  <span class="at" style="color: #657422;
background-color: null;
font-style: inherit;">thrY       =</span> <span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">7</span></span>
<span id="cb9-7">)</span></code></pre></div></div>
</div>
<p>出力は27行になります。読みやすくするために、解が出た組み合わせだけを表示します。</p>
<div class="cell">
<div class="code-copy-outer-scaffold"><div class="sourceCode cell-code" id="cb10" style="background: #f1f3f5;"><pre class="sourceCode r code-with-copy"><code class="sourceCode r"><span id="cb10-1">tab <span class="ot" style="color: #003B4F;
background-color: null;
font-style: inherit;">&lt;-</span> res_mcts<span class="sc" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">$</span>summary</span>
<span id="cb10-2">tab[tab<span class="sc" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">$</span>n_solutions <span class="sc" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">&gt;</span> <span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">0</span>, ]</span></code></pre></div></div>
<div class="cell-output cell-output-stdout">
<pre><code>   combo_id           threshold                  expression     inclS      covS
5         5 QUA=7, SER=7, ENV=6                     QUA*SER 0.8939394 0.6555556
6         6 QUA=8, SER=7, ENV=6                     QUA*SER 0.9189189 0.3777778
8         8 QUA=7, SER=8, ENV=6                     QUA*SER 0.9090909 0.3333333
9         9 QUA=8, SER=8, ENV=6                     QUA*SER 0.9047619 0.2111111
12       12 QUA=8, SER=6, ENV=7                QUA*SER*~ENV 0.8000000 0.3111111
14       14 QUA=7, SER=7, ENV=7                     QUA*SER 0.8939394 0.6555556
15       15 QUA=8, SER=7, ENV=7                QUA*SER*~ENV 1.0000000 0.3000000
17       17 QUA=7, SER=8, ENV=7                     QUA*SER 0.9090909 0.3333333
18       18 QUA=8, SER=8, ENV=7                QUA*SER*~ENV 1.0000000 0.1888889
21       21 QUA=8, SER=6, ENV=8                     QUA*ENV 0.8888889 0.1777778
23       23 QUA=7, SER=7, ENV=8                     QUA*SER 0.8939394 0.6555556
24       24 QUA=8, SER=7, ENV=8           QUA*SER + QUA*ENV 0.9200000 0.5111111
26       26 QUA=7, SER=8, ENV=8                     QUA*SER 0.9090909 0.3333333
27       27 QUA=8, SER=8, ENV=8 QUA*SER*~ENV + QUA*~SER*ENV 0.9393939 0.3444444
   n_solutions
5            1
6            1
8            1
9            1
12           1
14           1
15           1
17           1
18           1
21           1
23           1
24           1
26           1
27           1</code></pre>
</div>
</div>
<p>注目したいパターンは、次のとおりです。</p>
<ul>
<li>27通りのうち、解があるのは14通りです。「品質が高い」を6と定義した組み合わせでは、解がまったくありません。</li>
<li><code>QUA</code> が7で、<code>SER</code> が7または8のとき、<code>ENV</code> の閾値がどれであっても、解は <code>QUA*SER</code> です。これが<strong>安定した領域</strong>です。</li>
<li><code>QUA</code> が8のとき、解は <code>ENV</code>(と <code>SER</code>)に左右されます。<code>ENV</code> が6なら、(<code>SER</code> が7または8のとき)<code>QUA*SER</code> です。<code>ENV</code> が7なら、<code>QUA*SER*~ENV</code> です。<code>ENV</code> が8なら、<code>QUA*ENV</code> だけのものから、<code>QUA*SER + QUA*ENV</code> のような2つの経路をもつ解まで、さまざまです。「品質が高い」を厳しく定義すると、店舗環境の定義が重要になり始めます。</li>
</ul>
<p>格子を見ると、結論が頑健なところと、もろいところの両方が分かります。1回の分析では、これはできません。</p>
</section>
<section id="スイープ3-dtsweep-でアウトカムと条件を一緒に動かす" class="level2">
<h2 class="anchored" data-anchor-id="スイープ3-dtsweep-でアウトカムと条件を一緒に動かす">スイープ3: <code>dtSweep()</code> で、アウトカムと条件を一緒に動かす</h2>
<p>二重閾値スイープは、2つの考え方を組み合わせて、アウトカムの目標水準と条件の定義を、同時に動かします。ここでは、アウトカムの閾値を3つ(6、7、8)、条件の組み合わせを8つ(<code>QUA</code>、<code>SER</code>、<code>ENV</code> のそれぞれが6または7)にして、24のセルを作ります。</p>
<div class="cell">
<div class="code-copy-outer-scaffold"><div class="sourceCode cell-code" id="cb12" style="background: #f1f3f5;"><pre class="sourceCode r code-with-copy"><code class="sourceCode r"><span id="cb12-1">res_dts <span class="ot" style="color: #003B4F;
background-color: null;
font-style: inherit;">&lt;-</span> <span class="fu" style="color: #4758AB;
background-color: null;
font-style: inherit;">dtSweep</span>(</span>
<span id="cb12-2">  <span class="at" style="color: #657422;
background-color: null;
font-style: inherit;">dat           =</span> demo,</span>
<span id="cb12-3">  <span class="at" style="color: #657422;
background-color: null;
font-style: inherit;">outcome       =</span> <span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"LOY"</span>,</span>
<span id="cb12-4">  <span class="at" style="color: #657422;
background-color: null;
font-style: inherit;">conditions    =</span> <span class="fu" style="color: #4758AB;
background-color: null;
font-style: inherit;">c</span>(<span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"QUA"</span>, <span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"SER"</span>, <span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"ENV"</span>),</span>
<span id="cb12-5">  <span class="at" style="color: #657422;
background-color: null;
font-style: inherit;">sweep_list_X  =</span> <span class="fu" style="color: #4758AB;
background-color: null;
font-style: inherit;">list</span>(<span class="at" style="color: #657422;
background-color: null;
font-style: inherit;">QUA =</span> <span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">6</span><span class="sc" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">:</span><span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">7</span>, <span class="at" style="color: #657422;
background-color: null;
font-style: inherit;">SER =</span> <span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">6</span><span class="sc" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">:</span><span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">7</span>, <span class="at" style="color: #657422;
background-color: null;
font-style: inherit;">ENV =</span> <span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">6</span><span class="sc" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">:</span><span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">7</span>),</span>
<span id="cb12-6">  <span class="at" style="color: #657422;
background-color: null;
font-style: inherit;">sweep_range_Y =</span> <span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">6</span><span class="sc" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">:</span><span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">8</span></span>
<span id="cb12-7">)</span>
<span id="cb12-8"></span>
<span id="cb12-9">res_dts<span class="sc" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">$</span>summary</span></code></pre></div></div>
<div class="cell-output cell-output-stdout">
<pre><code>   combo_id thrY                thrX        expression     inclS      covS
1         1    6 QUA=6, SER=6, ENV=6           QUA*SER 0.8630137 0.7118644
2         1    7 QUA=6, SER=6, ENV=6       No solution        NA        NA
3         1    8 QUA=6, SER=6, ENV=6       No solution        NA        NA
4         2    6 QUA=7, SER=6, ENV=6           QUA*SER 0.9215686 0.5310734
5         2    7 QUA=7, SER=6, ENV=6       No solution        NA        NA
6         2    8 QUA=7, SER=6, ENV=6       No solution        NA        NA
7         3    6 QUA=6, SER=7, ENV=6           QUA*SER 0.8932039 0.5197740
8         3    7 QUA=6, SER=7, ENV=6       No solution        NA        NA
9         3    8 QUA=6, SER=7, ENV=6       No solution        NA        NA
10        4    6 QUA=7, SER=7, ENV=6           QUA*SER 0.9848485 0.3672316
11        4    7 QUA=7, SER=7, ENV=6           QUA*SER 0.8939394 0.6555556
12        4    8 QUA=7, SER=7, ENV=6       No solution        NA        NA
13        5    6 QUA=6, SER=6, ENV=7           QUA*SER 0.8630137 0.7118644
14        5    7 QUA=6, SER=6, ENV=7       No solution        NA        NA
15        5    8 QUA=6, SER=6, ENV=7       No solution        NA        NA
16        6    6 QUA=7, SER=6, ENV=7 QUA*SER + QUA*ENV 0.9076923 0.6666667
17        6    7 QUA=7, SER=6, ENV=7       No solution        NA        NA
18        6    8 QUA=7, SER=6, ENV=7       No solution        NA        NA
19        7    6 QUA=6, SER=7, ENV=7           QUA*SER 0.8932039 0.5197740
20        7    7 QUA=6, SER=7, ENV=7       No solution        NA        NA
21        7    8 QUA=6, SER=7, ENV=7       No solution        NA        NA
22        8    6 QUA=7, SER=7, ENV=7 QUA*SER + QUA*ENV 0.9259259 0.5649718
23        8    7 QUA=7, SER=7, ENV=7           QUA*SER 0.8939394 0.6555556
24        8    8 QUA=7, SER=7, ENV=7       No solution        NA        NA
   n_solutions
1            1
2            0
3            0
4            1
5            0
6            0
7            1
8            0
9            0
10           1
11           1
12           0
13           1
14           0
15           0
16           1
17           0
18           0
19           1
20           0
21           0
22           1
23           1
24           0</code></pre>
</div>
</div>
<p>読み方です。<code>LOY &gt;= 6</code> では、8通りの条件の定義のすべてで解があり、たいていは <code>QUA*SER</code> で、ときには <code>QUA*SER + QUA*ENV</code> です。<code>LOY &gt;= 7</code> では、解が残るのは、<code>QUA</code> と <code>SER</code> がどちらも7の、2通りだけです。<code>LOY &gt;= 8</code> では、どれにも解がありません。このデータでは、目標水準を上げることが、変化のいちばん強い要因です。</p>
<p>図にすると、同じことがもっと早く分かります。次のチャンクは、24セルすべての解のカバレッジを、ヒートマップで描きます。1行が条件の定義ひとつ、1列がアウトカムの閾値ひとつで、「none」は解のないセルです。図の中の語は英語のままです。</p>
<div class="cell">
<div class="code-copy-outer-scaffold"><div class="sourceCode cell-code" id="cb14" style="background: #f1f3f5;"><pre class="sourceCode r code-with-copy"><code class="sourceCode r"><span id="cb14-1">s <span class="ot" style="color: #003B4F;
background-color: null;
font-style: inherit;">&lt;-</span> res_dts<span class="sc" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">$</span>summary</span>
<span id="cb14-2">m <span class="ot" style="color: #003B4F;
background-color: null;
font-style: inherit;">&lt;-</span> <span class="fu" style="color: #4758AB;
background-color: null;
font-style: inherit;">tapply</span>(s<span class="sc" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">$</span>covS, <span class="fu" style="color: #4758AB;
background-color: null;
font-style: inherit;">list</span>(s<span class="sc" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">$</span>combo_id, s<span class="sc" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">$</span>thrY), <span class="cf" style="color: #003B4F;
background-color: null;
font-weight: bold;
font-style: inherit;">function</span>(x) x[<span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">1</span>])</span>
<span id="cb14-3">lab <span class="ot" style="color: #003B4F;
background-color: null;
font-style: inherit;">&lt;-</span> <span class="fu" style="color: #4758AB;
background-color: null;
font-style: inherit;">as.character</span>(s<span class="sc" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">$</span>thrX[<span class="fu" style="color: #4758AB;
background-color: null;
font-style: inherit;">match</span>(<span class="fu" style="color: #4758AB;
background-color: null;
font-style: inherit;">rownames</span>(m), s<span class="sc" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">$</span>combo_id)])</span>
<span id="cb14-4"></span>
<span id="cb14-5">op <span class="ot" style="color: #003B4F;
background-color: null;
font-style: inherit;">&lt;-</span> <span class="fu" style="color: #4758AB;
background-color: null;
font-style: inherit;">par</span>(<span class="at" style="color: #657422;
background-color: null;
font-style: inherit;">mar =</span> <span class="fu" style="color: #4758AB;
background-color: null;
font-style: inherit;">c</span>(<span class="fl" style="color: #AD0000;
background-color: null;
font-style: inherit;">4.5</span>, <span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">11</span>, <span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">3</span>, <span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">1</span>))</span>
<span id="cb14-6"><span class="fu" style="color: #4758AB;
background-color: null;
font-style: inherit;">image</span>(<span class="at" style="color: #657422;
background-color: null;
font-style: inherit;">x =</span> <span class="fu" style="color: #4758AB;
background-color: null;
font-style: inherit;">seq_len</span>(<span class="fu" style="color: #4758AB;
background-color: null;
font-style: inherit;">ncol</span>(m)), <span class="at" style="color: #657422;
background-color: null;
font-style: inherit;">y =</span> <span class="fu" style="color: #4758AB;
background-color: null;
font-style: inherit;">seq_len</span>(<span class="fu" style="color: #4758AB;
background-color: null;
font-style: inherit;">nrow</span>(m)), <span class="at" style="color: #657422;
background-color: null;
font-style: inherit;">z =</span> <span class="fu" style="color: #4758AB;
background-color: null;
font-style: inherit;">t</span>(m),</span>
<span id="cb14-7">      <span class="at" style="color: #657422;
background-color: null;
font-style: inherit;">col =</span> <span class="fu" style="color: #4758AB;
background-color: null;
font-style: inherit;">colorRampPalette</span>(<span class="fu" style="color: #4758AB;
background-color: null;
font-style: inherit;">c</span>(<span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"#FFFFFF"</span>, <span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"#233A9A"</span>))(<span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">50</span>), <span class="at" style="color: #657422;
background-color: null;
font-style: inherit;">zlim =</span> <span class="fu" style="color: #4758AB;
background-color: null;
font-style: inherit;">c</span>(<span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">0</span>, <span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">1</span>),</span>
<span id="cb14-8">      <span class="at" style="color: #657422;
background-color: null;
font-style: inherit;">xaxt =</span> <span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"n"</span>, <span class="at" style="color: #657422;
background-color: null;
font-style: inherit;">yaxt =</span> <span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"n"</span>, <span class="at" style="color: #657422;
background-color: null;
font-style: inherit;">xlab =</span> <span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"Outcome threshold (thrY)"</span>, <span class="at" style="color: #657422;
background-color: null;
font-style: inherit;">ylab =</span> <span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">""</span>,</span>
<span id="cb14-9">      <span class="at" style="color: #657422;
background-color: null;
font-style: inherit;">main =</span> <span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"Solution coverage in the 24 cells"</span>)</span>
<span id="cb14-10"><span class="fu" style="color: #4758AB;
background-color: null;
font-style: inherit;">axis</span>(<span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">1</span>, <span class="at" style="color: #657422;
background-color: null;
font-style: inherit;">at =</span> <span class="fu" style="color: #4758AB;
background-color: null;
font-style: inherit;">seq_len</span>(<span class="fu" style="color: #4758AB;
background-color: null;
font-style: inherit;">ncol</span>(m)), <span class="at" style="color: #657422;
background-color: null;
font-style: inherit;">labels =</span> <span class="fu" style="color: #4758AB;
background-color: null;
font-style: inherit;">colnames</span>(m))</span>
<span id="cb14-11"><span class="fu" style="color: #4758AB;
background-color: null;
font-style: inherit;">axis</span>(<span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">2</span>, <span class="at" style="color: #657422;
background-color: null;
font-style: inherit;">at =</span> <span class="fu" style="color: #4758AB;
background-color: null;
font-style: inherit;">seq_len</span>(<span class="fu" style="color: #4758AB;
background-color: null;
font-style: inherit;">nrow</span>(m)), <span class="at" style="color: #657422;
background-color: null;
font-style: inherit;">labels =</span> lab, <span class="at" style="color: #657422;
background-color: null;
font-style: inherit;">las =</span> <span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">1</span>, <span class="at" style="color: #657422;
background-color: null;
font-style: inherit;">cex.axis =</span> <span class="fl" style="color: #AD0000;
background-color: null;
font-style: inherit;">0.8</span>)</span>
<span id="cb14-12"><span class="cf" style="color: #003B4F;
background-color: null;
font-weight: bold;
font-style: inherit;">for</span> (i <span class="cf" style="color: #003B4F;
background-color: null;
font-weight: bold;
font-style: inherit;">in</span> <span class="fu" style="color: #4758AB;
background-color: null;
font-style: inherit;">seq_len</span>(<span class="fu" style="color: #4758AB;
background-color: null;
font-style: inherit;">nrow</span>(m))) <span class="cf" style="color: #003B4F;
background-color: null;
font-weight: bold;
font-style: inherit;">for</span> (j <span class="cf" style="color: #003B4F;
background-color: null;
font-weight: bold;
font-style: inherit;">in</span> <span class="fu" style="color: #4758AB;
background-color: null;
font-style: inherit;">seq_len</span>(<span class="fu" style="color: #4758AB;
background-color: null;
font-style: inherit;">ncol</span>(m))) {</span>
<span id="cb14-13">  <span class="cf" style="color: #003B4F;
background-color: null;
font-weight: bold;
font-style: inherit;">if</span> (<span class="fu" style="color: #4758AB;
background-color: null;
font-style: inherit;">is.na</span>(m[i, j])) <span class="fu" style="color: #4758AB;
background-color: null;
font-style: inherit;">text</span>(j, i, <span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"none"</span>, <span class="at" style="color: #657422;
background-color: null;
font-style: inherit;">col =</span> <span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"grey50"</span>, <span class="at" style="color: #657422;
background-color: null;
font-style: inherit;">cex =</span> <span class="fl" style="color: #AD0000;
background-color: null;
font-style: inherit;">0.8</span>)</span>
<span id="cb14-14">  <span class="cf" style="color: #003B4F;
background-color: null;
font-weight: bold;
font-style: inherit;">else</span> <span class="fu" style="color: #4758AB;
background-color: null;
font-style: inherit;">text</span>(j, i, <span class="fu" style="color: #4758AB;
background-color: null;
font-style: inherit;">sprintf</span>(<span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"%.2f"</span>, m[i, j]), <span class="at" style="color: #657422;
background-color: null;
font-style: inherit;">cex =</span> <span class="fl" style="color: #AD0000;
background-color: null;
font-style: inherit;">0.8</span>)</span>
<span id="cb14-15">}</span>
<span id="cb14-16"><span class="fu" style="color: #4758AB;
background-color: null;
font-style: inherit;">box</span>()</span></code></pre></div></div>
<div class="cell-output-display">
<div class="quarto-figure quarto-figure-center">
<figure class="figure">
<p><img src="https://im-research-yt.github.io/ja/articles/thsqca-beginners-2/index_files/figure-html/unnamed-chunk-8-1.png" class="img-fluid figure-img" alt="8行(3つの条件の定義、それぞれ6または7)と3列(アウトカムの閾値6、7、8)のヒートマップ。閾値6の列は8セルすべてが塗られ、カバレッジは0.37から0.71。閾値7の列で塗られているのは、品質とサービスがどちらも7の行の2セルだけで、どちらも0.66。閾値8の列はすべて、noneと表示されている。" width="768"></p>
<figcaption>二重閾値スイープの24セルにおける、解のカバレッジ。色が濃いほどカバレッジが高く、noneのセルは解がありません。</figcaption>
</figure>
</div>
</div>
<div class="code-copy-outer-scaffold"><div class="sourceCode cell-code" id="cb15" style="background: #f1f3f5;"><pre class="sourceCode r code-with-copy"><code class="sourceCode r"><span id="cb15-1"><span class="fu" style="color: #4758AB;
background-color: null;
font-style: inherit;">par</span>(op)</span></code></pre></div></div>
</div>
<p><code>LOY &gt;= 6</code> の列はすべての行で塗られ、<code>LOY &gt;= 7</code> の列は2行だけ、<code>LOY &gt;= 8</code> の列はどの行も塗られていません。</p>
</section>
<section id="スイープの大きさ" class="level2">
<h2 class="anchored" data-anchor-id="スイープの大きさ">スイープの大きさ</h2>
<p>すべてのセルが、1回分のQCA分析です。そのため、セルの数は、実行時間にも、結果の読みやすさにも関わります。</p>
<table class="caption-top table">
<thead>
<tr class="header">
<th>関数</th>
<th>分析の回数</th>
<th>例</th>
</tr>
</thead>
<tbody>
<tr class="odd">
<td><code>otSweep()</code></td>
<td>アウトカムの閾値ごとに1回</td>
<td>閾値5つ = 5回</td>
</tr>
<tr class="even">
<td><code>ctSweepS()</code></td>
<td>動かす条件の閾値ごとに1回</td>
<td>閾値5つ = 5回</td>
</tr>
<tr class="odd">
<td><code>ctSweepM()</code></td>
<td>候補の数の積</td>
<td>3 x 3 x 3 = 27回</td>
</tr>
<tr class="even">
<td><code>dtSweep()</code></td>
<td>アウトカムの閾値 x 条件の格子</td>
<td>3 x (3 x 3 x 3) = 81回</td>
</tr>
</tbody>
</table>
</section>
<section id="擁護できる範囲を選ぶ" class="level2">
<h2 class="anchored" data-anchor-id="擁護できる範囲を選ぶ">擁護できる範囲を選ぶ</h2>
<p>スイープは、簡単に実行できます。だからこそ、規律が必要です。たくさんの閾値を試して、都合のよいものだけを報告すれば、研究者の自由度を減らすどころか、増やしてしまいます。目安を挙げます。</p>
<ol type="1">
<li><strong>結果を見る前に、範囲を決める。</strong> 尺度の意味、理論、実務上の目標(たとえば「許容できる」「良い」「とても良い」)に基づいて決めます。</li>
<li><strong>基準点を含める。</strong> 通常の分析で使う閾値は、格子の中に入れておきます。読み手が比較できるようにするためです。</li>
<li><strong>中立の領域を避ける。</strong> 0〜10の尺度では、中点のあたりの得点は、誰にとっても、はっきり「高い」とは言えません。そのため、範囲は、たいてい、それより上から始めます。</li>
<li><strong>読める大きさに、格子を抑える。</strong> 変数ごとに、意味のある値を少し選ぶほうが、可能な値をすべて並べるより、よいです。</li>
<li><strong>端の事例数を確かめる。</strong> 格子の端のセルは、ごく少数の事例に支えられていることが、よくあります。</li>
<li><strong>格子全体を報告する。</strong> ストーリーに合うセルだけでなく、安定した領域も、不安定な領域も、示します。</li>
</ol>
</section>
<section id="次回" class="level2">
<h2 class="anchored" data-anchor-id="次回">次回</h2>
<p><a href="../../../ja/articles/thsqca-beginners-3/index.html">第3回</a>では、3種類の解(複雑解、倹約解、中間解)と、1つのセルに最小解が複数あるときの対処を扱います。</p>
<p><em>使ったソフトウェア: R 4.6.1、QCA 3.25.5、ThSQCA 2.0.9</em></p>


</section>

 ]]></description>
  <category>ThSQCA</category>
  <category>tutorial</category>
  <guid>https://im-research-yt.github.io/ja/articles/thsqca-beginners-2/</guid>
  <pubDate>Sun, 04 Oct 2026 15:00:00 GMT</pubDate>
  <media:content url="https://im-research-yt.github.io/ja/articles/thsqca-beginners-2/thumbnail.png" medium="image" type="image/png" height="76" width="144"/>
</item>
<item>
  <title>ThSQCA 入門 第3回: 解の種類と、複数の解</title>
  <dc:creator>Yuki Toyoda</dc:creator>
  <link>https://im-research-yt.github.io/ja/articles/thsqca-beginners-3/</link>
  <description><![CDATA[ 




<p><a href="../../../ja/articles/thsqca-beginners-2/index.html">第2回</a>では、4つのスイープをすべて実行しました。丁寧な分析には、まだ2つの問いが残っています。1つ目は、QCAには3種類の解(複雑解、倹約解、中間解)がありますが、どれを使うべきか、です。2つ目は、1つのセルに最小解が複数あるときは、どうするか、です。この回では、2つ目の、もっと小さな練習用データで、両方に答えます。</p>
<section id="つ目の練習用データ" class="level2">
<h2 class="anchored" data-anchor-id="つ目の練習用データ">2つ目の練習用データ</h2>
<p>企業向けソフトウェアのアカウントを、60件シミュレーションで作ります。各アカウントは、更新スコア(<code>RNW</code>)と、3つの評価をもちます。信頼(<code>TRU</code>)、価格(<code>PRC</code>)、サポート(<code>SUP</code>)で、どれも0〜10点です。この模擬の世界では、信頼が高く、かつ、価格かサポートのどちらかが高いときに、更新が高くなります。3つの評価は強く相関しているので、条件の組み合わせのうち、観察されないものが出てきます。これは意図的です。観察されない組み合わせこそ、3種類の解が、違う扱いをするものだからです。</p>
<div class="cell">
<div class="code-copy-outer-scaffold"><div class="sourceCode cell-code" id="cb1" style="background: #f1f3f5;"><pre class="sourceCode r code-with-copy"><code class="sourceCode r"><span id="cb1-1"><span class="fu" style="color: #4758AB;
background-color: null;
font-style: inherit;">library</span>(ThSQCA)</span>
<span id="cb1-2"><span class="fu" style="color: #4758AB;
background-color: null;
font-style: inherit;">library</span>(QCA)</span></code></pre></div></div>
<div class="cell-output cell-output-stderr">
<pre><code>Loading required package: admisc</code></pre>
</div>
<div class="cell-output cell-output-stderr">
<pre><code>
To cite package QCA in publications, please use:
  Dusa, Adrian (2019) QCA with R. A Comprehensive Resource.
  Springer International Publishing.</code></pre>
</div>
</div>
<div class="cell">
<details class="code-fold">
<summary>練習用データ2</summary>
<div class="code-copy-outer-scaffold"><div class="sourceCode cell-code" id="cb4" style="background: #f1f3f5;"><pre class="sourceCode r code-with-copy"><code class="sourceCode r"><span id="cb4-1">make_demo_data2 <span class="ot" style="color: #003B4F;
background-color: null;
font-style: inherit;">&lt;-</span> <span class="cf" style="color: #003B4F;
background-color: null;
font-weight: bold;
font-style: inherit;">function</span>(<span class="at" style="color: #657422;
background-color: null;
font-style: inherit;">n =</span> <span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">60</span>, <span class="at" style="color: #657422;
background-color: null;
font-style: inherit;">seed =</span> <span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">89</span>, <span class="at" style="color: #657422;
background-color: null;
font-style: inherit;">rho =</span> <span class="fl" style="color: #AD0000;
background-color: null;
font-style: inherit;">0.85</span>) {</span>
<span id="cb4-2">  <span class="fu" style="color: #4758AB;
background-color: null;
font-style: inherit;">set.seed</span>(seed)</span>
<span id="cb4-3">  clip <span class="ot" style="color: #003B4F;
background-color: null;
font-style: inherit;">&lt;-</span> <span class="cf" style="color: #003B4F;
background-color: null;
font-weight: bold;
font-style: inherit;">function</span>(x) <span class="fu" style="color: #4758AB;
background-color: null;
font-style: inherit;">pmin</span>(<span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">10</span>, <span class="fu" style="color: #4758AB;
background-color: null;
font-style: inherit;">pmax</span>(<span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">0</span>, <span class="fu" style="color: #4758AB;
background-color: null;
font-style: inherit;">round</span>(x)))</span>
<span id="cb4-4">  L   <span class="ot" style="color: #003B4F;
background-color: null;
font-style: inherit;">&lt;-</span> <span class="fu" style="color: #4758AB;
background-color: null;
font-style: inherit;">rnorm</span>(n)</span>
<span id="cb4-5">  mk  <span class="ot" style="color: #003B4F;
background-color: null;
font-style: inherit;">&lt;-</span> <span class="cf" style="color: #003B4F;
background-color: null;
font-weight: bold;
font-style: inherit;">function</span>() <span class="fu" style="color: #4758AB;
background-color: null;
font-style: inherit;">clip</span>(<span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">6</span> <span class="sc" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">+</span> <span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">2</span> <span class="sc" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">*</span> (rho <span class="sc" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">*</span> L <span class="sc" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">+</span> <span class="fu" style="color: #4758AB;
background-color: null;
font-style: inherit;">sqrt</span>(<span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">1</span> <span class="sc" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">-</span> rho<span class="sc" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">^</span><span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">2</span>) <span class="sc" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">*</span> <span class="fu" style="color: #4758AB;
background-color: null;
font-style: inherit;">rnorm</span>(n)))</span>
<span id="cb4-6">  TRU <span class="ot" style="color: #003B4F;
background-color: null;
font-style: inherit;">&lt;-</span> <span class="fu" style="color: #4758AB;
background-color: null;
font-style: inherit;">mk</span>(); PRC <span class="ot" style="color: #003B4F;
background-color: null;
font-style: inherit;">&lt;-</span> <span class="fu" style="color: #4758AB;
background-color: null;
font-style: inherit;">mk</span>(); SUP <span class="ot" style="color: #003B4F;
background-color: null;
font-style: inherit;">&lt;-</span> <span class="fu" style="color: #4758AB;
background-color: null;
font-style: inherit;">mk</span>()</span>
<span id="cb4-7">  RNW <span class="ot" style="color: #003B4F;
background-color: null;
font-style: inherit;">&lt;-</span> <span class="fu" style="color: #4758AB;
background-color: null;
font-style: inherit;">clip</span>(<span class="fu" style="color: #4758AB;
background-color: null;
font-style: inherit;">pmin</span>(TRU, <span class="fu" style="color: #4758AB;
background-color: null;
font-style: inherit;">pmax</span>(PRC, SUP)) <span class="sc" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">+</span> <span class="fu" style="color: #4758AB;
background-color: null;
font-style: inherit;">rnorm</span>(n, <span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">0</span>, <span class="fl" style="color: #AD0000;
background-color: null;
font-style: inherit;">0.7</span>))</span>
<span id="cb4-8">  <span class="fu" style="color: #4758AB;
background-color: null;
font-style: inherit;">data.frame</span>(RNW, TRU, PRC, SUP)</span>
<span id="cb4-9">}</span>
<span id="cb4-10"></span>
<span id="cb4-11">demo2 <span class="ot" style="color: #003B4F;
background-color: null;
font-style: inherit;">&lt;-</span> <span class="fu" style="color: #4758AB;
background-color: null;
font-style: inherit;">make_demo_data2</span>()</span>
<span id="cb4-12"><span class="fu" style="color: #4758AB;
background-color: null;
font-style: inherit;">head</span>(demo2)</span></code></pre></div></div>
</details>
<div class="cell-output cell-output-stdout">
<pre><code>  RNW TRU PRC SUP
1   3   3   4   4
2   6   8   7   7
3   9   9   9   7
4   5   5   4   6
5  10  10   8   9
6   1   2   4   5</code></pre>
</div>
</div>
</section>
<section id="観察されない組み合わせ論理残余" class="level2">
<h2 class="anchored" data-anchor-id="観察されない組み合わせ論理残余">観察されない組み合わせ(「論理残余」)</h2>
<p>条件が3つあり、それぞれが高いか低いかなら、可能な組み合わせは 2 x 2 x 2 = 8通りです。QCAは、それらを<strong>真理表</strong>に並べます。QCAパッケージで、真理表を手で作ってみましょう。アウトカムは更新が5以上、各条件の「高い」は7以上とします。</p>
<div class="cell">
<div class="code-copy-outer-scaffold"><div class="sourceCode cell-code" id="cb6" style="background: #f1f3f5;"><pre class="sourceCode r code-with-copy"><code class="sourceCode r"><span id="cb6-1">bin2 <span class="ot" style="color: #003B4F;
background-color: null;
font-style: inherit;">&lt;-</span> <span class="fu" style="color: #4758AB;
background-color: null;
font-style: inherit;">data.frame</span>(</span>
<span id="cb6-2">  <span class="at" style="color: #657422;
background-color: null;
font-style: inherit;">RNW =</span> <span class="fu" style="color: #4758AB;
background-color: null;
font-style: inherit;">as.integer</span>(demo2<span class="sc" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">$</span>RNW <span class="sc" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">&gt;=</span> <span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">5</span>),</span>
<span id="cb6-3">  <span class="at" style="color: #657422;
background-color: null;
font-style: inherit;">TRU =</span> <span class="fu" style="color: #4758AB;
background-color: null;
font-style: inherit;">as.integer</span>(demo2<span class="sc" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">$</span>TRU <span class="sc" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">&gt;=</span> <span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">7</span>),</span>
<span id="cb6-4">  <span class="at" style="color: #657422;
background-color: null;
font-style: inherit;">PRC =</span> <span class="fu" style="color: #4758AB;
background-color: null;
font-style: inherit;">as.integer</span>(demo2<span class="sc" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">$</span>PRC <span class="sc" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">&gt;=</span> <span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">7</span>),</span>
<span id="cb6-5">  <span class="at" style="color: #657422;
background-color: null;
font-style: inherit;">SUP =</span> <span class="fu" style="color: #4758AB;
background-color: null;
font-style: inherit;">as.integer</span>(demo2<span class="sc" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">$</span>SUP <span class="sc" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">&gt;=</span> <span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">7</span>)</span>
<span id="cb6-6">)</span>
<span id="cb6-7"></span>
<span id="cb6-8">tt2 <span class="ot" style="color: #003B4F;
background-color: null;
font-style: inherit;">&lt;-</span> <span class="fu" style="color: #4758AB;
background-color: null;
font-style: inherit;">truthTable</span>(bin2, <span class="at" style="color: #657422;
background-color: null;
font-style: inherit;">outcome =</span> <span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"RNW"</span>, <span class="at" style="color: #657422;
background-color: null;
font-style: inherit;">conditions =</span> <span class="fu" style="color: #4758AB;
background-color: null;
font-style: inherit;">c</span>(<span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"TRU"</span>, <span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"PRC"</span>, <span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"SUP"</span>),</span>
<span id="cb6-9">                  <span class="at" style="color: #657422;
background-color: null;
font-style: inherit;">incl.cut =</span> <span class="fl" style="color: #AD0000;
background-color: null;
font-style: inherit;">0.8</span>, <span class="at" style="color: #657422;
background-color: null;
font-style: inherit;">n.cut =</span> <span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">1</span>, <span class="at" style="color: #657422;
background-color: null;
font-style: inherit;">show.cases =</span> <span class="cn" style="color: #8f5902;
background-color: null;
font-style: inherit;">FALSE</span>)</span>
<span id="cb6-10">tt2</span></code></pre></div></div>
<div class="cell-output cell-output-stdout">
<pre><code>
  OUT: output value
    n: number of cases in configuration
 incl: sufficiency inclusion score
  PRI: proportional reduction in inconsistency

    TRU PRC SUP   OUT    n   incl  PRI  
1    0   0   0     0     30  0.433 0.433
2    0   0   1     1     7   0.857 0.857
4    0   1   1     1     3   1.000 1.000
6    1   0   1     1     3   1.000 1.000
7    1   1   0     1     4   1.000 1.000
8    1   1   1     1     13  1.000 1.000</code></pre>
</div>
</div>
<p>左側の行番号を見てください。可能な8通りのうち、現れるのは6通りだけです(3行目と5行目がありません)。たとえば、信頼だけが高いアカウントや、価格の評価だけが高いアカウントが、データにないからです。欠けている組み合わせが、<strong>論理残余</strong>です。列 <code>n</code> は、各組み合わせのアカウント数、<code>incl</code> は、それらがどれだけ一貫して更新しているか、<code>OUT</code> は、組み合わせが十分と認められるだけの一貫性があるとき1になります。</p>
<p>件数を棒グラフにすると、欠けている組み合わせがすぐ分かります。1本の棒が、可能な8通りのうちの1つで、真理表の行と同じ順に並べています。図の中の語は英語のままです。</p>
<div class="cell">
<div class="code-copy-outer-scaffold"><div class="sourceCode cell-code" id="cb8" style="background: #f1f3f5;"><pre class="sourceCode r code-with-copy"><code class="sourceCode r"><span id="cb8-1">cells <span class="ot" style="color: #003B4F;
background-color: null;
font-style: inherit;">&lt;-</span> <span class="fu" style="color: #4758AB;
background-color: null;
font-style: inherit;">expand.grid</span>(<span class="at" style="color: #657422;
background-color: null;
font-style: inherit;">SUP =</span> <span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">0</span><span class="sc" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">:</span><span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">1</span>, <span class="at" style="color: #657422;
background-color: null;
font-style: inherit;">PRC =</span> <span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">0</span><span class="sc" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">:</span><span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">1</span>, <span class="at" style="color: #657422;
background-color: null;
font-style: inherit;">TRU =</span> <span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">0</span><span class="sc" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">:</span><span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">1</span>)[, <span class="fu" style="color: #4758AB;
background-color: null;
font-style: inherit;">c</span>(<span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"TRU"</span>, <span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"PRC"</span>, <span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"SUP"</span>)]</span>
<span id="cb8-2">cells<span class="sc" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">$</span>n <span class="ot" style="color: #003B4F;
background-color: null;
font-style: inherit;">&lt;-</span> <span class="fu" style="color: #4758AB;
background-color: null;
font-style: inherit;">mapply</span>(<span class="cf" style="color: #003B4F;
background-color: null;
font-weight: bold;
font-style: inherit;">function</span>(a, b, c) <span class="fu" style="color: #4758AB;
background-color: null;
font-style: inherit;">sum</span>(bin2<span class="sc" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">$</span>TRU <span class="sc" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">==</span> a <span class="sc" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">&amp;</span> bin2<span class="sc" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">$</span>PRC <span class="sc" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">==</span> b <span class="sc" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">&amp;</span> bin2<span class="sc" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">$</span>SUP <span class="sc" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">==</span> c),</span>
<span id="cb8-3">                  cells<span class="sc" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">$</span>TRU, cells<span class="sc" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">$</span>PRC, cells<span class="sc" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">$</span>SUP)</span>
<span id="cb8-4">cells<span class="sc" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">$</span>label <span class="ot" style="color: #003B4F;
background-color: null;
font-style: inherit;">&lt;-</span> <span class="fu" style="color: #4758AB;
background-color: null;
font-style: inherit;">paste0</span>(<span class="fu" style="color: #4758AB;
background-color: null;
font-style: inherit;">ifelse</span>(cells<span class="sc" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">$</span>TRU <span class="sc" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">==</span> <span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">1</span>, <span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"TRU"</span>, <span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"~TRU"</span>), <span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"*"</span>,</span>
<span id="cb8-5">                      <span class="fu" style="color: #4758AB;
background-color: null;
font-style: inherit;">ifelse</span>(cells<span class="sc" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">$</span>PRC <span class="sc" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">==</span> <span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">1</span>, <span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"PRC"</span>, <span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"~PRC"</span>), <span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"*"</span>,</span>
<span id="cb8-6">                      <span class="fu" style="color: #4758AB;
background-color: null;
font-style: inherit;">ifelse</span>(cells<span class="sc" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">$</span>SUP <span class="sc" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">==</span> <span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">1</span>, <span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"SUP"</span>, <span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"~SUP"</span>))</span>
<span id="cb8-7"></span>
<span id="cb8-8">op <span class="ot" style="color: #003B4F;
background-color: null;
font-style: inherit;">&lt;-</span> <span class="fu" style="color: #4758AB;
background-color: null;
font-style: inherit;">par</span>(<span class="at" style="color: #657422;
background-color: null;
font-style: inherit;">mar =</span> <span class="fu" style="color: #4758AB;
background-color: null;
font-style: inherit;">c</span>(<span class="fl" style="color: #AD0000;
background-color: null;
font-style: inherit;">4.5</span>, <span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">9</span>, <span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">3</span>, <span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">1</span>))</span>
<span id="cb8-9">n_rev <span class="ot" style="color: #003B4F;
background-color: null;
font-style: inherit;">&lt;-</span> <span class="fu" style="color: #4758AB;
background-color: null;
font-style: inherit;">rev</span>(cells<span class="sc" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">$</span>n)</span>
<span id="cb8-10">bp <span class="ot" style="color: #003B4F;
background-color: null;
font-style: inherit;">&lt;-</span> <span class="fu" style="color: #4758AB;
background-color: null;
font-style: inherit;">barplot</span>(n_rev, <span class="at" style="color: #657422;
background-color: null;
font-style: inherit;">horiz =</span> <span class="cn" style="color: #8f5902;
background-color: null;
font-style: inherit;">TRUE</span>, <span class="at" style="color: #657422;
background-color: null;
font-style: inherit;">names.arg =</span> <span class="fu" style="color: #4758AB;
background-color: null;
font-style: inherit;">rev</span>(cells<span class="sc" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">$</span>label), <span class="at" style="color: #657422;
background-color: null;
font-style: inherit;">las =</span> <span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">1</span>,</span>
<span id="cb8-11">              <span class="at" style="color: #657422;
background-color: null;
font-style: inherit;">col =</span> <span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"#233A9A"</span>, <span class="at" style="color: #657422;
background-color: null;
font-style: inherit;">xlim =</span> <span class="fu" style="color: #4758AB;
background-color: null;
font-style: inherit;">c</span>(<span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">0</span>, <span class="fu" style="color: #4758AB;
background-color: null;
font-style: inherit;">max</span>(cells<span class="sc" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">$</span>n) <span class="sc" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">*</span> <span class="fl" style="color: #AD0000;
background-color: null;
font-style: inherit;">1.35</span>),</span>
<span id="cb8-12">              <span class="at" style="color: #657422;
background-color: null;
font-style: inherit;">xlab =</span> <span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"Number of accounts"</span>,</span>
<span id="cb8-13">              <span class="at" style="color: #657422;
background-color: null;
font-style: inherit;">main =</span> <span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"Accounts per combination"</span>)</span>
<span id="cb8-14"><span class="cf" style="color: #003B4F;
background-color: null;
font-weight: bold;
font-style: inherit;">for</span> (i <span class="cf" style="color: #003B4F;
background-color: null;
font-weight: bold;
font-style: inherit;">in</span> <span class="fu" style="color: #4758AB;
background-color: null;
font-style: inherit;">seq_along</span>(n_rev)) {</span>
<span id="cb8-15">  <span class="cf" style="color: #003B4F;
background-color: null;
font-weight: bold;
font-style: inherit;">if</span> (n_rev[i] <span class="sc" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">==</span> <span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">0</span>) {</span>
<span id="cb8-16">    <span class="fu" style="color: #4758AB;
background-color: null;
font-style: inherit;">text</span>(<span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">0</span>, bp[i], <span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"not observed (remainder)"</span>, <span class="at" style="color: #657422;
background-color: null;
font-style: inherit;">pos =</span> <span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">4</span>, <span class="at" style="color: #657422;
background-color: null;
font-style: inherit;">col =</span> <span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"#B45309"</span>, <span class="at" style="color: #657422;
background-color: null;
font-style: inherit;">cex =</span> <span class="fl" style="color: #AD0000;
background-color: null;
font-style: inherit;">0.9</span>, <span class="at" style="color: #657422;
background-color: null;
font-style: inherit;">font =</span> <span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">2</span>)</span>
<span id="cb8-17">  } <span class="cf" style="color: #003B4F;
background-color: null;
font-weight: bold;
font-style: inherit;">else</span> {</span>
<span id="cb8-18">    <span class="fu" style="color: #4758AB;
background-color: null;
font-style: inherit;">text</span>(n_rev[i], bp[i], n_rev[i], <span class="at" style="color: #657422;
background-color: null;
font-style: inherit;">pos =</span> <span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">4</span>, <span class="at" style="color: #657422;
background-color: null;
font-style: inherit;">cex =</span> <span class="fl" style="color: #AD0000;
background-color: null;
font-style: inherit;">0.9</span>)</span>
<span id="cb8-19">  }</span>
<span id="cb8-20">}</span></code></pre></div></div>
<div class="cell-output-display">
<div class="quarto-figure quarto-figure-center">
<figure class="figure">
<p><img src="https://im-research-yt.github.io/ja/articles/thsqca-beginners-3/index_files/figure-html/unnamed-chunk-4-1.png" class="img-fluid figure-img" alt="8通りの組み合わせの横棒グラフ。3つとも高くない組み合わせは30アカウント、サポートだけが高いものは7、価格とサポートが高く信頼が高くないものは3、信頼とサポートが高く価格が高くないものは3、信頼と価格が高くサポートが高くないものは4、3つとも高いものは13。価格だけが高い組み合わせと、信頼だけが高い組み合わせは0件で、not observedと表示されている。" width="672"></p>
<figcaption>信頼、価格、サポートの高低の、可能な8通りの組み合わせごとのアカウント数。2つの組み合わせは観察されていません。</figcaption>
</figure>
</div>
</div>
<div class="code-copy-outer-scaffold"><div class="sourceCode cell-code" id="cb9" style="background: #f1f3f5;"><pre class="sourceCode r code-with-copy"><code class="sourceCode r"><span id="cb9-1"><span class="fu" style="color: #4758AB;
background-color: null;
font-style: inherit;">par</span>(op)</span></code></pre></div></div>
</div>
<p>アカウントが0件の2つの組み合わせが、残余です。Boolean最小化には、それらを確かめる事例がないので、解の種類ごとに、残余の扱いを決めることになります。</p>
<p>残余が重要なのは、Boolean最小化が、式を短くするために、残余を使えるからです。3種類の解は、残余を使うかどうか、どう使うかが違います。</p>
<table class="caption-top table">
<colgroup>
<col style="width: 25%">
<col style="width: 25%">
<col style="width: 25%">
<col style="width: 25%">
</colgroup>
<thead>
<tr class="header">
<th>解の種類</th>
<th>使う残余</th>
<th><code>include</code></th>
<th><code>dir.exp</code></th>
</tr>
</thead>
<tbody>
<tr class="odd">
<td>複雑解</td>
<td>なし</td>
<td><code>""</code>(既定)</td>
<td><code>NULL</code></td>
</tr>
<tr class="even">
<td>倹約解</td>
<td>式を短くする、すべての残余</td>
<td><code>"?"</code></td>
<td><code>NULL</code></td>
</tr>
<tr class="odd">
<td>中間解</td>
<td>自分が述べた期待と合う残余だけ</td>
<td><code>"?"</code></td>
<td>たとえば <code>c(1, 1, 1)</code></td>
</tr>
</tbody>
</table>
<p>ここで <code>dir.exp = c(1, 1, 1)</code> は、「信頼が高いこと、価格の評価が高いこと、サポートが高いことは、どれも更新に有利だと期待する」という意味です。</p>
</section>
<section id="種類の解を並べる" class="level2">
<h2 class="anchored" data-anchor-id="種類の解を並べる">3種類の解を並べる</h2>
<p>同じアウトカム閾値スイープ(更新が5、6、7、8)を、解の種類だけ変えて、3回実行します。</p>
<div class="cell">
<div class="code-copy-outer-scaffold"><div class="sourceCode cell-code" id="cb10" style="background: #f1f3f5;"><pre class="sourceCode r code-with-copy"><code class="sourceCode r"><span id="cb10-1">thr2  <span class="ot" style="color: #003B4F;
background-color: null;
font-style: inherit;">&lt;-</span> <span class="fu" style="color: #4758AB;
background-color: null;
font-style: inherit;">c</span>(<span class="at" style="color: #657422;
background-color: null;
font-style: inherit;">TRU =</span> <span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">7</span>, <span class="at" style="color: #657422;
background-color: null;
font-style: inherit;">PRC =</span> <span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">7</span>, <span class="at" style="color: #657422;
background-color: null;
font-style: inherit;">SUP =</span> <span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">7</span>)</span>
<span id="cb10-2">cond2 <span class="ot" style="color: #003B4F;
background-color: null;
font-style: inherit;">&lt;-</span> <span class="fu" style="color: #4758AB;
background-color: null;
font-style: inherit;">c</span>(<span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"TRU"</span>, <span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"PRC"</span>, <span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"SUP"</span>)</span>
<span id="cb10-3"></span>
<span id="cb10-4">run2 <span class="ot" style="color: #003B4F;
background-color: null;
font-style: inherit;">&lt;-</span> <span class="cf" style="color: #003B4F;
background-color: null;
font-weight: bold;
font-style: inherit;">function</span>(...) {</span>
<span id="cb10-5">  <span class="fu" style="color: #4758AB;
background-color: null;
font-style: inherit;">otSweep</span>(<span class="at" style="color: #657422;
background-color: null;
font-style: inherit;">dat =</span> demo2, <span class="at" style="color: #657422;
background-color: null;
font-style: inherit;">outcome =</span> <span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"RNW"</span>, <span class="at" style="color: #657422;
background-color: null;
font-style: inherit;">conditions =</span> cond2, <span class="at" style="color: #657422;
background-color: null;
font-style: inherit;">sweep_range =</span> <span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">5</span><span class="sc" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">:</span><span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">8</span>,</span>
<span id="cb10-6">          <span class="at" style="color: #657422;
background-color: null;
font-style: inherit;">thrX =</span> thr2, <span class="at" style="color: #657422;
background-color: null;
font-style: inherit;">incl.cut =</span> <span class="fl" style="color: #AD0000;
background-color: null;
font-style: inherit;">0.8</span>, <span class="at" style="color: #657422;
background-color: null;
font-style: inherit;">n.cut =</span> <span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">1</span>, ...)</span>
<span id="cb10-7">}</span>
<span id="cb10-8"></span>
<span id="cb10-9">res_cx <span class="ot" style="color: #003B4F;
background-color: null;
font-style: inherit;">&lt;-</span> <span class="fu" style="color: #4758AB;
background-color: null;
font-style: inherit;">run2</span>()                                     <span class="co" style="color: #5E5E5E;
background-color: null;
font-style: inherit;"># complex</span></span>
<span id="cb10-10">res_ps <span class="ot" style="color: #003B4F;
background-color: null;
font-style: inherit;">&lt;-</span> <span class="fu" style="color: #4758AB;
background-color: null;
font-style: inherit;">run2</span>(<span class="at" style="color: #657422;
background-color: null;
font-style: inherit;">include =</span> <span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"?"</span>)                        <span class="co" style="color: #5E5E5E;
background-color: null;
font-style: inherit;"># parsimonious</span></span></code></pre></div></div>
<div class="cell-output cell-output-stderr">
<pre><code>Warning: Multiple equivalent solutions exist for thrY = 5 (n_solutions &gt; 1).
Only the first solution (M1) and its fit metrics are shown. Use
generate_report() for full analysis.</code></pre>
</div>
<div class="code-copy-outer-scaffold"><div class="sourceCode cell-code" id="cb12" style="background: #f1f3f5;"><pre class="sourceCode r code-with-copy"><code class="sourceCode r"><span id="cb12-1">res_im <span class="ot" style="color: #003B4F;
background-color: null;
font-style: inherit;">&lt;-</span> <span class="fu" style="color: #4758AB;
background-color: null;
font-style: inherit;">run2</span>(<span class="at" style="color: #657422;
background-color: null;
font-style: inherit;">include =</span> <span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"?"</span>, <span class="at" style="color: #657422;
background-color: null;
font-style: inherit;">dir.exp =</span> <span class="fu" style="color: #4758AB;
background-color: null;
font-style: inherit;">c</span>(<span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">1</span>, <span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">1</span>, <span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">1</span>))  <span class="co" style="color: #5E5E5E;
background-color: null;
font-style: inherit;"># intermediate</span></span>
<span id="cb12-2"></span>
<span id="cb12-3"><span class="fu" style="color: #4758AB;
background-color: null;
font-style: inherit;">data.frame</span>(</span>
<span id="cb12-4">  <span class="at" style="color: #657422;
background-color: null;
font-style: inherit;">thrY         =</span> <span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">5</span><span class="sc" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">:</span><span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">8</span>,</span>
<span id="cb12-5">  <span class="at" style="color: #657422;
background-color: null;
font-style: inherit;">complex      =</span> res_cx<span class="sc" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">$</span>summary<span class="sc" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">$</span>expression,</span>
<span id="cb12-6">  <span class="at" style="color: #657422;
background-color: null;
font-style: inherit;">parsimonious =</span> res_ps<span class="sc" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">$</span>summary<span class="sc" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">$</span>expression,</span>
<span id="cb12-7">  <span class="at" style="color: #657422;
background-color: null;
font-style: inherit;">intermediate =</span> res_im<span class="sc" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">$</span>summary<span class="sc" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">$</span>expression</span>
<span id="cb12-8">)</span></code></pre></div></div>
<div class="cell-output cell-output-stdout">
<pre><code>  thrY            complex   parsimonious       intermediate
1    5      SUP + TRU*PRC      TRU + SUP      SUP + TRU*PRC
2    6 TRU*PRC + ~PRC*SUP TRU + ~PRC*SUP TRU*PRC + ~PRC*SUP
3    7            TRU*SUP        TRU*SUP            TRU*SUP
4    8        No solution    No solution        No solution</code></pre>
</div>
</div>
<p>出力と一緒に表示される警告は、ThSQCAからの注意です。更新が5のとき、倹約解の分析には、同じ長さの解が複数あります。これは、後で扱います。</p>
<p>更新が7のときは、3つとも一致して(<code>TRU*SUP</code>)、8ではどれも解がありません。5と6では、倹約解のほうが短くなります。たとえば、更新が5のとき、倹約解は <code>TRU + SUP</code> ですが、複雑解は <code>SUP + TRU*PRC</code> です。<code>TRU</code> だけの項は、「信頼は高いが、価格とサポートの評価が低い」という組み合わせをカバーしますが、この組み合わせは、データに現れません。倹約解は、この観察されない組み合わせも十分だろう、と仮定する立場です。複雑解は、そのような仮定を置きません。このデータでは、たまたま、中間解は複雑解と一致します。</p>
<p>選び方です。</p>
<table class="caption-top table">
<colgroup>
<col style="width: 25%">
<col style="width: 25%">
<col style="width: 25%">
<col style="width: 25%">
</colgroup>
<thead>
<tr class="header">
<th>解</th>
<th>向いている場面</th>
<th>強み</th>
<th>注意</th>
</tr>
</thead>
<tbody>
<tr class="odd">
<td>複雑解</td>
<td>探索。観察されない事例に仮定を置きたくないとき</td>
<td>すべての主張が、観察された事例に基づく</td>
<td>式が長くなることがある</td>
</tr>
<tr class="even">
<td>倹約解</td>
<td>最大限の単純化を見たいとき</td>
<td>式がいちばん短い</td>
<td>もっともらしくない残余に頼ることがある</td>
</tr>
<tr class="odd">
<td>中間解</td>
<td>理論に基づいて報告するとき</td>
<td>もっともらしい残余だけを使う</td>
<td>根拠のある <code>dir.exp</code> が要る</td>
</tr>
</tbody>
</table>
<p>どれを選んでも、スイープ全体で同じものを使い、どれを使ったかを書いてください。</p>
</section>
<section id="つのセルに最小解が複数あるとき" class="level2">
<h2 class="anchored" data-anchor-id="つのセルに最小解が複数あるとき">1つのセルに、最小解が複数あるとき</h2>
<p>Boolean最小化は、同じ真理表から、同じ長さの解を複数返すことがあります。既定では、ThSQCAは最初の1つ(<code>M1</code>)を報告し、解の数を <code>n_solutions</code> に記録します。すべてを見るには、<code>extract_mode = "all"</code> を使います。</p>
<div class="cell">
<div class="code-copy-outer-scaffold"><div class="sourceCode cell-code" id="cb14" style="background: #f1f3f5;"><pre class="sourceCode r code-with-copy"><code class="sourceCode r"><span id="cb14-1">res_all <span class="ot" style="color: #003B4F;
background-color: null;
font-style: inherit;">&lt;-</span> <span class="fu" style="color: #4758AB;
background-color: null;
font-style: inherit;">run2</span>(<span class="at" style="color: #657422;
background-color: null;
font-style: inherit;">include =</span> <span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"?"</span>, <span class="at" style="color: #657422;
background-color: null;
font-style: inherit;">extract_mode =</span> <span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"all"</span>)</span></code></pre></div></div>
<div class="cell-output cell-output-stderr">
<pre><code>Warning: Multiple equivalent solutions exist for thrY = 5 (n_solutions &gt; 1).
Only the first solution (M1) and its fit metrics are shown. Use
generate_report() for full analysis.</code></pre>
</div>
<div class="code-copy-outer-scaffold"><div class="sourceCode cell-code" id="cb16" style="background: #f1f3f5;"><pre class="sourceCode r code-with-copy"><code class="sourceCode r"><span id="cb16-1"><span class="fu" style="color: #4758AB;
background-color: null;
font-style: inherit;">summary</span>(res_all)</span></code></pre></div></div>
<div class="cell-output cell-output-stdout">
<pre><code>OTS Summary
=========== 

Analysis Parameters:
  Outcome: RNW 
  Conditions: TRU, PRC, SUP 
  Consistency cutoff: 0.8 
  Frequency cutoff: 1 

Results by Threshold:

 thrY                   expression inclS  covS n_solutions
    5 M1: TRU + SUP; M2: PRC + SUP 0.967 0.690           2
    6           M1: TRU + ~PRC*SUP 0.963 0.788           1
    7                  M1: TRU*SUP 0.875 0.667           1
    8                  No solution    NA    NA           0

Note: 1 threshold setting(s) had multiple solutions.
      Use generate_report() for full details.</code></pre>
</div>
</div>
<p>更新が5のとき、倹約解の分析は、等しく最小な2つの解、<code>TRU + SUP</code> と <code>PRC + SUP</code> を見つけます。それぞれが、別の観察されない組み合わせに頼っているので、データだけでは、どちらかを優先できません。ThSQCAは、このようなとき、注意を表示します。</p>
<p>コンパクトに見たいときは、<code>extract_mode = "essential"</code> を使います。すべての解に含まれる項と、それ以外を分けます。</p>
<div class="cell">
<div class="code-copy-outer-scaffold"><div class="sourceCode cell-code" id="cb18" style="background: #f1f3f5;"><pre class="sourceCode r code-with-copy"><code class="sourceCode r"><span id="cb18-1">res_ess <span class="ot" style="color: #003B4F;
background-color: null;
font-style: inherit;">&lt;-</span> <span class="fu" style="color: #4758AB;
background-color: null;
font-style: inherit;">run2</span>(<span class="at" style="color: #657422;
background-color: null;
font-style: inherit;">include =</span> <span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"?"</span>, <span class="at" style="color: #657422;
background-color: null;
font-style: inherit;">extract_mode =</span> <span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"essential"</span>)</span></code></pre></div></div>
<div class="cell-output cell-output-stderr">
<pre><code>Warning: Multiple equivalent solutions exist for thrY = 5 (n_solutions &gt; 1).
Only the first solution (M1) and its fit metrics are shown. Use
generate_report() for full analysis.</code></pre>
</div>
<div class="code-copy-outer-scaffold"><div class="sourceCode cell-code" id="cb20" style="background: #f1f3f5;"><pre class="sourceCode r code-with-copy"><code class="sourceCode r"><span id="cb20-1">res_ess<span class="sc" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">$</span>summary[, <span class="fu" style="color: #4758AB;
background-color: null;
font-style: inherit;">c</span>(<span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"thrY"</span>, <span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"expression"</span>, <span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"selective_terms"</span>,</span>
<span id="cb20-2">                    <span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"unique_terms"</span>, <span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"n_solutions"</span>)]</span></code></pre></div></div>
<div class="cell-output cell-output-stdout">
<pre><code>  thrY     expression selective_terms   unique_terms n_solutions
1    5            SUP       TRU + PRC M1:TRU; M2:PRC           2
2    6 TRU + ~PRC*SUP            &lt;NA&gt;           &lt;NA&gt;           1
3    7        TRU*SUP            &lt;NA&gt;           &lt;NA&gt;           1
4    8    No solution            &lt;NA&gt;           &lt;NA&gt;           0</code></pre>
</div>
</div>
<table class="caption-top table">
<thead>
<tr class="header">
<th>項の種類</th>
<th>意味</th>
<th>ここでは(更新が5)</th>
</tr>
</thead>
<tbody>
<tr class="odd">
<td>本質項(essential)</td>
<td>すべての解に含まれる</td>
<td><code>SUP</code></td>
</tr>
<tr class="even">
<td>選択項(selective)</td>
<td>一部の解に含まれる</td>
<td><code>TRU</code> と <code>PRC</code></td>
</tr>
<tr class="odd">
<td>固有項(unique)</td>
<td>1つの解にだけ含まれる</td>
<td>M1では <code>TRU</code>、M2では <code>PRC</code></td>
</tr>
</tbody>
</table>
<p>ThSQCAは、代替案を記録します。しかし、どれを優先するかは、理論的な判断で、研究者に残されます。</p>
</section>
<section id="次回" class="level2">
<h2 class="anchored" data-anchor-id="次回">次回</h2>
<p>最終回の<a href="../../../ja/articles/thsqca-beginners-4/index.html">第4回</a>では、結果を報告できる形にします。Markdown形式のレポート、構成図、QCAパッケージとの照合です。</p>
<p><em>使ったソフトウェア: R 4.6.1、QCA 3.25.5、ThSQCA 2.0.9</em></p>


</section>

 ]]></description>
  <category>ThSQCA</category>
  <category>tutorial</category>
  <guid>https://im-research-yt.github.io/ja/articles/thsqca-beginners-3/</guid>
  <pubDate>Sun, 04 Oct 2026 15:00:00 GMT</pubDate>
  <media:content url="https://im-research-yt.github.io/ja/articles/thsqca-beginners-3/thumbnail.png" medium="image" type="image/png" height="76" width="144"/>
</item>
<item>
  <title>ThSQCA 入門 第4回: 結果の報告と確認</title>
  <dc:creator>Yuki Toyoda</dc:creator>
  <link>https://im-research-yt.github.io/ja/articles/thsqca-beginners-4/</link>
  <description><![CDATA[ 




<p>最初の3回では、スイープを実行して、読み方を学びました。最終回では、スイープを、報告でき、擁護できる形にします。何を探索したかの記録、構成図、そして、数値がQCAパッケージと一致することの確認です。</p>
<div class="cell">
<div class="code-copy-outer-scaffold"><div class="sourceCode cell-code" id="cb1" style="background: #f1f3f5;"><pre class="sourceCode r code-with-copy"><code class="sourceCode r"><span id="cb1-1"><span class="fu" style="color: #4758AB;
background-color: null;
font-style: inherit;">library</span>(ThSQCA)</span>
<span id="cb1-2"><span class="fu" style="color: #4758AB;
background-color: null;
font-style: inherit;">library</span>(QCA)</span></code></pre></div></div>
<div class="cell-output cell-output-stderr">
<pre><code>Loading required package: admisc</code></pre>
</div>
<div class="cell-output cell-output-stderr">
<pre><code>
To cite package QCA in publications, please use:
  Dusa, Adrian (2019) QCA with R. A Comprehensive Resource.
  Springer International Publishing.</code></pre>
</div>
</div>
<div class="cell">
<details class="code-fold">
<summary>練習用データ(第1回と同じ)</summary>
<div class="code-copy-outer-scaffold"><div class="sourceCode cell-code" id="cb4" style="background: #f1f3f5;"><pre class="sourceCode r code-with-copy"><code class="sourceCode r"><span id="cb4-1">make_demo_data <span class="ot" style="color: #003B4F;
background-color: null;
font-style: inherit;">&lt;-</span> <span class="cf" style="color: #003B4F;
background-color: null;
font-weight: bold;
font-style: inherit;">function</span>(<span class="at" style="color: #657422;
background-color: null;
font-style: inherit;">n =</span> <span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">400</span>, <span class="at" style="color: #657422;
background-color: null;
font-style: inherit;">seed =</span> <span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">2026</span>) {</span>
<span id="cb4-2">  <span class="fu" style="color: #4758AB;
background-color: null;
font-style: inherit;">set.seed</span>(seed)</span>
<span id="cb4-3">  clip <span class="ot" style="color: #003B4F;
background-color: null;
font-style: inherit;">&lt;-</span> <span class="cf" style="color: #003B4F;
background-color: null;
font-weight: bold;
font-style: inherit;">function</span>(x) <span class="fu" style="color: #4758AB;
background-color: null;
font-style: inherit;">pmin</span>(<span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">10</span>, <span class="fu" style="color: #4758AB;
background-color: null;
font-style: inherit;">pmax</span>(<span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">0</span>, <span class="fu" style="color: #4758AB;
background-color: null;
font-style: inherit;">round</span>(x)))</span>
<span id="cb4-4">  QUA <span class="ot" style="color: #003B4F;
background-color: null;
font-style: inherit;">&lt;-</span> <span class="fu" style="color: #4758AB;
background-color: null;
font-style: inherit;">clip</span>(<span class="fu" style="color: #4758AB;
background-color: null;
font-style: inherit;">rnorm</span>(n, <span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">6</span>, <span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">2</span>))</span>
<span id="cb4-5">  SER <span class="ot" style="color: #003B4F;
background-color: null;
font-style: inherit;">&lt;-</span> <span class="fu" style="color: #4758AB;
background-color: null;
font-style: inherit;">clip</span>(<span class="fu" style="color: #4758AB;
background-color: null;
font-style: inherit;">rnorm</span>(n, <span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">6</span>, <span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">2</span>))</span>
<span id="cb4-6">  ENV <span class="ot" style="color: #003B4F;
background-color: null;
font-style: inherit;">&lt;-</span> <span class="fu" style="color: #4758AB;
background-color: null;
font-style: inherit;">clip</span>(<span class="fu" style="color: #4758AB;
background-color: null;
font-style: inherit;">rnorm</span>(n, <span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">6</span>, <span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">2</span>))</span>
<span id="cb4-7">  core <span class="ot" style="color: #003B4F;
background-color: null;
font-style: inherit;">&lt;-</span> <span class="fu" style="color: #4758AB;
background-color: null;
font-style: inherit;">pmax</span>(<span class="fu" style="color: #4758AB;
background-color: null;
font-style: inherit;">pmin</span>(QUA, SER), <span class="fu" style="color: #4758AB;
background-color: null;
font-style: inherit;">pmin</span>(QUA, ENV) <span class="sc" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">-</span> <span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">1</span>)</span>
<span id="cb4-8">  LOY  <span class="ot" style="color: #003B4F;
background-color: null;
font-style: inherit;">&lt;-</span> <span class="fu" style="color: #4758AB;
background-color: null;
font-style: inherit;">clip</span>(core <span class="sc" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">+</span> <span class="fu" style="color: #4758AB;
background-color: null;
font-style: inherit;">rnorm</span>(n, <span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">0</span>, <span class="fl" style="color: #AD0000;
background-color: null;
font-style: inherit;">0.7</span>))</span>
<span id="cb4-9">  <span class="fu" style="color: #4758AB;
background-color: null;
font-style: inherit;">data.frame</span>(LOY, QUA, SER, ENV)</span>
<span id="cb4-10">}</span>
<span id="cb4-11"></span>
<span id="cb4-12">demo <span class="ot" style="color: #003B4F;
background-color: null;
font-style: inherit;">&lt;-</span> <span class="fu" style="color: #4758AB;
background-color: null;
font-style: inherit;">make_demo_data</span>()</span></code></pre></div></div>
</details>
</div>
<p>第1回のアウトカム閾値スイープを、再び使います。今回は、レポートに必要な、完全な詳細を求めます。</p>
<div class="cell">
<div class="code-copy-outer-scaffold"><div class="sourceCode cell-code" id="cb5" style="background: #f1f3f5;"><pre class="sourceCode r code-with-copy"><code class="sourceCode r"><span id="cb5-1">res_ots <span class="ot" style="color: #003B4F;
background-color: null;
font-style: inherit;">&lt;-</span> <span class="fu" style="color: #4758AB;
background-color: null;
font-style: inherit;">otSweep</span>(</span>
<span id="cb5-2">  <span class="at" style="color: #657422;
background-color: null;
font-style: inherit;">dat            =</span> demo,</span>
<span id="cb5-3">  <span class="at" style="color: #657422;
background-color: null;
font-style: inherit;">outcome        =</span> <span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"LOY"</span>,</span>
<span id="cb5-4">  <span class="at" style="color: #657422;
background-color: null;
font-style: inherit;">conditions     =</span> <span class="fu" style="color: #4758AB;
background-color: null;
font-style: inherit;">c</span>(<span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"QUA"</span>, <span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"SER"</span>, <span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"ENV"</span>),</span>
<span id="cb5-5">  <span class="at" style="color: #657422;
background-color: null;
font-style: inherit;">sweep_range    =</span> <span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">5</span><span class="sc" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">:</span><span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">8</span>,</span>
<span id="cb5-6">  <span class="at" style="color: #657422;
background-color: null;
font-style: inherit;">thrX           =</span> <span class="fu" style="color: #4758AB;
background-color: null;
font-style: inherit;">c</span>(<span class="at" style="color: #657422;
background-color: null;
font-style: inherit;">QUA =</span> <span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">7</span>, <span class="at" style="color: #657422;
background-color: null;
font-style: inherit;">SER =</span> <span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">7</span>, <span class="at" style="color: #657422;
background-color: null;
font-style: inherit;">ENV =</span> <span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">7</span>),</span>
<span id="cb5-7">  <span class="at" style="color: #657422;
background-color: null;
font-style: inherit;">incl.cut       =</span> <span class="fl" style="color: #AD0000;
background-color: null;
font-style: inherit;">0.8</span>,</span>
<span id="cb5-8">  <span class="at" style="color: #657422;
background-color: null;
font-style: inherit;">n.cut          =</span> <span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">1</span>,</span>
<span id="cb5-9">  <span class="at" style="color: #657422;
background-color: null;
font-style: inherit;">return_details =</span> <span class="cn" style="color: #8f5902;
background-color: null;
font-style: inherit;">TRUE</span></span>
<span id="cb5-10">)</span></code></pre></div></div>
</div>
<section id="スイープ全体を記録するレポート" class="level2">
<h2 class="anchored" data-anchor-id="スイープ全体を記録するレポート">スイープ全体を記録するレポート</h2>
<p>スイープは、たくさんの結果を作ります。読み手は、どの範囲を、どの設定で探索し、閾値ごとに何が出たかを、知る必要があります。<code>generate_report()</code> は、それをMarkdownファイルに書き出します。形式は2つあります。</p>
<ul>
<li><code>"simple"</code> は、本文や付録のための、短いレポートです。要約の表、閾値ごとの解、QCAパッケージで結果を確かめるためのコードが入ります。</li>
<li><code>"full"</code> は、補足資料のためのものです。分析の概要(スイープの範囲と基準値)、記述統計に加えて、閾値ごとに、真理表、解の適合度、項ごとの指標、構成図、QCAパッケージの出力、再現に必要な設定が入ります。そのあとに、閾値どうしの比較が続きます。</li>
</ul>
<div class="cell">
<div class="code-copy-outer-scaffold"><div class="sourceCode cell-code" id="cb6" style="background: #f1f3f5;"><pre class="sourceCode r code-with-copy"><code class="sourceCode r"><span id="cb6-1">report_file <span class="ot" style="color: #003B4F;
background-color: null;
font-style: inherit;">&lt;-</span> <span class="fu" style="color: #4758AB;
background-color: null;
font-style: inherit;">tempfile</span>(<span class="at" style="color: #657422;
background-color: null;
font-style: inherit;">fileext =</span> <span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">".md"</span>)</span>
<span id="cb6-2"><span class="fu" style="color: #4758AB;
background-color: null;
font-style: inherit;">generate_report</span>(res_ots, report_file, <span class="at" style="color: #657422;
background-color: null;
font-style: inherit;">dat =</span> demo, <span class="at" style="color: #657422;
background-color: null;
font-style: inherit;">format =</span> <span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"simple"</span>)</span></code></pre></div></div>
</div>
<p>書き出されたファイルの、最初の数行です。自分のコンピュータでは、<code>"ots_report_simple.md"</code> のような、きちんとした名前を付けると、作業フォルダにファイルができます。</p>
<div class="cell">
<div class="code-copy-outer-scaffold"><div class="sourceCode cell-code" id="cb7" style="background: #f1f3f5;"><pre class="sourceCode r code-with-copy"><code class="sourceCode r"><span id="cb7-1"><span class="fu" style="color: #4758AB;
background-color: null;
font-style: inherit;">cat</span>(<span class="fu" style="color: #4758AB;
background-color: null;
font-style: inherit;">head</span>(<span class="fu" style="color: #4758AB;
background-color: null;
font-style: inherit;">readLines</span>(report_file), <span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">25</span>), <span class="at" style="color: #657422;
background-color: null;
font-style: inherit;">sep =</span> <span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"</span><span class="sc" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">\n</span><span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"</span>)</span></code></pre></div></div>
<div class="cell-output cell-output-stdout">
<pre><code># QCA Analysis Report

*(Auto-generated by ThSQCA package)*

**Generated**: 2026-10-08 23:36

---

## Summary

| thrY | expression | inclS | covS | n_solutions |
|---|---|---|---|---|
| 5 | QUA\*SER + QUA\*ENV | 0.981 | 0.403 | 1 |
| 6 | QUA\*SER + QUA\*ENV | 0.926 | 0.565 | 1 |
| 7 | QUA\*SER | 0.894 | 0.656 | 1 |
| 8 | No solution | NA | NA | 0 |


---

## Solutions Overview

### LOY &gt;= 5

**Solution**: QUA\*SER + QUA\*ENV -&gt; LOY</code></pre>
</div>
</div>
<p>知っておくと便利なオプションがあります。</p>
<div class="cell">
<div class="code-copy-outer-scaffold"><div class="sourceCode cell-code" id="cb9" style="background: #f1f3f5;"><pre class="sourceCode r code-with-copy"><code class="sourceCode r"><span id="cb9-1"><span class="fu" style="color: #4758AB;
background-color: null;
font-style: inherit;">generate_report</span>(res_ots, <span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"r.md"</span>, <span class="at" style="color: #657422;
background-color: null;
font-style: inherit;">dat =</span> demo, <span class="at" style="color: #657422;
background-color: null;
font-style: inherit;">format =</span> <span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"full"</span>)              <span class="co" style="color: #5E5E5E;
background-color: null;
font-style: inherit;"># more detail</span></span>
<span id="cb9-2"><span class="fu" style="color: #4758AB;
background-color: null;
font-style: inherit;">generate_report</span>(res_ots, <span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"r.md"</span>, <span class="at" style="color: #657422;
background-color: null;
font-style: inherit;">dat =</span> demo, <span class="at" style="color: #657422;
background-color: null;
font-style: inherit;">include_chart =</span> <span class="cn" style="color: #8f5902;
background-color: null;
font-style: inherit;">FALSE</span>)        <span class="co" style="color: #5E5E5E;
background-color: null;
font-style: inherit;"># no charts</span></span>
<span id="cb9-3"><span class="fu" style="color: #4758AB;
background-color: null;
font-style: inherit;">generate_report</span>(res_ots, <span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"r.md"</span>, <span class="at" style="color: #657422;
background-color: null;
font-style: inherit;">dat =</span> demo, <span class="at" style="color: #657422;
background-color: null;
font-style: inherit;">chart_symbol_set =</span> <span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"latex"</span>)   <span class="co" style="color: #5E5E5E;
background-color: null;
font-style: inherit;"># LaTeX symbols</span></span>
<span id="cb9-4"><span class="fu" style="color: #4758AB;
background-color: null;
font-style: inherit;">generate_report</span>(res_ots, <span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"r.md"</span>, <span class="at" style="color: #657422;
background-color: null;
font-style: inherit;">dat =</span> demo, <span class="at" style="color: #657422;
background-color: null;
font-style: inherit;">include_raw_output =</span> <span class="cn" style="color: #8f5902;
background-color: null;
font-style: inherit;">FALSE</span>)   <span class="co" style="color: #5E5E5E;
background-color: null;
font-style: inherit;"># omit QCA output</span></span></code></pre></div></div>
</div>
</section>
<section id="構成図" class="level2">
<h2 class="anchored" data-anchor-id="構成図">構成図</h2>
<p>QCAの論文では、解を図で示すことがよくあります。経路ごとに1列、条件ごとに1行で、「あり」は塗りつぶした円、「なし」は斜線を入れた円、その経路で条件の存在・不在を限定しないときは、空白にします。経路のリストから、<code>config_chart_from_paths()</code> で描けます。</p>
<div class="code-copy-outer-scaffold"><div class="sourceCode cell-code" id="cb10" style="background: #f1f3f5;"><pre class="sourceCode r code-with-copy"><code class="sourceCode r"><span id="cb10-1">paths <span class="ot" style="color: #003B4F;
background-color: null;
font-style: inherit;">&lt;-</span> <span class="fu" style="color: #4758AB;
background-color: null;
font-style: inherit;">c</span>(<span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"A*B*~C"</span>, <span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"A*D"</span>, <span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"B*E"</span>)</span>
<span id="cb10-2"><span class="fu" style="color: #4758AB;
background-color: null;
font-style: inherit;">cat</span>(<span class="fu" style="color: #4758AB;
background-color: null;
font-style: inherit;">config_chart_from_paths</span>(paths))</span></code></pre></div></div>
<table class="caption-top table">
<thead>
<tr class="header">
<th style="text-align: center;">Condition</th>
<th style="text-align: center;">T1</th>
<th style="text-align: center;">T2</th>
<th style="text-align: center;">T3</th>
</tr>
</thead>
<tbody>
<tr class="odd">
<td style="text-align: center;">A</td>
<td style="text-align: center;">●</td>
<td style="text-align: center;">●</td>
<td style="text-align: center;"></td>
</tr>
<tr class="even">
<td style="text-align: center;">B</td>
<td style="text-align: center;">●</td>
<td style="text-align: center;"></td>
<td style="text-align: center;">●</td>
</tr>
<tr class="odd">
<td style="text-align: center;">C</td>
<td style="text-align: center;">⊗</td>
<td style="text-align: center;"></td>
<td style="text-align: center;"></td>
</tr>
<tr class="even">
<td style="text-align: center;">D</td>
<td style="text-align: center;"></td>
<td style="text-align: center;">●</td>
<td style="text-align: center;"></td>
</tr>
<tr class="odd">
<td style="text-align: center;">E</td>
<td style="text-align: center;"></td>
<td style="text-align: center;"></td>
<td style="text-align: center;">●</td>
</tr>
</tbody>
</table>
<p><em>● = presence, ⊗ = absence, blank = don’t care</em></p>
<p>円の記号を印刷できない雑誌などのために、普通の文字がよいなら、ASCII版を使います。</p>
<div class="code-copy-outer-scaffold"><div class="sourceCode cell-code" id="cb11" style="background: #f1f3f5;"><pre class="sourceCode r code-with-copy"><code class="sourceCode r"><span id="cb11-1"><span class="fu" style="color: #4758AB;
background-color: null;
font-style: inherit;">cat</span>(<span class="fu" style="color: #4758AB;
background-color: null;
font-style: inherit;">config_chart_from_paths</span>(paths, <span class="at" style="color: #657422;
background-color: null;
font-style: inherit;">symbol_set =</span> <span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"ascii"</span>))</span></code></pre></div></div>
<table class="caption-top table">
<thead>
<tr class="header">
<th style="text-align: center;">Condition</th>
<th style="text-align: center;">T1</th>
<th style="text-align: center;">T2</th>
<th style="text-align: center;">T3</th>
</tr>
</thead>
<tbody>
<tr class="odd">
<td style="text-align: center;">A</td>
<td style="text-align: center;">O</td>
<td style="text-align: center;">O</td>
<td style="text-align: center;"></td>
</tr>
<tr class="even">
<td style="text-align: center;">B</td>
<td style="text-align: center;">O</td>
<td style="text-align: center;"></td>
<td style="text-align: center;">O</td>
</tr>
<tr class="odd">
<td style="text-align: center;">C</td>
<td style="text-align: center;">X</td>
<td style="text-align: center;"></td>
<td style="text-align: center;"></td>
</tr>
<tr class="even">
<td style="text-align: center;">D</td>
<td style="text-align: center;"></td>
<td style="text-align: center;">O</td>
<td style="text-align: center;"></td>
</tr>
<tr class="odd">
<td style="text-align: center;">E</td>
<td style="text-align: center;"></td>
<td style="text-align: center;"></td>
<td style="text-align: center;">O</td>
</tr>
</tbody>
</table>
<p><em>O = presence, X = absence, blank = don’t care</em></p>
</section>
<section id="各閾値の背後に事例はいくつあるか" class="level2">
<h2 class="anchored" data-anchor-id="各閾値の背後に事例はいくつあるか">各閾値の背後に、事例はいくつあるか</h2>
<p>スイープの表は、解と適合度の値を示しますが、その背後にある事例の数は示しません。読者がそれを確かめられるようにしておくべきです。ごく少数の事例に支えられた結果は、信頼を下げて読むべきだからです。第1回のアウトカム閾値スイープについて、顧客の数は、ThSQCAを使わずに、データから直接数えられます。図の中の語は英語のままです。</p>
<div class="cell">
<div class="code-copy-outer-scaffold"><div class="sourceCode cell-code" id="cb12" style="background: #f1f3f5;"><pre class="sourceCode r code-with-copy"><code class="sourceCode r"><span id="cb12-1">thr <span class="ot" style="color: #003B4F;
background-color: null;
font-style: inherit;">&lt;-</span> <span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">5</span><span class="sc" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">:</span><span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">8</span></span>
<span id="cb12-2">n_out  <span class="ot" style="color: #003B4F;
background-color: null;
font-style: inherit;">&lt;-</span> <span class="fu" style="color: #4758AB;
background-color: null;
font-style: inherit;">sapply</span>(thr, <span class="cf" style="color: #003B4F;
background-color: null;
font-weight: bold;
font-style: inherit;">function</span>(t) <span class="fu" style="color: #4758AB;
background-color: null;
font-style: inherit;">sum</span>(demo<span class="sc" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">$</span>LOY <span class="sc" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">&gt;=</span> t))</span>
<span id="cb12-3">n_both <span class="ot" style="color: #003B4F;
background-color: null;
font-style: inherit;">&lt;-</span> <span class="fu" style="color: #4758AB;
background-color: null;
font-style: inherit;">sapply</span>(thr, <span class="cf" style="color: #003B4F;
background-color: null;
font-weight: bold;
font-style: inherit;">function</span>(t) <span class="fu" style="color: #4758AB;
background-color: null;
font-style: inherit;">sum</span>(demo<span class="sc" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">$</span>LOY <span class="sc" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">&gt;=</span> t <span class="sc" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">&amp;</span> demo<span class="sc" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">$</span>QUA <span class="sc" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">&gt;=</span> <span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">7</span> <span class="sc" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">&amp;</span> demo<span class="sc" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">$</span>SER <span class="sc" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">&gt;=</span> <span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">7</span>))</span>
<span id="cb12-4">cases <span class="ot" style="color: #003B4F;
background-color: null;
font-style: inherit;">&lt;-</span> <span class="fu" style="color: #4758AB;
background-color: null;
font-style: inherit;">rbind</span>(<span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"High loyalty (LOY &gt;= thrY)"</span> <span class="ot" style="color: #003B4F;
background-color: null;
font-style: inherit;">=</span> n_out,</span>
<span id="cb12-5">               <span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"... and high on QUA and SER"</span> <span class="ot" style="color: #003B4F;
background-color: null;
font-style: inherit;">=</span> n_both)</span>
<span id="cb12-6"><span class="fu" style="color: #4758AB;
background-color: null;
font-style: inherit;">colnames</span>(cases) <span class="ot" style="color: #003B4F;
background-color: null;
font-style: inherit;">&lt;-</span> thr</span>
<span id="cb12-7"></span>
<span id="cb12-8">bp <span class="ot" style="color: #003B4F;
background-color: null;
font-style: inherit;">&lt;-</span> <span class="fu" style="color: #4758AB;
background-color: null;
font-style: inherit;">barplot</span>(cases, <span class="at" style="color: #657422;
background-color: null;
font-style: inherit;">beside =</span> <span class="cn" style="color: #8f5902;
background-color: null;
font-style: inherit;">TRUE</span>, <span class="at" style="color: #657422;
background-color: null;
font-style: inherit;">col =</span> <span class="fu" style="color: #4758AB;
background-color: null;
font-style: inherit;">c</span>(<span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"#233A9A"</span>, <span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"#F28018"</span>),</span>
<span id="cb12-9">              <span class="at" style="color: #657422;
background-color: null;
font-style: inherit;">ylim =</span> <span class="fu" style="color: #4758AB;
background-color: null;
font-style: inherit;">c</span>(<span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">0</span>, <span class="fu" style="color: #4758AB;
background-color: null;
font-style: inherit;">max</span>(cases) <span class="sc" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">*</span> <span class="fl" style="color: #AD0000;
background-color: null;
font-style: inherit;">1.15</span>),</span>
<span id="cb12-10">              <span class="at" style="color: #657422;
background-color: null;
font-style: inherit;">xlab =</span> <span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"Outcome threshold (thrY)"</span>, <span class="at" style="color: #657422;
background-color: null;
font-style: inherit;">ylab =</span> <span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"Number of customers"</span>,</span>
<span id="cb12-11">              <span class="at" style="color: #657422;
background-color: null;
font-style: inherit;">main =</span> <span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"Cases behind each threshold"</span>,</span>
<span id="cb12-12">              <span class="at" style="color: #657422;
background-color: null;
font-style: inherit;">legend.text =</span> <span class="fu" style="color: #4758AB;
background-color: null;
font-style: inherit;">rownames</span>(cases),</span>
<span id="cb12-13">              <span class="at" style="color: #657422;
background-color: null;
font-style: inherit;">args.legend =</span> <span class="fu" style="color: #4758AB;
background-color: null;
font-style: inherit;">list</span>(<span class="at" style="color: #657422;
background-color: null;
font-style: inherit;">x =</span> <span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"topright"</span>, <span class="at" style="color: #657422;
background-color: null;
font-style: inherit;">bty =</span> <span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"n"</span>, <span class="at" style="color: #657422;
background-color: null;
font-style: inherit;">cex =</span> <span class="fl" style="color: #AD0000;
background-color: null;
font-style: inherit;">0.8</span>))</span>
<span id="cb12-14"><span class="fu" style="color: #4758AB;
background-color: null;
font-style: inherit;">text</span>(bp, cases, <span class="at" style="color: #657422;
background-color: null;
font-style: inherit;">labels =</span> cases, <span class="at" style="color: #657422;
background-color: null;
font-style: inherit;">pos =</span> <span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">3</span>, <span class="at" style="color: #657422;
background-color: null;
font-style: inherit;">cex =</span> <span class="fl" style="color: #AD0000;
background-color: null;
font-style: inherit;">0.8</span>)</span></code></pre></div></div>
<div class="cell-output-display">
<div class="quarto-figure quarto-figure-center">
<figure class="figure">
<p><img src="https://im-research-yt.github.io/ja/articles/thsqca-beginners-4/index_files/figure-html/unnamed-chunk-9-1.png" class="img-fluid figure-img" alt="グループ化した棒グラフ。アウトカムの閾値5では、ロイヤルティが高い顧客が263人で、そのうち品質とサービスがどちらも高いのは66人。閾値6では177人と65人、閾値7では90人と59人、閾値8では29人と26人。" width="672"></p>
<figcaption>アウトカムの閾値ごとの、ロイヤルティの高い顧客の数(青)と、そのうち、品質とサービスのどちらも高い顧客の数(オレンジ)。</figcaption>
</figure>
</div>
</div>
</div>
<p>目標が高くなるにつれて、ロイヤルティの高い群は263人から29人へ小さくなり、スイープの厳しい側の解は、はるかに少ない事例の上に立っています。この件数を、スイープの表の横に報告しておけば、各行がどこまで支えられるかを、簡単に示せます。</p>
</section>
<section id="qcaパッケージでセルを確認する" class="level2">
<h2 class="anchored" data-anchor-id="qcaパッケージでセルを確認する">QCAパッケージで、セルを確認する</h2>
<p>ThSQCAは、新しい結果を作り出すわけではありません。どのセルも、普通のQCA分析なので、どのセルでも、手で再現できます。これは、道具への信頼を築く、よい方法で、査読者に聞かれたときの答えにもなります。ここでは、アウトカム閾値が7のセルを再現します。</p>
<div class="cell">
<div class="code-copy-outer-scaffold"><div class="sourceCode cell-code" id="cb13" style="background: #f1f3f5;"><pre class="sourceCode r code-with-copy"><code class="sourceCode r"><span id="cb13-1">bin <span class="ot" style="color: #003B4F;
background-color: null;
font-style: inherit;">&lt;-</span> <span class="cf" style="color: #003B4F;
background-color: null;
font-weight: bold;
font-style: inherit;">function</span>(x, t) <span class="fu" style="color: #4758AB;
background-color: null;
font-style: inherit;">as.integer</span>(x <span class="sc" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">&gt;=</span> t)</span>
<span id="cb13-2"></span>
<span id="cb13-3">d7 <span class="ot" style="color: #003B4F;
background-color: null;
font-style: inherit;">&lt;-</span> <span class="fu" style="color: #4758AB;
background-color: null;
font-style: inherit;">data.frame</span>(</span>
<span id="cb13-4">  <span class="at" style="color: #657422;
background-color: null;
font-style: inherit;">LOY =</span> <span class="fu" style="color: #4758AB;
background-color: null;
font-style: inherit;">bin</span>(demo<span class="sc" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">$</span>LOY, <span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">7</span>), <span class="at" style="color: #657422;
background-color: null;
font-style: inherit;">QUA =</span> <span class="fu" style="color: #4758AB;
background-color: null;
font-style: inherit;">bin</span>(demo<span class="sc" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">$</span>QUA, <span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">7</span>),</span>
<span id="cb13-5">  <span class="at" style="color: #657422;
background-color: null;
font-style: inherit;">SER =</span> <span class="fu" style="color: #4758AB;
background-color: null;
font-style: inherit;">bin</span>(demo<span class="sc" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">$</span>SER, <span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">7</span>), <span class="at" style="color: #657422;
background-color: null;
font-style: inherit;">ENV =</span> <span class="fu" style="color: #4758AB;
background-color: null;
font-style: inherit;">bin</span>(demo<span class="sc" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">$</span>ENV, <span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">7</span>)</span>
<span id="cb13-6">)</span>
<span id="cb13-7"></span>
<span id="cb13-8">tt  <span class="ot" style="color: #003B4F;
background-color: null;
font-style: inherit;">&lt;-</span> <span class="fu" style="color: #4758AB;
background-color: null;
font-style: inherit;">truthTable</span>(d7, <span class="at" style="color: #657422;
background-color: null;
font-style: inherit;">outcome =</span> <span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"LOY"</span>, <span class="at" style="color: #657422;
background-color: null;
font-style: inherit;">conditions =</span> <span class="fu" style="color: #4758AB;
background-color: null;
font-style: inherit;">c</span>(<span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"QUA"</span>, <span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"SER"</span>, <span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"ENV"</span>),</span>
<span id="cb13-9">                  <span class="at" style="color: #657422;
background-color: null;
font-style: inherit;">incl.cut =</span> <span class="fl" style="color: #AD0000;
background-color: null;
font-style: inherit;">0.8</span>, <span class="at" style="color: #657422;
background-color: null;
font-style: inherit;">n.cut =</span> <span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">1</span>, <span class="at" style="color: #657422;
background-color: null;
font-style: inherit;">show.cases =</span> <span class="cn" style="color: #8f5902;
background-color: null;
font-style: inherit;">FALSE</span>)</span>
<span id="cb13-10">sol <span class="ot" style="color: #003B4F;
background-color: null;
font-style: inherit;">&lt;-</span> <span class="fu" style="color: #4758AB;
background-color: null;
font-style: inherit;">minimize</span>(tt)</span>
<span id="cb13-11">sol</span></code></pre></div></div>
<div class="cell-output cell-output-stdout">
<pre><code>
M1: QUA*SER -&gt; LOY</code></pre>
</div>
</div>
<p><code>minimize()</code> が出力した解は、第1回のスイープ表の <code>thrY = 7</code> の行(<code>QUA*SER</code>)と一致します。どちらも、データを同じ方法で二値化し(得点が7以上なら、集合に入る)、どちらも、同じQCAの関数が最小化を行ったからです。</p>
</section>
<section id="ソフトウェアのバージョンを記録する" class="level2">
<h2 class="anchored" data-anchor-id="ソフトウェアのバージョンを記録する">ソフトウェアのバージョンを記録する</h2>
<p>結果は、Rやパッケージのバージョンに左右されることがあります。表示して、レポートと一緒に保管してください。</p>
<div class="cell">
<div class="code-copy-outer-scaffold"><div class="sourceCode cell-code" id="cb15" style="background: #f1f3f5;"><pre class="sourceCode r code-with-copy"><code class="sourceCode r"><span id="cb15-1"><span class="fu" style="color: #4758AB;
background-color: null;
font-style: inherit;">c</span>(<span class="at" style="color: #657422;
background-color: null;
font-style: inherit;">R      =</span> R.version.string,</span>
<span id="cb15-2">  <span class="at" style="color: #657422;
background-color: null;
font-style: inherit;">QCA    =</span> <span class="fu" style="color: #4758AB;
background-color: null;
font-style: inherit;">as.character</span>(<span class="fu" style="color: #4758AB;
background-color: null;
font-style: inherit;">packageVersion</span>(<span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"QCA"</span>)),</span>
<span id="cb15-3">  <span class="at" style="color: #657422;
background-color: null;
font-style: inherit;">ThSQCA =</span> <span class="fu" style="color: #4758AB;
background-color: null;
font-style: inherit;">as.character</span>(<span class="fu" style="color: #4758AB;
background-color: null;
font-style: inherit;">packageVersion</span>(<span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"ThSQCA"</span>)))</span></code></pre></div></div>
</div>
</section>
<section id="スイープを報告するための短いチェックリスト" class="level2">
<h2 class="anchored" data-anchor-id="スイープを報告するための短いチェックリスト">スイープを報告するための、短いチェックリスト</h2>
<p>スイープは、探索する自由を与えるので、透明であることも求めます。報告する前に、次の問いのすべてに、「はい」と答えられるか、確かめてください。</p>
<ol type="1">
<li>閾値の範囲と、値の間隔を、結果を見る前に決めたか。</li>
<li>固定したすべての設定(一貫性閾値、頻度閾値、解の種類、方向性の期待)を書いたか。</li>
<li>解がないセルも含めて、格子のすべてのセルを報告したか。</li>
<li>格子の端のセルの背後に、事例が何件あるかを確かめたか。</li>
<li>あるセルに最小解が複数あったなら、そのことを書いたか。</li>
<li>スイープを、最良の閾値を探す作業として示すことを、避けたか。</li>
<li>R、QCA、ThSQCAのバージョンを記録したか。</li>
</ol>
</section>
<section id="ここから先" class="level2">
<h2 class="anchored" data-anchor-id="ここから先">ここから先</h2>
<p>これで、全体の流れが分かりました。スイープを選び、擁護できる範囲を決め、実行し、読み、報告する、という流れです。さらに学びたい方は、パッケージのドキュメントに、追加の例を含む完全なチュートリアルがあり、手法は論文で説明しています。</p>
<ul>
<li><a href="https://im-research-yt.github.io/ThSQCA/articles/ThSQCA_Tutorial_EN.html">ThSQCAのドキュメントとチュートリアル</a>(英語)</li>
<li><a href="https://cran.r-project.org/package=ThSQCA">CRANのThSQCA</a></li>
<li>Toyoda, Y. (2026). Threshold-sweep QCA: threshold dependence as an analytical dimension. <em>Quality &amp; Quantity</em>. <a href="https://doi.org/10.1007/s11135-026-03092-3">https://doi.org/10.1007/s11135-026-03092-3</a></li>
<li>ブラウザのツール: <a href="https://im-research-yt.github.io/analysis-tools/qca-quickstart.html">QCA Quickstart</a>、<a href="https://im-research-yt.github.io/analysis-tools/sweep-builder.html">Sweep Builder</a></li>
</ul>
<p><em>使ったソフトウェア: R 4.6.1、QCA 3.25.5、ThSQCA 2.0.9</em></p>


</section>

 ]]></description>
  <category>ThSQCA</category>
  <category>tutorial</category>
  <guid>https://im-research-yt.github.io/ja/articles/thsqca-beginners-4/</guid>
  <pubDate>Sun, 04 Oct 2026 15:00:00 GMT</pubDate>
  <media:content url="https://im-research-yt.github.io/ja/articles/thsqca-beginners-4/thumbnail.png" medium="image" type="image/png" height="76" width="144"/>
</item>
<item>
  <title>「ほどほど」と「大好き」は、同じ目標でしょうか。マーケターのための閾値スイープ QCA</title>
  <dc:creator>Yuki Toyoda</dc:creator>
  <link>https://im-research-yt.github.io/ja/articles/qca-for-marketers/</link>
  <description><![CDATA[ 




<p>前回は、なぜ QCA が意思決定に向くのかを説明しました。最後に残った疑問は、「高い」を分ける基準をどこに置くか、です。今回は、その問題に取り組みます。</p>
<p>同じ会社の2人のマネージャーが、同じ顧客調査を見ています。</p>
<p>1人目は顧客層を広げたいと考えています。ブランドを「使ってもよい」と思う人を、できるだけ増やしたいのです。2人目はファンを育てたいと考えています。「ぜひ使いたい」と心から思う顧客を、つくりたいのです。2人とも、同じ問いを立てます。「顧客をそこに連れていくには、ブランドのどんな強みを組み合わせればよいのか」。</p>
<p>ここに、困った点があります。標準的な分析は、この問いに1つの基準でしか答えを出しません。「高い」を7点以上と決めれば、答えは1つです。8点にしていたら、別の答えになったかもしれません。複数の基準にわたる結果が、体系的に報告されるとは限りません。そのため、ファンを育てたい人と、顧客層を広げたい人が、同じ施策をとるべきなのかどうかは、1つの基準の分析だけでは分かりません。</p>
<section id="基準は変えてみるもの" class="level2">
<h2 class="anchored" data-anchor-id="基準は変えてみるもの">基準は、変えてみるもの</h2>
<p>閾値スイープ QCA(ThSQCA)は、基準を1つに決めず、変えて試します。ほかの条件をすべて同じにして、同じ分析をいくつかの基準で実行し、答えを1つの表に並べます。答えが安定しているところ、形が変わるところ、消えてしまうところが、見えるようになります。</p>
<p>トップボックスとトップ2ボックスの集計をしたことがある方は、この問題をご存じのはずです。トップ2ボックスでは確かな結果に見えても、トップボックスでは、まったく違って見えることがあります。スイープは、この比較を、体系的に行います。</p>
</section>
<section id="小さな例模擬データ" class="level2">
<h2 class="anchored" data-anchor-id="小さな例模擬データ">小さな例(模擬データ)</h2>
<p>実際の顧客データを使わずに考え方を示すため、あるカフェブランドの顧客400人を、シミュレーションで作りました。顧客はそれぞれ、ブランドの品質、サービス、店舗環境を0〜10点で評価し、ロイヤルティも0〜10点で答えています。ここでは、得点を「7点以上か、そうでないか」の2つに分ける、二値(crisp-set)QCA の例で説明します。次のように問います。「高い」評価(7点以上)をどう組み合わせれば、顧客は、それぞれのロイヤルティの目標に届くのか。</p>
<table class="caption-top table">
<colgroup>
<col style="width: 25%">
<col style="width: 25%">
<col style="width: 25%">
<col style="width: 25%">
</colgroup>
<thead>
<tr class="header">
<th>ロイヤルティの目標</th>
<th>顧客をそこへ導く経路</th>
<th>確からしさ</th>
<th>目標の顧客のうち説明できる割合</th>
</tr>
</thead>
<tbody>
<tr class="odd">
<td>5点以上</td>
<td>品質とサービス、または品質と店舗環境</td>
<td>0.98</td>
<td>40%</td>
</tr>
<tr class="even">
<td>6点以上</td>
<td>品質とサービス、または品質と店舗環境</td>
<td>0.93</td>
<td>57%</td>
</tr>
<tr class="odd">
<td>7点以上</td>
<td>品質とサービスのみ</td>
<td>0.89</td>
<td>66%</td>
</tr>
<tr class="even">
<td>8点以上</td>
<td>3つの強みのどの組み合わせでも、十分に確かではない</td>
<td>なし</td>
<td>なし</td>
</tr>
</tbody>
</table>
<p>基準が上がるにつれて、表を下に読んでください。</p>
<ul>
<li><strong>ほどほどの目標には、選択肢があります。</strong> 経路は2つあるので、マネージャーは、費用の少ない方を選べます。品質とサービスを高めるか、品質と店舗を高めるか、です。</li>
<li><strong>厳しい目標には、選択肢が少なくなります。</strong> 7点以上では、品質とサービスの経路だけが残ります。店舗環境は、入口ではなくなります。</li>
<li><strong>非常に厳しい目標は、データの説明力を超えることがあります。</strong> 8点以上では、3つの強みの、単独でも組み合わせでも、足りませんでした。これは、経路が存在しない証拠ではありません。この3つの強みでは、最上位の顧客を説明できない、ということです。追加の条件、測定、事例数、分析設定を再検討する手がかりになります。</li>
</ul>
<p>「7点以上」だけの分析では、1人目のマネージャーに、誤解を招く答えを伝えてしまいます。品質とサービスが唯一の経路だと言ってしまうのですが、広い目標では、もう1つの経路があるのです。</p>
</section>
<section id="どんな問いに役立つか" class="level2">
<h2 class="anchored" data-anchor-id="どんな問いに役立つか">どんな問いに役立つか</h2>
<ul>
<li><strong>満足度、推奨意向(NPSの質問項目など)、購入意向:</strong> 「満足」のレシピは、「感動」のレシピと同じでしょうか。</li>
<li><strong>セグメントの定義:</strong> 「ヘビーユーザー」を年10回購入とするか、20回とするかで、要因は変わるでしょうか。</li>
<li><strong>キャンペーンの目標:</strong> 顧客を「検討する」から「選ぶ」へ動かすには、何が必要でしょうか。</li>
<li><strong>報告:</strong> 1つの基準を弁護する代わりに、範囲を見せて、答えが基準にどれだけ左右されるかを、読み手に示せます。</li>
</ul>
</section>
<section id="つの正直な注意点" class="level2">
<h2 class="anchored" data-anchor-id="つの正直な注意点">2つの正直な注意点</h2>
<ol type="1">
<li><strong>結果は、成果と一緒に現れる強みの組み合わせを示します。</strong> 観察データの分析に共通して、因果関係の証明にはなりません。どこを見るか、何を検証するかを決めるための地図として使ってください。</li>
<li><strong>いちばん都合のよい答えが出る基準を、探さないでください。</strong> 結果を見る前に範囲を決めて、理由を説明し、すべてを報告します。スイープの価値は、答えが定義にどれだけ依存するかを、透明にすることにあります。</li>
</ol>
</section>
<section id="自分の調査で試す" class="level2">
<h2 class="anchored" data-anchor-id="自分の調査で試す">自分の調査で試す</h2>
<p>ゼロからコードを書く必要はありません。</p>
<ol type="1">
<li><a href="https://im-research-yt.github.io/analysis-tools/qca-quickstart.html">QCA Quickstart</a> が、手元のデータの列名から、最初の分析スクリプトを作ります。</li>
<li><a href="https://im-research-yt.github.io/analysis-tools/sweep-builder.html">Sweep Builder</a> が、その設定を、閾値スイープのスクリプトに変換します。</li>
<li>スクリプトを R に貼り付けます。パッケージは無料です(<code>install.packages("ThSQCA")</code>)。</li>
</ol>
<p>同じ考え方を、もう少しゆっくり学びたい方には、初心者向けシリーズがあります。練習用データを使って、1行ずつ説明しています。手法そのものは、Toyoda (2026) の論文「Threshold-sweep QCA: threshold dependence as an analytical dimension」(<em>Quality &amp; Quantity</em>)で解説しています。パッケージは <a href="https://cran.r-project.org/package=ThSQCA">CRAN</a> にあります。</p>


</section>

 ]]></description>
  <category>ThSQCA</category>
  <category>marketing</category>
  <category>QCA</category>
  <guid>https://im-research-yt.github.io/ja/articles/qca-for-marketers/</guid>
  <pubDate>Sat, 03 Oct 2026 15:00:00 GMT</pubDate>
  <media:content url="https://im-research-yt.github.io/ja/articles/qca-for-marketers/thumbnail.png" medium="image" type="image/png" height="76" width="144"/>
</item>
<item>
  <title>なぜ QCA は意思決定に向くのか: 「単独の効果」ではなく「レシピ」を探す分析</title>
  <dc:creator>Yuki Toyoda</dc:creator>
  <link>https://im-research-yt.github.io/ja/articles/why-qca-decisions/</link>
  <description><![CDATA[ 




<p>マーケティング・マネージャーの問いは、「品質を上げれば、顧客は増えるか」だけではありません。多くの場合は、「何と何を組み合わせれば、目標に届くのか」です。</p>
<p>質的比較分析(QCA)は、この問いに答えるために作られた分析です。回帰分析のような統計手法は、他の条件を一定にしたとき、1つの要因が単独でどれだけ効くかを見るのが得意です。QCA は、別の角度から、データを見ます。</p>
<section id="意思決定にとって魅力的な理由" class="level2">
<h2 class="anchored" data-anchor-id="意思決定にとって魅力的な理由">意思決定にとって魅力的な理由</h2>
<section id="施策は単独ではなく組み合わせで動かす" class="level3">
<h3 class="anchored" data-anchor-id="施策は単独ではなく組み合わせで動かす">1. 施策は、単独ではなく組み合わせで動かす</h3>
<p>店舗の改装、接客の強化、価格の見直しは、たいてい一緒に実行されます。QCA は、「品質が高く、かつサービスが高い」のように、条件の組み合わせ(レシピ)を単位に、結果を見ます。</p>
</section>
<section id="成功への経路は1つとは限らない" class="level3">
<h3 class="anchored" data-anchor-id="成功への経路は1つとは限らない">2. 成功への経路は、1つとは限らない</h3>
<p>同じ成果に、複数の経路があることがあります(等結果性)。QCA は、選んだ条件と分析設定のもとで、成果に結びつく複数の経路を特定できます。経営者は、予算や強みに合わせて、どの経路が自社に合うかを選べます。</p>
</section>
<section id="成功の理由は失敗の理由の裏返しとは限らない" class="level3">
<h3 class="anchored" data-anchor-id="成功の理由は失敗の理由の裏返しとは限らない">3. 成功の理由は、失敗の理由の裏返しとは限らない</h3>
<p>ロイヤルティが高い顧客を生む条件と、離反する顧客を生む条件は、別の分析が必要なことがあります(非対称性)。QCA は、高い場合と低い場合を、別々に分析します。</p>
</section>
<section id="小中規模の事例でも使える" class="level3">
<h3 class="anchored" data-anchor-id="小中規模の事例でも使える">4. 小〜中規模の事例でも、使える</h3>
<p>店舗、ブランド、キャンペーン、法人顧客のように、事例が数十から数百の単位でも、事例の中身を見ながら分析できます。小〜中規模の事例比較にも使えます。ただし、条件の数に対して事例が少ないと、論理残余(データにない条件の組み合わせ)が多くなります。</p>
</section>
<section id="結果がもしならの形で読める" class="level3">
<h3 class="anchored" data-anchor-id="結果がもしならの形で読める">5. 結果が「もし〜なら」の形で読める</h3>
<p>結果は、「品質が高く、かつサービスが高い」という、短い規則として出ます。会議で説明しやすく、現場でも、何をすればよいかが伝わります。</p>
</section>
<section id="必須と十分を区別できる" class="level3">
<h3 class="anchored" data-anchor-id="必須と十分を区別できる">6. 「必須」と「十分」を区別できる</h3>
<p>「これがなければ成功しない」(必要条件)と、「これがあれば成功する」(十分条件)を、区別して扱えます。「外せない施策」と「勝ち筋」を、分けて考えられます。</p>
</section>
</section>
<section id="回帰分析との違いざっくり" class="level2">
<h2 class="anchored" data-anchor-id="回帰分析との違いざっくり">回帰分析との違い(ざっくり)</h2>
<table class="caption-top table">
<colgroup>
<col style="width: 33%">
<col style="width: 33%">
<col style="width: 33%">
</colgroup>
<thead>
<tr class="header">
<th>観点</th>
<th>回帰分析</th>
<th>QCA</th>
</tr>
</thead>
<tbody>
<tr class="odd">
<td>問い</td>
<td>他の条件を一定にしたとき、1つの要因が単独でどれだけ効くか</td>
<td>どの組み合わせが、成果に十分か</td>
</tr>
<tr class="even">
<td>見る単位</td>
<td>1つ1つの変数</td>
<td>条件の組み合わせ</td>
</tr>
<tr class="odd">
<td>複数の経路</td>
<td>交互作用や非線形性を、モデルに組み込む必要がある</td>
<td>組み合わせとして特定できる</td>
</tr>
<tr class="even">
<td>結果の読み方</td>
<td>係数、有意性</td>
<td>「AかつB」という規則</td>
</tr>
<tr class="odd">
<td>得意な規模</td>
<td>大きなサンプル</td>
<td>数十から数百の事例</td>
</tr>
</tbody>
</table>
<p>どちらが優れているということではありません。問いによって、使い分けます。</p>
</section>
<section id="qca-にできないことと他の分析にも言えること" class="level2">
<h2 class="anchored" data-anchor-id="qca-にできないことと他の分析にも言えること">QCA にできないこと(と、他の分析にも言えること)</h2>
<ul>
<li><strong>因果関係を、QCA だけが証明できないわけではありません。</strong> 観察データの分析は、回帰分析を含めて、因果関係を証明しきれません。QCA で得られた十分条件の解だけから、施策を実施した場合の因果効果が保証されるわけではありません。因果的に解釈するには、研究設計、時間的順序、理論、事例知識などによる裏づけが必要です。結果は、施策候補や検証すべき仮説を考える材料として活用できます。</li>
<li><strong>理論と事例の知識が必要です。</strong> 条件の選び方や、どこから「高い」とするかは、分析する人が決めます。</li>
</ul>
</section>
<section id="落とし穴は基準にある" class="level2">
<h2 class="anchored" data-anchor-id="落とし穴は基準にある">落とし穴は、「基準」にある</h2>
<p>最後の点が、実は重要です。QCA では、「高い」と「低い」を分ける<strong>基準(閾値)</strong>を、分析する人が決めます。ところが、意思決定の目標とは、まさにこの基準のことです。「ほどほどに満足」を目指すのか、「大好き」を目指すのか。基準を変えると、答えも変わることがあります。</p>
<p>この問題には、閾値スイープ QCA(ThSQCA)で取り組みます。続きは、次の記事です。</p>
<p><a href="../../../ja/articles/qca-for-marketers/index.html">続編: 「ほどほど」と「大好き」は、同じ目標でしょうか</a></p>
</section>
<section id="参考文献" class="level2">
<h2 class="anchored" data-anchor-id="参考文献">参考文献</h2>
<ul>
<li>Ragin, C. C. (2008). <em>Redesigning Social Inquiry: Fuzzy Sets and Beyond</em>. University of Chicago Press.</li>
<li>Fiss, P. C. (2011). Building better causal theories: A fuzzy set approach to typologies in organization research. <em>Academy of Management Journal</em>, 54(2), 393-420.</li>
<li>Woodside, A. G. (2013). Moving beyond multiple regression analysis to algorithms: Calling for adoption of a paradigm shift from symmetric to asymmetric thinking in data analysis and crafting theory. <em>Journal of Business Research</em>, 66(4), 463-472.</li>
</ul>


</section>

 ]]></description>
  <category>QCA</category>
  <category>marketing</category>
  <guid>https://im-research-yt.github.io/ja/articles/why-qca-decisions/</guid>
  <pubDate>Fri, 02 Oct 2026 15:00:00 GMT</pubDate>
  <media:content url="https://im-research-yt.github.io/ja/articles/why-qca-decisions/thumbnail.png" medium="image" type="image/png" height="76" width="144"/>
</item>
<item>
  <title>ThSQCA の紹介: Rで閾値スイープQCAを行う</title>
  <dc:creator>Yuki Toyoda</dc:creator>
  <link>https://im-research-yt.github.io/ja/articles/introducing-thsqca/</link>
  <description><![CDATA[ 




<p>質的比較分析(QCA)では、連続的な得点を集合への所属に変える閾値を、ふつう、分析の前に1つに決めます。そのため、得られる解は、ある1つの定義への答えになります。たとえば、「利用意向が高い」を7点以上と定義したときの答えです。<strong>ThSQCA</strong> は、閾値そのものを分析の対象にする R パッケージです。同じ QCA の分析を、同じ設定のまま、閾値の範囲全体で繰り返し、十分条件の解がどう変わるかを記録します。</p>
<section id="考え方" class="level2">
<h2 class="anchored" data-anchor-id="考え方">考え方</h2>
<p>閾値を変えると、どの事例が集合に入るかが変わります。すると、真理表も、適合度の指標も、Boolean最小化の結果も変わることがあります。したがって、閾値 <em>t</em> と十分条件の解 <em>S</em> の関係は、1つの解というより、対応関係 <em>t</em> → <em>S(t)</em> として記述するほうが適切です。</p>
<p>これは、頑健性の確認とは、別の問いです。頑健性の確認は、気に入った解が、別の設定でも残るかを問います。また、最良の閾値を探すことでもありません。閾値スイープQCAは、記述的な問いを立てます。十分条件の構造は、閾値の定義にわたって、どのように分布するのか。どこで持続し、現れ、消えるのか。方法論は、下に挙げる論文で展開しています。</p>
</section>
<section id="パッケージが行うこと" class="level2">
<h2 class="anchored" data-anchor-id="パッケージが行うこと">パッケージが行うこと</h2>
<p>ThSQCA は、独自の最小化アルゴリズムを実装していません。真理表の作成と最小化は、<a href="https://cran.r-project.org/package=QCA">QCA</a> パッケージに任せています。計算の中心は、通常の分析と同じです。ThSQCA が加えるのは、その周りの作業の流れです。</p>
<ul>
<li>一貫性閾値、頻度閾値、解の種類、方向性の期待を、スイープのすべての段階で同じにします。</li>
<li>項、解の一貫性、カバレッジを、共通の形式にまとめます。</li>
<li>解がない場合や、最小解が複数ある場合も、失わずに記録します。</li>
<li>結果は、表と構成図で示せます。Markdown 形式のレポートとしても書き出せます。結果の表は、R の通常のグラフ機能で図にすることもできます。</li>
</ul>
</section>
<section id="つのスイープ関数" class="level2">
<h2 class="anchored" data-anchor-id="つのスイープ関数">4つのスイープ関数</h2>
<table class="caption-top table">
<colgroup>
<col style="width: 33%">
<col style="width: 33%">
<col style="width: 33%">
</colgroup>
<thead>
<tr class="header">
<th>問い</th>
<th>関数</th>
<th>動かす閾値</th>
</tr>
</thead>
<tbody>
<tr class="odd">
<td>アウトカムの目標水準が変わると、解はどう変わるか</td>
<td><code>otSweep()</code></td>
<td>アウトカム</td>
</tr>
<tr class="even">
<td>1つの条件の基準が変わると、どう変わるか</td>
<td><code>ctSweepS()</code></td>
<td>1つの条件</td>
</tr>
<tr class="odd">
<td>複数の条件の基準が一緒に変わると、どうなるか</td>
<td><code>ctSweepM()</code></td>
<td>複数の条件</td>
</tr>
<tr class="even">
<td>アウトカムと条件の基準が一緒に変わると、どう変わるか</td>
<td><code>dtSweep()</code></td>
<td>アウトカムと条件</td>
</tr>
</tbody>
</table>
</section>
<section id="はじめてみる" class="level2">
<h2 class="anchored" data-anchor-id="はじめてみる">はじめてみる</h2>
<div class="code-copy-outer-scaffold"><div class="sourceCode" id="cb1" style="background: #f1f3f5;"><pre class="sourceCode r code-with-copy"><code class="sourceCode r"><span id="cb1-1"><span class="fu" style="color: #4758AB;
background-color: null;
font-style: inherit;">install.packages</span>(<span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"ThSQCA"</span>)</span>
<span id="cb1-2"><span class="fu" style="color: #4758AB;
background-color: null;
font-style: inherit;">library</span>(ThSQCA)</span></code></pre></div></div>
<p>パッケージには、小さな例のデータ <code>sample_data</code> が入っています。アウトカム <code>Y</code> と、3つの条件 <code>X1</code>、<code>X2</code>、<code>X3</code> で、どれも0〜10点です。次は、そのまま動く、最小のアウトカム閾値スイープです。</p>
<div class="code-copy-outer-scaffold"><div class="sourceCode" id="cb2" style="background: #f1f3f5;"><pre class="sourceCode r code-with-copy"><code class="sourceCode r"><span id="cb2-1"><span class="fu" style="color: #4758AB;
background-color: null;
font-style: inherit;">library</span>(ThSQCA)</span>
<span id="cb2-2"></span>
<span id="cb2-3"><span class="fu" style="color: #4758AB;
background-color: null;
font-style: inherit;">head</span>(sample_data)</span>
<span id="cb2-4"></span>
<span id="cb2-5">res <span class="ot" style="color: #003B4F;
background-color: null;
font-style: inherit;">&lt;-</span> <span class="fu" style="color: #4758AB;
background-color: null;
font-style: inherit;">otSweep</span>(</span>
<span id="cb2-6">  <span class="at" style="color: #657422;
background-color: null;
font-style: inherit;">dat         =</span> sample_data,</span>
<span id="cb2-7">  <span class="at" style="color: #657422;
background-color: null;
font-style: inherit;">outcome     =</span> <span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"Y"</span>,</span>
<span id="cb2-8">  <span class="at" style="color: #657422;
background-color: null;
font-style: inherit;">conditions  =</span> <span class="fu" style="color: #4758AB;
background-color: null;
font-style: inherit;">c</span>(<span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"X1"</span>, <span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"X2"</span>, <span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"X3"</span>),</span>
<span id="cb2-9">  <span class="at" style="color: #657422;
background-color: null;
font-style: inherit;">sweep_range =</span> <span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">6</span><span class="sc" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">:</span><span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">9</span>,</span>
<span id="cb2-10">  <span class="at" style="color: #657422;
background-color: null;
font-style: inherit;">thrX        =</span> <span class="fu" style="color: #4758AB;
background-color: null;
font-style: inherit;">c</span>(<span class="at" style="color: #657422;
background-color: null;
font-style: inherit;">X1 =</span> <span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">7</span>, <span class="at" style="color: #657422;
background-color: null;
font-style: inherit;">X2 =</span> <span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">7</span>, <span class="at" style="color: #657422;
background-color: null;
font-style: inherit;">X3 =</span> <span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">7</span>)</span>
<span id="cb2-11">)</span>
<span id="cb2-12"></span>
<span id="cb2-13"><span class="fu" style="color: #4758AB;
background-color: null;
font-style: inherit;">summary</span>(res)</span></code></pre></div></div>
<p>このスイープは、「高いアウトカム」を <code>Y &gt;= 6</code>、<code>Y &gt;= 7</code>、<code>Y &gt;= 8</code>、<code>Y &gt;= 9</code> と定義したときに、十分条件の解がどう変わるかを調べます。各条件は、得点が7以上のとき「高い」とします。各行の意味や、結果の表の読み方を、ゆっくり、順を追って知りたい方は、<a href="../../../ja/articles/thsqca-beginners-1/index.html">入門シリーズの第1回</a>をご覧ください。</p>
<p>実行すると、次のような表が出ます(結果の部分だけを示します)。</p>
<pre><code> 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</code></pre>
<p>1行が、1つのアウトカム閾値です。<code>expression</code> の列では、<code>*</code> が AND、<code>+</code> が OR、<code>~</code> が NOT を表します。<code>Y &gt;= 6</code> と <code>Y &gt;= 7</code> では、同じ3つの十分な経路が現れます。<code>Y &gt;= 8</code> と <code>Y &gt;= 9</code> では、一貫性の条件を満たす解がありません。閾値を1つにした分析だけでは、答えがどこで成り立たなくなるかは見えません。スイープなら、それが見えます。</p>
<p>パッケージのビネットには、4つの関数すべてについて、実例つきの説明があります。</p>
</section>
<section id="使うときの注意" class="level2">
<h2 class="anchored" data-anchor-id="使うときの注意">使うときの注意</h2>
<p>ThSQCA は、いちばん魅力的な結果を出す閾値を探すための道具ではありません。閾値の範囲は、尺度の意味、理論、実務上の目標に基づいて、あらかじめ正当化しておく必要があります。探索した範囲は、すべて報告してください。<code>generate_report()</code> 関数は、その記録を残すために作られています。</p>
</section>
<section id="リンク" class="level2">
<h2 class="anchored" data-anchor-id="リンク">リンク</h2>
<ul>
<li>論文: Toyoda, Y. (2026). Threshold-sweep QCA: threshold dependence as an analytical dimension. <em>Quality &amp; Quantity</em>. <a href="https://doi.org/10.1007/s11135-026-03092-3">https://doi.org/10.1007/s11135-026-03092-3</a></li>
<li>CRAN のパッケージ: <a href="https://cran.r-project.org/package=ThSQCA">ThSQCA</a></li>
<li>ソースコード: <a href="https://github.com/im-research-yt/ThSQCA">GitHub</a></li>
<li>ドキュメント(英語): <a href="https://im-research-yt.github.io/ThSQCA/">im-research-yt.github.io/ThSQCA</a></li>
<li>ブラウザのツール: <a href="https://im-research-yt.github.io/analysis-tools/qca-quickstart.html">QCA Quickstart</a>、<a href="https://im-research-yt.github.io/analysis-tools/sweep-builder.html">Sweep Builder</a></li>
</ul>


</section>

 ]]></description>
  <category>ThSQCA</category>
  <guid>https://im-research-yt.github.io/ja/articles/introducing-thsqca/</guid>
  <pubDate>Thu, 01 Oct 2026 15:00:00 GMT</pubDate>
  <media:content url="https://im-research-yt.github.io/ja/articles/introducing-thsqca/thumbnail.png" medium="image" type="image/png" height="76" width="144"/>
</item>
<item>
  <title>ようこそ</title>
  <dc:creator>Yuki Toyoda</dc:creator>
  <link>https://im-research-yt.github.io/ja/articles/welcome/</link>
  <description><![CDATA[ 




<p>このブログは、閾値スイープQCA、Rパッケージ ThSQCA、マーケティング研究のためのデータ分析について、ノートを集めたものです。</p>
<p>Rのコードを生成する、ブラウザのツールを3つ公開しています。<a href="https://im-research-yt.github.io/analysis-tools/qca-quickstart.html">QCA Quickstart</a> は、最初の <code>truthTable()</code> と <code>minimize()</code> のスクリプトを作ります。<a href="https://im-research-yt.github.io/analysis-tools/sweep-builder.html">Sweep Builder</a> は、閾値を固定したQCAの設定を、ThSQCAのスイープのコードに変えます。<a href="https://im-research-yt.github.io/analysis-tools/scale_maker.html">Scale Maker</a> は、アンケートの項目から尺度を作る手順を、Rのスクリプトとあわせて示します。</p>
<p>記事は、<a href="../../../ja/index.html">日本語版トップ</a>に、読む順に並べてあります。初めての方は、上から読んでください。再現できるRのコードを載せた技術的な記事は、ThSQCA 入門シリーズにあります。</p>



 ]]></description>
  <category>news</category>
  <guid>https://im-research-yt.github.io/ja/articles/welcome/</guid>
  <pubDate>Wed, 30 Sep 2026 15:00:00 GMT</pubDate>
  <media:content url="https://im-research-yt.github.io/ja/articles/welcome/thumbnail.png" medium="image" type="image/png" height="76" width="144"/>
</item>
</channel>
</rss>
