ChatGPTと一緒に統計学に関わる事象について直感的な理解を目指すシリーズ。
同手法が用いられている参考論文: Symptom Subtypes of Obstructive Sleep Apnea Predict Incidence of Cardiovascular Outcomes
0. 目次
| No. | 項目 |
|---|---|
| 1 | まず全体像:潜在クラス分析とは何か |
| 2 | 「クラスタリング」と考えてよいのか |
| 3 | まず、LCAに実際に入力するデータは何なのか |
| 4 | LCAでは何を未知のものとして推定するのか |
| 5 | もし誰がどのクラスか分かっていれば簡単である |
| 6 | LCAでは「クラス」も「症状確率」も両方分からない |
| 7 | Step 0:まず仮のパラメータから始める |
| 8 | E-step:患者AがClass 1らしいかを計算する |
| 9 | 同じ患者についてClass 2の場合も計算する |
| 10 | Bayesの定理で「患者Aが各クラスに属する確率」を求める |
| 11 | 全患者について同じ計算を行う |
| 12 | M-step:Class 1の人数を更新する |
| 13 | M-step:Class 1の日中眠気率を更新する |
| 14 | 他の症状確率も同様に更新する |
| 15 | 新しい確率を使って、もう一度E-stepを行う |
| 16 | いつ計算を終了するのか |
| 17 | 「眠気型」という名前は最後に付ける |
| 18 | LCAで実際に行っていることを一気につなげる |
| 19 | したがってLCAは最初から患者を硬く分けているわけではない |
| 20 | では「クラスが4個」とどうやって決めたのか |
| 21 | BICとは何をしているのか |
| 22 | なぜクラスを増やすとパラメータが増えるのか |
| 23 | この論文では何をしたのか |
| 24 | つまりLCAとCoxは全く別の役割を担当している |
| 25 | k-meansとの違いを数式レベルで見る |
| 26 | Gaussian mixture modelとの方がむしろ近い |
| 27 | この論文でLCAが適している理由 |
| 28 | ただし「4種類のOSAが本当に存在する」と証明したわけではない |
| 29 | local independenceもかなり強い仮定である |
| 30 | BIC最小だから機械的に正解、というわけでもない |
| 31 | 今回の4クラスは何を意味しているのか |
| 32 | 全体を一気につなげると |
| 33 | 一番重要な理解 |
1. まず全体像:潜在クラス分析とは何か
Latent Class Analysis(LCA:潜在クラス分析)は、
複数の観測されたカテゴリ変数の組み合わせから、その背後に存在すると仮定した「直接観測できないカテゴリ」を推定する統計モデル
である。
今回の論文なら、実際に観測できるのは、
| |
といった症状である。
一方、
| |
という変数を直接測定したわけではない。
そこで、
| |
のように、
背後に「患者タイプ」という見えない変数 $C$ が存在し、そのタイプによって各症状が出現する確率が変わる
と考える。
この見えない変数が、
$$ \boxed{\text{latent class}} $$である。
今回の論文ではAHI 15以上のOSA患者1,207人について、14個の症状質問とESSを用いてLCAを行い、最終的に4つの症状サブタイプを得ている。(PubMed Central (PMC))
2. 「クラスタリング」と考えてよいのか
結論から言えば、
$$ \boxed{\text{LCAはクラスタリングの一種と考えてよい}} $$ただし、k-meansのような一般的なクラスタリングとは患者を分ける根拠が違う。
k-meansなら、
特徴量空間で距離の近い人を同じグループにする
という発想になる。
一方LCAでは、
いくつかの潜在集団が存在し、それぞれの集団が異なる確率で症状を出している
という確率モデルを仮定する。
つまり、
| |
なのに対して、
| |
となる。
ここが本質的な違いである。
3. まず、LCAに実際に入力するデータは何なのか
ここを最初にはっきりさせておく。
LCAを行う時点で研究者が実際に持っているのは、
各患者について観測された症状データだけ
である。
例えば、説明を単純にするため、
$S$ = 日中眠気
$I$ = 入眠困難
$F$ = 身体的疲労
の3症状だけを調べたとする。
それぞれ、
$$ 0=\text{症状なし},\qquad1=\text{症状あり} $$とする。
5人の患者から次のデータが得られたとする。
| 患者 | 日中眠気 $S$ | 入眠困難 $I$ | 身体的疲労 $F$ |
|---|---|---|---|
| A | 1 | 0 | 1 |
| B | 1 | 0 | 1 |
| C | 0 | 1 | 0 |
| D | 1 | 0 | 1 |
| E | 0 | 1 | 0 |
これが実際に観測されたデータである。
この時点では、
| |
ということは分からない。
また、
$$ P(S=1\mid C=1) $$のような、
Class 1の患者に日中眠気が出現する確率
も分からない。
つまり、最初に分かっているのは、
$$ \boxed{ X= \text{患者ごとの症状データ} } $$だけである。
4. LCAでは何を未知のものとして推定するのか
例えば、
この患者集団には2種類の潜在クラスが存在する
と仮定してみる。
この段階では、
| |
という名前しかなく、
「眠気型」
「不眠型」
などという意味付けもまだ存在しない。
LCAで推定したいものは主に2種類ある。
1つ目は、
$$ \pi_k=P(C=k) $$である。
これは、
全患者のうちClass $k$ がどのくらい存在するか
というクラス割合である。
例えば、
$$ \pi_1=0.6 $$なら、
集団の約60%がClass 1に由来する
という意味になる。
2つ目は、各クラスにおける各症状の出現確率である。
例えば、
$$ \theta_{S1}=P(S=1\mid C=1) $$$$ \theta_{I1}=P(I=1\mid C=1) $$$$ \theta_{F1}=P(F=1\mid C=1) $$である。
つまり最終的には、
| Class 1 | Class 2 | |
|---|---|---|
| クラス割合 $\pi_k$ | ? | ? |
| $P(S=1\mid C=k)$ | ? | ? |
| $P(I=1\mid C=k)$ | ? | ? |
| $P(F=1\mid C=k)$ | ? | ? |
の**?を患者データから推定したい**。
ここがLCAの目的である。
5. もし誰がどのクラスか分かっていれば簡単である
まず、潜在クラスが観測できる世界を考えてみる。
仮に、
| 患者 | クラス | $S$ | $I$ | $F$ |
|---|---|---|---|---|
| A | 1 | 1 | 0 | 1 |
| B | 1 | 1 | 0 | 1 |
| C | 2 | 0 | 1 | 0 |
| D | 1 | 1 | 0 | 1 |
| E | 2 | 0 | 1 | 0 |
と分かっていたとする。
Class 1は3人いて、その3人全員に日中眠気がある。
したがって、
$$ P(S=1\mid C=1)=\frac{3}{3}=1 $$である。
Class 1で入眠困難がある患者は0人なので、
$$ P(I=1\mid C=1)=\frac{0}{3}=0 $$となる。
Class 2では2人中2人に入眠困難があるので、
$$ P(I=1\mid C=2)=\frac{2}{2}=1 $$である。
つまり、
誰がどのクラスに属するか分かっていれば、各クラスの症状確率は単なる割合として計算できる。
しかし実際のLCAでは、
$$ C_i $$は観測されない。
ここが問題になる。
6. LCAでは「クラス」も「症状確率」も両方分からない
実際には、
| |
一方、
| |
という循環が起こる。
つまり、
$$ \boxed{ \text{クラス所属} \leftrightarrow \text{クラスごとの症状確率} } $$の両方を同時に推定する必要がある。
そこで用いられる代表的な方法が、
$$ \boxed{ \text{EM algorithm} } $$である。
考え方は、
| |
というものである。
7. Step 0:まず仮のパラメータから始める
2クラスモデルを考える。
最初は真の値が分からないので、例えば仮に、
$$ \pi_1=0.5,\qquad\pi_2=0.5 $$とする。
さらに、
| 症状 | Class 1 | Class 2 |
|---|---|---|
| $P(S=1\mid C=k)$ | 0.60 | 0.30 |
| $P(I=1\mid C=k)$ | 0.30 | 0.70 |
| $P(F=1\mid C=k)$ | 0.60 | 0.40 |
という初期値から始めたとする。
重要なのは、
この0.60や0.30はデータから最終的に得られた答えではない。計算を開始するための仮の値にすぎない。
ということである。
実際のソフトウェアでは複数の初期値から計算を開始することも多い。
8. E-step:患者AがClass 1らしいかを計算する
患者Aの実際のデータは、
$$ (S,I,F)=(1,0,1) $$である。
まず、
もし患者AがClass 1だったなら、この症状パターンが出る確率はどれくらいか
を考える。
LCAでは基本的に、クラスが決まれば症状同士は独立であるという局所独立性を仮定する。
したがって、
$$ P(S=1,I=0,F=1\mid C=1) $$は、
$$ P(S=1\mid C=1) P(I=0\mid C=1) P(F=1\mid C=1) $$となる。
現在の仮パラメータでは、
$$ P(S=1\mid C=1)=0.60 $$$$ P(I=1\mid C=1)=0.30 $$なので、
$$ P(I=0\mid C=1)=0.70 $$である。
また、
$$ P(F=1\mid C=1)=0.60 $$なので、
$$ P(X_A\mid C=1)=0.60\times0.70\times0.60=0.252 $$となる。
しかしClass 1自体が集団の50%しかいないという情報も考慮する必要がある。
したがって、
$$ P(C=1,X_A)=\pi_1P(X_A\mid C=1) $$$$ =0.5\times0.252=0.126 $$となる。
9. 同じ患者についてClass 2の場合も計算する
Class 2では、
$$ P(S=1\mid C=2)=0.30 $$$$ P(I=1\mid C=2)=0.70 $$$$ P(F=1\mid C=2)=0.40 $$である。
患者Aは、
$$ (S,I,F)=(1,0,1) $$なので、
$$ P(X_A\mid C=2)=0.30\times(1-0.70)\times0.40 $$$$ =0.036 $$となる。
さらに、
$$ \pi_2=0.5 $$なので、
$$ P(C=2,X_A)=0.5\times0.036=0.018 $$となる。
つまり患者Aについて、
| |
となった。
10. Bayesの定理で「患者Aが各クラスに属する確率」を求める
患者Aの症状データが観測されたという条件のもとで、
$$ P(C=1\mid X_A) $$を求める。
Bayesの定理から、
$$ P(C=1\mid X_A)=\frac{P(C=1,X_A)}{P(C=1,X_A)+P(C=2,X_A)} $$なので、
$$ =\frac{0.126}{0.126+0.018} $$$$ =0.875 $$となる。
Class 2は、
$$ P(C=2\mid X_A)=0.125 $$である。
つまり現在の仮パラメータのもとでは、
患者Aは87.5% Class 1、12.5% Class 2らしい
ということになる。
重要なのは、
| |
といきなり確定するのではなく、
| |
のように扱うことである。
これがE-stepで行っていることである。
11. 全患者について同じ計算を行う
A〜Eの全患者について同じ計算を行うと、例えば、
| 患者 | 実際の症状 $(S,I,F)$ | Class 1所属確率 | Class 2所属確率 |
|---|---|---|---|
| A | $(1,0,1)$ | 0.875 | 0.125 |
| B | $(1,0,1)$ | 0.875 | 0.125 |
| C | $(0,1,0)$ | 0.143 | 0.857 |
| D | $(1,0,1)$ | 0.875 | 0.125 |
| E | $(0,1,0)$ | 0.143 | 0.857 |
のような結果になったとする。
これで初めて、
誰がどのクラスにどの程度属していそうか
という情報が得られた。
しかしこれはまだ、最初に仮置きしたパラメータに基づく暫定的な結果である。
次に、この結果を使って症状確率そのものを更新する。
12. M-step:Class 1の人数を更新する
Class 1への所属確率を全部足すと、
$$ 0.875+0.875+0.143+0.875+0.143=2.911 $$となる。
つまり5人の患者のうち、
合計2.911人分がClass 1に属している
と考える。
したがってClass 1の割合は、
$$ \pi_1=\frac{2.911}{5}=0.582 $$と更新される。
同様にClass 2は、
$$ \pi_2=1-0.582=0.418 $$となる。
最初は、
$$ \pi_1=\pi_2=0.5 $$と仮定していたが、データを使った1回目の更新によって、
$$ \pi_1=0.582 $$$$ \pi_2=0.418 $$に変わった。
13. M-step:Class 1の日中眠気率を更新する
次に、
$$ P(S=1\mid C=1) $$を更新する。
Class 1は合計、
$$ 2.911 $$人分存在する。
そのうち日中眠気 $S=1$ の患者はA、B、Dである。
AがClass 1に属する重みは、
$$ 0.875 $$Bも、
$$ 0.875 $$Dも、
$$ 0.875 $$なので、
$$ 0.875+0.875+0.875=2.625 $$人分になる。
したがって、
$$ P(S=1\mid C=1)=\frac{2.625}{2.911} $$$$ \approx0.902 $$となる。
つまり最初に仮置きした、
$$ P(S=1\mid C=1)=0.60 $$が、実際の患者データを使うことで、
$$ P(S=1\mid C=1)\approx0.90 $$へ更新された。
これが、
「Class 1で眠気が出る確率」をデータから推定する
ということの具体的な意味である。
14. 他の症状確率も同様に更新する
Class 1で入眠困難があるのはCとEである。
CがClass 1に属する重みは、
$$ 0.143 $$Eも、
$$ 0.143 $$なので、
$$ P(I=1\mid C=1)=\frac{0.143+0.143}{2.911} $$$$ \approx0.098 $$となる。
同様に身体的疲労についても、
$$ P(F=1\mid C=1) \approx0.902 $$などと計算できる。
するとClass 1は、
| パラメータ | 初期値 | 1回更新後 |
|---|---|---|
| $\pi_1$ | 0.50 | 0.582 |
| $P(S=1\mid C=1)$ | 0.60 | 0.902 |
| $P(I=1\mid C=1)$ | 0.30 | 0.098 |
| $P(F=1\mid C=1)$ | 0.60 | 0.902 |
となる。
ここで初めて、
Class 1は、眠気と身体的疲労が非常に多く、入眠困難が少ない集団らしい
という形がデータから見えてくる。
15. 新しい確率を使って、もう一度E-stepを行う
しかし1回更新しただけでは終わらない。
今度は、
$$ P(S=1\mid C=1)=0.902 $$$$ P(I=1\mid C=1)=0.098 $$などの新しい値を使って、
$$ P(C=1\mid X_i) $$を全患者について再計算する。
すると、
| |
という患者A、B、Dは、以前よりさらにClass 1に属する確率が高くなる。
一方、
| |
という患者C、Eは、Class 2に属する確率がさらに高くなる。
その新しい所属確率を使って、
$$ \pi_k $$や、
$$ P(X_j=1\mid C=k) $$をもう一度更新する。
つまり、
| |
と繰り返す。
これがEMアルゴリズムである。
16. いつ計算を終了するのか
例えばClass 1の日中眠気率が、
| |
のように変化したとする。
最初は大きく変化するが、次第にほとんど変わらなくなる。
同様に、
$$ \pi_k $$や他の症状確率も変化しなくなり、尤度の増加もほぼ止まる。
その時点で、
観測された患者データを最もうまく説明するパラメータに到達した
と考えて計算を終了する。
厳密には、EMアルゴリズムは反復のたびに尤度を低下させないようにパラメータを更新していく。
最終的には、
$$ \boxed{L(\pi,\theta)=\prod_{i=1}^{n}\left[\sum_{k=1}^{K}\pi_kP(X_i\mid C_i=k)\right]} $$が大きくなるような、
$$ \hat\pi_k $$と、
$$ \hat\theta_{jk}=\widehat{P(X_j=1\mid C=k)} $$を得る。
17. 「眠気型」という名前は最後に付ける
ここまでの計算では、
| |
という無意味な番号しか使っていない。
例えば最終的に、
| 症状 | Class 1 | Class 2 |
|---|---|---|
| 日中眠気 | 0.98 | 0.05 |
| 入眠困難 | 0.03 | 0.96 |
| 身体的疲労 | 0.98 | 0.05 |
となったとする。
ここで研究者が初めて、
| |
と解釈する。
したがって、
$$ \boxed{ \text{眠気型だから眠気率が高くなる} } $$のではない。
順番は逆で、
$$ \boxed{ \text{データから眠気率の高いClassが推定された} \rightarrow \text{それを眠気型と命名した} } $$のである。
18. LCAで実際に行っていることを一気につなげる
| |
したがって、LCAで最も重要なのは、
最初からクラスごとの症状確率が分かっているわけではない
ことである。
観測されているのは患者ごとの症状データだけであり、
$$ P(X_j=1\mid C=k) $$も、
$$ P(C_i=k\mid X_i) $$も未知である。
この2つを、
$$ \boxed{ \text{症状確率から所属確率を推定} \leftrightarrow \text{所属確率から症状確率を推定} } $$と交互に更新しながら、観測データ全体の尤度を高くしていく。
これが潜在クラス分析で確率がデータから推定されていく仕組みである。
19. したがってLCAは最初から患者を硬く分けているわけではない
ここはk-meansとの大きな違いである。
LCAの内部では、
| 患者 | Class 1 | Class 2 | Class 3 | Class 4 |
|---|---|---|---|---|
| A | 0.92 | 0.04 | 0.03 | 0.01 |
| B | 0.10 | 0.12 | 0.70 | 0.08 |
| C | 0.28 | 0.26 | 0.24 | 0.22 |
のように、所属確率が存在する。
患者Aはかなり明確だが、患者Cはかなり曖昧である。
最終的に、
$$ \arg\max_k P(C_i=k\mid X_i) $$を使って、
| |
と分類することはできる。
しかし患者AとCを同じ「Class 1」と表示しても、
| |
なので、分類の確実性はまるで違う。
したがって、
LCA本来の出力は「クラスラベル」だけではなく「各クラスへの所属確率」
という理解が重要である。
20. では「クラスが4個」とどうやって決めたのか
今までは、
$$ K $$が既に分かっているものとして説明した。
しかし実際には、
| |
も分からない。
そこで、
| |
をそれぞれ作る。
当然、クラスを増やせばモデルは複雑になり、データに合わせやすくなる。
極端に言えばクラスを無限に増やせば、個々の患者にどんどん適合できる。
そこで、
データへの適合度は良くしたいが、不必要に複雑なモデルにはしたくない
という問題が出てくる。
この論文ではそのためにBICを使っている。(PubMed Central (PMC))
21. BICとは何をしているのか
Bayesian Information Criterionは、
$$ \boxed{ BIC=-2\log\hat L+p\log n } $$と書ける。
ここで、
$$ \hat L $$は最尤推定したモデルの尤度、
$$ p $$はパラメータ数、
$$ n $$は患者数である。
前半の、
$$ -2\log\hat L $$は、
データにどれくらいうまく適合しているか
を反映する。
尤度が高ければ、この値は小さくなる。
一方、
$$ p\log n $$は、
パラメータをたくさん使ったことへの罰則
である。
したがって、
$$ \boxed{\text{BIC}=\text{適合の悪さ}+\text{複雑さへのペナルティ}} $$と考えればよい。
そして、
$$ \boxed{\text{BICが小さいモデルほどよい}} $$とする。
22. なぜクラスを増やすとパラメータが増えるのか
例えば症状が15個あり、全部二値だったとする。
1クラスごとに、
$$ 15 $$個の症状出現確率が必要になる。
4クラスなら、
$$ 15\times4=60 $$個である。
さらにクラス割合、
$$ \pi_1,\pi_2,\pi_3,\pi_4 $$も必要になる。
クラス割合の合計が1なのでクラス割合のパラメータ4つのうち独立なパラメータは3個。
したがってざっくり、
$$ 60+3=63 $$個のパラメータが必要になる。
5クラスなら、
$$ 15\times5+4=79 $$となる。
当然、5クラスモデルの方がデータには合わせやすい。
だから単純に尤度だけ比較すると、クラスを増やす方が有利になりやすい。
BICはそこにペナルティを入れている。
23. この論文では何をしたのか
論文の流れをLCAだけ抜き出すと、
| |
という構造である。(PubMed Central (PMC))
したがって、
$$ \boxed{ \text{LCA} \rightarrow \text{患者phenotyping} } $$を最初に行い、
そのあと、
$$ \boxed{ \text{phenotype} \rightarrow \text{心血管予後} } $$をCoxモデルなどで調べた研究である。
24. つまりLCAとCoxは全く別の役割を担当している
今回の論文を読むとここは分けた方がよい。
Cox比例ハザードモデルそのものの考え方は、【統計解説】Cox比例ハザードモデルについて もあわせて参照するとわかりやすい。
| 解析 | この論文での役割 |
|---|---|
| LCA | 症状パターンからOSA患者をサブタイプ化 |
| ロジスティック回帰 | サブタイプと既存CVDとの関連 |
| Kaplan-Meier | サブタイプごとのイベント発生までの経過を可視化 |
| Cox回帰 | サブタイプと将来のCVD発症ハザードとの関連 |
つまりLCAでは、
$$ \text{CVD} $$を一切使わずに患者を分類している。
まず症状だけから、
$$ C_i $$を推定する。
その後に、
LCAで得られた $C_i$ がCVDを予測するのか?
を検証している。
これはかなり重要である。
もしCVD情報まで入れてクラスを作ったあと「このクラスはCVDが多かった」と言えば循環論法になりかねない。
この研究では、
| |
と分かれている。
25. k-meansとの違いを数式レベルで見る
k-meansでは、各患者をクラス $k$ に割り当てて、
$$ \sum_i\lVert X_i-\mu_{C_i}\rVert^2 $$をできるだけ小さくする。
つまり、
各患者からクラス中心までの距離
を最小化している。
一方LCAでは、
$$ L=\prod_i\left[\sum_k\pi_k\prod_jP(X_{ij}\mid C_i=k)\right] $$を最大化する。
つまり、
実際に観測された症状パターンが、この潜在クラス構造から生成されるもっともらしさ
を最大化している。
したがって、
$$ \boxed{ \text{k-means}=\text{距離ベース} } $$に対して、
$$ \boxed{ \text{LCA}=\text{確率モデルベース} } $$である。
26. Gaussian mixture modelとの方がむしろ近い
機械学習でたとえるなら、k-meansよりGaussian Mixture Model(GMM)の方がLCAに近い。
GMMでは、
集団には複数の潜在クラスがあり、それぞれ異なる正規分布からデータが生成される
と考える。
例えば、
$$ X\mid C=k\sim N(\mu_k,\Sigma_k) $$である。
LCAではそのカテゴリ変数版として、
$$ X_j\mid C=k\sim Bernoulli(\theta_{jk}) $$などを考える。
だからイメージとしては、
$$ \boxed{ \text{LCA} \approx \text{categorical data版 mixture model} } $$がかなり正確である。
連続変数を中心に同じような潜在クラスモデルを作るものは、一般にlatent profile analysis(LPA)と呼ばれる。
27. この論文でLCAが適している理由
今回扱いたいのは、
| |
という症状パターンである。
この種のデータでは、
「患者Aと患者BのEuclidean distanceが2.73」
と言われても医学的にはあまり自然ではない。
一方、
「眠気型では日中眠気を訴える確率が高く、不眠症状の確率は低い」
というモデルは非常に自然である。
この研究グループの関連研究では、症状をカテゴリ化し、ESSも $0$–$5$、$6$–$10$、$11$–$15$、$>15$ のカテゴリとしてLCAに入れる方法が用いられている。(PubMed Central (PMC))
したがって、
カテゴリ的な症状の組み合わせから患者phenotypeを抽出したい
という目的とLCAはかなり相性がよい。
28. ただし「4種類のOSAが本当に存在する」と証明したわけではない
ここも重要である。
LCAで4クラスが最適だったという結果は、
今回の変数・今回の患者集団・今回のモデル仮定のもとでは、4個の潜在クラスを置くモデルがデータをよく説明した
という意味である。
したがって、
$$ \boxed{ \text{LCAで4クラス} \neq \text{自然界に本当に4種類のOSAが存在すると証明} } $$である。
実際には患者の症状が連続的なスペクトラムなのに、LCAが便宜上いくつかのカテゴリに切っている可能性もある。
例えば、
| |
という1本の連続軸しか本当は存在しないのに、
| |
という3クラスモデルがうまくフィットすることもあり得る。
だから「latent class」という名前から、
隠れていた真の疾患分類を発見した
とまで言うのは強すぎる。
29. local independenceもかなり強い仮定である
例えば、
| |
は、同じ「excessively sleepy」クラスの中であっても相互に関連している可能性がある。
ところが通常のLCAは、
$$ X_j\perp X_l\mid C $$を仮定する。
もしこの仮定が大きく破れていると、
本当は症状同士に残った相関があるだけなのに、モデルがそれを説明するため余分なクラスを作る
ということも起こり得る。
したがって潜在クラス数は、
データそのものだけではなく、モデル仮定にも依存する
という点には注意が必要である。
30. BIC最小だから機械的に正解、というわけでもない
この論文でも、単に数値だけではなく、BICで選ばれた解についてclinical interpretationを確認したうえで後続解析に使用している。(PubMed Central (PMC))
これは重要である。
例えばBICでは5クラスがわずかに有利でも、
| |
のうちClass 4と5がほとんど同じだったり、Class 5が患者数1%しかなく医学的解釈が困難だったりする可能性がある。
したがって実際のLCAでは、
$$ \text{model fit} + \text{parsimony} + \text{clinical interpretability} $$を合わせて判断することが多い。
31. 今回の4クラスは何を意味しているのか
つまりこの研究のLCA結果を厳密に読み替えると、
OSA患者1,207人の14症状+ESSの同時分布は、4種類の異なる症状出現確率を持つ潜在集団の混合モデルとして説明するのが適切だった
ということである。
そしてそれぞれの、
$$ P(X_j\mid C=k) $$を並べてみたところ、
| |
という医学的に理解可能なプロファイルになった。(pmc.ncbi.nlm.nih.gov)
そして興味深いことに、AHIなどの重症度が似ていても症状プロファイルが異なり、特にexcessively sleepy群では将来のCVDリスクが他の3群より高かった。(pmc.ncbi.nlm.nih.gov)
32. 全体を一気につなげると
| |
33. 一番重要な理解
最初の質問の、
「潜在クラス分析ってクラスタリングのこと?」
に、今ならかなり正確に答えられる。
$$ \boxed{ \text{広い意味ではYes} } $$ただし、
似ている患者を距離で集めるクラスタリングではない。
LCAは、
$$ \boxed{ \text{観測された症状は、複数の見えない患者集団から確率的に生成されている} } $$という生成モデルを置き、
$$ \pi_k $$と、
$$ P(X_j\mid C=k) $$を最尤推定する。
そこからBayesの定理によって、
$$ P(C=k\mid X_i) $$を求め、
この症状パターンの患者は、どの潜在集団から生成されたと考えるのが最ももっともらしいか
を推定する手法である。
なので一言で位置づけるなら、
潜在クラス分析は、カテゴリデータに対する確率モデルベースのクラスタリングであり、各クラスを「症状出現確率の異なる潜在集団」として表現する方法
となる。
このレベルまで理解すると、今回の論文のMethodsにある「latent class analysis → BIC → 4 symptom subtypes」という3行が、実際には尤度を持つかなりちゃんとした統計モデルを一つ推定していることが見えるはずだ。(PubMed Central (PMC))