Skip to article frontmatterSkip to article content
Site not loading correctly?

This may be due to an incorrect BASE_URL configuration. See the MyST Documentation for reference.

累積ロジットモデル(cumulative logit model)

比例オッズモデル(proportional odds model) や 累積ロジットモデル(cumulative logit model) と呼ばれる

順序ロジットモデル(ordered logit model) とも呼ばれる様子(Ordered logit - Wikipedia)

潜在連続変数モデル(Latent Variable Formulation)

順序ロジットでは、y∈{1,2,…,K}y \in \{1,2,\dots,K\} という順序カテゴリは、背後に潜在連続変数

y∗=x⊤β+ε,ε∼Logistic(0,1)y^* = \mathbf{x}^\top \beta + \varepsilon ,\quad \varepsilon \sim \text{Logistic}(0,1)

が存在し、それを閾値(cutpoint)τk\tau_kで区切った結果であると考える:

y=k  ⟺  τk−1<y∗≤τky = k \iff \tau_{k-1} < y^* \le \tau_k

比例オッズモデル(proportional odds model)

この仮定のもとで、累積確率は次のように表される:

P(y≤k)=11+exp⁡[−(τk−x⊤β)](k=1,…,K−1)P(y \le k) = \frac{1} {1+\exp\left[-(\tau_k - \mathbf{x}^\top \beta)\right]} \quad (k=1,\dots,K-1)

各カテゴリに属する確率P(y=k)P(y = k)は、累積確率の差で表現する。

P(y=k)=P(y≤k)−P(y≤k−1)P(y = k) = P(y \le k) -P(y \le k-1)

つまり

P(y=k)=11+exp⁡[−(τk−x⊤β)]−11+exp⁡[−(τk−1−x⊤β)]P(y = k) = \frac{1} {1+\exp\left[-(\tau_k - \mathbf{x}^\top \beta)\right]} - \frac{1} {1+\exp\left[-(\tau_{k-1} - \mathbf{x}^\top \beta)\right]}

と表される。

端のカテゴリの扱い

両端の閾値は−∞,∞-\infty, \inftyと仮定する。

−∞≡τ0≤τ1≤…≤τK−1≤τK≡∞-\infty \equiv \tau_0 \leq \tau_1 \leq \ldots \leq \tau_{K-1} \leq \tau_K \equiv \infty

よって、両端の確率は0,10, 1と仮定する

P(y≤0)=0,P(y≤K)=1P(y \le 0) = 0,\quad P(y \le K) = 1

こうすることで、

  • 最小カテゴリ: P(y=1)=P(y≤1)P(y=1)=P(y \le 1)

  • 最大カテゴリ: P(y=K)=1−P(y≤K−1)P(y=K)=1 - P(y \le K-1)

と書ける。

なお、累積確率の両辺のロジットをとると

log⁡P(y≤k)P(y>k)=τk−x⊤β(k=1,…,K−1)\log \frac{P(y \le k)} {P(y > k)} = \tau_k - \mathbf{x}^\top \beta \quad (k=1,\dots,K-1)

と表すこともできる

比例オッズ仮定(Proportional Odds Assumption)

比例オッズモデル(proportional odds model)と累積ロジットモデル(cumulative logit model)を区別しない文献もあるが、区別する文献においては、比例オッズモデルは

  • 切片(τk\tau_k)は kk ごとに異なる

  • 傾き(β\beta)はすべて共通

という制約(parallel slopes constraint)を課すモデルであるとされる。

そして累積ロジットモデルではカテゴリごとに異なる傾きβk\beta_kを持つ

log⁡P(y≤k)P(y>k)=x⊤βk(k=1,…,K−1)\log \frac{P(y \le k)} {P(y > k)} = \mathbf{x}^\top \beta_k \quad (k=1,\dots,K-1)

実装

サンプルデータ

  • gpa:GPA。[0,4][0,4]のfloat

  • pared:少なくとも片方の親は大学院に進学している。二値変数。

  • public:学生が現在在籍している大学がpublicかprivateか

  • apply: unlikely < somewhat likely < very likely の順序変数

Loading...

statsmodelsによる実装(最尤推定)

Optimization terminated successfully.
         Current function value: 0.896281
         Iterations: 22
         Function evaluations: 24
         Gradient evaluations: 24
Loading...

PyMCによる実装(MCMC)

PyMCのOrderedLogisticでは予測子(predictor)をeta η=x⊤β\eta = x^\top \beta、閾値τ\tauをcutpointsで表す。

参考:

Initializing NUTS using jitter+adapt_diag...
Multiprocess sampling (4 chains in 4 jobs)
NUTS: [beta, cutpoints]
Loading...
Loading...
Sampling 4 chains for 1_000 tune and 1_000 draw iterations (4_000 + 4_000 draws total) took 5 seconds.
Loading...