統計学におけるモーメント (Moment) とは、確率分布の形状を特徴づける量であり、物理学におけるモーメント(回転力)の概念を統計学に応用したものです。確率変数 \(X\) の分布がどのような形をしているか、その中心、広がり、非対称性、尖り具合などを定量的に表現するために用いられます。
本記事では、モーメントの定義から歪度・尖度の導出までを整理したうえで、**「標本から計算したモーメントは、真の分布のモーメントの不偏推定量になっているか」**という、教科書ではしばしば分散の話だけで済まされてしまう問題を、歪度・尖度まで含めて数式とモンテカルロ実験の両方で検証します。
モーメントの定義
確率変数 \(X\) の確率密度関数(または確率質量関数)を \(f(x)\) とするとき、原点周りの \(n\) 次モーメント \(\mu'_n\) は以下のように定義されます。
\[ \mu'_n = \mathbb{E}[X^n] = \int_{-\infty}^{\infty} x^n f(x) dx \]また、平均 \(\mu = \mathbb{E}[X]\) 周りの \(n\) 次モーメント(中心モーメント)\(\mu_n\) は以下のように定義されます。
\[ \mu*n = \mathbb{E}[(X - \mu)^n] = \int*{-\infty}^{\infty} (x - \mu)^n f(x) dx \]中心モーメントは平均を原点に取り直した量なので、分布の位置(location)に依存せず、形状(スケール・非対称性・尖り)だけを表す点が原点周りのモーメントとの違いです。以下、\(k\) 次中心モーメント \(\mu_k\) を出発点として、低次から高次の意味を順に見ていきます。
低次モーメントの意味
0次モーメント
- 原点周りの0次モーメント: \(\mu'_0 = \int_{-\infty}^{\infty} x^0 f(x) dx = \int_{-\infty}^{\infty} f(x) dx = 1\) これは、確率密度関数の全区間での積分が1になるという確率の基本性質を表します。
1次モーメント
- 原点周りの1次モーメント: \(\mu'_1 = \int_{-\infty}^{\infty} x^1 f(x) dx = \mathbb{E}[X] = \mu\) これは、確率変数の**平均値(期待値)**を表します。分布の中心の位置を示します。
2次モーメント
- 中心2次モーメント: \(\mu_2 = \mathbb{E}[(X - \mu)^2] = \sigma^2\) これは、確率変数の分散 (Variance) を表します。分布の広がり具合を示します。
高次モーメントの意味
3次モーメント(歪度)
中心3次モーメント \(\mu_3\) を、分布の広がりのスケールである \(\sigma^3\) で正規化したものが歪度 (Skewness) \(\gamma_1\) です。
\[ \gamma_1 = \frac{\mu_3}{\sigma^3} = \frac{\mathbb{E}[(X-\mu)^3]}{\left(\mathbb{E}[(X-\mu)^2]\right)^{3/2}} \]\(\sigma^3\) で割ることで無次元量になり、単位(例えば「円」や「秒」)に依存せず分布の形状だけを比較できます。歪度は分布の非対称性の方向と大きさを示します。
- \(\gamma_1 > 0\) : 分布が右に裾を引く(右に歪んでいる)。大きい方向の外れ値が相対的に多い
- \(\gamma_1 < 0\) : 分布が左に裾を引く(左に歪んでいる)
- \(\gamma_1 = 0\) : 分布が左右対称(正規分布など。ただし逆は必ずしも成り立たない — 非対称でなくても3次モーメント以外の非対称性を持つ分布もありうる)
4次モーメント(尖度)
同様に、中心4次モーメント \(\mu_4\) を \(\sigma^4\) で正規化し、正規分布の値である3を引いたものが**(超過)尖度 (Excess Kurtosis)** \(\gamma_2\) です。
\[ \gamma_2 = \frac{\mu_4}{\sigma^4} - 3 \]正規分布の尖度(3を引く前の値)がちょうど3になることは、正規分布の特性関数からモーメントを求めると確認できます(\(\mathbb{E}[Z^4]=3\) 、\(Z\sim N(0,1)\) )。3を引いた超過尖度を使うことで、「正規分布からのズレ」を直接評価できます。
- \(\gamma_2 > 0\) : 正規分布より尖度(超過尖度)が大きい。裾が重い
- \(\gamma_2 < 0\) : 正規分布より超過尖度が小さい。裾が軽い
- \(\gamma_2 = 0\) : 正規分布と同程度の裾の重さ
尖度についてよくある誤解: 尖度は「分布の尖り具合(ピークの鋭さ)」と説明されることが多いですが、これは正確ではありません。尖度 \(\gamma_2\) は4次モーメント \(\mathbb{E}[(X-\mu)^4]\) で定義される量であり、4乗という演算は分布の中心近傍(\(|X-\mu|\) が小さい領域)よりも裾(\(|X-\mu|\) が大きい領域)の値をはるかに強く重み付けします。実際、Westfall (2014, The American Statistician, “Kurtosis as Peakedness, 1905–2014. R.I.P.”) は、尖度が主に測っているのは**裾の重さ(外れ値の出やすさ)**であり、中心のピークの鋭さそのものではないことを指摘しています。尖度が高い分布の代表例であるラプラス分布やスチューデントのt分布は確かに中心が尖っていますが、それは裾が重いことの副産物に過ぎず、「尖度が高い ⇒ ピークが鋭い」という因果関係を一般に仮定するのは誤りです(一様分布のように裾がなく平坦なのに、正規分布より尖度が低い例もあります)。本記事でも以降「尖度」という訳語をそのまま使いますが、**実質的には「裾の重さの指標」**と理解してください。
モーメントは、確率分布の様々な特性を捉えるための基本的なツールであり、データ分析や機械学習において、データの性質を理解するために重要な役割を果たします。しかし実務でモーメントを使う際は、真の分布の \(\mu, \sigma^2, \gamma_1, \gamma_2\) を直接知ることはできず、有限個の標本から推定するしかありません。ここからは、その推定量が持つ性質——特に不偏性——を詳しく見ていきます。
標本モーメントと不偏性:分散の場合
\(X_1, \dots, X_n\) を平均 \(\mu\) 、分散 \(\sigma^2\) を持つ分布からの独立同分布(i.i.d.)標本とします。標本平均を \(\bar X = \frac{1}{n}\sum_{i=1}^n X_i\) と書くとき、最も素朴な分散の推定量は
\[ \hat\sigma^2 = \frac{1}{n}\sum\_{i=1}^n (X_i - \bar X)^2 \]です。これは母集団の定義 \(\sigma^2 = \mathbb{E}[(X-\mu)^2]\) の \(\mu\) を \(\bar X\) に、期待値をサンプル平均に置き換えただけの自然な推定量に見えますが、実はバイアスを持ちます。
なぜ \(\hat\sigma^2\) は偏るのか(導出)
鍵となるのは、次の代数的恒等式です。
\[ \sum*{i=1}^n (X_i - \bar X)^2 = \sum*{i=1}^n (X_i - \mu)^2 - n(\bar X - \mu)^2 \tag{1}\]導出: \(X_i - \bar X = (X_i - \mu) - (\bar X - \mu)\) と分解し、両辺を2乗して和を取ると
\[ \sum_i (X_i-\bar X)^2 = \sum_i (X_i-\mu)^2 - 2(\bar X - \mu)\sum_i(X_i-\mu) + n(\bar X-\mu)^2 \]ここで \(\sum_i (X_i - \mu) = n(\bar X - \mu)\) なので、中央の項は \(-2n(\bar X-\mu)^2\) となり、
\[ \sum_i (X_i-\bar X)^2 = \sum_i (X_i-\mu)^2 - 2n(\bar X-\mu)^2 + n(\bar X-\mu)^2 = \sum_i (X_i-\mu)^2 - n(\bar X-\mu)^2 \]が得られ、式(1)が示されます。この式は、「標本平均まわりの散らばり」が「真の平均まわりの散らばり」から「標本平均自身の推定誤差の分」だけ必ず小さくなることを意味します。\(\bar X\) はデータから計算されるため、データ自身に最も近づくように「引き寄せられて」しまうのです。
式(1)の両辺の期待値を取ります。\(\mathbb{E}[(X_i-\mu)^2]=\sigma^2\) なので左の和の期待値は \(n\sigma^2\) 。また \(\bar X\) の分散は \(\mathrm{Var}(\bar X) = \sigma^2/n\) なので \(\mathbb{E}[n(\bar X-\mu)^2] = n\cdot\sigma^2/n = \sigma^2\) 。よって
\[ \mathbb{E}\left[\sum_i (X_i-\bar X)^2\right] = n\sigma^2 - \sigma^2 = (n-1)\sigma^2 \]両辺を \(n\) で割ると、
\[ \mathbb{E}[\hat\sigma^2] = \frac{n-1}{n}\sigma^2 \tag{2}\]すなわち \(\hat\sigma^2\) は真の分散 \(\sigma^2\) を必ず過小評価します(バイアス \(= -\sigma^2/n\) )。重要なのは、この導出が 母集団分布の形(正規分布かどうかなど)にまったく依存していないことです。\(\mathrm{Var}(\bar X)=\sigma^2/n\) という関係と期待値の線形性だけから導かれる、任意の分布で成り立つ一般的な結果です。
Bessel補正:\(n-1\) で割ると厳密に不偏になる
式(2)から、\(n/(n-1)\) を掛けて補正すれば不偏推定量が作れることが直ちにわかります。
\[ s^2 = \frac{n}{n-1}\hat\sigma^2 = \frac{1}{n-1}\sum\_{i=1}^n (X_i-\bar X)^2 \tag{3}\] \[ \mathbb{E}[s^2] = \frac{n}{n-1}\cdot\frac{n-1}{n}\sigma^2 = \sigma^2 \]これがBessel補正 (Bessel’s correction) です。分母を \(n\) ではなく自由度 \(n-1\) (\(\bar X\) の推定に1自由度使った分を引く)にすることで、任意の分布に対して厳密に不偏推定量になります。この「任意の分布で厳密に成り立つ」という点が、次節で見る歪度・尖度との決定的な違いです。
歪度・尖度の不偏推定はなぜ厄介か
分散と同じ発想で、歪度・尖度にも「補正」を掛けたくなります。実際、scipy.stats.skew / scipy.stats.kurtosis は bias=False を指定すると、次の調整済みFisher–Pearson標準化モーメント係数を返します。
ここで \(m_k = \frac{1}{n}\sum_i (X_i-\bar X)^k\) は素朴な標本中心モーメントです。これらの補正係数は歴史的にFisher (1930) に遡り、\(G_1, G_2\) という名前と「bias-corrected」という呼び方から、分散の \(s^2\) と同様に任意の分布で不偏になると誤解されがちです。しかし実際にはそうではありません。理由は2段構えです。
(1) 比の推定量は一般に不偏にならない。 分散の場合は \(\hat\sigma^2\) 自体が推定量でした。しかし歪度・尖度は「3次(4次)中心モーメントの不偏推定量」と「分散の不偏推定量の3/2乗(2乗)」の比として定義されます。\(A, B\) がそれぞれ不偏(\(\mathbb{E}[A]=\alpha,\ \mathbb{E}[B]=\beta\) )であっても、一般に \(\mathbb{E}[A/B] \neq \alpha/\beta\) です(比の期待値と期待値の比は一致しない — Jensen の不等式に関連する現象)。つまり分子・分母をどれだけ工夫して不偏にしても、比そのものが不偏になる保証はありません。
(2) \(G_1, G_2\) の補正係数自体、正規分布を仮定した近似に基づいている。 \(\sqrt{n(n-1)}/(n-2)\) や \((n-1)/((n-2)(n-3))\) といった係数は、母集団が正規分布に近いという前提のもとで導かれた漸近展開・小標本補正であり、Joanes & Gill (1998, The Statistician, “Comparing measures of sample skewness and kurtosis”) が指摘するように、非正規分布に対しては一般に不偏性を持ちません。つまり \(G_1, G_2\) は「正規分布であれば \(g_1, g_2\) より偏りが小さくなるように調整された推定量」であって、「任意の分布で不偏な推定量」ではないのです。
この違いは重要です。分散の \(n-1\) 補正は分布によらない厳密な代数的事実でしたが、歪度・尖度の「補正」は分布依存の近似にすぎません。以下、実際にコードを書いてこの主張を検証します。
モンテカルロ実験による検証
3つの分布を用意し、それぞれの真のモーメントを解析的に求めたうえで、標本サイズ \(n\) ごとに大量のシミュレーション標本を生成し、各推定量の**経験的バイアス(推定量の平均 − 真値)**を計測します。
| 分布 | 平均 | 分散 | 歪度 \(\gamma_1\) | 超過尖度 \(\gamma_2\) |
|---|---|---|---|---|
| Gaussian \(N(0,1)\) | 0 | 1 | 0 | 0 |
| Exponential(scale=1) | 1 | 1 | 2 | 6 |
| Student-\(t\) (df=5) | 0 | \(5/3\) | 0 | \(6\) (\(=6/(5-4)\) ) |
正規分布は歪度・尖度の補正が理論上ぴったり効くはずの基準ケース、指数分布は歪度・尖度とも非ゼロの非対称・裾重ケース、Student-\(t\) (df=5) は歪度こそゼロですが超過尖度が指数分布と同じ6という左右対称な裾重ケースです。3ケースを比べることで、「補正が効かないのは非対称性のせいなのか、それとも裾の重さそのもののせいなのか」を切り分けられます。
import numpy as np
from scipy import stats
rng = np.random.default_rng(20210527)
M = 20000 # モンテカルロ反復回数
dists = {
"gaussian": dict(sampler=lambda shape, rng: rng.standard_normal(shape),
var=1.0, skew=0.0, exkurt=0.0),
"exponential": dict(sampler=lambda shape, rng: rng.exponential(1.0, size=shape),
var=1.0, skew=2.0, exkurt=6.0),
"student_t5": dict(sampler=lambda shape, rng: rng.standard_t(df=5, size=shape),
var=5/3, skew=0.0, exkurt=6.0),
}
def run_for_n(dist, n, M, rng):
x = dist["sampler"]((M, n), rng) # shape (M, n)
d = x - x.mean(axis=1, keepdims=True)
var_naive = np.mean(d**2, axis=1) # naive: 1/n
var_bessel = np.sum(d**2, axis=1) / (n - 1) # Bessel: 1/(n-1)
skew_biased = stats.skew(x, axis=1, bias=True) # g1
skew_adj = stats.skew(x, axis=1, bias=False) # G1
kurt_biased = stats.kurtosis(x, axis=1, bias=True) # g2 (excess)
kurt_adj = stats.kurtosis(x, axis=1, bias=False) # G2 (excess)
return var_naive, var_bessel, skew_biased, skew_adj, kurt_biased, kurt_adj
n = 30
for name, dist in dists.items():
vn, vb, sb, sa, kb, ka = run_for_n(dist, n, M, rng)
print(name)
print(f" variance naive bias={vn.mean()-dist['var']:+.5f} (理論値 -var/n={-dist['var']/n:+.5f})")
print(f" variance Bessel bias={vb.mean()-dist['var']:+.5f}")
print(f" skewness g1 bias={sb.mean()-dist['skew']:+.5f}")
print(f" skewness G1 bias={sa.mean()-dist['skew']:+.5f}")
print(f" exkurt g2 bias={kb.mean()-dist['exkurt']:+.5f}")
print(f" exkurt G2 bias={ka.mean()-dist['exkurt']:+.5f}")
\(n=30\) 、\(M=20{,}000\) 回の反復で実行した結果は以下の通りです(モンテカルロ標準誤差はいずれも0.006〜0.024程度で、報告する偏りの値はその誤差より十分大きく統計的に有意です)。
| 分布 | 推定量 | 真値 | 推定量の平均 | バイアス |
|---|---|---|---|---|
| Gaussian | 分散(naive, ÷n) | 1.0000 | 0.96758 | −0.03242(理論値 −0.03333) |
| Gaussian | 分散(Bessel, ÷(n−1)) | 1.0000 | 1.00095 | +0.00095 |
| Gaussian | 歪度 \(g_1\) (bias=True) | 0.0000 | 0.00300 | +0.00300 |
| Gaussian | 歪度 \(G_1\) (bias=False) | 0.0000 | 0.00316 | +0.00316 |
| Gaussian | 超過尖度 \(g_2\) (bias=True) | 0.0000 | −0.19018 | −0.19018 |
| Gaussian | 超過尖度 \(G_2\) (bias=False) | 0.0000 | 0.00401 | +0.00401 |
| Exponential | 分散(naive) | 1.0000 | 0.96405 | −0.03595 |
| Exponential | 分散(Bessel) | 1.0000 | 0.99729 | −0.00271 |
| Exponential | 歪度 \(g_1\) | 2.0000 | 1.47841 | −0.52159 |
| Exponential | 歪度 \(G_1\) | 2.0000 | 1.55738 | −0.44262 |
| Exponential | 超過尖度 \(g_2\) | 6.0000 | 2.23436 | −3.76564 |
| Exponential | 超過尖度 \(G_2\) | 6.0000 | 2.88715 | −3.11285 |
| Student-\(t\) (5) | 分散(naive) | 1.6667 | 1.60942 | −0.05724 |
| Student-\(t\) (5) | 分散(Bessel) | 1.6667 | 1.66492 | −0.00175 |
| Student-\(t\) (5) | 歪度 \(g_1\) | 0.0000 | −0.00869 | −0.00869 |
| Student-\(t\) (5) | 歪度 \(G_1\) | 0.0000 | −0.00915 | −0.00915 |
| Student-\(t\) (5) | 超過尖度 \(g_2\) | 6.0000 | 1.07706 | −4.92294 |
| Student-\(t\) (5) | 超過尖度 \(G_2\) | 6.0000 | 1.51094 | −4.48906 |
結果は前節の予想を明確に裏付けています。
- 分散: naive推定量はどの分布でも理論値 \(-\sigma^2/n\) 通りに負に偏り、Bessel補正後は3分布とも \(\pm0.003\) 以内(モンテカルロ誤差の範囲内)に収まっています。分布によらず厳密に不偏という主張が数値的に確認できます。
- 歪度: Gaussian(真の歪度0)では \(g_1, G_1\) ともバイアスはほぼゼロ(\(G_1\) の補正で悪化も改善もしない——真値が0なので補正のしようがない)。一方 Exponential(真の歪度2)では \(g_1\) のバイアス \(-0.522\) に対し \(G_1\) は \(-0.443\) とやや改善するものの、依然として真値の20%以上に相当する大きな偏りが残ります。対称なStudent-\(t\) (5)(真の歪度0)ではどちらの推定量もほぼ無バイアスで、これは歪度のバイアスの主要項が母集団の歪度自身にスケールするため、対称分布ではそもそも歪度バイアスが(尖度の値によらず)ほぼ生じないことを示しています。
- 尖度: Gaussianでは \(g_2\) のバイアス \(-0.190\) に対し \(G_2\) は \(+0.004\) とほぼ完全に補正されており、この補正が正規分布のもとで設計された通りに機能していることがわかります。ところが Exponential・Student-\(t\) (5)(どちらも真の超過尖度6)では、\(G_2\) 補正後も \(-3.11\) 、\(-4.49\) という桁違いに大きなバイアスが残存します。\(G_2\) 補正は指数分布の非対称性・Student-\(t\) 分布の対称な裾重さのどちらのケースでも、ほとんど役に立っていません。
以上より、「歪度・尖度の bias=False 補正は正規分布を前提とした補正であり、非正規分布では一般に不偏性を持たない」という Joanes & Gill (1998) の主張は、実測でも明確に裏付けられました。
バイアスと標本サイズ \(n\) の関係
上記は \(n=30\) 一点だけの結果ですが、\(n\) を \(5\) から \(2000\) まで変化させ、同様に \(M=20{,}000\) 回の反復で各推定量の経験的バイアスを追跡したのが以下の図です。

naive分散推定量のバイアスは3分布とも参照線 \(\propto 1/n\) にほぼ沿って減衰しており、式(2)の理論と整合します。Bessel補正後は \(n=5\) という極端に小さい標本サイズでもバイアスは0近傍で、任意の \(n\) 、任意の分布で不偏という主張を裏付けています。

歪度・尖度いずれのパネルでも、Gaussian(青)は補正の有無によらずほぼ0で推移します。一方 Exponential(赤)・Student-\(t\) (5)(緑)では、bias=False補正(実線)はbias=True(点線)より多少バイアスを減らすものの、\(n\) が数百に達してもなお無視できない大きさのバイアスが残っており、「補正」も所詮は有限標本での近似的な緩和に過ぎないことが視覚的にも明らかです。
なお、Student-\(t\) (5) の尖度推定量については別の注意点があります。\(t\) 分布の \(k\) 次モーメントは自由度 \(\nu\) に対して \(k < \nu\) でしか有限になりません。\(\mathrm{df}=5\) では4次モーメントはぎりぎり有限(\(4<5\) )ですが、尖度推定量自身の標本分布のばらつき(漸近分散)を保証するには8次モーメントの有限性が必要であり、\(8 \not< 5\) のため無限大です。実際に \(n\) を増やしながら \(\hat g_2\) の標準偏差を計測すると、
for n in [200, 500, 2000, 8000]:
x = rng.standard_t(df=5, size=(20000, n))
k = stats.kurtosis(x, axis=1, bias=True)
print(n, k.std(), k.std() * np.sqrt(n))
を実行すると std * sqrt(n) が \(n=200\)
で約71、\(n=8000\)
で約1589と、\(n\)
を増やすほど増大する結果が得られました(通常の中心極限定理が成り立つ推定量なら std * sqrt(n) は \(n\)
によらずほぼ一定になるはずです)。これは、Student-\(t\)
(5) のように裾が重すぎる分布では、尖度推定量そのものの収束が標準的な \(1/\sqrt{n}\)
より著しく遅く、バイアス評価にも通常よりずっと多くの反復回数が必要になることを意味します。裾の重い分布の高次モーメント推定は、バイアスだけでなく「そもそも安定して推定できるか」という点でも注意が必要な典型例です。
実務での意味
歪度・尖度の推定バイアスは、金融のボラティリティ分析のように裾の重い分布を扱う場面で特に無視できません。当ブログの
GARCH(1,1)モデルの理論とPython実装
では、株価リターンの条件付き分散をGARCH(1,1)でモデル化していますが、リターン分布自体が正規分布より裾の重い(超過尖度が正の)分布に従うことはよく知られています。標本サイズが数百〜数千程度のウィンドウで尖度を推定してリスク管理の指標に使う場合、本記事で見たとおり bias=False の「補正」を使っても正規分布からの乖離が大きいほど無視できないバイアスが残る可能性があることを念頭に置く必要があります。
まとめ
- \(k\) 次中心モーメント \(\mu_k=\mathbb{E}[(X-\mu)^k]\) から、歪度 \(\gamma_1=\mu_3/\sigma^3\) (非対称性)・超過尖度 \(\gamma_2=\mu_4/\sigma^4-3\) (裾の重さ。ピークの鋭さではない)が定義される。
- 標本分散の naive 推定量 \(\hat\sigma^2=\frac{1}{n}\sum(X_i-\bar X)^2\) は \(\mathbb{E}[\hat\sigma^2]=\frac{n-1}{n}\sigma^2\) となり、任意の分布で厳密に過小評価する。Bessel補正 \(s^2=\frac{1}{n-1}\sum(X_i-\bar X)^2\) は任意の分布で厳密に不偏になる。
- 歪度・尖度の
bias=False補正(\(G_1, G_2\) )は、比の推定量が一般に不偏にならないこと・正規分布を仮定した近似であることの2つの理由から、非正規分布では一般に不偏にならない。モンテカルロ実験では、Gaussianに対する尖度補正はほぼ完全に効く一方、Exponential・Student-\(t\) (5)では\(n\) が数百でも大きなバイアスが残ることを確認した。 - 裾が極端に重い分布(\(t\) 分布の低自由度など)では、高次モーメント推定量自体の収束が遅く、バイアス評価にも大きな反復回数が必要になる。