ポケモンで学ぶ統計学２級


## はじめに

統計学では頻繁に**ギリシャ文字**が登場する。これらは「平均」「標準偏差」「相関係数」「係数」など、数学的概念や推定量の記号として用いられる。

## 主なギリシャ文字と読み方

| 記号       | 読み方  | 用途の例                          |
| -------- | ---- | ----------------------------- |
| $\mu$    | ミュー  | 母平均（Population mean）          |
| $\sigma$ | シグマ  | 母標準偏差（Standard deviation）     |
| $\alpha$ | アルファ | 有意水準（Significance level）      |
| $\beta$  | ベータ  | 回帰係数（Regression coefficient）  |
| $\rho$   | ロウ   | 母相関係数（Population correlation） |
| $\theta$ | シータ  | 母数（Parameter）                 |

## ポケモンとの接続

* 「ポケモンのすばやさの平均」を $\mu_{\text{Speed}}$ などと書く。
* 「すばやさのばらつき」は $\sigma_{\text{Speed}}$。
* 「こうげき → 勝率」の回帰分析では、係数を $\beta$ で表す。

---

# 統計入門 × ポケモン：1-3. 統計学に必要な数学

## 概要

統計を理解するには、以下の数学的素養が重要になる。

### 1. 四則演算と方程式

* 変数の代入や計算：例）「合計 = HP + Attack + ...」

### 2. 関数・グラフ

* 正規分布や回帰直線の形を理解する。

### 3. 確率の基本

* ポケモンがクリティカルヒットする確率など、事象の起きやすさを数値で扱う。

### 4. 線形代数の初歩

* 行列やベクトルは重回帰分析や主成分分析で必須。

### 5. 微分・積分（応用）

* 最尤推定や機械学習アルゴリズムで登場。

## ポケモンで学ぶ

* 「種族値の平均」「標準偏差」「相関係数」は中学〜高校数学で十分扱える。
* 学ぶ順序：**平均 → 分散 → 確率 → 回帰 → 推定**

---

# 統計入門 × ポケモン：1-4. 変数の尺度

## 変数の尺度とは

統計学では、変数の「種類」によって扱い方が異なる。代表的な4種類を以下に示す。

| 尺度   | 特徴                | 例（ポケモン）               |
| ---- | ----------------- | --------------------- |
| 名義尺度 | 順序なし。名前・カテゴリのみ    | タイプ（炎、水、草など）          |
| 順序尺度 | 順序あり。差の意味なし       | ランク（S, A, B, Cなど）     |
| 間隔尺度 | 順序・差あり。絶対的な0がない   | 技の威力（相対評価）            |
| 比率尺度 | 順序・差・0あり。倍数が意味を持つ | 種族値（HP=0は「ない」ことを意味する） |

## ポケモンとの接続

* 「すばやさ」「こうげき」などの種族値は**比率尺度**。
* 「タイプ」や「タマゴグループ」は**名義尺度**。

---

# 統計入門 × ポケモン：1-5. 説明変数と目的変数

## 定義

| 用語   | 定義                   | 例（ポケモンで）         |
| ---- | -------------------- | ---------------- |
| 説明変数 | 独立変数。目的変数に影響を与える要因   | 種族値（こうげき・すばやさなど） |
| 目的変数 | 従属変数。説明変数によって値が決まる対象 | 総合戦闘力、勝率、人気など    |

## ポケモンの例

「バトルでの強さ（総合力）」を予測する場合：

* 目的変数：総合力（Total）
* 説明変数：HP、こうげき、ぼうぎょ、とくこう、とくぼう、すばやさ

## 線形モデルで表現

$$
\text{Total} = \beta_0 + \beta_1 \cdot \text{HP} + \cdots + \beta_6 \cdot \text{Speed} + \epsilon
$$

## Python実装例（抜粋）

```python
from sklearn.linear_model import LinearRegression
model = LinearRegression()
model.fit(X, y)
```






## 2-1. 度数分布と累積度数分布

### 度数分布とは

データを**階級（範囲）ごとに分けて、その中に何個あるか**を数えた表。データのばらつきや偏りを視覚化する基本。

### 累積度数分布とは

各階級までに**累計でいくつあるか**を数える。全体に占める比率を見るのに有効。

### 例（すばやさの度数分布）

| 階級（すばやさ） | 度数 | 累積度数 |
| -------- | -- | ---- |
| 0～49     | 12 | 12   |
| 50～99    | 55 | 67   |
| 100～149  | 89 | 156  |
| 150～199  | 23 | 179  |
| 200～255  | 5  | 184  |

---

## 2-2. ヒストグラム

### ヒストグラムとは

階級ごとの**棒グラフ**。横軸に階級、縦軸に度数を取る。

```python
import matplotlib.pyplot as plt

plt.hist(df['Speed'], bins=10, edgecolor='black')
plt.title('Distribution of Speed')
plt.xlabel('Speed')
plt.ylabel('Frequency')
plt.grid(True)
plt.show()
```

### ポイント

* 階級数（棒の本数）によって見え方が変わる
* 平均や分散だけではわからない**分布の形**がわかる

---

## 2-3. 階級幅の決め方

### 階級幅とは

各階級の「横幅」。設定の仕方でヒストグラムの印象が変わる。

### よく使われる方法

* **スタージェスの公式**：

  $$
  k = 1 + \log_2(n)
  $$

  （kは階級数、nはデータ数）
* **平方根の法則**：

  $$
  k = \sqrt{n}
  $$

### 例（184匹のポケモン種族値）

スタージェスなら

$$
1 + \log_2(184) ≈ 8.52 → 9階級程度が適切
$$

---

## 2-4. ローレンツ曲線

### ローレンツ曲線とは

\*\*「不平等さ」や「偏りの可視化」\*\*に使う折れ線グラフ。

* 横軸：累積の個体数割合（0～100%）
* 縦軸：累積の種族値割合（例：すばやさ）

完全平等（全員同じ値）なら45度線上
偏りが大きいほど曲線は下に膨らむ

### ポケモン例

すばやさに偏りがあると、**一部の高速ポケモンが全体の大半のスピード値を占める**ことが見える。

---

## 2-5. ジニ係数

### ジニ係数とは

ローレンツ曲線から導く**不平等の指標（0〜1）**

* 0：完全平等
* 1：完全不平等

### 定義

ローレンツ曲線と45度線との間の面積Aを用いて

$$
\text{ジニ係数} = \frac{A}{A + B}
$$

通常、台形の面積計算で数値化される。

---

## 2-6. ジニ係数の求め方（Python）

### 実装（すばやさのジニ係数）

```python
import numpy as np

def gini_coefficient(x):
    x = np.sort(x)                  # 昇順に並び替え
    n = len(x)
    cumulative_x = np.cumsum(x)
    sum_x = cumulative_x[-1]
    index = np.arange(1, n+1)
    return (n + 1 - 2 * np.sum(cumulative_x / sum_x * index) / n)

speed_values = df['Speed'].values
gini = gini_coefficient(speed_values)
print(f"Gini coefficient for Speed: {gini:.3f}")
```

### 解釈

* 0.0〜0.3：比較的平等（種族値が平均的）
* 0.3〜0.6：やや不平等（特化型ポケモンが多い）
* 0.6以上：かなり不平等（ごく一部に突出した速度）

---




## 3-1. 平均・中央値・モード

### 平均（Mean）

すべての値の合計を個数で割った値。最も一般的な代表値。

$$
\bar{x} = \frac{1}{n} \sum_{i=1}^{n} x_i
$$

### 中央値（Median）

データを小さい順に並べたとき、中央にくる値。外れ値に強い。

### 最頻値（モード, Mode）

最も頻繁に出現する値。カテゴリ型や整数データで有効。

### ポケモンでの例（HP種族値）

```python
hp_values = df['HP']
print('Mean:', hp_values.mean())
print('Median:', hp_values.median())
print('Mode:', hp_values.mode().values[0])
```

---

## 3-2. 平均・中央値・モードの関係

### 分布が正規に近い場合

$$
\text{平均} ≒ \text{中央値} ≒ \text{モード}
$$

### 右に歪んだ分布（例：攻撃力に突出がある場合）

$$
\text{モード} < \text{中央値} < \text{平均}
$$

### 左に歪んだ分布

$$
\text{平均} < \text{中央値} < \text{モード}
$$

### ポケモンの種族値分布で視覚確認

```python
import seaborn as sns

sns.histplot(df['Attack'], kde=True)
plt.title('Distribution of Attack')
plt.xlabel('Attack')
plt.ylabel('Frequency')
plt.grid(True)
plt.show()
```

---

## 3-3. 平均・中央値・モードの使い方

| 用途          | 推奨代表値 | 理由             |
| ----------- | ----- | -------------- |
| 外れ値がない連続データ | 平均    | データ全体の重心として扱える |
| 外れ値がある場合    | 中央値   | 極端値の影響を受けにくい   |
| カテゴリ・整数型    | モード   | 最頻出値として自然な代表   |

### ポケモンでの適用例

* 「平均種族値」：全体の強さの目安
* 「中央値」：極端な高速ポケモンがいても影響されない
* 「モード」：標準的なHPやすばやさを知るのに便利

---

## 3-4. いろいろな平均

### 加重平均（Weighted Mean）

各値に重み（例：出現率や使用率）をかけた平均：

$$
\bar{x}_{w} = \frac{\sum w_i x_i}{\sum w_i}
$$

### 調和平均（Harmonic Mean）

速度など逆数的意味があるときに有効：

$$
\text{調和平均} = \frac{n}{\sum \frac{1}{x_i}}
$$

### 幾何平均（Geometric Mean）

倍率の平均などに：

$$
\text{幾何平均} = \sqrt[n]{x_1 x_2 \cdots x_n}
$$

### 例：ポケモンの使用率を加味した加重平均HP

```python
weighted_hp = (df['HP'] * df['Usage']).sum() / df['Usage'].sum()
print(f"Weighted Mean HP: {weighted_hp:.2f}")
```

---

## 3-5. 歪度と尖度

### 歪度（Skewness）

分布の左右非対称さを表す。

* 正：右に長い尾（攻撃特化）
* 負：左に長い尾

```python
from scipy.stats import skew
print('Skewness (Speed):', skew(df['Speed']))
```

### 尖度（Kurtosis）

分布の尖り具合。

* 高い：とがっている（中心に集中）
* 低い：平べったい（分散が大きい）

```python
from scipy.stats import kurtosis
print('Kurtosis (Speed):', kurtosis(df['Speed']))
```

### 解釈

* 歪度 ≒ 0：正規分布的
* 尖度 > 3：尖っている（leptokurtic）
* 尖度 < 3：平たい（platykurtic）

---


## 4-1. 箱ひげ図とは

箱ひげ図（Box plot）は、データの分布・ばらつき・外れ値を一目で可視化する手法。
**中央値・四分位範囲・最小値・最大値・外れ値**が視覚的に把握できる。

### 表示要素

* 箱：第1四分位（Q1）～第3四分位（Q3）
* 中央線：中央値（Q2）
* ひげ：最小値～最大値（外れ値を除く）
* 点：外れ値

---

## 4-2. 箱ひげ図の見方

### 例（すばやさ種族値）

```python
import matplotlib.pyplot as plt

plt.boxplot(df['Speed'])
plt.title('Boxplot of Speed')
plt.ylabel('Speed')
plt.grid(True)
plt.show()
```

### 解釈ポイント

* 箱が短い：ばらつきが小さい（安定）
* 箱が長い：ばらつきが大きい（多様）
* 外れ値：極端に速い（例：デオキシス）

---

## 4-3. 外れ値検出のある箱ひげ図

### 外れ値の定義（IQR法）

$$
\text{IQR} = Q3 - Q1
$$

$$
\text{外れ値} > Q3 + 1.5 \times IQR \quad または \quad < Q1 - 1.5 \times IQR
$$

### 実装

```python
Q1 = df['Speed'].quantile(0.25)
Q3 = df['Speed'].quantile(0.75)
IQR = Q3 - Q1

outliers = df[(df['Speed'] < Q1 - 1.5*IQR) | (df['Speed'] > Q3 + 1.5*IQR)]
print(outliers[['Name', 'Speed']])
```

---

## 4-4. 箱ひげ図の書き方（データ数が奇数の場合）

### 手順（nが奇数）

1. 中央値（Q2）を求める：中央の値
2. 下半分→Q1（中央値）
3. 上半分→Q3（中央値）

例：データ = \[40, 50, 60, 70, 80]
Q2 = 60
Q1 = 50（40と50の中央値）
Q3 = 70（70と80の中央値）

---

## 4-5. 箱ひげ図の書き方（データ数が偶数の場合）

### 手順（nが偶数）

1. Q2は中央2つの平均
2. Q1：下半分の中央値（含まない）
3. Q3：上半分の中央値（含まない）

例：データ = \[40, 50, 60, 70, 80, 90]
Q2 = (60+70)/2 = 65
Q1 = 50（40と50の中央値）
Q3 = 80（80と90の中央値）

---

## 4-6. 幹葉表示

### 幹葉表示（Stem-and-leaf display）とは

データの形を保ちながら、**頻度と分布を可視化**する方法。

### 構造

* 幹：上位桁
* 葉：下位桁

### ポケモン例（すばやさ）

```text
Speed データ（抜粋）: [40, 42, 45, 48, 50, 52, 56, 61, 67]

幹｜葉
4｜0 2 5 8
5｜0 2 6
6｜1 7
```

### Python実装例（テキスト出力）

```python
def stem_and_leaf_plot(data):
    stems = {}
    for num in sorted(data):
        stem, leaf = divmod(num, 10)
        stems.setdefault(stem, []).append(leaf)
    for stem in sorted(stems):
        leaves = ' '.join(str(leaf) for leaf in stems[stem])
        print(f"{stem} | {leaves}")

stem_and_leaf_plot(df['Speed'].tolist())
```

---





## 5-1. データの集計について

統計学の第一歩は、**「分類」「整理」「数える」**という基本操作。
具体的には「カテゴリ別に何件あるか」「平均や分布はどうか」といった**要約情報**を得る。

### 例：ポケモンのタイプ別出現数

```python
df['Type 1'].value_counts()
```

### 種類

* カウント（個数集計）
* サマリー統計量（平均、中央値、最頻値など）
* グループごとの平均（タイプ別平均攻撃力など）

---

## 5-2. 棒グラフ・円グラフ・折れ線グラフ

### 棒グラフ（Bar Plot）

カテゴリごとの比較に使う。タイプ別の平均攻撃力などに適する。

```python
df.groupby('Type 1')['Attack'].mean().plot(kind='bar')
```

### 円グラフ（Pie Chart）

全体に占める割合を視覚化。タイプ別分布など。

```python
df['Type 1'].value_counts().plot.pie(autopct='%1.1f%%')
```

### 折れ線グラフ（Line Graph）

時系列や進化段階の変化を追うのに使用。

```python
df[df['Name'].str.contains('Pikachu|Raichu')][['Name', 'Speed']].plot(x='Name', y='Speed', kind='line')
```

---

## 5-3. クロス集計表1（カテゴリ×カテゴリ）

クロス集計表（Crosstab）は、2つのカテゴリ変数の**同時分布**を表す。

### 例：Type1 × Generation

```python
pd.crosstab(df['Type 1'], df['Generation'])
```

行が「タイプ」、列が「登場世代」。それぞれの組み合わせの件数が確認できる。

---

## 5-4. クロス集計表2（カテゴリ×連続値の平均）

カテゴリ変数と数値変数を組み合わせ、平均や合計などを計算。

### 例：Type1 × Attack（平均）

```python
df.pivot_table(values='Attack', index='Type 1', columns='Generation', aggfunc='mean')
```

列方向に「世代」、行方向に「タイプ」、交差セルに「攻撃の平均値」。

---

## 5-5. 帯グラフ・モザイク図

### 帯グラフ（Stacked Bar Chart）

カテゴリの**構成比**を比較。タイプ別の「分類（Legendary / Non-Legendary）」の比率など。

```python
pd.crosstab(df['Type 1'], df['Legendary'], normalize='index').plot(kind='bar', stacked=True)
```

### モザイク図（Mosaic Plot）

カテゴリ×カテゴリの**割合とボリューム**を同時に可視化。

```python
from statsmodels.graphics.mosaicplot import mosaic

mosaic(df, ['Type 1', 'Legendary'])
```

面積の広さが度数、色がカテゴリ構成を表す。

---

## 5-6. 三角グラフ（Ternary Plot）

三成分の比率（例：HP・Attack・Speed）を同時に表現。
分類・進化前後・バランス型か否かの分析に用いる。

### ライブラリ準備とプロット

```python
!pip install plotly

import plotly.express as px

# 正規化（三成分が1.0になるように）
subset = df[['HP', 'Attack', 'Speed']].copy()
subset = subset.div(subset.sum(axis=1), axis=0)

fig = px.scatter_ternary(subset, a='HP', b='Attack', c='Speed', title='Ternary Plot: HP vs Attack vs Speed')
fig.show()
```

### 解釈

* HPが高いと左下へ、Attackが高いと右下へ、Speedが高いと上へプロットされる
* タイプや分類別で色分け可能

---




# 統計入門 × ポケモン：第6章 分散と標準偏差

---

## 6-1. 分散

### 定義

分散（Variance）は、**データが平均からどれだけ離れているか**を表す指標。

$$
\sigma^2 = \frac{1}{n} \sum_{i=1}^{n} (x_i - \bar{x})^2
$$

* 大きいほどばらつきが大きい
* 単位は元データの**2乗**

### 例（こうげき種族値）

```python
attack_values = df['Attack']
variance = attack_values.var()
print(f"Variance of Attack: {variance:.2f}")
```

---

## 6-2. 標準偏差

### 定義

標準偏差（Standard Deviation）は、分散の**平方根**。

$$
\sigma = \sqrt{\text{Variance}}
$$

* 元のデータと**同じ単位**
* データの広がり具合を**直感的に把握**できる

```python
std_dev = attack_values.std()
print(f"Standard Deviation of Attack: {std_dev:.2f}")
```

---

## 6-3. 標準偏差の使い方

### 活用場面

* 「平均±標準偏差」で**データのばらつき範囲**を把握
* 正規分布なら、約68%が「±1σ」以内に収まる

### ポケモンの例（Speed）

```python
mean = df['Speed'].mean()
std = df['Speed'].std()

within_1std = df[(df['Speed'] >= mean - std) & (df['Speed'] <= mean + std)]
print(f"Percentage within ±1σ: {len(within_1std) / len(df) * 100:.1f}%")
```

---

## 6-4. 変動係数

### 定義

変動係数（Coefficient of Variation, CV）は、**平均に対する標準偏差の比率**。

$$
\text{CV} = \frac{\sigma}{\mu}
$$

* 単位が異なるデータ同士の**ばらつきの比較**に有効

```python
cv_attack = df['Attack'].std() / df['Attack'].mean()
cv_speed = df['Speed'].std() / df['Speed'].mean()
print(f"CV Attack: {cv_attack:.3f}, CV Speed: {cv_speed:.3f}")
```

---


---

## 7-1. ! の使い方（階乗）

### 定義

階乗（n!）は1からnまでの積。

$$
n! = n \times (n-1) \times \cdots \times 1
$$

### 例：3匹のポケモンを並べる方法の数

$$
3! = 3 \times 2 \times 1 = 6
$$

```python
import math
print(math.factorial(3))  # → 6
```

---

## 7-2. P の使い方（順列）

### 定義

n個からr個を**順番を考慮して**取り出す方法

$$
{}_{n}P_r = \frac{n!}{(n - r)!}
$$

### 例：5匹から3匹を順に出す

$$
{}_{5}P_3 = \frac{5!}{2!} = 60
$$

```python
from math import perm
print(perm(5, 3))  # → 60
```

---

## 7-3. C の使い方（組合せ）

### 定義

n個からr個を**順番を考慮せず**に選ぶ方法

$$
{}_{n}C_r = \frac{n!}{r!(n - r)!}
$$

### 例：6匹から2匹を選んでダブルバトルを行う

$$
{}_{6}C_2 = \frac{6!}{2! \cdot 4!} = 15
$$

```python
from math import comb
print(comb(6, 2))  # → 15
```

---

## まとめ（第6・7章）

* **標準偏差・分散・変動係数**はデータのばらつきを定量化
* **階乗・順列・組合せ**はあらゆる確率や組み合わせの基礎
* ポケモンを使った実例は、**概念理解と応用力強化**に最適

---



## 8-1. 事象とは

### 定義

事象（Event）は、確率空間における**結果の集合**。

例：

* 「くさタイプのポケモンである」
* 「すばやさが100以上である」

それぞれが事象である。

---

## 8-2. ベン図

### ベン図とは

\*\*複数の事象の関係（包含・排反・共通）\*\*を図式化する方法。

例：

* A：こうげき > 100
* B：すばやさ > 100

A ∩ B（両方を満たす）＝ 高速物理アタッカー
A ∪ B（どちらかを満たす）＝ 攻撃特化か高速型

---

## 8-3. 余事象・空事象・排反事象

| 用語   | 意味                       |
| ---- | ------------------------ |
| 余事象  | 起きないほう（例：Aの余事象はAが起きない）   |
| 空事象  | 起こり得ない（例：HP=–50など）       |
| 排反事象 | 同時に起きない（例：ほのおタイプかつみずタイプ） |

---

## 8-4. 和事象

和事象 A ∪ B：**AまたはBが起きる**（含む・または）

$$
P(A \cup B) = P(A) + P(B) - P(A \cap B)
$$

例：

* A：ドラゴンタイプ
* B：すばやさが120超え

---

## 8-5. 積事象

積事象 A ∩ B：**AかつBが同時に起きる**

例：

* A：いわタイプ
* B：こうげき > 120

$$
P(A \cap B) = P(A) \cdot P(B | A)
$$

---

---

## 9-1. 確率

### 定義

全体のうち、**ある事象が起きる割合**

$$
P(A) = \frac{\text{事象Aの数}}{\text{全体の数}}
$$

例：「伝説ポケモン」である確率

```python
p_legendary = df['Legendary'].mean()
```

---

## 9-2. 確率の計算（数え上げ）

例：「HPが偶数のポケモン」

```python
p_even_hp = (df['HP'] % 2 == 0).mean()
```

---

## 9-3. 確率の計算（順列・組み合わせ）

例：「5匹の中から3匹を選ぶ確率（順序あり・なし）」

```python
from math import perm, comb
print(perm(5, 3))  # 順列
print(comb(5, 3))  # 組合せ
```

---

## 9-4. 確率の計算（余事象）

例：「こうげき ≧ 150 ではない」確率

```python
p_not = 1 - (df['Attack'] >= 150).mean()
```

---

## 9-5. 確率と独立

2事象 A, B が独立であるとは：

$$
P(A \cap B) = P(A) \cdot P(B)
$$

例：「フェアリータイプ」と「HPが100以上」が独立か調べる：

```python
p_a = (df['Type 1'] == 'Fairy').mean()
p_b = (df['HP'] >= 100).mean()
p_ab = ((df['Type 1'] == 'Fairy') & (df['HP'] >= 100)).mean()

print("独立性成立:", abs(p_a * p_b - p_ab) < 0.01)
```

---

## 9-6. 加法定理

$$
P(A \cup B) = P(A) + P(B) - P(A \cap B)
$$

例：「ほのおタイプ」または「すばやさ > 100」の確率

---

## 9-7. 期待値

### 定義

事象の値 × その確率 の総和

$$
E[X] = \sum x_i P(x_i)
$$

例：こうげき値の期待値

```python
expected_attack = df['Attack'].mean()
```

離散事象例（急所ダメージ：0.125×2倍 + 0.875×1倍）

$$
E[\text{ダメージ倍率}] = 0.875 \cdot 1 + 0.125 \cdot 2 = 1.125
$$


---







## 10-1. 条件付き確率とは

### 定義

ある事象Aが起きたときに、事象Bが起きる確率を**条件付き確率**と呼ぶ。

$$
P(B | A) = \frac{P(A \cap B)}{P(A)}
$$

### 例：伝説ポケモン（Legendary）の中で「ドラゴンタイプ（Type1=Dragon）」である確率

```python
p_b_given_a = (
    ((df['Legendary'] == True) & (df['Type 1'] == 'Dragon')).sum() /
    (df['Legendary'] == True).sum()
)
```

---

## 10-2. 条件付き確率と独立

2つの事象A, Bが**独立**であるとは：

$$
P(B | A) = P(B)
$$

つまり、Aが起きてもBの確率に影響を与えない。

### 検証例：

A = すばやさ > 100
B = 伝説ポケモン

```python
p_b = (df['Legendary'] == True).mean()
p_b_given_a = df[df['Speed'] > 100]['Legendary'].mean()

print("独立:", abs(p_b - p_b_given_a) < 0.01)
```

---

## 10-3. 乗法定理

### 定義

事象AとBが同時に起こる確率は、以下で求められる：

$$
P(A \cap B) = P(A) \cdot P(B | A)
$$

または、

$$
P(A \cap B) = P(B) \cdot P(A | B)
$$

### 例：

A = こうげき > 120
B = 伝説ポケモン

```python
p_a = (df['Attack'] > 120).mean()
p_b_given_a = df[df['Attack'] > 120]['Legendary'].mean()

p_ab = p_a * p_b_given_a
```

---

## 10-4. ベイズの定理

### 定義

条件付き確率の逆転を可能にする**確率論の基本定理**：

$$
P(A | B) = \frac{P(B | A) \cdot P(A)}{P(B)}
$$

### 使用例：

「伝説ポケモンである」と観測されたときに「こうげきが150超である」確率

```python
p_a = (df['Attack'] > 150).mean()
p_b = (df['Legendary'] == True).mean()
p_b_given_a = df[df['Attack'] > 150]['Legendary'].mean()

p_a_given_b = (p_b_given_a * p_a) / p_b
```

---

## 10-5. 事前確率と事後確率

| 用語   | 定義                                  |
| ---- | ----------------------------------- |
| 事前確率 | 観測前の確率（例：伝説ポケモンである確率）               |
| 尤度   | 条件付き確率（例：攻撃力150超のポケモンが伝説である確率）      |
| 事後確率 | 情報を得たあとの確率（例：伝説だと分かったとき攻撃150超である確率） |

ベイズの定理により、**新しい情報を踏まえて確率を更新**できる。

---

## 10-6. ベイズの定理の使い方（ポケモン例）

### ケーススタディ

* 事象A：こうげき > 150（攻撃的アタッカー）
* 事象B：伝説ポケモンであると判明

このとき、ベイズの定理により
「伝説だと分かった後にそのポケモンが攻撃的である確率」が求まる。

### 実装

```python
df['A'] = df['Attack'] > 150
df['B'] = df['Legendary'] == True

P_A = df['A'].mean()
P_B = df['B'].mean()
P_B_given_A = df[df['A']]['B'].mean()

P_A_given_B = (P_B_given_A * P_A) / P_B
print(f"P(A|B) = {P_A_given_B:.4f}")
```






## 11-1. 確率変数と確率分布

### 定義（確率変数）

確率変数（random variable）は、**ある試行の結果を実数で表す関数**。
たとえばポケモンの「すばやさ」は、個体によって値が異なるため、**確率的な性質を持つ変数**として扱うことができる。

### 実例（ポケモン）

* 確率変数 $X =$ すばやさ種族値
* 試行：ポケモンをランダムに1体選ぶ
* $X \in \{5, 20, ..., 160\}$（データに応じて離散的 or 連続的）

### 確率分布とは

確率変数 $X$ の**各値に対応する確率（または密度）を与える関数**。これを視覚化・数値化したものが確率分布。

---

## 11-2. 離散型確率分布と確率質量関数（PMF）

### 離散型：値が整数やカテゴリなど、飛び飛び

### 確率質量関数（Probability Mass Function）

$$
P(X = x_i) = f(x_i)
\quad \text{such that} \quad \sum_{i} f(x_i) = 1
$$

### 実例：ポケモンの「HP種族値」の分布

```python
pmf = df['HP'].value_counts(normalize=True).sort_index()
pmf.plot(kind='bar', figsize=(10,4))
plt.title('PMF of HP')
plt.xlabel('HP')
plt.ylabel('Probability')
plt.grid(True)
plt.show()
```

→ 最頻値（モード）、ばらつき、歪みなどが視覚的にわかる。

---

## 11-3. 連続型確率分布

### 連続型：取り得る値が実数（区間的）

例：仮にポケモンの「すばやさ」が連続変数として測定された場合（例：技使用後の行動時間など）

### 特徴

* 単一の値に対する確率はゼロ： $P(X = x) = 0$
* 区間確率で扱う： $P(a \le X \le b)$

---

## 11-4. 確率密度と確率密度関数（PDF）

### 定義

$$
P(a \le X \le b) = \int_a^b f(x) \, dx
\quad \text{with} \quad f(x) \ge 0, \int_{-\infty}^{\infty} f(x) = 1
$$

### 実例：すばやさを正規分布で近似

```python
import numpy as np
from scipy.stats import norm

x = np.linspace(mean - 3*std, mean + 3*std, 300)
pdf = norm.pdf(x, loc=mean, scale=std)

plt.plot(x, pdf)
plt.title('Probability Density Function (Speed)')
plt.xlabel('Speed')
plt.ylabel('Density')
plt.grid(True)
plt.show()
```

### 補足

このグラフの「面積」が「確率」に相当。高さそのものではなく、**区間幅との積で確率になる**。

---

## 11-5. 連続型確率分布と確率1：区間確率の計算

### 実例：すばやさが 100〜120 にある確率

$$
P(100 \le X \le 120) = F(120) - F(100)
\quad \text{where } F(x) = \int_{-\infty}^{x} f(t) dt
$$

```python
p = norm(loc=mean, scale=std).cdf(120) - norm(loc=mean, scale=std).cdf(100)
print(f"P(100 <= Speed <= 120): {p:.3f}")
```

→ **分布の中で一定区間に該当する個体の割合**を示す。

---

## 11-6. 連続型確率分布と確率2：Zスコアと標準正規分布

### Zスコアの定義と意義

$$
Z = \frac{X - \mu}{\sigma}
$$

* 単位の異なる変数も比較可能に
* 標準正規分布 $N(0,1)$ に変換

### 実装（すばやさのZスコア）

```python
df['Speed_z'] = (df['Speed'] - mean) / std
```

### Zスコアが ±1 にある確率（68.27%）

```python
p = norm.cdf(1) - norm.cdf(-1)
```

→ 多くのポケモンの「標準的」なスピード感が見える。

---

## コラム：離散と連続の違いをポケモンで整理

| 種類  | 確率変数             | 例             | 分布関数              |
| --- | ---------------- | ------------- | ----------------- |
| 離散型 | HP、Attack、技の命中回数 | PMF（棒グラフ）     | $P(X = x)$        |
| 連続型 | Speedの理論分布       | PDF（曲線、面積で確率） | $\int_a^b f(x)dx$ |

---




## 12-1. 累積分布関数とは（CDF）

### 定義（累積分布関数）

確率変数 $X$ がある値以下である確率を表す関数：

$$
F(x) = P(X \le x)
$$

### 特徴

* $x$ が増えるほど $F(x)$ は増加
* 離散型でも連続型でも定義可能

---

## 12-2. 累積分布関数の性質

### 基本性質

1. 増加関数： $F(x_1) \le F(x_2)$ （if $x_1 < x_2$）
2. $\lim_{x \to -\infty} F(x) = 0$, $\lim_{x \to +\infty} F(x) = 1$
3. 不連続点がある場合 → 離散型分布

### 実例（Speed種族値の累積分布）

```python
import numpy as np
import matplotlib.pyplot as plt

speed = df['Speed'].sort_values().values
n = len(speed)
cdf = np.arange(1, n + 1) / n

plt.step(speed, cdf)
plt.title('Empirical CDF of Speed')
plt.xlabel('Speed')
plt.ylabel('P(X ≤ x)')
plt.grid(True)
plt.show()
```

---

## 12-3. 確率変数の期待値（離散・連続）

### 離散型の期待値

$$
E[X] = \sum_{i} x_i P(X = x_i)
$$

### 連続型の期待値

$$
E[X] = \int_{-\infty}^{\infty} x f(x) dx
$$

### ポケモン実例（Attack）

```python
expected_attack = df['Attack'].mean()
print(f"Expected value of Attack: {expected_attack:.2f}")
```

→ 攻撃力の**平均的な水準**を表す。

---

## 12-4. 期待値の性質

### 線形性（Linear property）

$$
E[aX + b] = aE[X] + b
$$

### 和の期待値

$$
E[X + Y] = E[X] + E[Y]
\quad \text{（独立でなくても成立）}
$$

### 実例：AttackとSpeedの合計期待値

```python
e_total = df['Attack'].mean() + df['Speed'].mean()
e_sum = (df['Attack'] + df['Speed']).mean()
print(f"Expected sum: {e_total:.2f} vs Calculated: {e_sum:.2f}")
```

---

## 12-5. 確率変数の分散（定義と導出）

### 離散型

$$
\text{Var}(X) = \sum (x_i - E[X])^2 P(X = x_i)
$$

または

$$
\text{Var}(X) = E[X^2] - (E[X])^2
$$

### 実例：HPの分散と標準偏差

```python
var_hp = df['HP'].var()
std_hp = df['HP'].std()
print(f"Variance: {var_hp:.2f}, Std Dev: {std_hp:.2f}")
```

---

## 12-6. 分散の性質

### 分散のスケーリング性

$$
\text{Var}(aX + b) = a^2 \cdot \text{Var}(X)
$$

### 分散の加法性（独立な場合）

$$
\text{Var}(X + Y) = \text{Var}(X) + \text{Var}(Y)
\quad \text{（XとYが独立なとき）}
$$

### 実例：AttackとSpeedの合計の分散（確認）

```python
var_sum = df['Attack'].var() + df['Speed'].var()
actual_var = (df['Attack'] + df['Speed']).var()
print(f"Sum of variances: {var_sum:.2f}, Actual variance: {actual_var:.2f}")
```

---

## 総まとめ

| 概念      | 意味                                                  | ポケモンの例               |
| ------- | --------------------------------------------------- | -------------------- |
| CDF     | $P(X \le x)$                                        | すばやさが100以下である確率      |
| 期待値     | 平均的な結果                                              | 攻撃種族値の期待値            |
| 分散・標準偏差 | 平均からのズレ具合                                           | HPやSpeedの安定性         |
| 線形性     | $E[aX + b] = aE[X] + b$                             | 効果量をスケーリングしたときの平均値保存 |
| 分散の加法性  | $\text{Var}(X + Y) = \text{Var}(X) + \text{Var}(Y)$ | 2種族値の合計のばらつき推定       |




---





## 13-1. 二項分布（Binomial Distribution）

### 定義

**成功/失敗の2値事象をn回繰り返す**試行の成功回数：

$$
P(X = k) = \binom{n}{k} p^k (1-p)^{n-k}
$$

* $n$：試行回数（例：10回攻撃）
* $p$：成功確率（例：急所率 0.125）

### 例：急所に当たる回数（10回攻撃中）

```python
from scipy.stats import binom

n = 10
p = 0.125
x = range(0, n + 1)
pmf = binom.pmf(x, n, p)
```

---

## 13-2. 二項分布の期待値と分散

$$
E[X] = np \quad,\quad \text{Var}(X) = np(1 - p)
$$

```python
mean = binom.mean(n, p)
var = binom.var(n, p)
```

---

## 13-3. ポアソン分布（Poisson Distribution）

### 定義

**単位時間内に起きる希な現象の回数**

$$
P(X = k) = \frac{\lambda^k e^{-\lambda}}{k!}
$$

* $\lambda$：平均発生回数

### 例：1ターンに出現する状態異常数（平均0.3）

```python
from scipy.stats import poisson

lam = 0.3
x = range(0, 6)
pmf = poisson.pmf(x, mu=lam)
```

---

## 13-4. ポアソン分布の期待値と分散

$$
E[X] = \lambda \quad,\quad \text{Var}(X) = \lambda
$$

```python
mean = poisson.mean(mu=lam)
var = poisson.var(mu=lam)
```

---

## 13-5. 幾何分布（Geometric Distribution）

### 定義

**初めて成功するまでの試行回数**

$$
P(X = k) = (1 - p)^{k - 1} p
\quad (k = 1, 2, 3, \dots)
$$

### 例：モンスターボールでの捕獲成功回数（p=0.3）

```python
from scipy.stats import geom

p = 0.3
x = range(1, 10)
pmf = geom.pmf(x, p)
```

---

## 13-6. 幾何分布の期待値と分散

$$
E[X] = \frac{1}{p}
\quad,\quad
\text{Var}(X) = \frac{1 - p}{p^2}
$$

```python
mean = geom.mean(p)
var = geom.var(p)
```

---

## 13-7. 超幾何分布（Hypergeometric Distribution）

### 定義

**有限集団からの非復元抽出**

$$
P(X = k) = \frac{\binom{K}{k} \binom{N - K}{n - k}}{\binom{N}{n}}
$$

* N：母集団（例：30体中）
* K：対象の数（例：伝説が6体）
* n：抽出数（例：5体選ぶ）

### 例：5体中に伝説が2体含まれる確率

```python
from scipy.stats import hypergeom

N, K, n = 30, 6, 5
x = range(0, 6)
pmf = hypergeom.pmf(x, N, K, n)
```

---

## 13-8. 負の二項分布（Negative Binomial）

### 定義

**r回目の成功が出るまでの試行回数**

$$
P(X = k) = \binom{k - 1}{r - 1} p^r (1 - p)^{k - r}
\quad (k \ge r)
$$

* $r$：成功回数
* $k$：試行回数
* $p$：成功確率

### 例：3回捕獲に成功するまでに必要な試行回数（p=0.2）

```python
from scipy.stats import nbinom

r = 3
p = 0.2
x = range(r, r + 10)
pmf = nbinom.pmf(x - r, r, p)
```

---

## まとめ（分布の使い分け）

| 分布名    | モデル        | ポケモンでの例       | 期待値           | 分散                         |
| ------ | ---------- | ------------- | ------------- | -------------------------- |
| 二項分布   | 成功回数（固定試行） | 急所ヒット数        | $np$          | $np(1 - p)$                |
| ポアソン分布 | 単位時間内の発生回数 | 状態異常、乱数要素     | $\lambda$     | $\lambda$                  |
| 幾何分布   | 初成功までの回数   | 捕獲に成功するまでの試行数 | $1/p$         | $(1-p)/p^2$                |
| 超幾何分布  | 非復元抽出の成功数  | 手持ちに含まれる伝説数   | $n \cdot K/N$ | $n(K/N)(1-K/N)(N-n)/(N-1)$ |
| 負の二項分布 | 複数成功までの試行数 | 3回の急所成功までの攻撃数 | $r/p$         | $r(1-p)/p^2$               |

---




## 14-1. 正規分布とは

### 数式定義

$$
f(x) = \frac{1}{\sqrt{2\pi \sigma^2}} \exp\left( -\frac{(x - \mu)^2}{2\sigma^2} \right)
$$

* $\mu$：平均（ポケモンのSpeedの平均など）
* $\sigma$：標準偏差（Speedのばらつき）

### 特徴

* **左右対称の釣鐘型**
* **平均 = 中央値 = 最頻値**
* **±1σに約68.27%が含まれる**

### 実例：Speedの分布を正規分布で近似

```python
import numpy as np
import matplotlib.pyplot as plt
from scipy.stats import norm

speed = df['Speed']
mu = speed.mean()
sigma = speed.std()
x = np.linspace(mu - 3*sigma, mu + 3*sigma, 300)
pdf = norm.pdf(x, mu, sigma)

plt.plot(x, pdf, label='Normal Approximation')
plt.hist(speed, bins=20, density=True, alpha=0.4, label='Empirical Speed')
plt.title('Speed Distribution vs Normal Approximation')
plt.xlabel('Speed')
plt.ylabel('Density')
plt.legend()
plt.grid(True)
plt.show()
```

---

## 14-2. 正規分布の再生性と標準正規分布

### 再生性（加法性）

* 2つの独立した正規分布 $X \sim N(\mu_1, \sigma_1^2)$, $Y \sim N(\mu_2, \sigma_2^2)$ を足すと：

$$
X + Y \sim N(\mu_1 + \mu_2, \sigma_1^2 + \sigma_2^2)
$$

### 実例：SpeedとAttackの合計

```python
mu_sum = df['Speed'].mean() + df['Attack'].mean()
var_sum = df['Speed'].var() + df['Attack'].var()
print(f"Speed + Attack ~ N({mu_sum:.2f}, {var_sum:.2f})")
```

### 標準正規分布（Standard Normal Distribution）

$$
Z \sim N(0, 1)
$$

任意の正規分布をZスコアで標準化すればこの分布に変換可能。

---

## 14-3. 標準化したデータの使い方

### Zスコアの定義

$$
Z = \frac{X - \mu}{\sigma}
$$

* **正規化**ではなく**標準化**
* 外れ値・平均との距離・異なる変数間の比較に有用

### 実装例：SpeedのZスコア

```python
df['Speed_z'] = (df['Speed'] - mu) / sigma
```

→ Z > 2：高速ポケモン、Z < -2：鈍足ポケモン

---

## 14-4. 標準正規分布表（Φ表）

### 内容

* Zスコアに対する累積確率 $\Phi(z) = P(Z \le z)$
* 対称性： $P(Z \ge z) = 1 - \Phi(z)$
* 両側： $P(|Z| \le z) = 2\Phi(z) - 1$

### 部分表示例（抜粋）

| Z    | Φ(Z)   |
| ---- | ------ |
| 0.00 | 0.5000 |
| 0.50 | 0.6915 |
| 1.00 | 0.8413 |
| 1.96 | 0.9750 |
| 2.00 | 0.9772 |
| 3.00 | 0.9987 |

---

## 14-5. 標準正規分布表の使い方1（片側確率）

### 問題例：

SpeedのZスコアが1.28のポケモンは上位何%か？

```python
z = 1.28
p = norm.cdf(z)
print(f"上位 {100 - p * 100:.2f}%")  # → 約10%
```

---

## 14-6. 標準正規分布の使い方2（区間確率）

### 例1：Speedが±1σ内にある確率（理論）

```python
p = norm.cdf(1) - norm.cdf(-1)
print(f"理論値（±1σ）: {p:.4f}")  # → 約0.6827
```

### 例2：実データと比較

```python
lower = mu - sigma
upper = mu + sigma
actual = df[(df['Speed'] >= lower) & (df['Speed'] <= upper)]
print(f"実際の割合: {len(actual)/len(df):.4f}")
```

---

## 応用：ポケモンの相対評価・分類

### 問題：

SpeedがZ > 2のポケモンはどれくらい珍しいか？

```python
df[df['Speed_z'] > 2][['Name', 'Speed', 'Speed_z']]
```

→ 「上位2.5%以内の高速アタッカー」を抽出可能。

---

## まとめ

| 内容          | 意味                  | ポケモンでの応用例                 |
| ----------- | ------------------- | ------------------------- |
| 正規分布        | 実測値のモデル化            | SpeedやHPのばらつき分析           |
| 標準正規分布（Z分布） | 任意の正規分布を比較可能にする     | 複数種族値の標準化ランキング            |
| Zスコア        | 平均からの相対的位置          | 「どれくらい速いか」「どれくらい重いか」の定量評価 |
| 分布表         | 理論分布との対応関係を数値で確認できる | 上位5%・平均以上・中央値の判定など        |
| ±1σ・±2σの範囲  | 標準的・稀な個体の区分け        | 特殊戦術向きの個体・汎用型の見分け         |

---



# 第15章：いろいろな確率分布3（指数・一様・2変数分布）

---

## 15-1. 指数分布（Exponential Distribution）

### 定義

待ち時間や寿命モデル：

$$
f(x) = \lambda e^{-\lambda x} \quad (x \ge 0)
$$

* $\lambda$：単位時間あたりの発生率（rate）

### ポケモン例

状態異常（麻痺、毒）が「次に発生するまでのターン数」

### 実装例（平均待ち時間4ターン）

```python
from scipy.stats import expon
import numpy as np
import matplotlib.pyplot as plt

lam = 1/4  # 平均4ターン
x = np.linspace(0, 20, 300)
pdf = expon.pdf(x, scale=1/lam)

plt.plot(x, pdf)
plt.title('Exponential Distribution (状態異常待ち時間)')
plt.xlabel('Turn')
plt.ylabel('Density')
plt.grid(True)
plt.show()
```

---

## 15-2. 離散一様分布（Discrete Uniform Distribution）

### 定義

同じ確率で整数が出現：

$$
P(X = x) = \frac{1}{n}
$$

### ポケモン例

* 「技の威力がランダムで決まる」場面
* 「ランク補正が±1〜±6の間で均等に変化」など

```python
from scipy.stats import randint

pmf = randint.pmf(range(1, 7), 1, 7)
```

---

## 15-3. 連続一様分布1（Continuous Uniform Distribution）

### 定義

範囲 \[a, b] の間で**一様に発生**：

$$
f(x) = \frac{1}{b - a} \quad (a \le x \le b)
$$

### ポケモン例

* 個体値が0〜31の間でランダム（理論化すると連続）
* 初期値の速度補正など

```python
from scipy.stats import uniform

a, b = 0, 255
x = np.linspace(a, b, 300)
pdf = uniform.pdf(x, loc=a, scale=b-a)

plt.plot(x, pdf)
plt.title('Continuous Uniform Distribution (個体値近似)')
plt.xlabel('Stat')
plt.ylabel('Density')
plt.grid(True)
plt.show()
```

---

## 15-4. 連続一様分布2（累積分布と逆関数）

### 累積分布関数（CDF）

$$
F(x) = \frac{x - a}{b - a} \quad (a \le x \le b)
$$

### 応用：一様分布から乱数を生成

```python
samples = uniform.rvs(loc=0, scale=255, size=1000)
```

---

## 15-5. 2変数の確率分布（Joint Distribution）

### 定義

2つの変数 $X, Y$ に関する同時分布：

$$
P(X = x, Y = y)
$$

### ポケモン例

* X：Attack
* Y：Speed
  → 「高速アタッカー」「鈍足高火力型」などのカテゴリ化

### 実装：2Dヒストグラム（攻撃×素早さ）

```python
plt.hist2d(df['Attack'], df['Speed'], bins=30, cmap='Blues')
plt.colorbar()
plt.xlabel('Attack')
plt.ylabel('Speed')
plt.title('Joint Distribution of Attack and Speed')
plt.grid(True)
plt.show()
```

---

## 15-6. 2変数の期待値と分散（共分散・相関係数）

### 期待値と共分散

$$
E[X] = \sum x_i P(x_i), \quad \text{Cov}(X, Y) = E[(X - \mu_X)(Y - \mu_Y)]
$$

### 相関係数

$$
\rho_{X,Y} = \frac{\text{Cov}(X,Y)}{\sigma_X \sigma_Y}
$$

### 実装：AttackとSpeedの相関分析

```python
cov = df[['Attack', 'Speed']].cov().iloc[0, 1]
corr = df[['Attack', 'Speed']].corr().iloc[0, 1]
print(f"Covariance: {cov:.2f}, Correlation: {corr:.2f}")
```

---

## まとめ

| 分布       | モデル・意味        | ポケモンでの活用例          |
| -------- | ------------- | ------------------ |
| 指数分布     | 次のイベントまでの待ち時間 | 状態異常や発動の遅延         |
| 離散一様分布   | 等確率で整数値を出す    | ランク変動、ランダム補正       |
| 連続一様分布   | 任意区間で等密度      | 個体値、補正値の近似         |
| 2変数同時分布  | 種族値2つの関係      | Speed×Attack の戦術評価 |
| 共分散・相関係数 | 散布傾向の分析       | 速くて火力が高い、鈍足高耐久型の判定 |

---


---

## 16-1. 母集団と標本（Population and Sample）

### 定義

* **母集団（population）**：調査・分析の対象となる全体（例：すべてのポケモン）
* **標本（sample）**：母集団の一部を抽出したデータ

### ポケモン例

* 母集団：全世代に存在する全ポケモン（約1000体）
* 標本：特定の世代（例：第1世代）やタイプ（例：ドラゴンタイプ）のポケモン

### 実装

```python
population = df  # 全ポケモン
sample = df.sample(n=100, random_state=42)  # 無作為抽出標本
```

---

## 16-2. 全数調査と標本調査（Census vs Sampling）

### 全数調査（Census）

* 母集団すべてを調べる
* 費用・時間・労力が大きい
* ポケモンで例えると「全種族値の平均を計算する」

### 標本調査（Sampling）

* 一部のみから推測
* 現実的・迅速
* 「第3世代の50体だけから全体の傾向を推定」など

### 比較表

| 種類   | メリット   | デメリット       |
| ---- | ------ | ----------- |
| 全数調査 | 正確・完全  | コスト・労力・非現実的 |
| 標本調査 | 現実的・速い | 誤差・偏りのリスクあり |

---

## 16-3. 標本の抽出方法（Sampling Methods）

### 1. 無作為抽出（単純ランダム）

```python
sample = df.sample(n=50, random_state=1)
```

### 2. 層別抽出（Stratified）

* 各タイプや世代から**同数または割合で抽出**

```python
sample = df.groupby('Generation').sample(n=10, random_state=1)
```

### 3. 系統抽出（Systematic）

* 一定間隔で抽出（例：10体おき）

```python
systematic_sample = df.iloc[::10]
```

### 4. クラスター抽出

* 「タイプ」や「世代」でグループ化し、グループ単位で抽出

### 比較表

| 方法    | 特徴              | ポケモンでの例     |
| ----- | --------------- | ----------- |
| 無作為   | 偏りが少ないが全体把握しにくい | ランダムに50体選ぶ  |
| 層別    | 層を保ちつつ精度が高い     | 各タイプから均等に抽出 |
| 系統    | 整理されたリストから規則抽出  | 10体おきに1体選出  |
| クラスター | 実装は楽だが推測には注意    | 第4世代だけ選んで解析 |

---

## 16-4. 研究デザイン（Study Design）

### 調査の基本構造

1. **目的の明確化**：何を知りたいのか？
2. **母集団の定義**：誰（何）を対象とするか？
3. **抽出法の決定**：どのように選ぶか？
4. **変数の設定**：何を測定するか？（例：Attack, Speed）
5. **分析手法の選定**：平均比較？回帰？検定？

### ポケモン例：バトル用高速アタッカーの特徴調査

* 母集団：全ポケモン
* 標本：Speed > 100 かつ Attack > 120 の50体
* 分析：タイプ別に「高速アタッカー」が多いかを比較（クロス集計やχ²検定）

---

## まとめ

| 用語・概念  | 意味               | ポケモンでの例        |
| ------ | ---------------- | -------------- |
| 母集団    | 全体対象             | すべてのポケモン       |
| 標本     | 一部データ            | ドラゴンタイプ50体     |
| 全数調査   | 全データを使う          | 種族値平均を正確に算出    |
| 標本調査   | 一部から全体を推定        | 第3世代だけから傾向を予測  |
| 抽出方法   | ランダム・層別・系統・クラスター | 各タイプから選ぶ、間引く   |
| 研究デザイン | 調査目的→抽出→測定→分析    | 高速アタッカーの条件分析など |

---


---

## 17-1. 大数の法則1（弱法則）

### 定義

標本平均が母平均に**確率的に近づく**（確率収束）：

$$
\lim_{n \to \infty} P\left(|\bar{X}_n - \mu| < \varepsilon\right) = 1
$$

### ポケモン例

Speedの標本平均は、サンプルサイズが大きいほど「全ポケモンの平均Speed」に近づく。

### 実装（サンプルサイズを変えた平均の収束）

```python
means = [df['Speed'].sample(n).mean() for n in range(10, 1001, 10)]
plt.plot(range(10, 1001, 10), means)
plt.axhline(df['Speed'].mean(), color='red', linestyle='--', label='True Mean')
plt.xlabel('Sample Size')
plt.ylabel('Sample Mean of Speed')
plt.title('Law of Large Numbers')
plt.legend()
plt.grid(True)
plt.show()
```

---

## 17-2. 大数の法則2（強法則）

### 定義

標本平均が母平均に**ほぼ確実に収束**（ほとんど確実に）：

$$
P\left(\lim_{n \to \infty} \bar{X}_n = \mu\right) = 1
$$

→ 概念的には強い主張。実装や直感は弱法則とほぼ同じ。

---

## 17-3. 中心極限定理1（定理の主張）

### 定義

独立な確率変数の和（または平均）は、**サンプルサイズが大きくなると正規分布に近づく**。

$$
\frac{\bar{X}_n - \mu}{\sigma/\sqrt{n}} \Rightarrow N(0,1)
$$

### ポケモン例

Speedの標本平均の分布は n が大きくなると正規分布になる。

---

## 17-4. 中心極限定理2（実装で確認）

```python
import seaborn as sns

sample_means = [df['Speed'].sample(30).mean() for _ in range(1000)]
sns.histplot(sample_means, kde=True)
plt.title('Sampling Distribution of Speed (n=30)')
plt.xlabel('Sample Mean of Speed')
plt.ylabel('Frequency')
plt.grid(True)
plt.show()
```

→ 明らかに釣鐘型の分布に近づく。

---

# 第18章：母平均の点推定

---

## 18-1. 点推定とは

### 定義

母数（母平均や母分散など）の推定値を**1つの値で表す**方法。

$$
\hat{\mu} = \bar{X}
$$

### ポケモン例

全ポケモンのHPの平均を、第1世代の平均で推定する。

---

## 18-2. 母平均の点推定と推定量・推定値

* **推定量**：標本から得られる関数（例：$\bar{X}$）
* **推定値**：実際の数値（例：112.5）

---

## 18-3. 推定量の性質（良い推定量の条件）

1. **不偏性**：期待値が母数と等しい
   $E[\hat{\mu}] = \mu$
2. **一致性**：サンプルサイズ増加で母数に近づく
3. **効率性**：分散が最小

---

## 18-4. 標本分散と不偏分散

### 定義

$$
s^2 = \frac{1}{n-1} \sum_{i=1}^n (x_i - \bar{x})^2
$$

### なぜ n−1？

→ 母分散の**不偏推定量**とするため（自由度補正）

```python
sample = df['Attack'].sample(50)
print("不偏分散:", sample.var())  # デフォルトは n-1
print("標本分散（nで割る）:", sample.var(ddof=0))
```

---

## 18-5. 標準偏差と標準誤差

| 用語   | 定義        | 意味       |
| ---- | --------- | -------- |
| 標準偏差 | データのばらつき  | 各個体のばらつき |
| 標準誤差 | 標本平均のばらつき | 推定の精度    |

$$
\text{SE} = \frac{\sigma}{\sqrt{n}}
$$

### 実装

```python
se = df['Attack'].std() / np.sqrt(50)
print(f"標本平均の標準誤差（n=50）: {se:.2f}")
```

---

## まとめ（第17・18章）

| 概念     | 内容               | ポケモンの例                  |
| ------ | ---------------- | ----------------------- |
| 大数の法則  | 標本平均は母平均に近づく     | Speedの平均はn増加で安定         |
| 中心極限定理 | 標本平均の分布は正規分布に近づく | 平均Speedの分布が釣鐘型          |
| 点推定    | 母平均を標本平均で近似する    | 全体HPを第2世代の平均から推測        |
| 不偏分散   | 真の分散の良い推定量       | n−1で割って推定               |
| 標準誤差   | 平均のばらつき          | Attackの平均を50体で推定する精度の指標 |

---





---

## 19-1. 区間推定とは（Confidence Interval）

### 定義

母数（例：母平均）を、一定の確率（信頼係数）で含む**区間**で推定する方法。

$$
\text{CI} = \left[ \bar{X} - z_{\alpha/2} \cdot \frac{\sigma}{\sqrt{n}}, \; \bar{X} + z_{\alpha/2} \cdot \frac{\sigma}{\sqrt{n}} \right]
$$

* $\bar{X}$：標本平均
* $\sigma$：**母標準偏差（既知）**
* $z_{\alpha/2}$：標準正規分布の上側 $\alpha/2$ 点

---

## 19-2. 母平均の信頼区間の求め方（母分散既知）

### ポケモン例：HPの母平均を推定

```python
import numpy as np
from scipy.stats import norm

# 仮定：母標準偏差σが既知とする
sigma = df['HP'].std()  # 本来は母σとして与えられる値を仮定

sample = df['HP'].sample(50, random_state=1)
x̄ = sample.mean()
n = len(sample)
z = norm.ppf(0.975)  # 95%信頼係数に対応するz値 ≒ 1.96

ci_lower = x̄ - z * (sigma / np.sqrt(n))
ci_upper = x̄ + z * (sigma / np.sqrt(n))

print(f"95% Confidence Interval for μ (σ known): ({ci_lower:.2f}, {ci_upper:.2f})")
```

---

## 19-3. 95％信頼区間のもつ意味

### 定義と誤解の回避

* 「母平均が\*\*この区間に入る確率が95%」ではない。
* 正しくは、「このような区間を\*\*無限に繰り返して作ると、95%の割合で母平均を含む」ことを意味。

---

## 19-4. さまざまな信頼区間（母分散既知）

### 信頼係数とz値対応表

| 信頼係数 | $\alpha$ | $z_{\alpha/2}$ |
| ---- | -------- | -------------- |
| 90%  | 0.10     | 1.645          |
| 95%  | 0.05     | 1.960          |
| 99%  | 0.01     | 2.576          |

### ポケモン例：信頼係数を変えて比較

```python
for conf in [0.90, 0.95, 0.99]:
    z = norm.ppf(1 - (1 - conf) / 2)
    ci_lower = x̄ - z * (sigma / np.sqrt(n))
    ci_upper = x̄ + z * (sigma / np.sqrt(n))
    print(f"{int(conf*100)}% CI: ({ci_lower:.2f}, {ci_upper:.2f})")
```

---

## 図による直感的理解

```python
import matplotlib.pyplot as plt

se = sigma / np.sqrt(n)
x = np.linspace(x̄ - 4*se, x̄ + 4*se, 500)
y = norm.pdf(x, loc=x̄, scale=se)

plt.plot(x, y, label='Sampling Distribution')
plt.axvline(ci_lower, color='red', linestyle='--', label='CI Lower')
plt.axvline(ci_upper, color='blue', linestyle='--', label='CI Upper')
plt.title('95% Confidence Interval for μ (σ known)')
plt.xlabel('Sample Mean')
plt.ylabel('Density')
plt.legend()
plt.grid(True)
plt.show()
```

---

## まとめ

| 項目         | 内容                      |
| ---------- | ----------------------- |
| 区間推定       | 母平均を一定の信頼係数で含む区間で推定     |
| 使用条件       | **母分散（標準偏差）が既知**        |
| 95%信頼区間の意味 | 同様の区間を多数作ると95%が母平均を含む   |
| 信頼係数と幅の関係  | 信頼係数↑ → 区間幅↑            |
| ポケモンでの応用   | HP・Attackの平均を一定の精度で見積もる |

---



---

## 20-1. 標本と t 分布（Student's t-distribution）

### 定義

母分散 $\sigma^2$ が**未知**の場合、標準正規分布ではなく **t分布** を使う：

$$
t = \frac{\bar{X} - \mu}{s / \sqrt{n}} \sim t_{n-1}
$$

* $\bar{X}$：標本平均
* $s$：標本標準偏差
* $n$：標本サイズ
* $t_{n-1}$：自由度 $n-1$ のt分布

---

## 20-2. t分布表（t critical values）

| 自由度 $df$ | $t_{0.025}$（95% CI） |
| -------- | ------------------- |
| 10       | 2.228               |
| 20       | 2.086               |
| 30       | 2.042               |
| ∞（標準正規）  | 1.960               |

→ t分布は**裾が広い**：標本サイズが小さいと、推定に不確実性が増す。

---

## 20-3. 母平均の信頼区間の求め方（母分散未知）

### 95%信頼区間の式

$$
\left[ \bar{X} - t_{n-1,\alpha/2} \cdot \frac{s}{\sqrt{n}},\; \bar{X} + t_{n-1,\alpha/2} \cdot \frac{s}{\sqrt{n}} \right]
$$

---

## 20-4. 実装（ポケモン：Speedの信頼区間）

```python
from scipy.stats import t

sample = df['Speed'].sample(20, random_state=42)
x̄ = sample.mean()
s = sample.std(ddof=1)
n = len(sample)
t_critical = t.ppf(0.975, df=n-1)

ci_lower = x̄ - t_critical * (s / np.sqrt(n))
ci_upper = x̄ + t_critical * (s / np.sqrt(n))

print(f"95% Confidence Interval for μ (σ unknown): ({ci_lower:.2f}, {ci_upper:.2f})")
```

---

## 20-5. さまざまな信頼区間（母分散未知）

### 信頼係数ごとの幅の比較

```python
for conf in [0.90, 0.95, 0.99]:
    t_crit = t.ppf(1 - (1 - conf)/2, df=n-1)
    ci_lower = x̄ - t_crit * (s / np.sqrt(n))
    ci_upper = x̄ + t_crit * (s / np.sqrt(n))
    print(f"{int(conf*100)}% CI: ({ci_lower:.2f}, {ci_upper:.2f})")
```

→ 信頼係数が上がると区間が広がるのがわかる。

---

## 20-6. 母平均の差の信頼区間（2標本比較）

### ポケモン例：第1世代と第3世代のHPを比較

#### 定義式（等分散仮定）

$$
CI = (\bar{X}_1 - \bar{X}_2) \pm t_{df,\alpha/2} \cdot \sqrt{s_p^2 \left(\frac{1}{n_1} + \frac{1}{n_2}\right)}
$$

$$
s_p^2 = \frac{(n_1 - 1)s_1^2 + (n_2 - 1)s_2^2}{n_1 + n_2 - 2}
$$

---

#### 実装（例）

```python
g1 = df[df['Generation'] == 1]['HP'].sample(30, random_state=1)
g3 = df[df['Generation'] == 3]['HP'].sample(30, random_state=2)

x̄1, x̄2 = g1.mean(), g3.mean()
s1, s2 = g1.std(ddof=1), g3.std(ddof=1)
n1, n2 = len(g1), len(g3)

# 等分散仮定の下のプール分散
sp2 = ((n1 - 1)*s1**2 + (n2 - 1)*s2**2) / (n1 + n2 - 2)
se_diff = np.sqrt(sp2 * (1/n1 + 1/n2))
t_crit = t.ppf(0.975, df=n1 + n2 - 2)

ci_lower = (x̄1 - x̄2) - t_crit * se_diff
ci_upper = (x̄1 - x̄2) + t_crit * se_diff

print(f"95% CI for μ1 - μ2 (HP): ({ci_lower:.2f}, {ci_upper:.2f})")
```

---

## まとめ

| 項目           | 内容                    |
| ------------ | --------------------- |
| t分布          | 母分散が未知ならt分布使用         |
| t分布の裾が広い理由   | 標本標準偏差の不確実性が反映されている   |
| 信頼区間（母分散未知）  | 標本標準偏差を使って推定          |
| 2標本の平均差の信頼区間 | 2つの標本平均の差がどの範囲にあるかを推定 |
| ポケモン応用       | 世代・タイプ別にHPやSpeedの差を検証 |

---



**21. 母比率の区間推定（ポケモン種族値で学ぶ）**

---

**21-1. 母比率の信頼区間の求め方1**
例題：全国図鑑の中で「すばやさ種族値」が100以上のポケモンが600体中180体だったとする。
このとき、母比率（全ポケモンに占める割合）の95%信頼区間を計算。

$$
\hat{p} = \frac{180}{600} = 0.30,\quad n = 600,\quad z = 1.96
$$

$$
0.30 \pm 1.96 \sqrt{\frac{0.30(1 - 0.30)}{600}} \approx [0.264, 0.336]
$$

---

**21-2. 母比率の信頼区間の求め方2（標本サイズが小さい場合）**
例題：50体の伝説ポケモンを調査し、30体が「とくこう種族値」120以上だった。

$$
\hat{p} = \frac{30}{50} = 0.60,\quad n = 50
$$

ウィルソン区間を使用するとより精度の高い信頼区間が得られる（省略可）。

---

**21-3. 母比率の信頼区間の求め方－エクセル統計**
種族値フィルタを行ったExcelで比率を算出し、

```excel
=標本比率±1.96*SQRT(標本比率*(1-標本比率)/n)
```

例：

```excel
=0.3±1.96*SQRT(0.3*0.7/600)
```

---

**21-4. 必要なサンプルサイズ1（すばやさが速いポケモンの比率推定）**
95%信頼水準、誤差±0.05、母比率0.3と見積もる場合

$$
n = \frac{(1.96)^2 \cdot 0.3 \cdot 0.7}{0.05^2} \approx 323
$$

---

**21-5. 必要なサンプルサイズ2（母比率未知）**
もっとも保守的な見積もりとして $p = 0.5$ を仮定

$$
n = \frac{(1.96)^2 \cdot 0.5 \cdot 0.5}{0.05^2} = 384.16 \Rightarrow 385体以上必要

---

**21-6. 母比率の差の信頼区間**  
例題：  
- 伝説ポケモン：100体中75体が「HP種族値」>80  
- 一般ポケモン：200体中100体が「HP種族値」>80  
\[
\hat{p}_1 = 0.75,\quad \hat{p}_2 = 0.50
$$

$$
差 = 0.75 - 0.50 = 0.25,\quad z = 1.96
$$

$$
\text{SE} = \sqrt{\frac{0.75(1 - 0.75)}{100} + \frac{0.50(1 - 0.50)}{200}} \approx 0.0612
$$

$$
95\%CI = 0.25 \pm 1.96 \cdot 0.0612 \approx [0.13, 0.37]
$$

---

**練習問題（ポケモン版）**

1. 「こうげき」種族値が120以上のポケモンは全体のうち240体／800体。95%信頼区間を求めよ。
2. 「伝説ポケモン」と「通常ポケモン」で「すばやさ」>100の比率に差があるか信頼区間を計算せよ。
3. 調査対象が「とくぼう」>110のポケモン。母比率未知で、±4%の誤差内に収めるには何体必要か？

---

**22. 母分散の区間推定（ポケモン種族値で学ぶ）**

---

**22-1. カイ二乗分布**
例：ランダムに抽出したポケモン50体の「HP」種族値の標本分散 $s^2 = 100$
自由度 $df = 49$、信頼水準95%

$$
\chi^2_{0.025} = 73.36,\quad \chi^2_{0.975} = 29.71
$$

$$
\frac{49 \cdot 100}{73.36} \leq \sigma^2 \leq \frac{49 \cdot 100}{29.71}
\Rightarrow [66.77, 164.86]
$$

---

**22-2. カイ二乗分布表（Excelで）**

```excel
=CHISQ.INV(0.025, 49)
=CHISQ.INV.RT(0.025, 49)
```

---

**22-3. 母分散の信頼区間の求め方1（種族値「こうげき」）**
標本分散から母分散の信頼区間を計算。

---

**22-4. 母分散の信頼区間の求め方2（Excel統計）**
Excelで母分散の区間推定を簡単に実行可能。
標本サイズと分散を求めて、上記のカイ二乗式に代入。

---

**23. 検定の前に（ポケモン種族値で学ぶ）**

---

**23-1. 検定とは**
統計検定とは、標本データから**母集団の仮説**を検証する方法。
例：伝説ポケモンの「こうげき」平均値が一般ポケモンより高いか？

---

**23-2. 検定で使う用語**

* **帰無仮説（H₀）**：差がない、変化がないとする仮説
* **対立仮説（H₁）**：差がある、変化があるとする仮説
* **有意水準（α）**：誤ってH₀を棄却する確率（通常0.05）
* **p値**：観測データがH₀のもとで得られる確率

---

**23-3. 有意水準と検出力**

* **有意水準** α：間違ってH₀を棄却する確率（第1種の過誤）
* **検出力** (1−β)：本当に差があるときにH₀を正しく棄却できる確率
  例：伝説ポケモンの「すばやさ」平均値の差を検出するための標本サイズを決定する際に考慮

---

**23-4. 第1種の過誤と第2種の過誤**

* 第1種の過誤：実際には差がないのに差があると判断
* 第2種の過誤：実際には差があるのに差がないと判断
  ポケモンで言えば、同じ「こうげき」傾向の2群を違うと誤認するのが第1種、違う群を同じと誤認するのが第2種

---

**23-5. 検定統計量と棄却域・採択域**
t検定などで計算される**検定統計量**に基づいて、

* 「棄却域」→ H₀を否定（差あり）
* 「採択域」→ H₀を保留（差なし）

---

**23-6. 両側検定と片側検定**

* **両側検定**：平均が異なるかどうか（例：「こうげき」平均が違う？）
* **片側検定**：一方が大きいか小さいか（例：伝説の方が強い？）

---

**24. 平均値の検定（ポケモン種族値で学ぶ）**

---

**24-1. 母平均の検定（両側t検定）**
例題：一般ポケモンの「HP」平均が100かどうかを検定

* H₀：μ = 100
* H₁：μ ≠ 100
  t検定統計量

$$
t = \frac{\bar{x} - \mu_0}{s/\sqrt{n}}
$$

---

**24-2. 母平均の検定（片側t検定）**
例題：伝説ポケモンの「とくこう」平均が100より大きいか？

* H₀：μ ≤ 100
* H₁：μ > 100
  → 右片側検定（上側有意）

---

**24-3. 2標本t検定とは**
2つの独立した群の平均の差の検定。
例：伝説ポケモン vs 一般ポケモンの「すばやさ」比較

---

**24-4. 対応のない2標本t検定**
異なるポケモン群（例：伝説 vs 一般）の「こうげき」種族値の平均比較

$$
t = \frac{\bar{x}_1 - \bar{x}_2}{\sqrt{\frac{s_1^2}{n_1} + \frac{s_2^2}{n_2}}}
$$

---

**24-5. 対応のある2標本t検定**
例：フォルムチェンジ前後の同一ポケモン（例：ギルガルドのブレード⇔シールド）の「こうげき」比較
→ 同じポケモンの前後データをペアで扱う

---


**25. さまざまな検定（ポケモン種族値・出現数・カテゴリで学ぶ）**

---

**25-1. 母比率の検定**
例：全ポケモンのうち、50%以上が「すばやさ」>90 であると言えるか？

* H₀：p = 0.5
* H₁：p > 0.5
  検定統計量：

$$
z = \frac{\hat{p} - p_0}{\sqrt{p_0(1 - p_0)/n}}
$$

---

**25-2. 二項分布を用いた検定**
例：ある地方のポケモン出現率が特定タイプ（例：でんき）で20%なら、出現10回中3回がでんきタイプという結果は偶然か？

* 二項分布 $B(n, p)$ の確率を直接計算し、p値評価

---

**25-3. ポアソン分布を用いた検定**
例：ある草むらで「ひこう」ポケモンが1時間に平均3体出現。5体出現した日は異常か？

* H₀：λ = 3
* H₁：λ > 3
  ポアソン分布で

$$
P(X \geq 5 \mid \lambda = 3) = 1 - P(X \leq 4)
$$

---

**25-4. 適合度の検定（カイ二乗適合度検定）**
例：6タイプ（ほのお・みず・くさ・でんき・じめん・ひこう）の出現割合が等しいと仮定して、観測頻度と比較

* H₀：出現分布は一様分布
* 検定統計量：

$$
\chi^2 = \sum \frac{(O_i - E_i)^2}{E_i}
$$

---

**25-5. 独立性の検定（カイ二乗検定）**
例：ポケモンの「タイプ」と「地方」に独立性があるか（例：カントーとガラルでくさタイプの比率が違うか）

* クロス集計表で観測値と期待値を比較し、

$$
\chi^2 = \sum \frac{(O_{ij} - E_{ij})^2}{E_{ij}}
$$

---

**25-6. 独立性の検定－エクセル統計**
Excel関数：

```excel
=CHISQ.TEST(観測範囲, 期待範囲)
```

またはピボットテーブルでクロス表作成後、

```excel
=CHISQ.TEST(範囲1, 範囲2)
```

---

**25-7. 母比率の差の検定**
例：伝説ポケモンと通常ポケモンで「とくこう」120以上の割合に差があるか？

$$
z = \frac{\hat{p}_1 - \hat{p}_2}{\sqrt{p(1 - p)\left(\frac{1}{n_1} + \frac{1}{n_2}\right)}}
\quad p = \frac{x_1 + x_2}{n_1 + n_2}
$$

---

**26. 相関分析（ポケモン種族値で学ぶ）**

---

**26-1. 散布図**
例：全ポケモンの「こうげき」と「すばやさ」のペアで散布図を描く
→ 関係があるか視覚的に確認

---

**26-2. 正の相関と負の相関**

* 正の相関：例「こうげき」と「すばやさ」
* 負の相関：例「ぼうぎょ」と「すばやさ」（鈍重なタンク系）

---

**26-3. 相関係数（ピアソンのr）**

$$
r = \frac{\sum (x_i - \bar{x})(y_i - \bar{y})}{\sqrt{\sum(x_i - \bar{x})^2 \sum(y_i - \bar{y})^2}}
$$

* r > 0.7：強い正の相関
* r < -0.7：強い負の相関

---

**26-4. 偏相関係数**
「とくこう」と「すばやさ」の関係を、「レベル」など他の変数の影響を取り除いて分析
→ 回帰残差を使って相関係数を再計算

---

**26-5. 層別解析**
例：「すばやさ」と「とくこう」の相関を、進化段階（未進化・進化済み）ごとに層別して分析
→ 層全体では相関が弱くても、各層内で強い相関があることも（交絡要因の除去）

---
**27. 回帰分析**

---

**27-1. 単回帰分析（Simple Linear Regression）**
目的変数（例：「とくこう」）を1つの説明変数（例：「すばやさ」）で予測
モデル式：

$$
\hat{y} = a + bx
$$

例：「すばやさ」から「とくこう」の傾向を予測

---

**27-2. 最小二乗法（Least Squares Method）**
回帰係数 $a, b$ を**誤差（残差）の二乗和**を最小にするように求める

$$
\min \sum_{i=1}^n (y_i - \hat{y}_i)^2
$$

解法：

$$
b = \frac{\sum(x_i - \bar{x})(y_i - \bar{y})}{\sum(x_i - \bar{x})^2},\quad
a = \bar{y} - b\bar{x}
$$

---

**27-3. 重回帰分析（Multiple Regression）**
複数の説明変数から目的変数を予測
例：
「HP」「こうげき」「ぼうぎょ」から「総合種族値」を予測
モデル：

$$
\hat{y} = a + b_1x_1 + b_2x_2 + b_3x_3 + \cdots + b_kx_k
$$

---

**27-4. 予測値と残差（Fitted Value and Residual）**

* 予測値：モデルで推定された $\hat{y}$
* 残差：実測値と予測値の差 $e_i = y_i - \hat{y}_i$
  → 残差プロットでモデルの適合性をチェック

---

**27-5. 決定係数と重相関係数（R² and Multiple R）**

* **決定係数 R²**：

$$
R^2 = 1 - \frac{\text{残差平方和}}{\text{全変動平方和}}
$$

→ 目的変数のどれだけが説明できたか（0～1）

* **重相関係数**：説明変数すべてを考慮した相関係数

$$
R = \sqrt{R^2}
$$

---

**27-6. 回帰の有意性の検定（F検定・t検定）**

* 回帰モデル全体の有意性：**F検定**
  → 少なくとも1つの係数が有意かを確認
* 個々の係数の有意性：**t検定**
  → 各変数が目的変数に対して有意な影響を持つか

$$
t = \frac{\hat{b}}{\text{標準誤差}},\quad
\text{有意であれば}\ |t| > t_{\alpha/2, n-k-1}
$$

---

**ポケモン例題：**

* 「HP」「ぼうぎょ」「とくぼう」から「耐久力スコア（仮定）」を回帰
* 「すばやさ」「こうげき」から「先手撃破力」を予測するモデル構築
* 回帰係数・決定係数・残差分析・検定まで実施可能（Excel / Python）

---

**28. 等分散性の検定とWelchのt検定（ポケモン種族値で学ぶ）**

---

**28-1. F分布（F-distribution）**
異なる2つの群の分散比に基づく分布

$$
F = \frac{s_1^2}{s_2^2}
\quad (\text{ただし } s_1^2 > s_2^2)
$$

→ 分布は正の値をとり、非対称

---

**28-2. F分布表**
自由度 $\nu_1, \nu_2$ に対応した臨界値を表から取得
例：自由度 9, 14 のとき、5%有意水準で上側5%点 → F ≈ 2.85
※Excelでは：

```excel
=F.INV.RT(0.05, 9, 14)
```

---

**28-3. 母分散の比の信頼区間の求め方**
例：伝説ポケモンと通常ポケモンの「ぼうぎょ」分散比を調べる
信頼区間：

$$
\left( \frac{s_1^2}{s_2^2} \cdot \frac{1}{F_{1-\alpha/2}},\ 
\frac{s_1^2}{s_2^2} \cdot \frac{1}{F_{\alpha/2}} \right)
$$

---

**28-4. 等分散性の検定（F検定による）**
例：「こうげき」の分散が伝説と通常ポケモンで等しいか？

* H₀：σ₁² = σ₂²
* 検定統計量：F = s₁² / s₂²
* F分布表で臨界値と比較し、H₀棄却可否を判断

---

**28-5. Welchのt検定（等分散性を仮定しないt検定）**
分散が異なる2群間の平均比較に使用

$$
t = \frac{\bar{x}_1 - \bar{x}_2}
{\sqrt{ \frac{s_1^2}{n_1} + \frac{s_2^2}{n_2} }}
$$

自由度はWelch–Satterthwaiteの式で近似
→ 伝説と通常ポケモンで「とくこう」の平均比較に等分散性がなければこちらを使用

---

**29. 一元配置分散分析（One-Way ANOVA）**

---

**29-1. 分散分析とは**
複数グループ間の平均値の差を、1回の検定で評価する方法

* H₀：全グループの平均は等しい
  例：地方別（カントー、ジョウト、ガラル）に「HP」平均値に差があるか？

---

**29-2. 一元配置分散分析の流れ1：モデル式と仮説**

* 観測値： $y_{ij} = \mu + \alpha_i + \epsilon_{ij}$
* H₀：すべての $\alpha_i = 0$（平均差なし）
* H₁：少なくとも1つの群に差あり

---

**29-3. 一元配置分散分析の流れ2：平方和の分解**
全体のばらつき（全変動）を

* 群間変動（SSA）と群内変動（SSE）に分解

$$
SST = SSA + SSE
$$

$$
F = \frac{MSA}{MSE}
\quad (MS = \text{mean square} = \text{SS} / df)
$$

---

**29-4. 一元配置分散分析の流れ3：F値と有意性判断**

* 自由度：dfA = k−1、dfE = N−k
* F分布により有意性判定
* p値が有意水準未満なら、平均差ありと判断
  → どの地方の平均が特に異なるかは「多重比較」（Tukey法など）で分析可能

---


**30. 二元配置分散分析（ポケモン種族値で学ぶ）**

---

**概要：**
二元配置分散分析（Two-way ANOVA）は、**2つの要因**が目的変数に与える影響を分析する方法。
例：ポケモンの「とくこう種族値」に対して

* 要因A：**タイプ**（ほのお／みず／くさ）
* 要因B：**分類**（通常／伝説）
  の影響と**交互作用**を調べる。

---

**30-1. 二元配置分散分析の分散分析表1：モデル式**

$$
Y_{ijk} = \mu + \alpha_i + \beta_j + (\alpha\beta)_{ij} + \epsilon_{ijk}
$$

* $\mu$：全体平均
* $\alpha_i$：要因Aの効果（タイプ）
* $\beta_j$：要因Bの効果（分類）
* $(\alpha\beta)_{ij}$：交互作用効果
* $\epsilon_{ijk}$：誤差項

---

**30-2. 二元配置分散分析の分散分析表2：平方和の分解**
全体のばらつきを以下に分解

* SSA：要因Aの平方和（タイプ間の差）
* SSB：要因Bの平方和（分類の差）
* SSAB：交互作用の平方和
* SSE：誤差平方和
* SSTotal：全体平方和

---

**30-3. 二元配置分散分析の分散分析表3：分散分析表の構造**

| 要因        | 自由度              | 平方和 (SS) | 平均平方 (MS)          | F値                    |
| --------- | ---------------- | -------- | ------------------ | --------------------- |
| タイプ（A）    | $a - 1$          | SSA      | MSA = SSA / dfA    | $F_A = MSA / MSE$     |
| 分類（B）     | $b - 1$          | SSB      | MSB = SSB / dfB    | $F_B = MSB / MSE$     |
| 交互作用（A×B） | $(a - 1)(b - 1)$ | SSAB     | MSAB = SSAB / dfAB | $F_{AB} = MSAB / MSE$ |
| 誤差        | $ab(n - 1)$      | SSE      | MSE = SSE / dfE    | —                     |
| 合計        | $N - 1$          | SSTotal  | —                  | —                     |

---

**30-4. 二元配置分散分析の分散分析表4：計算例（ポケモン）**
例：

* タイプ（A）：ほのお、みず、くさ（3水準）
* 分類（B）：伝説、通常（2水準）
* 各セルに5体ずつ（n=5）

→ 総自由度：$3 \times 2 \times 5 = 30$
→ 分析表に各群の「とくこう」平均を用いてSSA, SSB, SSAB, SSE を求める

---

**30-5. 交互作用とは**
交互作用：**要因Aの効果が要因Bの水準によって変わること**
例：

* 「ほのお」タイプのとくこうは伝説では非常に高いが、通常では平均的
  → 要因「タイプ」の効果が「分類」に依存して変化している ⇒ 交互作用あり

**グラフで交互作用を確認：**

* 平行な線 → 交互作用なし
* 線が交差または離れていく → 交互作用あり

---


**31. 実験計画（ポケモン種族値・バトル性能評価で学ぶ）**

---

**31-1. フィッシャーの3原則（実験計画の基本）**
① **比較（Comparison）**：複数の処置群を比較（例：道具あり／なしでこうげき変化）
② **無作為化（Randomization）**：割り当てをランダム化（例：ポケモンのタイプをランダムに選ぶ）
③ **反復（Replication）**：繰り返し測定で誤差を小さく（例：同じ条件下でバトルを複数回）

---

**31-2. 効果量1（Effect Size）**
**標準化された差**を示し、統計的有意性と実際の影響の大きさを分離

* Cohen’s d（2群間平均差）

$$
d = \frac{|\bar{x}_1 - \bar{x}_2|}{s_p}
$$

例：伝説と通常ポケモンの「すばやさ」平均の効果量

---

**31-3. 効果量2（η²、r²など）**
**分散分析における効果量**：

* η²（イータ二乗）：群間平方和／全体平方和
* $r^2$：決定係数（重回帰）
  → 例：タイプ別の「とくこう」への影響割合（η²）

---

**31-4. 検出力（Power）**
**真の差を見抜ける確率**（1 − β）

* β：第2種の過誤（本当の差を見逃す）
  例：伝説と通常の「こうげき」に差があるとき、検出できる確率

---

**31-5. 検出力の計算**
Excel／Pythonで可能
必要項目：

* 有意水準（α）
* 効果量（dやη²）
* サンプルサイズ（n）
* 標本分散

例（Python）：

```python
from statsmodels.stats.power import TTestIndPower
analysis = TTestIndPower()
power = analysis.power(effect_size=0.5, nobs1=100, alpha=0.05)
```

---

**31-6. サンプルサイズの設計と検出力分析**
必要なサンプル数 n を逆算：
例：

* 効果量 d = 0.5
* α = 0.05
* 検出力 0.8
  → 約64体／群 必要（Cohenの表やG\*Powerで求める）

---

**32. その他の統計的考察**

---

**32-1. 外れ値（Outliers）**
異常な値。箱ひげ図／Zスコアで検出
例：種族値の「すばやさ」で300超えなど

---

**32-2. 正規性の確認（Normality）**

* ヒストグラム／Q-Qプロット
* Shapiro-Wilk検定／Kolmogorov-Smirnov検定
  例：「とくこう」が正規分布に従うか？

---

**32-3. 時系列データと移動平均（Moving Average）**
例：毎年登場するポケモンの「すばやさ」平均をプロット
→ トレンド把握
移動平均：3年平均などで滑らかにする

---

**32-4. 時系列データにおける周期変動（Seasonality）**
例：特定世代ごとの「こうげき」インフレ傾向
→ 高速アタッカーが増えるサイクル

---

**32-5. 自己相関（Autocorrelation）**
過去データとの相関（ARモデル）
例：「ポケモン図鑑番号」と「種族値傾向」の系列分析

---

**32-6. さまざまな指数（Index）**

* **単純指数**：現在値 / 基準値 × 100
* **チェーン指数**：前年と比
  例：ポケモン第何世代かによる「平均合計種族値」の推移を指数化し比較

---

**1. 2×2のクロス集計表とさまざまな比率（ポケモン分類データで学ぶ）**

---

**1-1. 検査精度（感度・特異度・陽性的中率など）**
分類例：

* 真：伝説ポケモン
* 判定：総合種族値600以上 → 伝説と判断

|        | 判定：伝説 | 判定：非伝説 | 合計 |
| ------ | ----- | ------ | -- |
| 実際：伝説  | TP    | FN     | P  |
| 実際：非伝説 | FP    | TN     | N  |

* 感度（Sensitivity）＝ TP / (TP + FN)
* 特異度（Specificity）＝ TN / (TN + FP)
* 陽性的中率（PPV）＝ TP / (TP + FP)
* 陰性的中率（NPV）＝ TN / (TN + FN)

---

**1-2. 検査精度の信頼区間**
例：感度90%（TP=90/100）の信頼区間
→ 正規近似で

$$
CI = \hat{p} \pm z \sqrt{\frac{\hat{p}(1-\hat{p})}{n}}
$$

---

**1-3. オッズ比1（Odds Ratio 基本）**
例：伝説ポケモンの「こうげき」>100の割合 vs 通常ポケモン
オッズ比 OR：

$$
OR = \frac{TP \cdot TN}{FP \cdot FN}
$$

---

**1-4. オッズ比2（対数オッズと信頼区間）**

* 対数オッズ：$\log(OR)$
* 標準誤差：

$$
SE = \sqrt{\frac{1}{TP} + \frac{1}{FP} + \frac{1}{FN} + \frac{1}{TN}}
$$

* CI：

$$
\log(OR) \pm z \cdot SE \quad → \exp()で戻す

---

**1-5. マクネマー検定（対応のある2分類）**  
例：ポケモンのフォルム変更前後で「600族か否か」が変化したか  
|        | After: 〇 | After: ✕ |
|--------|-----------|-----------|
| Before: 〇 | a         | b         |
| Before: ✕ | c         | d         |

\[
\chi^2 = \frac{(b - c)^2}{b + c}
$$

（b ≠ c が有意なら分類変化あり）

---

**1-6. コクラン＝アーミテージ検定（順序カテゴリにおける傾向）**
例：ポケモン世代（第1～第8）ごとの「600族割合」に**増加傾向**があるか
→ 順序尺度 × 2値データで傾向検定

* H₀：傾向なし
* H₁：傾向あり（直線的関係）

---

**2. 確率分布（ポケモン種族値や出現数で学ぶ）**

---

**2-1. さまざまな確率分布**

* **二項分布**：特性持ちポケモンが一定割合で登場（例：10回中5回でんきタイプ）
* **ポアソン分布**：時間内出現数（例：10分で3体の確率）
* **正規分布**：種族値の自然分布
* **t分布／χ²分布／F分布**：小標本検定や分散分析に使用

---

**2-2. モーメント（Moment）**

* **1次モーメント**：平均
* **2次モーメント中心化**：分散
* **3次・4次モーメント**：歪度（非対称性）・尖度（鋭さ）

---

**2-3. チェビシェフの不等式（Chebyshev’s Inequality）**
どんな分布でも使える

$$
P(|X - \mu| \geq k\sigma) \leq \frac{1}{k^2}
$$

例：標準偏差の2倍以内に収まる確率 ≥ 75%

---

**2-4. 歪度と尖度（Skewness & Kurtosis）**

* **歪度**：平均より左右どちらに偏っているか

  * 正：右に長い（速いポケモン種族値など）
* **尖度**：分布のとがり具合

  * 正：鋭く中心集中（伝説ポケモン）

---



**3. 離散型確率分布（ポケモンの出現数・分類で学ぶ）**

---

**3-1. 二項分布（Binomial Distribution）**
成功確率 $p$、試行回数 $n$ の成功回数の分布
例：ある場所で**ほのおタイプが出る確率が0.3**、10回中x回出現する確率

$$
P(X = x) = \binom{n}{x} p^x (1 - p)^{n - x}
$$

---

**3-2. ポアソン分布（Poisson Distribution）**
一定時間内の事象発生回数の分布
例：1時間あたり\*\*2体出現する「レアポケモン」\*\*が、x体現れる確率

$$
P(X = x) = \frac{\lambda^x e^{-\lambda}}{x!}
\quad (\lambda = \text{平均出現数})
$$

---

**3-3. 幾何分布（Geometric Distribution）**
最初の成功までにかかる試行回数の分布
例：初めて「でんき」タイプが出現するまでの試行回数

$$
P(X = k) = (1 - p)^{k - 1} p
$$

---

**3-4. 多項分布（Multinomial Distribution）**
複数カテゴリに分かれる確率付き試行の回数分布
例：10体のポケモンがそれぞれ

* ほのお30%
* みず40%
* くさ30%
  出現するときのそれぞれのカテゴリ体数の分布

$$
P(x_1, x_2, ..., x_k) = \frac{n!}{x_1! x_2! ... x_k!} p_1^{x_1} p_2^{x_2} ... p_k^{x_k}
$$

---

**4. 連続型確率分布（ポケモン種族値で学ぶ）**

---

**4-1. 正規分布（Normal Distribution）**
自然な分布。中心付近にデータが集中し、左右対称
例：「とくこう種族値」が平均110、標準偏差15の正規分布に従うと仮定
確率密度関数：

$$
f(x) = \frac{1}{\sqrt{2\pi \sigma^2}} \exp\left( -\frac{(x - \mu)^2}{2\sigma^2} \right)
$$

---

**4-2. ガンマ分布（Gamma Distribution）**
正の連続変数（待ち時間・寿命など）によく使われる
例：ポケモン捕獲にかかる**時間の合計**がガンマ分布に従うと仮定
確率密度関数：

$$
f(x; \alpha, \beta) = \frac{\beta^\alpha}{\Gamma(\alpha)} x^{\alpha - 1} e^{-\beta x}
\quad (x > 0)
$$

* **指数分布**はガンマ分布（α=1）の特殊形
* **χ²分布**もガンマ分布の特殊形（β=1/2, α=k/2）

---






## **5. 統計的検定（ポケモンにおける適合性と精度分析）**

---

### **5-1. 適合度検定（Goodness-of-Fit Test）**

#### ● 目的

観測されたデータが、**理論的に仮定された分布（期待分布）に適合しているか**を検定する。

#### ● ポケモン例

「でんき・みず・くさ・ほのお」4タイプの出現割合が\*\*等しい（25%ずつ）\*\*と仮定して、観測値と比較。

| タイプ | 観測数（O） | 期待数（E=全体数×0.25） |
| --- | ------ | --------------- |
| でんき | 30     | 25              |
| みず  | 20     | 25              |
| くさ  | 35     | 25              |
| ほのお | 15     | 25              |

$$
\chi^2 = \sum \frac{(O_i - E_i)^2}{E_i} = \frac{(30-25)^2}{25} + \cdots = 8.0
$$

自由度 = カテゴリ数 − 1 = 3、5%有意水準の臨界値 = 7.815
→ $\chi^2 = 8.0 > 7.815$ → 帰無仮説棄却 → **タイプ分布に偏りあり**

---

### **5-2. フィッシャーの正確確率検定（Fisher's Exact Test）**

#### ● 目的

**2×2クロス集計表**での**カテゴリ間の独立性検定**。標本数が少ない場合に有効。

#### ● ポケモン例

「伝説」かつ「こうげき > 100」の割合に偏りがあるか？

|         | こうげき > 100 | ≤ 100 | 合計 |
| ------- | ---------- | ----- | -- |
| 伝説ポケモン  | 15         | 5     | 20 |
| 非伝説ポケモン | 10         | 30    | 40 |

→ 通常のカイ二乗検定だと誤差が大きいため、\*\*すべての2×2表を考慮した「正確確率」\*\*を用いて計算。
→ Python・R・Excel等で直接求められる（**SciPy**の`fisher_exact`など）。

---

## **6. ノンパラメトリック検定（分布を仮定しない柔軟な手法）**

---

### **6-1. ノンパラメトリック検定とは**

* 正規分布や等分散性を仮定しない
* **順位・符号・秩**などを使って比較する
* 外れ値・歪みが大きいデータにも強い

---

### **6-2. 順位相関係数（Spearman / Kendall）**

#### ● 目的

**順位情報に基づく相関の検出**
→ 種族値どうしの非線形な関係でも使える

#### ● ポケモン例

「すばやさ」と「とくこう」に順位相関があるか？

* すべてのポケモンに順位（rank）をつける
* 順位の差からSpearman相関係数 $\rho$ を計算：

$$
\rho = 1 - \frac{6 \sum d_i^2}{n(n^2 - 1)}
\quad (d_i = 順位の差)
$$

---

### **6-3. 対応のない2標本の差の検定（Mann–Whitney U検定）**

#### ● 目的

2つの独立群の中央値が等しいかを検定（t検定のノンパラ版）

#### ● ポケモン例

伝説 vs 通常で「ぼうぎょ」順位に差があるか？

* 両群を結合して順位をつける
* U統計量を算出して、Uの近似正規分布でp値を求める

---

### **6-4. 対応のある2標本の差の検定（Wilcoxon符号付き順位検定）**

#### ● 目的

**同じ対象の前後比較**（対応あり）
→ 進化前と進化後、フォルムチェンジ前後など

#### ● ポケモン例

シールドフォルムとブレードフォルムで「こうげき」差を比較

* 差を取り、その差に順位をつける
* 符号を考慮して順位を合計し、検定統計量を算出

---

### **6-5. 対応のない3群以上の差の検定（Kruskal–Wallis検定）**

#### ● 目的

3群以上で中央値に差があるか？（一元配置分散分析のノンパラ版）

#### ● ポケモン例

カントー／ジョウト／ガラルの「すばやさ」に差があるか？

* 3群を結合して順位を付ける
* 群ごとの順位合計を元にH統計量を計算：

$$
H = \frac{12}{N(N+1)} \sum \frac{R_i^2}{n_i} - 3(N+1)
\quad (R_i = 群iの順位合計)
$$

---



**7. 多変量解析（ポケモン種族値と分類の理解を深める解析手法）**

---

### **7-1. ロジスティック回帰分析1：2値分類の基本**

#### ● 目的

**「伝説」か「非伝説」**のような**2クラスのカテゴリを予測**するための回帰モデル。
説明変数：連続値（例：「こうげき」「すばやさ」など）
目的変数：カテゴリ（0/1）

#### ● ポケモン例

* y = 1：伝説ポケモン
* y = 0：非伝説ポケモン
* $x_1 =$ すばやさ, $x_2 =$ とくこう

$$
P(y = 1) = \frac{1}{1 + \exp(-(b_0 + b_1 x_1 + b_2 x_2))}
$$

→ 「すばやさ」「とくこう」が高いと伝説である確率が上がるかを評価。

---

## 🔹 **ロジスティック回帰分析に関する式**

---

### 【1】**ロジスティック回帰モデルの基本式**

$$
P(y = 1 \mid \mathbf{x}) = \frac{1}{1 + \exp(-z)} \quad \text{（シグモイド関数）}
$$

$$
z = \beta_0 + \beta_1 x_1 + \beta_2 x_2 + \cdots + \beta_k x_k
$$

* $y \in \{0, 1\}$：例：伝説(1)／非伝説(0)の判別
* $x_i$：説明変数（例：こうげき、すばやさ）
* $\beta_i$：係数（学習で推定）

---

### 【2】**オッズとオッズ比**

$$
\text{オッズ} = \frac{P(y=1)}{1 - P(y=1)} = \exp(\beta_0 + \beta_1 x_1 + \cdots + \beta_k x_k)
$$

$$
\text{オッズ比} = \exp(\beta_i)
$$

* $x_i$ が1単位増加したときのオッズの変化倍率（掛け算）

---

### 【3】**Wald検定統計量とp値**

$$
z_i = \frac{\hat{\beta}_i}{\text{SE}(\hat{\beta}_i)}
$$

* $\text{SE}(\hat{\beta}_i)$：係数の標準誤差
* $|z_i|$ が大きい → 変数が統計的に有意
* 対応する **p値** を算出し、**p < 0.05** で有意と判定

---

### 【4】**モデルの性能評価指標**

| 指標                           | 式                                                                                       | 説明               |
| ---------------------------- | --------------------------------------------------------------------------------------- | ---------------- |
| **Accuracy**                 | $\frac{TP + TN}{TP + TN + FP + FN}$                                                     | 正解率              |
| **Precision (適合率)**          | $\frac{TP}{TP + FP}$                                                                    | 伝説と予測して当たる確率     |
| **Recall (再現率)**             | $\frac{TP}{TP + FN}$                                                                    | 実際に伝説をどれだけ拾えているか |
| **F1スコア**                    | $2 \cdot \frac{\text{Precision} \cdot \text{Recall}}{\text{Precision} + \text{Recall}}$ | 精度と網羅性の調和平均      |
| **AUC**                      | ROC曲線の下の面積（0～1）                                                                         | 識別能力全体の指標        |
| **擬似決定係数（Nagelkerke R² など）** | $\displaystyle R^2 = 1 - \frac{L_1}{L_0}$（Log-likelihood比など）                            | 線形モデルにおけるR²の類似指標 |

---

## 🔹 **クラスタリング分析に関する式**

---

### 【5】**距離の定義**

| 距離指標         | 式                                                             | 特徴          |   |           |
| ------------ | ------------------------------------------------------------- | ----------- | - | --------- |
| **ユークリッド距離** | $\displaystyle d(x, y) = \sqrt{\sum_{i=1}^{n} (x_i - y_i)^2}$ | 最も一般的な直線距離  |   |           |
| **マンハッタン距離** | (\displaystyle d(x, y) = \sum\_{i=1}^{n}                      | x\_i - y\_i | ) | ブロック単位の距離 |

---

### 【6】**階層型クラスタリング：クラスタ間の距離**

| 手法               | 距離の定義                             |
| ---------------- | --------------------------------- |
| 単連結法（最短距離）       | $\min d(x_i, x_j)$（異なるクラスタ間の最短距離） |
| 完全連結法（最長距離）      | $\max d(x_i, x_j)$                |
| **ウォード法（分散最小化）** | クラスタ内分散の増加を最小にするように統合             |

---

### 【7】**非階層型クラスタリング（K-means）**

#### ● クラスタ重心の計算：

$$
\mu_k = \frac{1}{n_k} \sum_{i \in C_k} x_i
$$

* 各クラスタ $C_k$ に属するサンプルの平均値を新しい重心とする

#### ● 目的関数（SSE: 群内平方和）：

$$
\text{SSE} = \sum_{k=1}^{K} \sum_{i \in C_k} \|x_i - \mu_k\|^2
$$

* **小さいほど良い**
* **エルボー法**：SSEの減り方を見て適切なKを判断

---

### 【8】**クラスタの分離評価（シルエット係数）**

$$
s(i) = \frac{b(i) - a(i)}{\max\{a(i), b(i)\}}
$$

* $a(i)$：自身のクラスタ内の平均距離
* $b(i)$：他クラスタとの最小平均距離
  → $s(i) \in [-1, 1]$、1に近いほど分離が明確

---

##  まとめ

| 分析手法      | 代表式                                           | 評価・意味           |
| --------- | --------------------------------------------- | --------------- |
| ロジスティック回帰 | $P(y=1) = \frac{1}{1 + e^{-z}}$               | 2クラスの分類確率       |
| オッズ比      | $e^{\beta_i}$                                 | x\_i の増加に対する影響度 |
| Wald検定    | $z = \frac{\beta}{SE}$                        | 変数の有意性確認        |
| クラスタ距離    | $\sqrt{\sum(x_i - y_i)^2}$                    | クラスタの類似度        |
| SSE       | $\sum_{k} \sum_{i \in C_k} \|x_i - \mu_k\|^2$ | K-meansの最小化目的関数 |
| シルエット係数   | $\frac{b(i) - a(i)}{\max(a(i), b(i))}$        | 分離度の指標          |

---







**1. データの整理と可視化（ポケモン種族値・分類データの見える化）**

---

### **1-1. 箱ひげ図（Boxplot）**

**目的**：データの分布・中央値・外れ値を視覚的に確認
**例**：「こうげき種族値」の箱ひげ図を**タイプ別**に作成

* 箱：第1四分位数～第3四分位数（IQR）
* 線：中央値
* 点：外れ値（±1.5×IQR）

---

### **1-2. 相関係数と散布図（Scatter plot with correlation）**

**目的**：「すばやさ」と「とくこう」など、2変数間の関係性を見る

* 散布図：視覚的な関係
* 相関係数 $r$：

$$
r = \frac{\text{共分散}}{\text{標準偏差の積}}
$$

例：r > 0.7 なら強い正の相関（アタッカー型）

---

### **1-3. 基本統計量とヒストグラム（Histogram）**

**目的**：データの分布を確認（平均・中央値・分散・歪度など）
**例**：「とくぼう種族値」のヒストグラム
→ 正規分布に近いか？歪みがあるか？を確認
**基本統計量**：mean, median, variance, SD, skewness, kurtosis

---

### **1-4. 積み上げ棒グラフ（Stacked Bar Chart）**

**目的**：カテゴリ内訳を比較
**例**：各タイプ内の「物理アタッカー・特殊アタッカー・タンク」の割合

---

### **1-5. 折れ線グラフ（Line Chart）**

**目的**：時間・世代など**順序付き変化**を追う
**例**：ポケモン第1世代～第9世代における平均「すばやさ」の推移

---

### **1-6. ベン図（Venn Diagram）**

**目的**：属性の**共通・排他関係**の視覚化
**例**：「600族 ∩ 伝説 ∩ ドラゴンタイプ」など複数属性の重なりを可視化

---

## **2. 推定と検定（ポケモン種族値データを統計解析）**

---

### **2-1. 対応のない2標本t検定**

**目的**：伝説 vs 通常で「ぼうぎょ」平均に差があるか検定

$$
t = \frac{\bar{x}_1 - \bar{x}_2}
{\sqrt{\frac{s_1^2}{n_1} + \frac{s_2^2}{n_2}}}
$$

---

### **2-2. 独立性の検定（カイ二乗検定）**

**目的**：「タイプ」と「伝説／通常」の**関係性が独立か**を検定
→ クロス表を作り、観測度数と期待度数を比較

---

### **2-3. 回帰分析1（単回帰）**

**目的**：「すばやさ」から「とくこう」を予測
モデル：

$$
\hat{y} = a + bx
$$

---

### **2-4. 回帰分析2（重回帰）**

**目的**：「HP」「こうげき」「ぼうぎょ」から「合計種族値」を予測
モデル：

$$
\hat{y} = a + b_1 x_1 + b_2 x_2 + b_3 x_3
$$

---

### **2-5. 一元配置分散分析（One-Way ANOVA）**

**目的**：「タイプ別」で「とくこう」平均に差があるか
→ 群間分散と群内分散の比（F値）を計算して検定

---

### **2-6. 二元配置分散分析（Two-Way ANOVA）**

**目的**：「タイプ × 伝説か否か」の**2要因の効果と交互作用**を見る
→ 両方の主効果＋交互作用を同時に検定

---


## ■ 推定・検定に関する式

| 項目                | 式                                                                                              | 意味・用途            |
| ----------------- | ---------------------------------------------------------------------------------------------- | ---------------- |
| **信頼区間（母平均）**     | $\bar{x} \pm z \cdot \frac{s}{\sqrt{n}}$                                                       | 母平均の区間推定（正規近似）   |
| **信頼区間（母比率）**     | $\hat{p} \pm z \cdot \sqrt{\frac{\hat{p}(1-\hat{p})}{n}}$                                      | 母比率の区間推定         |
| **標準誤差（SE）**      | $\frac{s}{\sqrt{n}}$                                                                           | 平均の誤差の大きさを表す     |
| **t検定（対応なし）**     | $\displaystyle t = \frac{\bar{x}_1 - \bar{x}_2}{\sqrt{\frac{s_1^2}{n_1} + \frac{s_2^2}{n_2}}}$ | 2群の平均の差の有意性検定    |
| **Welchのt検定**     | 上と同じ（ただし自由度を近似計算）                                                                              | 等分散性がないときの2群t検定  |
| **z検定**           | $\displaystyle z = \frac{\bar{x} - \mu_0}{\frac{\sigma}{\sqrt{n}}}$                            | 母分散既知のときの平均の検定   |
| **カイ二乗検定（適合度）**   | $\displaystyle \chi^2 = \sum \frac{(O_i - E_i)^2}{E_i}$                                        | 観測値と理論値の適合度を検定   |
| **カイ二乗検定（独立性）**   | 同上（クロス表での検定）                                                                                   | 2つのカテゴリ変数の独立性を検証 |
| **F検定**           | $\displaystyle F = \frac{s_1^2}{s_2^2}$                                                        | 2群の分散が等しいかを検定    |
| **ANOVA（分散分析）F値** | $\displaystyle F = \frac{MSA}{MSE} = \frac{SSA/df_A}{SSE/df_E}$                                | 群間分散と群内分散の比      |

---

## ■ 回帰分析関連の式

| 項目           | 式                                                                                     | 意味・用途              |
| ------------ | ------------------------------------------------------------------------------------- | ------------------ |
| **単回帰モデル**   | $\hat{y} = a + bx$                                                                    | xからyを予測する最小二乗線形モデル |
| **重回帰モデル**   | $\hat{y} = a + b_1x_1 + b_2x_2 + \cdots + b_kx_k$                                     | 複数の変数からyを予測        |
| **回帰係数（b）**  | $\displaystyle b = \frac{\sum (x_i - \bar{x})(y_i - \bar{y})}{\sum(x_i - \bar{x})^2}$ | 傾きの推定値             |
| **決定係数（R²）** | $\displaystyle R^2 = 1 - \frac{SS_{\text{res}}}{SS_{\text{total}}}$                   | 回帰モデルがどれだけ説明できたか   |
| **残差（e）**    | $e_i = y_i - \hat{y}_i$                                                               | 予測値と実測値の差          |

---

## ■ 相関・分布に関する式

| 項目               | 式                                                                                                                  | 意味・用途           |
| ---------------- | ------------------------------------------------------------------------------------------------------------------ | --------------- |
| **相関係数（ピアソン）**   | $\displaystyle r = \frac{\sum (x_i - \bar{x})(y_i - \bar{y})}{\sqrt{\sum(x_i - \bar{x})^2 \sum(y_i - \bar{y})^2}}$ | xとyの線形関係の強さ     |
| **Spearman順位相関** | $\displaystyle \rho = 1 - \frac{6 \sum d_i^2}{n(n^2 - 1)}$                                                         | 順位ベースの相関（ノンパラ用） |
| **標準化（Zスコア）**    | $\displaystyle z = \frac{x - \mu}{\sigma}$                                                                         | 正規分布での相対位置を表す   |

---

## ■ 確率分布に関する式（代表例）

| 分布            | 式                                                                                         | 意味・用途              |
| ------------- | ----------------------------------------------------------------------------------------- | ------------------ |
| **二項分布**      | $\displaystyle P(X = k) = \binom{n}{k} p^k (1-p)^{n-k}$                                   | 成功確率pの試行がk回成功      |
| **ポアソン分布**    | $\displaystyle P(X = k) = \frac{\lambda^k e^{-\lambda}}{k!}$                              | 単位時間内の発生回数         |
| **正規分布（PDF）** | $\displaystyle f(x) = \frac{1}{\sqrt{2\pi \sigma^2}} e^{- \frac{(x - \mu)^2}{2\sigma^2}}$ | 平均μ、分散σ²の正規分布の密度関数 |
| **ガンマ分布**     | $\displaystyle f(x) = \frac{\beta^\alpha x^{\alpha - 1} e^{-\beta x}}{\Gamma(\alpha)}$    | 正の連続変数に対する分布       |

---

## ■ 効果量・検出力・サンプリングに関する式

| 項目                 | 式                                                              | 意味・用途                   |          |                  |
| ------------------ | -------------------------------------------------------------- | ----------------------- | -------- | ---------------- |
| **効果量（Cohen’s d）** | (\displaystyle d = \frac{                                      | \bar{x}\_1 - \bar{x}\_2 | }{s\_p}) | 2群平均の差の実質的影響の大きさ |
| **検出力（Power）**     | $1 - \beta$                                                    | 差があるときに正しく検出できる確率       |          |                  |
| **必要サンプル数（比率）**    | $\displaystyle n = \frac{z^2 \cdot \hat{p}(1 - \hat{p})}{e^2}$ | 信頼区間の誤差幅eで必要なnを計算       |          |                  |

---




---

## 1. シグマ記号（Σ）：合計を表す演算子

```math
\sum_{i=1}^{n} x_i = x_1 + x_2 + \cdots + x_n
```

**使う場面**：

* 平均 \$\bar{x} = \frac{1}{n} \sum x\_i\$
* 分散 \$\mathrm{Var}(X) = \frac{1}{n} \sum (x\_i - \bar{x})^2\$

---

## 2. 微分：変化率（傾き）を求める道具

```math
f(x) = x^2 \Rightarrow f'(x) = 2x
```

**使う場面**：

* 最小二乗法（残差の二乗和を最小化）
* 最尤推定（尤度関数の最大化）

**Python例（最小二乗法）**：

```python
import numpy as np

x = np.array([1, 2, 3])
y = np.array([2, 4, 6])
a = np.sum(x*y) / np.sum(x**2)  # y = ax
```

---

## 3. 積分：確率密度の下の「面積」

```math
\int_a^b f(x) dx = P(a \le X \le b)
```

**使う場面**：

* 正規分布の確率計算
* 連続型確率変数の期待値

---

## 4. 指数・累乗・平方根

* 指数：\$a^x\$ → 成長モデル、指数分布、対数変換で使う
* 累乗根：\$\sqrt{x}\$ → 標準偏差 \$\sigma = \sqrt{\mathrm{Var}(X)}\$

---

## 5. 対数（log）

* 自然対数 \$\ln(x)\$ は、微分しやすく、尤度関数で頻出
* ロジスティック回帰では「オッズの対数」を使う

```math
\log\left(\frac{p}{1-p}\right) = b_0 + b_1 x
```

---

## 6. 標本分散の定義と不偏性

### 標本分散（不偏分散）：

```math
s^2 = \frac{1}{n-1} \sum (x_i - \bar{x})^2
```

### なぜ \$n-1\$？

→ 標本平均 \$\bar{x}\$ を使ってしまった時点で、自由に選べるデータは \$n-1\$ 個。

---

## 7. 自由度（degrees of freedom）

**定義**：
「制約を除いた後に自由に動かせる変数の数」

**登場する場面**：

* \$t\$分布や\$\chi^2\$分布の自由度
* 回帰分析の残差の自由度 \$n - p\$

---



## ■ 時系列データとは（ポケモン例）

ポケモンセンターの月別売上、毎月のポケモンカード販売数、ゲーム内イベントの参加者数など、「時間の流れに沿って記録されたデータ」のことを指します。

---

## ■ 時系列変動の3要素（ポケモンの例）

| 種類         | 説明 | ポケモンの例 |
|--------------|------|--------------|
| 傾向変動     | 長期的な増加・減少 | ポケモンカード全体の売上が年々増加している傾向 |
| 季節変動     | 毎年繰り返されるパターン | 夏休み・冬休み期間中に「イベント参加者」や「ゲームログイン数」が増加 |
| 不規則変動   | 偶発的な要因による変動 | 突然の人気キャラ登場（例：新作御三家発表）やプロモカード配布による売上急増 |

---

## ■ 移動平均（ポケモン売上の傾向を滑らかにする）

たとえば、ポケモンカード月別売上の3か月移動平均：

| 月 | 売上（万円） | 移動平均 |
|----|--------------|----------|
| 1月 | 120          | ―        |
| 2月 | 130          | ―        |
| 3月 | 140          | (120+130+140)/3 = 130 |
| 4月 | 160          | (130+140+160)/3 = 143.3 |
| …  | …            | …        |

 **目的：** 急なイベント効果をならし、長期的な人気傾向を見る。

---

## ■ コレログラム（自己相関）とポケモン

### 例：月別「ミュウ」関連商品の売上

- ラグ1（1ヶ月ずらし）：直前月との関連
- ラグ12（1年ずらし）：前年同月との関連 → **季節限定イベントの影響確認に使える**

 **アイスクリーム＝夏、灯油＝冬のように**  
→ ポケモン：伝説イベントや映画公開時期と売上が強く相関する場合がある

---

## ■ 変化率（売上やプレイヤー数の成長を測る）

### 例：前年4月と今年4月のポケモンカード売上比較

\[
\text{変化率} = \frac{\text{今年の売上} - \text{去年の売上}}{\text{去年の売上}} \times 100
\]

例：去年＝1000万円、今年＝1200万円  
→ 変化率 = \((1200 - 1000)/1000 \times 100 = 20\%\)

### 平均変化率（3年かけて伸びた場合）

\[
r = \left( \frac{売上_{\text{最終年}}}{売上_{\text{初年度}}} \right)^{1/n} - 1
\]

---

## ■ ラスパイレス指数・パーシェ指数（ポケモングッズ価格の比較）

### 例：ポケモングッズ（ピカチュウTシャツ・イーブイキーホルダー）の価格と売上数量

| 商品       | 基準年価格 | 基準年数量 | 比較年価格 | 比較年数量 |
|------------|-------------|-------------|-------------|-------------|
| ピカチュウT | 3000円      | 100個       | 3300円      | 120個       |
| イーブイキー | 1000円      | 200個       | 1100円      | 180個       |

---

### ● ラスパイレス指数（基準年数量で物価変動を測る）

\[
\frac{3300 \times 100 + 1100 \times 200}{3000 \times 100 + 1000 \times 200} \times 100
= \frac{(330000 + 220000)}{(300000 + 200000)} \times 100 = \frac{550000}{500000} \times 100 = 110
\]

→ **物価上昇率は10%**

---

### ● パーシェ指数（比較年数量で測る）

\[
\frac{3300 \times 120 + 1100 \times 180}{3000 \times 120 + 1000 \times 180} \times 100
= \frac{(396000 + 198000)}{(360000 + 180000)} \times 100 = \frac{594000}{540000} \times 100 = 110
\]

※この例では結果同じだが、実際はズレが出ることもある。

---

## まとめ

| 概念        | ポケモンの例 |
|-------------|--------------|
| 時系列変動  | 売上、ログイン数、イベント参加数 |
| 移動平均    | 売上の平滑化 |
| コレログラム | イベント効果の周期確認 |
| 変化率      | 売上成長率・人口推移など |
| 指数        | グッズ価格変化の物価指数化 |

---