組成データ分析の基本的なアプローチ

こんにちは，[株式会社Nospare](https://bit.ly/38WtGZH)の小林です．
今回は組成データ分析の基本的なアプローチについて紹介します．

# 組成データとは
組成データ（compositional data）という言葉はあまり馴染みがないかもしれませんが，実世界において非常に多くの例が挙げられます．まず組成データはユークリッド空間ではなく単体$S$上のデータとなります．$S$は

```math
S = \left\{(v_1,\dots,v_D): v_d>0, d=1,\dots,D, \sum_{d=1}^Dv_d=1\right\}
```

と定義されます．組成データ$\mathbf{v}=(v_1,\dots,v_D)$の各要素は正であり，足し合わせると$1$になります．

組成データの例として

* 岩石に含まれる化学物質（二酸化ケイ素，一酸化マンガン，酸化カリウムなど）の組成割合
* 血液に含まれる成分（赤血球，白血球，血小板など）の割合
* ある時間帯の各テレビ局の視聴占拠率
* ある商品カテゴリにおけるブランドシェア
* 免疫細胞（CD8+細胞，CD4+T細胞，B細胞など）の割合
* マイクロバイオーム（生物に共生する微生物）の割合

などが挙げられます．



組成データを扱う上で注意しないといけない点として

* 組成データの標本空間は単体であるので，通常の実空間上のデータに対する分析手法を適用できない（信頼区間や予測値が単体からはみ出てしまう可能性）
* 足し合わせて$1$となるため変数の独立性が仮定できず，また変数の相関関係を考慮できない
* 成分の追加や削除，関心のある成分のみの抽出によってデータの構造が変化する

などが挙げられます．

また組成データを可視化する際に各成分ごとに対して通常の散布図を使用すると，各成分間の関係について誤認してしまうことがあります．3成分の組成データ$(x,y,z)$に対しては以下のような三角プロット（ternary plot）がよく用いられます．下図は下で紹介するディリクレ分布（$\alpha=(2,4,0.9)$）から生成したデータの三角プロットです（RのTernaryパッケージを使用しましたが，ここでは軸のラベルは\%表示になっています）．図の見方ですが，三角の左側の辺が$x$，右側の辺が$y$，底辺が$z$の組成に対応しており，三角の内部に表示されているグリッドに（平行に）沿って各辺にたどり着くと各成分の組成がわかります．例えば図の赤点で示されたデータ点の組成は$(0.347, 0.574,0.079 )$です．

![fig.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1023506/efbaa41d-d91b-d1ac-d828-889c347e3ec0.png)



本記事では，このような組成データに対する基本的なアプローチとして

* 対数比（log-ratios）アプローチ
* ディリクレ分布に基づくアプローチ

の2種類を紹介します．

# 対数比アプローチ
## 相加対数比（ALR，additive log-ratios）
ALRは$\mathbf{v}$に対して以下のような変換を適用します：

```math
\mathbf{y}=ALR(\mathbf{v})=\left(\log\frac{v_1}{v_D},\dots, \log\frac{v_{D-1}}{v_D}\right)
```

ALRは$S$から$R^{D-1}$への変換を行い，ALRの各要素は単純に$v_d\ (d\neq D)$と$v_D$の比の対数をとったものです．この変換により$\mathbf{y}$に対して回帰分析などの通常の分析手法を適用することができます．例えば$D-1$次元の多変量正規分布に基づいたモデリングを行うことができます．この$R^{D-1}$上の正規分布から$S$上の確率分布を誘導することもでき，そのような分布はロジスティック正規分布などと呼ばれます．
ALRは全単射なので，その逆変換も一意に得られます：

```math
ALR^{-1}(\mathbf{y})=\left(\frac{\exp(y_1)}{\sum \exp(y_d)},\dots,\frac{\exp(y_{D-1})}{\sum \exp(y_d)}, \frac{1}{\sum \exp(y_d)}\right)
```

回帰分析における組成データの予測値などはこの逆変換に基づいて得ることができます．


## 有心対数比（CLR，centered log-ratios）
CLR変換は以下のような$S$から$R^D$への変換となります：

```math
\mathbf{y}=CLR(\mathbf{v})=\left(\log\frac{v_1}{g(\mathbf{v})},\dots,\log\frac{v_D}{g(\mathbf{v})}\right)
```

ここで$g(\mathbf{v})$は成分の幾何平均です．CLRは幾何平均との対数比を取っているので，ALRと比べて解釈性に劣ります．CLRでも，実空間への変換となるので，変換後のデータに通常の分析手法を適用することができます．またCLRも全単射なのでその逆変換も一意に得られます：

```math
CLR^{-1}(\mathbf{y})=\left(\frac{\exp(y_1)}{\sum\exp(y_d)},\dots,\frac{\exp(y_D)}{\sum\exp(y_d)}\right)
```


ALRやCLRの他にも等長対数比（ILR，isometric log-ratios）を始めとした変換方法が多く存在します．


# ディリクレ分布
単体上のパラメトリックな確率分布としてディリクレ分布が挙げられます．ディリクレ分布の確率密度関数は

```math
p(\mathbf{v}|\mathbf{\alpha})=\frac{1}{B(\mathbf{\alpha})}\prod_{d=1}^Dv_d^{\alpha_d-1},\quad B(\mathbf{\alpha})=\frac{\prod_{d=1}^D\Gamma(\alpha_d)}{\Gamma(\sum_{d=1}^D\alpha_d)}
```

で定義されます．ここで，$\Gamma(\cdot)$はガンマ関数，$\mathbf{\alpha}=(\alpha_1,\dots,\alpha_D)$で$\alpha_d>0$です．$\alpha_+=\sum_{d=1}^D\alpha_d$とすると，ディリクレ分布の期待値と分散はそれぞれ$E[v_d]=\alpha_d/\alpha_+$，$V(v_d)=\frac{\alpha_d(\alpha_+-\alpha_d)}{\alpha_+^2(\alpha_++1)}$で与えられます．

回帰分析を行いたい場合には，各$\alpha_d$と説明変数を適切なリンク関数を通してモデリングします．通常対数リンクが使用され，

```math
\alpha_d = \exp(\mathbf{x}'\mathbf{\beta}_d),\quad d=1,\dots,D,
```

のようにモデリングされます．回帰係数$\mathbf{\beta}_1,\dots\mathbf{\beta}_D$は最尤法やベイズ法によって推定することができます．ディリクレ分布をより柔軟に拡張した種々の確率分布も存在しますが，一般的にかなり複雑な形をとるためあまり使用例は多くないかと思います．


# まとめ
実世界において様々な組成データが存在しますが，それに対する分析は変換が必要であったり単体上の確率分布を使用する必要があります．組成データ分析のための方法論の研究でもこのどちらかのアプローチに依拠するものが主です．一方で，本記事では取り扱いませんが，単体解析における各種演算の整備が対数比変換の有用性の理論的下支えになっています．


__一緒にお仕事しませんか！__
[株式会社Nospare](https://bit.ly/38WtGZH)では統計学の様々な分野を専門とする研究者が所属しており，新たな知見を日々追求しています．統計アドバイザリー・ビジネスデータの分析，統計学に関する各種研修やセミナーにつきましては弊社までお問い合わせください．インターンや正社員も随時募集しています！


<a href="https://bit.ly/38WtGZH">
<img src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1023506/d5c625c0-d6f4-680b-d702-3c40f11d6c39.jpeg" alt="株式会社Nospare" width=400>
</a>