統計・相関をPythonでらくらくに！（Numpy, Sympy, Matplotlib, Tkinter）

# 1. 確率統計
高専の数学では解析学（微分積分）や線形代数の他に**確率統計学**を学習します。
確率統計では多量のデータを扱うため、計算が暗算や手計算だけでは困難なことが多いです。
電卓を使えば計算は楽にできますが、やはり**分散**や**相関係数**などといった統計学に関するものを求めようとすると時間と多大な計算が必要になります。

今回は高専の数学の教科書『新 確率統計 改訂版』を参考に公式と作成したプログラムの紹介を行います。

# 2. 統計・相関の基礎
## 2.1 平均
$x_1,x_2,x_3,\cdots,x_n$のように$n$個のデータがあるとき、**平均**はそれぞれの合計をそれらの個数で割ったものになります。

:::note
```math
\begin{align*}
    \bar{x} &= \frac{1}{n}\sum^n_{i=1}x_i \tag{1}\\
    &= \frac{1}{n}\bigg\{x_1+x_2+x_3+\cdots+x_n\bigg\}
\end{align*}
```
:::

つまりこういうことですね。(1)式を利用すれば**平均**が求まります。

## 2.2 分散
**分散**は2種類の求め方があります。今回Pythonのプログラムで採用しているのは(3)式の求め方です。

:::note
```math
\begin{align*}
    v_x &= \frac{1}{n}\sum^n_{i=1}(x_i-\bar{x})^2\tag{2}\\
    &= \bar{x^2} - (\bar{x})^2\tag{3}
\end{align*}
```
:::

今回は(3)式を利用するため、$\bar{x^2}$と$(\bar{x})^2$の2つを求める必要があります。
$(\bar{x})^2$は(1)式で求めた平均を2乗するだけで良いですが、$\bar{x^2}$は次のように求めます。
```math
\begin{align*}
    \bar{x^2} &= \frac{1}{n}\sum^n_{i=1}x^2_i
\end{align*}
```

## 2.3 共分散
**共分散**は次のように求めます。

:::note
```math
\begin{align*}
    S_{xy} &= \frac{1}{n}\sum^n_{i=1}(x_i-\bar{x})(y_i-\bar{y})\tag{4}\\
    &= \bar{xy} - \bar{x}\cdot\bar{y}\tag{5}
\end{align*}
```
:::

今回は(5)式を利用します。
$\bar{x}$と$\bar{y}$は(1)式を利用すれば求まります。
$\bar{xy}$は$xy$の合計を個数$n$で割った平均を求めれば値を得られます。
```math
\begin{align*}
\bar{xy} &= \frac{1}{n}\sum^n_{i=1}x_iy_i
\end{align*}
```

## 2.4 相関係数
相関係数$r$があるとき、$-1\leqq r \leqq 1$の間で相関係数は定義されます。
$r$が$-1$に近ければ「**負の相関がある**」と言い、$1$に近ければ「**正の相関がある**」と言います。
また、相関係数は$y=ax+b$のグラフで表すことができ、これを**回帰直線**と言います。

相関係数は次の公式を利用すれば求めることができます。

:::note
```math
\begin{align*}
    r &= \frac{S_{xy}}{\sqrt{v_x}\sqrt{v_y}}\tag{6}
\end{align*}
```
:::

## 2.5 標準偏差
**標準偏差**は分散にルートをつけたものです。
したがって、

:::note
```math
\begin{align*}
\sigma_x &= \sqrt{v_x}\tag{7}
\end{align*}
```
:::

# 3. 自作ソフト「統計そふと」を利用してみる
完全オリジナルソフトです。
<INS>**ライセンスとしては無料でご利用いただけますが、無断転載・商用目的での利用や改変は禁止致します。**</INS>

[**★ダウンロードはこちら★**](https://drive.google.com/drive/u/4/folders/1MGkS6tjXLiksDhUo8xYUgkQpY6RMBZCT)

それでは使い方を紹介いたします。
まず初回[^1]だけ「**Setup.exe**」を起動します。
すると「**input.txt**」というテキストファイルが同ディレクトリ内に生成されます。このファイルを開きます。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3925398/44ffe11d-6621-98c5-4c9d-a6d74d53caf6.png)

[^1]:「**統計そふと_Ver2.0.exe**」が置かれているディレクトリ（フォルダ）に「**input.txt**」がない場合は各自で同名のファイルを作成していただくか、「**SetUp.exe**」をご利用ください。
2回目以降（**input.txt**が存在する場合）は、直接**input.txt**を書き直してから「**統計そふと_Ver2.0.exe**」を起動してください。

**1行目には$x_i$のデータを「,」（カンマ）区切りで入力していきます。**
（※ 絶対に空白などは入れないでください。）
**2行目には$y_i$のデータを「,」（カンマ）区切りで入力していきます。**
（※ 絶対に空白などは入れないでください。）

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3925398/ebbb3e5f-c998-29e3-9e62-301dd27ebcfb.png)

このように$x$と$y$のデータ数$n$は一致する必要があります。
**入力が完了したら「Ctrl + s」を押して保存**します。保存が完了すればテキストは閉じて構いません。

では『**統計そふと_Ver2.0.exe**』をダブルクリックして起動します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3925398/6d6b717f-a0f9-1354-48f6-3212da339279.png)

オレンジ色のボタン「**計算する**」を押すと、**input.txt**に書き込んだデータを読み込み、計算を開始します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3925398/81d44f02-2b87-9119-8c26-7cfdfe59a60c.png)

計算が終わると上の写真のように、平均や相関係数などが表示されます。
これで計算自体は終わりなのですが、もし相関係数のグラフ（$y=ax+b$）をもっと分かりやすく見たいという方は「**グラフを生成**」をクリックしてください。
これによりグラフが生成され別ウィンドで起動します。
グラフを利用することで入力したデータがどのような相関になっているかが分かりやすくなると思います。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3925398/91509388-d7f0-4ad9-92d2-03f47f805f93.png)