はじめに
統計学では頻繁にギリシャ文字が登場する。これらは「平均」「標準偏差」「相関係数」「係数」など、数学的概念や推定量の記号として用いられる。
主なギリシャ文字と読み方
記号 | 読み方 | 用途の例 |
---|---|---|
$\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が奇数)
- 中央値(Q2)を求める:中央の値
- 下半分→Q1(中央値)
- 上半分→Q3(中央値)
例:データ = [40, 50, 60, 70, 80]
Q2 = 60
Q1 = 50(40と50の中央値)
Q3 = 70(70と80の中央値)
4-5. 箱ひげ図の書き方(データ数が偶数の場合)
手順(nが偶数)
- Q2は中央2つの平均
- Q1:下半分の中央値(含まない)
- 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. 累積分布関数の性質
基本性質
- 増加関数: $F(x_1) \le F(x_2)$ (if $x_1 < x_2$)
- $\lim_{x \to -\infty} F(x) = 0$, $\lim_{x \to +\infty} F(x) = 1$
- 不連続点がある場合 → 離散型分布
実例(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)
調査の基本構造
- 目的の明確化:何を知りたいのか?
- 母集団の定義:誰(何)を対象とするか?
- 抽出法の決定:どのように選ぶか?
- 変数の設定:何を測定するか?(例:Attack, Speed)
- 分析手法の選定:平均比較?回帰?検定?
ポケモン例:バトル用高速アタッカーの特徴調査
- 母集団:全ポケモン
- 標本: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. 推定量の性質(良い推定量の条件)
-
不偏性:期待値が母数と等しい
$E[\hat{\mu}] = \mu$ - 一致性:サンプルサイズ増加で母数に近づく
- 効率性:分散が最小
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]
$$
練習問題(ポケモン版)
- 「こうげき」種族値が120以上のポケモンは全体のうち240体/800体。95%信頼区間を求めよ。
- 「伝説ポケモン」と「通常ポケモン」で「すばやさ」>100の比率に差があるか信頼区間を計算せよ。
- 調査対象が「とくぼう」>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等で直接求められる(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. シグマ記号(Σ):合計を表す演算子
\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
]
※この例では結果同じだが、実際はズレが出ることもある。
まとめ
概念 | ポケモンの例 |
---|---|
時系列変動 | 売上、ログイン数、イベント参加数 |
移動平均 | 売上の平滑化 |
コレログラム | イベント効果の周期確認 |
変化率 | 売上成長率・人口推移など |
指数 | グッズ価格変化の物価指数化 |