購買回数分布の代表値について

# はじめに


![購買回数分布.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/635079/9c350c46-387d-3388-5141-b55dd4a98c94.png)

グラフは21971人の2017年1月~2019年10月のスーパーの架空購買データ※1です。

このような非負で、0が多く購買回数が増えていくに連れ人数が減っていく分布の代表値で、平均・中央値・最頻値の指標がよく使われると思います。
架空でなく本来の購買データであれば、もっと極端な外れ値も多いため簡単に中央値で決めてしまうことが多いのですが、そんな理由だけで代表値を中央値にして良いのか、もっとそれっぽい値を出すことができないか疑問に思ったので、自分で色々調べてみました。


# 結果
購買回数分布が、形状パラメータ$\alpha = 1$, 尺度パラメータ$\beta = \frac{1}{\bar{x}}$のガンマ分布に従うとき、ある人が購買を$k$回行う確率は
確率$\frac{\beta}{\beta + 1}$で起きる事象を$\alpha$回成功するまでに失敗した回数$k$が従う確率分布ということになり、その期待値は観測平均$\bar{x}$になるため、
上記条件に近い分布であれば、購買回数分布の代表値は平均を用いるのが良い

# 期待値を求める

## 購買データの分布について

購買データの分布がこのような形になるまでの経緯ですが、21971人それぞれが単位期間（今回の例であれば2017年1月~2019年10月）中に購買する回数の期待値$\lambda$があり、
その期待値の元、単位期間中に実際に購買した回数$k$があります。
この$k$が起きる確率分布を確率変数$X$とします。この変数はポアソン分布


```math
P(X = k | \lambda) = \frac{e^{^\lambda}\lambda^k}{k!}
```
に従います。
更に、この期待値$\lambda$は21971人それぞれに違う値で存在し$\lambda$の確率分布としてガンマ分布を仮定します。

```math
f(\lambda | \alpha, \beta) = \frac{\lambda^{\alpha - 1}\beta^\alpha e^{-\beta \lambda}}{\Gamma(\alpha)} \qquad (\alpha > 0, \beta = \frac{1}{\theta} > 0)
```

ガンマ分布は形状パラメータである$\alpha$を$1$とすると、指数分布となります。

```math
f(\lambda | 1, \beta) = \frac{\lambda^{1-1}\beta^1 e^{-\beta \lambda}}{\Gamma(1)} \\
f(\lambda | \beta) =\beta e^{-\beta \lambda}
```

ガンマ関数$\Gamma(n)$は$n$=自然数において$\Gamma(n) = (n - 1)!$です。


上記21971人の購買回数の分布は期待値$\lambda$の確率分布と、期待値$\lambda$があった上で実際に購買した回数$k$の確率分布の積ということになります。

```math
P(X = k |\lambda)\cdot f(\lambda | \alpha, \beta) = \frac{e^\lambda \lambda^k}{k!} \cdot \frac{\lambda^{\alpha - 1}\beta^\alpha e^{-\beta \lambda}}{\Gamma(\alpha)} \\
P(X = k | \alpha, \beta) = \frac{\beta^\alpha}{k! \cdot \Gamma(\alpha)} \int_{0}^{\infty}\lambda^{k + \alpha - 1}e^{-\lambda(\beta + 1)} d\lambda
```

この状態の積分記号内側の式に、$\frac{(\beta + 1)^{k + \alpha}}{\Gamma(k + \alpha)}$、外側に$\frac{\Gamma(k + \alpha)}{(\beta + 1)^{k + \alpha}}$を掛けると、積分記号内の式が形状パラメータ$k + \alpha$,尺度パラメータ$\beta + 1$のガンマ分布の式になります。
<br>


&emsp;1.掛ける

```math
P(X = k | \alpha, \beta) = \frac{\beta^\alpha}{k! \cdot \Gamma(\alpha)} \frac{\Gamma(k + \alpha)}{(\beta + 1)^{k + \alpha}}
\int_{0}^{\infty} \frac{\lambda^{k + \alpha - 1} (\beta + 1)^{k + \alpha}e^{-\lambda(\beta + 1)}}{\Gamma(k + \alpha)} d\lambda \\ 
```

&emsp;2.形状パラメータ$k + \alpha$,尺度パラメータ$\beta + 1$のガンマ分布の式になる

```math
f(\lambda | k + \alpha, \beta + 1) = \frac{\lambda^{k + \alpha - 1}(\beta + 1)^{k + \alpha} e^{-\lambda(\beta + 1)}}{\Gamma(k + \alpha)} \qquad (k + \alpha > 0, \frac{1}{\beta + 1} > 0)
```

&emsp;3.積分記号の中は1になる
 
```math
\int_{0}^{\infty} \frac{\lambda^{k + \alpha - 1} (\beta + 1)^{k + \alpha}e^{-\lambda(\beta + 1)}}{\Gamma(k + \alpha)} d\lambda = 1
```
<br>
結果、期待値$\lambda$の確率分布と、期待値$\lambda$があった上で実際に購買した回数$k$の確率分布の積は以下になります。

```math
P(X = k | \alpha, \beta) = \frac{\beta^\alpha}{k! \cdot \Gamma(\alpha)} \frac{\Gamma(k + \alpha)}{(\beta + 1)^{k + \alpha}} \cdot 1
```

こちらの式を負の二項分布に変換するために式変換します。

## 負の二項分布

負の二項分布は確率$p$で起きる事象を$k$回成功するまでに失敗した回数$r$が従う確率分布です。
つまり、$k + r - 1$(全試行回数 - 1)までに、$r$回失敗し、次で成功する確率なので

```math
_{k + r - 1}C _{r} p^{k - 1} (1 - p)^{r} \cdot p =  _{k + r - 1}C _{r} p^{k} (1 - p)^{r} 
```

になります。
更に、確率$_{k + r - 1}C _{r}$の部分ですが、

```math
_{k + r - 1}C _{r} = \frac{(k + r - 1)!}{r! \cdot (k + r - 1 - r)!} = \frac{\Gamma(k + r)}{\Gamma(r + 1) \cdot \Gamma(k)}
```

と表すこともできるため、負の二項分布の式は

```math
\frac{\Gamma(k + r)}{\Gamma(r + 1) \cdot \Gamma(k)}p^k(1 - p)^r
```
と変換できます。


## 式変換

期待値$\lambda$の確率分布と、期待値$\lambda$があった上で実際に購買した回数$k$の確率分布の積を負の二項分布の式に似せるよう変換します。

```math
\frac{\beta^\alpha}{k! \cdot \Gamma(\alpha)} \frac{\Gamma(k + \alpha)}{(\beta + 1)^{k + \alpha}}\\
=\frac{\Gamma(k + \alpha)}{\Gamma(k + 1) \cdot \Gamma(\alpha)}\frac{\beta^{\alpha}}{(\beta + 1)^{k + \alpha}}\\
=\frac{\Gamma(k + \alpha)}{\Gamma(k + 1) \cdot \Gamma(\alpha)}\biggl(\frac{\beta}{\beta + 1}\biggl)^\alpha \biggl(1 - \frac{\beta}{\beta + 1}\biggl)^k\\
=_{\alpha +k - 1}C _{k} \biggl(\frac{\beta}{\beta + 1}\biggl)^\alpha \biggl(1 - \frac{\beta}{\beta + 1}\biggl)^k
```

すると、確率$\frac{\beta}{\beta + 1}$で起きる事象を$\alpha$回成功するまでに失敗した回数$k$が従う確率分布とすることができます。

購買データの分布は人それぞれの$\lambda$の値を問わず、形状パラメータ$\alpha$, 尺度パラメータ$\beta$のガンマ分布に従うとき、購買を$k$回行う確率は
確率$\frac{\beta}{\beta + 1}$で起きる事象を$\alpha$回成功するまでに失敗した回数$k$が従う確率分布ということになります。

## ガンマ分布のパラメータ
形状パラメータ$\alpha$は$\Gamma(n)$の式変換的にも自然数で、$\alpha = 1$であれば、 確率密度が単調減少する指数分布となるため$1$
尺度パラメータ$\beta$は$\beta = \frac{1}{\theta} (\frac{1}{\theta} > 0)$のため、$\theta$を観測したデータの平均値$\bar{x}$とし尺度パラメータとします。

形状パラメータ$\alpha = 1$
尺度パラメータ$\beta = \frac{1}{\bar{x}}$

すると、負の二項分布の確率$p$,成功回数$a$が求まります。

確率$p = \frac{\beta}{\beta + 1} = \frac{\frac{1}{\theta}}{\frac{1}{\theta} + 1} = \frac{1}{\bar{x} + 1}$
成功回数$a = 1$


確率$p$で起きる事象を$a$回成功するまでに失敗する回数$k$の確率分布の期待値$E(X)$は

```math
E(X) = \alpha \frac{1 - p}{p}
```

となります。

$a = 1$の為、負の二項分布の$p$を求めれば、負の二項分布の期待値$E(X)$が求まります。

```math
E(X) = \frac{1 - p}{p} = \frac{1 - (\frac{1}{\bar{x} + 1})}{\frac{1}{\bar{x} + 1}} = \bar{x}
```



# 最後に
Python3にてscipy.stats.gamma.fitを使用した場合、[冒頭のこちらのグラフ](#はじめに)では、形状パラメータ$\alpha = 1$, 尺度パラメータ$\beta = \frac{1}{\bar{x}}$のガンマ分布よりも、右に歪んだ分布となっており、そもそもの前提が崩れているので思い通りには行きませんでした。
負の二項分布に従っている値をscipy.stats.nbinom.rvsにてランダムに出力し当てはめた場合、この式に限りなく近い値になりました。

scipy.stats.gamma.fitで出たパラメータ$\alpha,\theta$を用いてガンマ分布の期待値を算出したとき、それが上記条件に合わない場合の購買回数期待値になるのかどうかは、また調べてみようと思います。

また、文章中になにか間違いや誤解があればご指摘いただけると助かりますm(__)m

※1 グラフデータは[データサイエンス100本ノック(構造化データ加工編)](https://github.com/The-Japan-DataScientist-Society/100knocks-preprocess)のデータを使用しています。