統計の基礎

# Statistics



## 0. 統計量

1. **$N$ : データの数**
2. **$\mu$ : 母平均**
3. **$\hat{\mu}$ : 標本平均**
4. **$\sigma^2$ : 分散**

    **標本分散**

    ```math
    \begin{aligned}
    \sigma^2 &= \frac{1}{N}\sum_{i = 1}^{N}(x_i - \mu)^2\\
    ⇔\sigma^2 &= \sum_{i = 1}^{N}P(x_i) \cdot(x_i - \mu)^2
    \end{aligned}
    ```

    **不偏分散**

    $$\sigma^2 = \frac{1}{N-1} \sum_{i = 1}^{N}(x_i - \mu)^2$$
5. **$\sigma$ : 標準偏差(不偏標準偏差)(SD) Standard Deviation**

    ```math
    \begin{aligned}
    \sigma &= \sqrt{\sigma^2} \\
    &= \sqrt{ \frac{1}{N-1} \sum_{i=1}^{N}(x_i - \mu)^2}
    \end{aligned}
    ```

6. **標準誤差 (SE) Standard Error**
    $$SE = \frac{\sigma}{\sqrt{N}}$$

***

## 1. 確率分布

### **① 正規分布 Normal Distribution**

* 正規分布の確率密度関数

```math
\begin{aligned}
N(x|\mu,\sigma^2)&=\frac{1}{\sqrt{2\pi\sigma^2}}e^{-\frac{(x-\mu)^2}{2\sigma^2}}\\
&=\frac{1}{\sqrt{2\pi \sigma^2}}exp(-\frac{(x-\mu)^2}{2\sigma^2})
\end{aligned}
```

* 標準正規分布
$$N(x|0,1)$$

平均0、分散(標準偏差)1の正規分布の事

* t値

```math
\begin{aligned}
t&=\frac{{\hat{\mu} - \mu}}{\hat{\sigma}/\sqrt{N}}\\
⇔t値&=\frac{標本平均-母平均}{標準誤差}
\end{aligned}
```

t値は標本平均に対する標準化を標準誤差で行ったもの
</br>

* グラフ
[norm_graph.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/665410/8df795bb-91d7-8f6a-8204-523e4e0b509c.png)

</br>

* プログラム

    ```python
    from scipy import stats
    # 正規分布の確率密度関数
    stats.norm.pdf(loc=[],scale=[],x =[]) # locは平均,scaleは標準偏差(未指定の場合loc=0,scale=1),xはx軸の範囲

    # t分布の確率密度関数
    stats.t.pdf(x= [], df=[])  # xはx軸の範囲,dfは自由度(サンプル数-1)
    ```

***

### **② 二項分布 Binomal Distribution**

* **ベルヌーイ分布**
一度のベルヌーイ試行が行われる際に得られる、二値確率変数が従う確率分布  

```math
\begin{aligned}
P(X=1)&=p \\
P(X=0)&=1-p
\end{aligned}
```



ここで  
&emsp;Xは二値確率変数
&emsp;pは成功確率

* **二項分布**
N回の独立したベルヌーイ試行が行われたときに成功した回数mが従う分布。  
パラメタは成功確率pと試行回数N
</br>
**計算式**
$$ Bin(m|N,p) = {}_N C_m \cdot p^m \cdot (1-p)^{N-m} $$

***

### **③ ポアソン分布**

カウントデータ(0以上の整数)が従う離散型の確率分布。母数は強度$\lambda$

**計算式**
$$Pois(x|\lambda)=\frac{e^{-\lambda} \lambda^x}{x!}$$

二項分布から導出できる(p→0,N→$\infin$という条件下の二項分布でNp=$\lambda$とした結果)

***

## 2. 一般化線形モデル Generalized Liner model

### ⓪ モデル選択方法

**モデルの構成要素**

* 確率分布
* リンク関数
* 線形予測子
説明変数を線形の関係式で表現したもの  

これらを組み合わせると以下のようになる 
$$ link(y_n) = (\beta_0 + \beta_n \times x_n) + error$$

ここで  
&emsp;link()はリンク関数
&emsp;$\beta_0 + \beta_n \times x_n$は線形予測子
&emsp;$error$は確率分布に従う誤差
</br>
**各モデルと構成要素の組み合わせ**

|モデル名|確率分布|リンク関数|パラメタ推定方法|
|---|---|---|---|
|**単回帰分析(正規線形モデル)**|正規分布|恒等関数|最小二乗法|
|**重回帰分析(正規線形モデル)**|正規分布|恒等関数|最小二乗法|
|**ロジスティック回帰**|二項分布|ロジット関数|最尤法|
|**ポアソン回帰**|ポアソン分布|対数関数|最尤法|

|||説明変数||||
|---|---|---|---|---|---|
|||**2グループ 間の 比較**|**多グループ間の 比較**|**連続値の 多寡で比較**|**複数の要因で 同時に比較**|
|**応答 変数**|**連続値**|平均値の違いを t検定|平均値の違いを分散分析|回帰分析|重回帰分析|
|^|**あり/なし などの2値**|>|集計表の記述とカイ二乗検定|>|ロジスティック回帰|


### ① 単回帰線形モデル Simple Liner Regression Model

|構成要素|使用するもの|
|---|---|
|確率分布|正規分布 $\mathcal{N}(x \mid \mu,\sigma^2)$|
|リンク関数|恒常関数 ($f(y) = y$)|
|式|$y_n = \beta_0 + \beta_1 \times x_n$|
|パラメータ決定手法|最小二乗法|

回帰直線を$y = ax + b$ とする時、

```math
\begin{aligned}
a &= \frac{S_{xy}}{S_{x^2}} \\
&= \frac{\sum_{n=1}^{n} (x_i - \hat{x})(y_i - \hat{y}) }{\sum_{n=1}^{n}(x_i - \hat{x})^2}\\
\\
b&=\hat{y}-a\hat{x}
\end{aligned}
```

ここで、
&emsp;$S_{x^2}$はxの分散  
&emsp;$S_{xy}$はxとyの共分散

```python
# 単回帰分析
import statsmodels.formula.api as smf
SLR_model = smf.ols(formula = "説明変数~応答変数",
                   data = データフレーム).fit()

```

### ② 重回帰線形モデル Multiple Liner Regression Model

|構成要素|使用するもの|
|---|---|
|確率分布|正規分布 $\mathcal{N}(y \mid \mu,\sigma^2)$|
|リンク関数|恒常関数 ($f(x) = x$)|
|式|$y_n = \beta_0 + \beta_1 \times x_{n1} + \beta_2 \times x_{n2} + \cdots + \beta_n \times x_{nn}$|
|パラメータ推定方法|最小二乗法|

```python
# 重回帰分析
import statsmodels.formula.api as smf
MLR_model = smf.ols(formula = "説明変数~応答変数1 + 応答変数2 + ... + 応答変数n",
                    data = データフレーム).fit()
```

### ③ ロジスティック回帰モデル Logistic Regression Model

|構成要素|使用するもの|
|---|---|
|確率分布|二項分布 $Bin(m \mid N,p)$|
|リンク関数|ロジット関数 $f(x) = log( \frac{x}{1-x})$|
|式|$Y_n = \frac{1}{1+exp(-y_n)}$ (ここで$y_n$は線形予測子)|
|パラメータ推定法|最尤法/|

```python
# ロジスティック回帰分析
import statsmodels.formula.api as smf
import statsmodels.api as sm
LRM_model = smf.glm(formula = "説明変数~応答変数1 + 応答変数2 + 応答変数n",
                    data = データフレーム,
                    family = sm.families.Bimonal()).fit()  # 確率分布に二項分布を指定する事で自動的にリンク関数はロジット関数になる。
```

### ④ ポアソン回帰 Poisson Regression Model

|構成要素|使用するもの|
|---|---|
|確率分布|ポアソン分布 $x = Pois(x \mid \lambda)$|
|リンク関数|対数関数 $f(x) = log(x)$|
|式|$Y_n=exp(y_n)$(ここで$y_n$は線形予測子)|
|パラメタ推定法|最尤法|

```python
# ポアソン回帰分析
import statsmodels.formula.api as smf
import statsmodels.api as sm
PRM_model = smf.glm(formula = "説明変数~応答変数",
                    data = データフレーム,
                    family = sm.families.Poisson()).fit()
```

***

## 3. パラメタ決定手法

### A. 尤度の最大化

### ① 最尤法

最尤推定量を求める手法  
**最尤推定量の定義**は以下の通り

<a style="color:red; font-weight:bold;">--最尤推定量の定義--</a>
**パラメタ $\theta$ に従う分布の密度関数を $f(x;\theta)$とする。尤度関数を$L(\theta;x) = f(x;\theta)$とすると、$L(\theta;x)$ を最大にするような推定量 $\theta = \hat{\theta}$ を $\theta$ の最尤推定量という**

実際の計算には対数尤度関数
$$l(\theta) = logL(\theta;x)$$

を微分し、最大値を考える。

### B. 損失の最小化

### ② 最小二乗法 Ordinary Least Squared

残差平方和が最小になるようにモデルを決定する。母集団分布に正規分布を仮定したときの最尤法と一致する。なお$\sigma^2$は$\mu$から計算することが出来るので極外パラメタである。

$$ 残差平方和 = \sum_{i=1}^{N} [(y_i - \hat{y_i})^2] $$

### ③ 交差エントロピー誤差 Cross Entropy Error

$$E = -\sum_{k}t_{k}\log{y_k}$$


## 4. モデルの評価方法

回帰分析は**精度**と**有意性**の両方を満たすことで初めて有効性が確認される

### 検定

モデルの**有意性**を評価する

|検定名|条件|
|---|---|
|t検定|1変量の時 2検定の時(説明変数と応答変数が一個ずつ)|
|分散分析|変数が3つ以上の時(説明変数が2つ以上)|
|x二乗検定|分割表に対するデータの独立性を検定する|

#### ① t検定

p値が有意水準を下回った時帰無仮説を棄却し、「有意差がない(変数間に相関関係がない)とは言えない」とする手法

* **t値**

  ```math
  \begin{aligned}
  t値 &= \frac{標本平均 - 比較対象値}{標準偏差 \div \sqrt{サンプルサイズ}}\\
  \\
  &=\frac{標本平均-比較対象値}{標準誤差}
  \end{aligned}
  ```

  t値はt分布に従う
* **p値**

  ```math
  \begin{aligned}
  p値 = (1-[t値がt_{標本}を下回る確率]) \times 2
  \end{aligned}
  ```

  ここで  
  &emsp;$t_{標本}$は標本から計算されたt値の事

#### ② 分散分析 ANOVA(ANalysis Of VAriance)

F比から導き出されるp値を用いて検定を行う
* **F比**
  $$F比 = \frac{効果の分散の大きさ}{誤差の分散の大きさ}$$
  ここで  
  &emsp;**効果** : バイオリンプロット同士の距離(群間変動)  
  &emsp;**誤差** : バイオリンプロットの大きさ(郡内移動)  

```python
import statsmodels.api as sm
sm.stats.anova_lm(OLMモデル, typ=2)  # TypeⅡ ANOVAで分析を実行
```

#### ③ $X^2$検定

### 精度の評価

#### $R^2$値(決定係数)

データの当てはまりの良さを評価する。1に近いほど、当てはまりがよい。

$$R^2 = \frac{\sum_{i = 1}^{N} (\hat{y} - \mu)^2}
{\sum_{i = 1}^{N} (y - \mu)^2} $$

ここで
&emsp;y : 応答変数  
&emsp;$\hat{y}$ : モデルによる推測値(予測値)  
&emsp;$\mu$ : yの平均値


### 変数選択

#### AIC(赤池の情報量基準)

$$AIC = -2 \times (最大化対数尤度 - 推定されたパラメタの個数)$$

**AICが小さければ小さいほど”良い”モデル**としてみなされる。
複数のモデルでAICを計算し、比較して最も小さいAICを持つモデルを採用する。