← 統計検定テキスト 一覧

📊 対象級:1級 | 重要度:B(標準)

要点(BLUF)

潜在クラス分析(LCA: Latent Class Analysis)は、複数のカテゴリカルな観測変数の背後に、観測されない**離散的な潜在変数(潜在クラス)**を仮定し、各個体を確率的にいずれかのクラスへ分類する手法です。アンケートの回答パターンから「隠れた回答者タイプ」を見つける、といった人文・社会調査で使われます。

1級(統計応用・人文科学)では、局所独立の意味・EMとの関係・因子分析やIRTとの違いが問われます(範囲・配点は改訂されうるため要最新確認)。

graph TD
  ROOT["潜在変数モデル<br/>観測の背後に見えない変数を置く"] --> DISC["潜在変数が離散<br/>=個体をクラスに分類"]
  ROOT --> CONT["潜在変数が連続<br/>=個体に連続スコアを付与"]
  DISC --> LCA["潜在クラス分析<br/>観測:カテゴリ"]
  DISC --> LPA["潜在プロファイル分析<br/>観測:連続"]
  CONT --> FA["因子分析<br/>観測:連続"]
  CONT --> IRT["項目反応理論 IRT<br/>観測:カテゴリ"]
  LCA -.->|観測が連続なら| LPA
  LCA -.->|潜在が連続なら| IRT

1. 何をする手法か — 直観

アンケートで「Q1: 環境に配慮した商品を選ぶ(はい/いいえ)」「Q2: 価格より品質を重視する(はい/いいえ)」「Q3: 広告を信用する(はい/いいえ)」のようなカテゴリカルな質問に多数の回答者が答えたとします。回答パターンを眺めると、なんとなく「意識高い層」「価格重視層」「無関心層」のようなタイプが混ざっていそうです。

LCAは、この「目には見えないタイプ(潜在クラス)」がいくつあって、各回答者がどのタイプにどのくらいの確率で属するかを、データから推定します。

LCAの世界観:回答者の集団は、いくつかの見えないクラスの混ぜ物(混合)である。各クラスは「各質問にどう答えやすいか」という固有の反応確率を持つ。観測されるのは回答パターンだけで、誰がどのクラスかは隠れている。

ここでLCAは2つの顔を持ちます。「観測変数の相関を、背後の共通要因で説明する」という因子分析的な顔と、「個体をいくつかのタイプに分類する」というクラスター分析的な顔です。違いは、因子分析が連続的な共通因子を置くのに対し、LCAは離散的なクラスを置く点です。


2. 潜在変数モデルの4象限(最重要の位置づけ)

LCAを正しく理解する鍵は、「潜在変数が連続か離散か」「観測変数が連続かカテゴリか」という2軸で、近縁の手法と並べて位置づけることです。この4象限は1級で頻出の整理です。

観測変数:連続観測変数:カテゴリカル
潜在変数:連続因子分析因子分析
連続スコア(因子得点)を付与
項目反応理論 IRT項目反応理論とテスト理論
連続な能力 θ\theta を推定
潜在変数:離散潜在プロファイル分析(LPA)
連続観測でクラスに分類
潜在クラス分析(LCA)
カテゴリ観測でクラスに分類

読み方を1象限ずつ:

覚え方潜在変数の連続/離散が「スコアを付ける(因子分析・IRT)」か「グループに分ける(LPA・LCA)」かを決め、観測変数の連続/カテゴリが「どんなデータに使えるか」を決める。LCAは「離散の潜在 × カテゴリの観測」の象限。

graph LR
  Q["潜在変数は<br/>連続? 離散?"] -->|連続:スコア付与| S["観測は連続? カテゴリ?"]
  Q -->|離散:グループ分け| G["観測は連続? カテゴリ?"]
  S -->|連続| FA2["因子分析"]
  S -->|カテゴリ| IRT2["IRT"]
  G -->|連続| LPA2["潜在プロファイル分析"]
  G -->|カテゴリ| LCA2["潜在クラス分析(LCA)"]

3. モデルの定式化

3.1 記号と設定

パラメータは次の2種類だけです:

要するに「クラスの大きさ γc\gamma_c と、各クラスが各質問にどう答えやすいか πjc\pi_{jc}」の2つを、データから推定するのがLCAです。

3.2 局所独立の仮定(モデルの心臓部)

LCAの核心は**局所独立(local independence)**の仮定です。

局所独立:潜在クラスを与えれば(条件づければ)、観測変数は互いに独立になる。 P(y1,,yJclass=c)=j=1JP(yjclass=c)P(y_1,\dots,y_J\mid \text{class}=c)=\prod_{j=1}^{J}P(y_j\mid \text{class}=c)

これは「観測変数間に見える相関は、すべてクラスの違いが生み出している」という主張です。クラスという共通の源で条件づけてしまえば、項目間に残る関連はもうない、と仮定します。

要するに「相関の源はクラスだけ。クラスを固定すれば各質問の答えはバラバラ(独立)になる」。これがLCAの世界観そのもので、後で出てくる積 j\prod_j の根拠になります。

このクラス cc に属する人の、回答パターン y\mathbf{y} の確率は、局所独立により各項目の確率の積で書けます。2値なら各項目はベルヌーイなので:

P(yclass=c)=j=1Jπjcyj(1πjc)1yjP(\mathbf{y}\mid \text{class}=c)=\prod_{j=1}^{J}\pi_{jc}^{\,y_j}\,(1-\pi_{jc})^{1-y_j}

要するに「クラス cc の人がこの回答パターンを出す確率は、各質問の『はい確率 πjc\pi_{jc}/いいえ確率 1πjc1-\pi_{jc}』を、実際の回答に合わせて全部掛けたもの」。

3.3 混合モデルとしての反応パターン確率

実際に観測されるのは「クラスの分からない回答パターン」です。そこで、どのクラスかについて**周辺化(足し上げ)**します。クラス cc である確率 γc\gamma_c で重みづけて全クラスを足すと:

  P(y)=c=1Cγcj=1JP(yjclass=c)=c=1Cγcj=1Jπjcyj(1πjc)1yj  \boxed{\;P(\mathbf{y})=\sum_{c=1}^{C}\gamma_c\,\prod_{j=1}^{J}P(y_j\mid \text{class}=c) =\sum_{c=1}^{C}\gamma_c\prod_{j=1}^{J}\pi_{jc}^{\,y_j}(1-\pi_{jc})^{1-y_j}\;}

要するに「観測される回答パターンの確率は、各クラスの確率を『そのクラスの大きさ γc\gamma_c』で重みづけて混ぜ合わせたもの」。これは有限混合モデル(複数の分布を混合比で混ぜたモデル)の一種で、混合分布の各成分がカテゴリ分布(ベルヌーイの積)になっているもの、と見られます。ガウス混合分布の成分を正規分布からカテゴリ分布に置き換えたのがLCA、と捉えると見通しが良いです。

多値カテゴリへの拡張。 項目 jjKjK_j 個のカテゴリを取る場合、反応確率を πjck=P(yj=kclass=c)\pi_{jck}=P(y_j=k\mid \text{class}=c)(各クラス・各項目で kπjck=1\sum_k\pi_{jck}=1)とし、各項目の寄与を該当カテゴリの確率に置き換えるだけです。形は変わりません:

P(y)=c=1Cγcj=1Jk=1Kjπjck1(yj=k)P(\mathbf{y})=\sum_{c=1}^{C}\gamma_c\prod_{j=1}^{J}\prod_{k=1}^{K_j}\pi_{jck}^{\,\mathbb{1}(y_j=k)}

ここで 1(yj=k)\mathbb{1}(y_j=k) は「項目 jj の回答がカテゴリ kk なら1、そうでなければ0」を表す指示関数です。

3.4 具体例(数値で1パターン)

クラス2つ、項目3つ、すべて2値とします。混合比 γ1=0.6, γ2=0.4\gamma_1=0.6,\ \gamma_2=0.4。クラス1(意識高い層)とクラス2(無関心層)の「はい確率」を次のように仮定します。

反応確率 πjc\pi_{jc}Q1Q2Q3
クラス1(割合 0.6)0.90.80.7
クラス2(割合 0.4)0.20.30.1

回答パターン y=(1,1,0)\mathbf{y}=(1,1,0)(Q1はい・Q2はい・Q3いいえ)が観測される確率は、各クラスでの確率を局所独立の積で出し、混合比で重みづけます:

P(1,1,0)=0.6×0.216+0.4×0.054=0.1296+0.0216=0.1512P(1,1,0)=0.6\times0.216+0.4\times0.054=0.1296+0.0216=0.1512

要するに「各クラスでこのパターンが出る確率を、クラスの大きさで重みづけて足すだけ」。次の節で、この個体がどちらのクラスらしいか(事後確率)を計算します。


4. EMアルゴリズムによる推定(導出)

4.1 なぜEMか — 「クラス所属を欠測とみなす」

推定したいのは γc\gamma_cπjc\pi_{jc} です。素直には対数尤度

(γ,π)=i=1nlog[c=1Cγcj=1JP(yijc)]\ell(\gamma,\pi)=\sum_{i=1}^{n}\log\Big[\sum_{c=1}^{C}\gamma_c\prod_{j=1}^{J}P(y_{ij}\mid c)\Big]

を最大化したい。しかし**log\log の中に \sum がある**(混合の和が対数の内側に入る)ため、微分して0と置いても閉形式で解けません。これは混合モデル一般の困りどころです。

そこで発想を変えます。「もし各個体がどのクラスかが分かっていれば」推定は簡単です。クラスごとにデータを仕分けて、クラスの人数比から γ\gamma を、クラス内の『はい』の割合から π\pi を数えるだけだからです。だが実際にはクラス所属は観測されない=欠測

EMの考え方:観測されない「個体のクラス所属」を欠測データとみなす。欠測の事後分布(各個体が各クラスである確率)で期待を取りながら、γ,π\gamma,\pi を反復更新する。

これは欠測データのEM(欠測データ・EMアルゴリズム)の枠組みそのものです。LCAは「クラス所属ラベルが全員分欠測している」特殊な欠測問題として解けます。

4.2 完全データ尤度を準備する

クラス所属を表す潜在的な指示変数 zicz_{ic} を導入します。「個体 ii がクラス cc なら zic=1z_{ic}=1、そうでなければ 00」。各個体は1クラスだけなので czic=1\sum_c z_{ic}=1

もし zicz_{ic} が観測できたら、データ (yi,zi)(\mathbf{y}_i, z_i)完全データ尤度は次のように書けます:

P(yi,zi)=c=1C[γcj=1JP(yijc)]zicP(\mathbf{y}_i, z_i)=\prod_{c=1}^{C}\Big[\gamma_c\prod_{j=1}^{J}P(y_{ij}\mid c)\Big]^{z_{ic}}

要するに「個体 ii が属するクラス(zic=1z_{ic}=1 のところ)の項だけが生き残り、γc×\gamma_c \times(局所独立の積)になる」。指数 zicz_{ic} は「属するクラスの項だけ1乗で残し、他はゼロ乗で消す」スイッチの役割です。全個体の完全データ対数尤度は:

comp=i=1nc=1Czic[logγc+j=1JlogP(yijc)]\ell_{\text{comp}}=\sum_{i=1}^{n}\sum_{c=1}^{C} z_{ic}\Big[\log\gamma_c+\sum_{j=1}^{J}\log P(y_{ij}\mid c)\Big]

ここがポイントで、log\log の中の \sum が消えましたzicz_{ic} のおかげで対数が和の外に出た)。これなら最大化が簡単です。ただし zicz_{ic} は未知なので、その期待値で置き換えます。これがEステップです。

4.3 Eステップ — 事後所属確率(負担率)の計算

zicz_{ic} は0/1の確率変数なので、その期待値は「個体 ii がクラス cc である確率」そのものです。現在のパラメータ γ(t),π(t)\gamma^{(t)},\pi^{(t)} のもとで、観測 yi\mathbf{y}_i を見たうえでの事後所属確率ベイズの定理で計算します:

  ricE[zicyi]=P(class=cyi)=γc(t)jP(yijc)c=1Cγc(t)jP(yijc)  \boxed{\; r_{ic}\equiv E[z_{ic}\mid \mathbf{y}_i] =P(\text{class}=c\mid \mathbf{y}_i) =\frac{\gamma_c^{(t)}\,\prod_{j}P(y_{ij}\mid c)}{\displaystyle\sum_{c'=1}^{C}\gamma_{c'}^{(t)}\,\prod_{j}P(y_{ij}\mid c')} \;}

要するに「『クラスの大きさ γc\gamma_c × そのクラスでこの回答が出る確率』を、全クラス分で割って正規化したもの」。分子は「クラス cc かつこの回答パターン」の同時確率、分母は「この回答パターン」の周辺確率(3.3の混合の式)です。ベイズの定理 P(cy)=P(c)P(yc)/P(y)P(c\mid\mathbf{y})=P(c)P(\mathbf{y}\mid c)/P(\mathbf{y}) をそのまま当てはめた形です。

この ricr_{ic} を**負担率(responsibility)**と呼びます。「個体 ii をクラス cc がどれだけ『担当』しているか」を表す重みで、cric=1\sum_c r_{ic}=1(各個体の負担率は全クラスで足すと1)。

4.1の具体例で計算してみる。 個体の回答が (1,1,0)(1,1,0) のとき、4.1の数値で:

ri1=0.12960.15120.857,ri2=0.02160.15120.143r_{i1}=\frac{0.1296}{0.1512}\approx 0.857,\qquad r_{i2}=\frac{0.0216}{0.1512}\approx 0.143

要するに「この回答パターンの人は、約86%の確からしさでクラス1(意識高い層)」。LCAが各個体を確率的に(白黒でなく)分類するとはこのことです。最終的にどのクラスへ割り当てるかは、最大の事後確率を取るクラス(MAP割り当て)にするのが普通です。

4.4 Mステップ — パラメータ γ,π\gamma,\pi の更新

Eステップで zicz_{ic}ricr_{ic} に置き換えた期待完全データ対数尤度

Q(γ,π)=i=1nc=1Cric[logγc+j=1JlogP(yijc)]Q(\gamma,\pi)=\sum_{i=1}^{n}\sum_{c=1}^{C} r_{ic}\Big[\log\gamma_c+\sum_{j=1}^{J}\log P(y_{ij}\mid c)\Big]

を、γ,π\gamma,\pi について最大化します。log\log の中の和が消えているので、今度は閉形式で解けます。

混合比 γc\gamma_c の更新。 制約 cγc=1\sum_c\gamma_c=1 のもとで QQ を最大化します。ラグランジュ未定乗数法(乗数 λ\lambda)で γc[Qλ(cγc1)]=0\frac{\partial}{\partial\gamma_c}\big[Q-\lambda(\sum_c\gamma_c-1)\big]=0 を解くと、iric/γcλ=0\sum_i r_{ic}/\gamma_c-\lambda=0、すなわち γciric\gamma_c\propto\sum_i r_{ic}。正規化して:

  γc(t+1)=1ni=1nric  \boxed{\;\gamma_c^{(t+1)}=\frac{1}{n}\sum_{i=1}^{n} r_{ic}\;}

要するに「新しいクラスの大きさ=そのクラスの負担率を全個体で足して、人数 nn で割ったもの」。もし所属が確定(ricr_{ic} が0/1)なら、ただの「クラス cc の人数 ÷\div 全人数」になります。負担率は「ソフトな人数カウント」です。

反応確率 πjc\pi_{jc} の更新(2値の場合)。 QQ のうち πjc\pi_{jc} に関わる項は、ベルヌーイ対数尤度 iric[yijlogπjc+(1yij)log(1πjc)]\sum_i r_{ic}\big[y_{ij}\log\pi_{jc}+(1-y_{ij})\log(1-\pi_{jc})\big] です。πjc\pi_{jc} で微分して0と置くと:

iric[yijπjc1yij1πjc]=0  πjc(t+1)=i=1nricyiji=1nric  \sum_i r_{ic}\Big[\frac{y_{ij}}{\pi_{jc}}-\frac{1-y_{ij}}{1-\pi_{jc}}\Big]=0 \quad\Longrightarrow\quad \boxed{\;\pi_{jc}^{(t+1)}=\frac{\sum_{i=1}^{n} r_{ic}\,y_{ij}}{\sum_{i=1}^{n} r_{ic}}\;}

要するに「クラス cc の項目 jj の『はい確率』=負担率で重みづけた『はい』の合計 ÷\div 負担率の合計」。これは「クラス cc の人たち(ソフトに数えて)のうち、項目 jj に『はい』と答えた割合」にほかなりません。多値カテゴリなら、分子を「カテゴリ kk に答えた人の負担率合計」に替えるだけです:

πjck(t+1)=iric1(yij=k)iric\pi_{jck}^{(t+1)}=\frac{\sum_i r_{ic}\,\mathbb{1}(y_{ij}=k)}{\sum_i r_{ic}}

4.5 EM全体の流れと収束

flowchart TD
  INIT["初期値:γ・π をランダムに設定<br/>(多数のランダム初期値から開始)"] --> ESTEP["Eステップ:負担率 r_ic を計算<br/>事後所属確率=ベイズの定理で正規化"]
  ESTEP --> MSTEP["Mステップ:γ・π を更新<br/>γ=負担率の平均/π=負担率で重みづけた はい割合"]
  MSTEP --> CHECK{"対数尤度の<br/>増分が小さい?"}
  CHECK -->|いいえ| ESTEP
  CHECK -->|はい| DONE["収束:推定値 γ・π を確定<br/>各個体を最大事後確率のクラスへ割当(MAP)"]

EステップとMステップを交互に繰り返すと、観測データの対数尤度 \ell単調に増加し(EMの一般性質。欠測データ・EMアルゴリズム 参照)、停留点に収束します。要するに「負担率を計算 → その重みでパラメータ更新 → また負担率を計算…を、尤度が増えなくなるまで回す」。

ただし対数尤度は多峰になりうるため、初期値次第で局所最適に落ちます。実務では多数のランダム初期値から走らせ、最良の解を採用します(global maximum を取り逃さないため)。これも混合モデルのEMに共通の注意点です。


5. クラス数の決定

LCAではクラス数 CC が分析者の決めるべき重要な選択です。CC は連続パラメータではないので、EMでは推定できません。実務では「C=1,2,3,C=1,2,3,\dots と複数のモデルを当てはめ、基準で比較する」流れを取ります。

主な基準:

⚠️ 注意:通常の尤度比検定で「CC クラス vs C+1C+1 クラス」を直接比較するのは不適切。クラスを1つ減らすことが「混合比 γ=0\gamma=0」や「2クラスの反応確率が一致」というパラメータ空間の境界・非識別に当たり、尤度比統計量が χ2\chi^2 分布に従わないからです(混合モデルの正則条件が崩れる)。この点は1級で問われうる重要論点です。

また**識別可能性(identifiability)**にも制約があります。クラス数 CC を増やすほどパラメータは増えますが、観測される回答パターンの種類(自由度)には限りがあるため、CC が大きすぎるとモデルが識別できなくなります。識別可能なクラス数の範囲で CC を探す必要があります。


6. 試験での問われ方(1級)

統計応用(人文科学)でLCAが問われるときの典型的な角度です。


7. 引っかけ・頻出論点


よくある疑問(Q&A)

Q1. 「局所独立」は強すぎる仮定では? 現実に観測変数が完全に独立になることなんてあるのですか?

「無条件で独立」ではなく「クラスを与えた後で独立」という条件付き独立なので、見た目ほど強くありません。むしろLCAの主張は「観測変数間の相関は、すべて背後のクラスの違いから生まれている。だからクラスで条件づければ相関は消えるはずだ」というものです。もしクラスで条件づけても項目間に相関が残るなら、それは「クラス数が足りない」か「局所独立が崩れている(項目間に直接の依存がある)」サインで、クラスを増やすか局所独立の緩和(項目間に直接効果を入れる拡張)を検討します。実務では残差相関をチェックして局所独立の妥当性を診断します。

Q2. LCAと因子分析は、結局どう違うのですか? どちらも「背後の見えない変数で相関を説明する」のでは?

その通りで、両者は「観測変数の相関を背後の潜在変数で説明する」という発想を共有します。決定的な違いは潜在変数が連続か離散かです。因子分析は連続的な因子を置き、個体に連続的な因子得点(例:学力スコア)を付けます。LCAは離散的なクラスを置き、個体を「タイプ」に分類します。だから因子分析の出力は「各因子のスコア」、LCAの出力は「各クラスへの所属確率」です。観測変数も、因子分析は連続変数向け、LCAはカテゴリ変数向け、と守備範囲が違います(4象限の表を参照)。

Q3. EMのEステップで計算する「負担率」と、最終的なクラス割り当ては同じものですか?

違います。負担率 ricr_{ic} は「個体 ii がクラス cc である確率(事後所属確率)」で、0〜1の連続値です。例えば ri1=0.86, ri2=0.14r_{i1}=0.86,\ r_{i2}=0.14 のように、1人が複数クラスにまたがる確率を持ちます。これはEMの計算途中で使うソフトな所属です。一方、最終的に「この人はクラス1」と1つに決めるのは、負担率が最大のクラスを選ぶMAP割り当てで、これは最後に行う後処理です。EMの推定中はあくまで確率(負担率)で扱い、白黒を付けるのは最後だけ、と区別してください。

Q4. クラス数はどう決めるのが正解ですか? AICとBICで答えが食い違ったらどうしますか?

唯一の正解はなく、複数の基準を総合して決めます。AICはクラスを多めに取りがち、BICは分離が良ければ妥当、というクセを知った上で、両者が割れたら解釈可能性(各クラスが実質的に意味を持ち命名できるか)とエントロピー(分類の明確さ)も見て判断します。基本姿勢は「BICを主軸にしつつ、解釈で裏を取る」ことが多いです。なお、CC vs C+1C+1 を通常の尤度比検定で比べるのは(境界・非識別の問題で χ2\chi^2 にならず)不適切なので、その代わりにブートストラップ尤度比検定(BLRT)を使う方法もあります。

Q5. LCAの結果は「各個体がどのクラスか」のラベルですか? それとも何か別の出力ですか?

主な出力は2階層あります。第一にクラスの特徴づけ:混合比 γc\gamma_c(各クラスの大きさ)と反応確率 πjc\pi_{jc}(各クラスが各項目にどう答えやすいか)です。これが「意識高い層は20%で、環境配慮に90%はいと答える」といったクラスのプロファイルを与え、分析の主役になります。第二に個体ごとの所属:各個体の事後所属確率 ricr_{ic} と、そこから決めるMAP割り当てラベルです。マーケティングのセグメンテーションなら前者でセグメントを定義し、後者で各顧客をセグメントに割り振る、という使い分けになります。


まとめ


関連ノート