0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

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

Last updated at Posted at 2025-05-28

はじめに

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

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

記号 読み方 用途の例
$\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実装例(抜粋)

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. ヒストグラム

ヒストグラムとは

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

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)

実装(すばやさのジニ係数)

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種族値)

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{モード}
$$

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

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

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

3-5. 歪度と尖度

歪度(Skewness)

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

  • 正:右に長い尾(攻撃特化)
  • 負:左に長い尾
from scipy.stats import skew
print('Skewness (Speed):', skew(df['Speed']))

尖度(Kurtosis)

分布の尖り具合。

  • 高い:とがっている(中心に集中)
  • 低い:平べったい(分散が大きい)
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. 箱ひげ図の見方

例(すばやさ種族値)

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
$$

実装

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)とは

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

構造

  • 幹:上位桁
  • 葉:下位桁

ポケモン例(すばやさ)

Speed データ(抜粋): [40, 42, 45, 48, 50, 52, 56, 61, 67]

幹|葉
4|0 2 5 8
5|0 2 6
6|1 7

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. データの集計について

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

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

df['Type 1'].value_counts()

種類

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

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

棒グラフ(Bar Plot)

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

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

円グラフ(Pie Chart)

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

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

折れ線グラフ(Line Graph)

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

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

5-3. クロス集計表1(カテゴリ×カテゴリ)

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

例:Type1 × Generation

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

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


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

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

例:Type1 × Attack(平均)

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

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


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

帯グラフ(Stacked Bar Chart)

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

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

モザイク図(Mosaic Plot)

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

from statsmodels.graphics.mosaicplot import mosaic

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

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


5-6. 三角グラフ(Ternary Plot)

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

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

!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乗

例(こうげき種族値)

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

6-2. 標準偏差

定義

標準偏差(Standard Deviation)は、分散の平方根

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

  • 元のデータと同じ単位
  • データの広がり具合を直感的に把握できる
std_dev = attack_values.std()
print(f"Standard Deviation of Attack: {std_dev:.2f}")

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

活用場面

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

ポケモンの例(Speed)

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}
$$

  • 単位が異なるデータ同士のばらつきの比較に有効
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
$$

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
$$

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
$$

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{全体の数}}
$$

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

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

9-2. 確率の計算(数え上げ)

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

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

9-3. 確率の計算(順列・組み合わせ)

例:「5匹の中から3匹を選ぶ確率(順序あり・なし)」

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

9-4. 確率の計算(余事象)

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

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

9-5. 確率と独立

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

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

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

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)
$$

例:こうげき値の期待値

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)」である確率

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 = 伝説ポケモン

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 = 伝説ポケモン

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超である」確率

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:伝説ポケモンであると判明

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

実装

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種族値」の分布

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
$$

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

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
$$

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スコア)

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

Zスコアが ±1 にある確率(68.27%)

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種族値の累積分布)

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)

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の合計期待値

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の分散と標準偏差

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の合計の分散(確認)

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回攻撃中)

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)
$$

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)

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
$$

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)

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}
$$

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体含まれる確率

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)

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の分布を正規分布で近似

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の合計

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スコア

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のポケモンは上位何%か?

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

14-6. 標準正規分布の使い方2(区間確率)

例1:Speedが±1σ内にある確率(理論)

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

例2:実データと比較

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

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

問題:

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

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ターン)

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の間で均等に変化」など
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の間でランダム(理論化すると連続)
  • 初期値の速度補正など
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)
$$

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

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ヒストグラム(攻撃×素早さ)

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の相関分析

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世代)やタイプ(例:ドラゴンタイプ)のポケモン

実装

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

16-2. 全数調査と標本調査(Census vs Sampling)

全数調査(Census)

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

標本調査(Sampling)

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

比較表

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

16-3. 標本の抽出方法(Sampling Methods)

1. 無作為抽出(単純ランダム)

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

2. 層別抽出(Stratified)

  • 各タイプや世代から同数または割合で抽出
sample = df.groupby('Generation').sample(n=10, random_state=1)

3. 系統抽出(Systematic)

  • 一定間隔で抽出(例:10体おき)
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」に近づく。

実装(サンプルサイズを変えた平均の収束)

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(実装で確認)

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?

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

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

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

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

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

実装

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の母平均を推定

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

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

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})")

図による直感的理解

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の信頼区間)

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. さまざまな信頼区間(母分散未知)

信頼係数ごとの幅の比較

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}
$$


実装(例)

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で比率を算出し、

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

例:

=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で)

=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関数:

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

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

=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では:

=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):

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等で直接求められる(SciPyfisher_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. シグマ記号(Σ):合計を表す演算子

\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. 微分:変化率(傾き)を求める道具

f(x) = x^2 \Rightarrow f'(x) = 2x

使う場面

  • 最小二乗法(残差の二乗和を最小化)
  • 最尤推定(尤度関数の最大化)

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. 積分:確率密度の下の「面積」

\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)$ は、微分しやすく、尤度関数で頻出
  • ロジスティック回帰では「オッズの対数」を使う
\log\left(\frac{p}{1-p}\right) = b_0 + b_1 x

6. 標本分散の定義と不偏性

標本分散(不偏分散):

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
]

※この例では結果同じだが、実際はズレが出ることもある。


まとめ

概念 ポケモンの例
時系列変動 売上、ログイン数、イベント参加数
移動平均 売上の平滑化
コレログラム イベント効果の周期確認
変化率 売上成長率・人口推移など
指数 グッズ価格変化の物価指数化

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?