対数正規分布 完全ガイド — 株価・所得・粒径を説明するべき乗的分布

世界の年収分布を見ると、ほとんどの人は数百万円のあたりに固まっていますが、ごく一部にとんでもない高所得者がいて、平均値を中央値より大きく押し上げています。株価の値動きも同じです。1日のリターンは小さくても、長期間にわたって「掛け算」で積み上がっていくため、上昇はどこまでも伸びる一方、下落はゼロで止まります。砂粒の直径、河川が運ぶ土砂の粒径、Webサーバが配信するファイルのサイズ、機械部品の寿命——これらはどれも、左右対称な釣鐘型(正規分布)ではうまく説明できません。共通するのは「ゼロより大きく、右に長い裾を引き、値が桁で散らばる」という性質です。

こうした量を記述する主役が 対数正規分布(log-normal distribution) です。名前の通り、「対数を取ると正規分布になる」分布で、$\log X$ が正規分布に従うとき $X$ は対数正規分布に従います。正規分布が「独立な要因の 」から自然に現れる(中心極限定理)のに対し、対数正規分布は「独立な要因の 」から現れます。多くの自然・社会現象が乗算的なメカニズムで動いているからこそ、対数正規分布はこれほど広く顔を出すのです。

この分布を理解すると、次のような問いに答えられるようになります。なぜ所得の「平均」と「中央値」はこんなにずれるのか。なぜ株価モデル(ブラック・ショールズ)は対数正規を仮定するのか。「重い裾」を持つ分布の代表格であるパレート分布とは何が違うのか。応用先は金融工学、所得経済学、信頼性工学(部品寿命)、地球科学(粒径分布)、計算機システム(ファイルサイズ・通信トラフィック)と、驚くほど多岐にわたります。

本記事の内容

  • 「積の効果」から見た対数正規分布の直感的な理解
  • 変数変換による確率密度関数の導出(省略なし)
  • 平均 $e^{\mu+\sigma^2/2}$・中央値 $e^{\mu}$・最頻値 $e^{\mu-\sigma^2}$ の乖離の意味
  • 乗法的中心極限定理と、なぜ「積」が対数正規を生むのか
  • 幾何ブラウン運動による株価モデルとの関係
  • 最尤推定(MLE)によるパラメータ推定
  • Pythonでの実装と、所得・粒径・ファイルサイズへの応用
  • パレート分布との違い(裾の重さ)

前提知識

この記事を読む前に、以下の記事を読んでおくと理解が深まります。

直感 — 「足し算」の世界と「掛け算」の世界

正規分布は、多くの小さな独立した要因が 足し合わさる ときに現れます。身長を考えてみましょう。遺伝子の少しずつの効果、栄養、運動、睡眠——こうした無数の要因が「プラス何ミリ、マイナス何ミリ」と加算されて最終的な身長が決まるイメージです。プラスとマイナスが打ち消し合うので、結果は左右対称な釣鐘型に落ち着きます。これが中心極限定理の世界です。

ところが、世の中には「足し算」ではなく「掛け算」で量が決まる現象がたくさんあります。たとえば資産運用です。今日のリターンが $+3\%$、明日が $-2\%$、明後日が $+1\%$……これらは足されるのではなく、掛け合わされて いきます。100万円が $1.03 \times 0.98 \times 1.01 \times \cdots$ と変化していくわけです。

掛け算の世界では何が起きるでしょうか。決定的なのは 非対称性 です。下落は最悪でも「ゼロまで」しか進めません(資産はマイナスにならない)。一方、上昇には上限がありません。$2$ 倍、$10$ 倍、$100$ 倍とどこまでも伸びうる。この「下は止まるが上は青天井」という構造が、右に長い裾を引いた歪んだ分布を生みます。

ここで魔法のような変換が効いてきます。掛け算は、対数を取ると 足し算 になります。

$$ \log(X_1 \times X_2 \times \cdots \times X_n) = \log X_1 + \log X_2 + \cdots + \log X_n $$

つまり、「積の世界」は対数というメガネをかければ「和の世界」に早変わりします。和の世界では中心極限定理によって正規分布が現れる。だから 対数を取ると正規分布になる 量、すなわち対数正規分布が自然に登場するのです。これが本記事を貫く中心的なアイデアです。

それでは、この「対数を取ると正規」という性質を、まず数式できちんと定義していきましょう。

対数正規分布の定義

最初に押さえるべきは、対数正規分布は 正規分布の単なる言い換え だということです。新しい確率変数をゼロから作るのではなく、すでに知っている正規分布を「指数関数で写した先」と考えます。

確率変数 $Z$ が平均 $\mu$、分散 $\sigma^2$ の正規分布 $\mathcal{N}(\mu, \sigma^2)$ に従うとき、

$$ \begin{equation} X = e^{Z} \end{equation} $$

で定義される $X$ が従う分布を 対数正規分布 と呼び、$X \sim \mathrm{Lognormal}(\mu, \sigma^2)$ と書きます。$e^Z$ は常に正なので、$X > 0$ が保証されます。これは所得・株価・粒径など「負になりえない量」を扱うのにぴったりです。

逆に言えば、$X$ が対数正規分布に従うとき、その対数 $\log X = Z$ は正規分布に従います。

$$ \log X \sim \mathcal{N}(\mu, \sigma^2) $$

ここで重要な注意があります。パラメータ $\mu$ と $\sigma$ は、$X$ そのものの平均・標準偏差ではなく、$\log X$ の平均・標準偏差 だということです。「対数の世界での」平均と標準偏差なのです。後で見るように、$X$ 自身の平均はもっと複雑な式 $e^{\mu+\sigma^2/2}$ になります。この区別が対数正規分布を理解する最初の関門です。

下の図は、$\mu=0$ に固定して $\sigma$ を変えたときの密度の形です。

μを0に固定しσを変えたときの対数正規分布の密度。σが大きいほど右に長い裾を引く

図から読み取れることは2つあります。第一に、すべての曲線がゼロから立ち上がり、右に裾を引いています。負の値には密度がありません。第二に、$\sigma$ が大きくなるほどピークが左に寄り、裾が長くなります。$\sigma$ は「対数の世界での散らばり」を表すので、これが大きいと「桁が大きく散らばる」、つまり極端な大きい値が出やすくなるのです。

定義そのものはシンプルですが、$X$ の確率密度関数を具体的に書き下すには「変数変換」というひと手間が必要です。次のセクションで、$Z$ の正規分布から $X$ の密度を導きます。

変数変換による確率密度関数の導出

ゴールは、$X = e^Z$($Z \sim \mathcal{N}(\mu, \sigma^2)$)の確率密度関数 $f_X(x)$ を、正規分布の密度から導くことです。確率変数を関数で変換したとき、その密度がどう変わるかを与える 変数変換の公式 を使います。

単調増加な変換 $x = g(z)$ に対して、密度は次のように変換されます。

$$ f_X(x) = f_Z(z) \left| \frac{dz}{dx} \right| $$

直感的には、$Z$ 軸の小さな区間 $dz$ に詰まっていた確率が、変換後に $X$ 軸の区間 $dx$ に引き伸ばされる(または圧縮される)。その伸縮率 $|dz/dx|$ で密度をスケールし直す、という意味です。確率の総量は保たれなければならないからです。

今回の変換は $x = e^z$ です。これを $z$ について解くと

$$ z = \log x $$

となります。微分の伸縮率(ヤコビアン)を求めるため、$z = \log x$ を $x$ で微分します。

$$ \frac{dz}{dx} = \frac{d}{dx}\log x = \frac{1}{x} $$

$x > 0$ なので絶対値はそのまま $1/x$ です。一方、$Z$ の密度は正規分布なので

$$ f_Z(z) = \frac{1}{\sqrt{2\pi}\,\sigma} \exp\!\left(-\frac{(z-\mu)^2}{2\sigma^2}\right) $$

です。ここで $z = \log x$ を代入すると、$f_Z(\log x)$ が得られます。あとは変数変換の公式に $f_Z(\log x)$ と $|dz/dx| = 1/x$ を掛け合わせるだけです。

$$ \begin{equation} f_X(x) = \frac{1}{\sqrt{2\pi}\,\sigma}\exp\!\left(-\frac{(\log x – \mu)^2}{2\sigma^2}\right)\cdot \frac{1}{x} \end{equation} $$

整理すると、対数正規分布の確率密度関数が得られます。

$$ \begin{equation} f_X(x) = \frac{1}{x\,\sigma\sqrt{2\pi}}\exp\!\left(-\frac{(\log x – \mu)^2}{2\sigma^2}\right), \quad x > 0 \end{equation} $$

この式を眺めると、正規分布の密度との関係がよく見えます。指数の中身は、変数を $\log x$ に置き換えただけの正規分布そのものです。それに前から $1/x$ という因子が掛かっている。この $1/x$ こそ、変数変換のヤコビアンであり、分布を右に歪ませる主犯です。$x$ が小さいと $1/x$ が大きくなり、密度を押し上げる。だからピークは左に寄り、裾は右に伸びるのです。

このヤコビアンの効果を、シミュレーションで実感してみましょう。次の図は、正規分布から標本を生成し、それを $X = e^Z$ で変換した結果(左)と、その対数 $\log X$ を取り直した結果(右)です。

左は対数正規分布に従うXのヒストグラムと理論密度、右はlog Xを取ると正規分布に戻ることを示す

左のヒストグラムは右に歪んだ対数正規の形をしており、導出した理論密度(青線)とぴったり一致しています。一方、右のように対数を取り直すと、見事に左右対称な正規分布に戻ります。「対数を取ると正規」という定義が、データの上でも成り立っていることが確認できます。

密度関数が手に入ったので、次はこの分布を要約する代表値——平均・中央値・最頻値——を求めましょう。対数正規分布では、これら3つが一致しないところに面白さがあります。

平均・中央値・最頻値の乖離

正規分布では、平均・中央値・最頻値はすべて同じ点(対称軸)に重なります。ところが対数正規分布では、この3つがきれいに分かれます。これは右歪みの直接的な帰結であり、所得統計で「平均年収」と「中央値年収」がずれる理由そのものです。

まず 中央値 から見ましょう。これが一番素直です。$X = e^Z$ で $Z$ は正規分布なので、$Z$ の中央値は $\mu$ です(正規分布は対称なので中央値=平均)。指数関数 $e^z$ は単調増加なので、変換しても順序は保たれ、$X$ の中央値は $e^\mu$ になります。

$$ \begin{equation} \mathrm{Median}[X] = e^{\mu} \end{equation} $$

次に 平均(期待値) です。これは積分で計算する必要があります。

$$ \mathbb{E}[X] = \mathbb{E}[e^Z] = \int_{-\infty}^{\infty} e^z \cdot \frac{1}{\sqrt{2\pi}\,\sigma}\exp\!\left(-\frac{(z-\mu)^2}{2\sigma^2}\right) dz $$

指数関数同士をまとめるため、指数の中身を整理します。$e^z$ と正規分布の指数部を合わせると

$$ z – \frac{(z-\mu)^2}{2\sigma^2} $$

になります。この式を $z$ について 平方完成 します。$(z-\mu)^2 = z^2 – 2\mu z + \mu^2$ を使って分母を払いながら整理すると、

$$ z – \frac{(z-\mu)^2}{2\sigma^2} = -\frac{1}{2\sigma^2}\left[(z-\mu)^2 – 2\sigma^2 z\right] = -\frac{1}{2\sigma^2}\left[z – (\mu+\sigma^2)\right]^2 + \mu + \frac{\sigma^2}{2} $$

となります。途中、$-\,2\sigma^2 z$ の項を $(z-\mu)$ の中に押し込んで平方完成し、はみ出した定数 $\mu + \sigma^2/2$ を外に出しました。この定数項は $z$ に依存しないので積分の外に出せます。

$$ \mathbb{E}[X] = e^{\mu + \sigma^2/2}\int_{-\infty}^{\infty} \frac{1}{\sqrt{2\pi}\,\sigma}\exp\!\left(-\frac{[z-(\mu+\sigma^2)]^2}{2\sigma^2}\right) dz $$

積分の中身は、平均が $\mu+\sigma^2$ に移動しただけの正規分布の密度です。正規分布の全積分は $1$ なので、積分はちょうど $1$ になります。したがって

$$ \begin{equation} \mathbb{E}[X] = e^{\mu + \sigma^2/2} \end{equation} $$

が得られます。中央値 $e^\mu$ に対し、平均は $e^{\sigma^2/2}$ 倍だけ大きい。$\sigma$ が大きい(散らばりが大きい)ほど、平均は中央値より上に離れていきます。これが、少数の高所得者が平均を押し上げる現象の正体です。

最後に 最頻値(モード) です。密度 $f_X(x)$ を最大にする $x$ を求めます。$\log f_X(x)$ を微分してゼロと置くのが楽です。

$$ \log f_X(x) = -\log x – \frac{(\log x – \mu)^2}{2\sigma^2} + \text{(定数)} $$

これを $x$ で微分して $0$ と置きます。

$$ \frac{d}{dx}\log f_X(x) = -\frac{1}{x} – \frac{\log x – \mu}{\sigma^2}\cdot\frac{1}{x} = 0 $$

両辺に $x$(正)を掛けると $-1 – (\log x – \mu)/\sigma^2 = 0$ となり、これを $\log x$ について解くと $\log x = \mu – \sigma^2$、すなわち

$$ \begin{equation} \mathrm{Mode}[X] = e^{\mu – \sigma^2} \end{equation} $$

です。3つを並べると、つねに

$$ \underbrace{e^{\mu-\sigma^2}}_{\text{最頻値}} < \underbrace{e^{\mu}}_{\text{中央値}} < \underbrace{e^{\mu+\sigma^2/2}}_{\text{平均}} $$

という大小関係が成り立ちます($\sigma > 0$ のとき指数の中身がこの順に大きくなるため)。下の図は $\mu=0,\ \sigma=0.7$ の場合に3つの位置を密度上に示したものです。

対数正規分布の密度上に最頻値・中央値・平均を縦線で示した図。右に行くほど大きい

図を見ると、密度のピーク(最頻値 $\approx 0.61$)が一番左、中央値 $1.00$ が真ん中、平均 $1.28$ が一番右にあります。「一番ありふれた値」「ちょうど真ん中の値」「平均値」がこれだけ離れるのです。所得を語るとき、平均年収だけを見ると実感とずれるのは、平均が右の裾に引っ張られているからだと、この図から納得できます。

ついでに、対数正規分布の 分散 も結果だけ示しておきます(平均と同様、$\mathbb{E}[X^2] = e^{2\mu+2\sigma^2}$ を計算して導けます)。

$$ \begin{equation} \mathrm{Var}[X] = \left(e^{\sigma^2} – 1\right)e^{2\mu + \sigma^2} \end{equation} $$

この重い裾を、正規分布と並べて視覚的に比べてみましょう。次のセクションでは「裾の重さ」を片対数プロットで観察します。

右歪みと重い裾

対数正規分布の最大の特徴は 重い裾(heavy tail) です。これは「平均から大きく外れた値が、正規分布よりずっと出やすい」という意味です。金融でいう「テールリスク」、保険でいう「巨大損害」、システム工学でいう「外れ値トラフィック」——いずれもこの重い裾が問題になります。

「重い」とはどのくらいでしょうか。直感を養うために、平均と分散をぴったり一致させた正規分布と対数正規分布を並べてみます。同じ平均・同じばらつきなのに、裾の振る舞いはまったく違います。

平均と分散を一致させた正規分布と対数正規分布の比較。左は通常スケール、右は片対数スケールで対数正規の裾が重いことを示す

左の通常スケールでは、対数正規が右に裾を引いているのは分かりますが、裾の「重さ」の違いははっきり見えません。本領を発揮するのは右の片対数スケール(縦軸が対数)です。正規分布の密度は二次関数的に急降下し、すぐに数値の底($10^{-7}$)に達して画面から消えます。一方、対数正規の裾はずっと緩やかに減衰し、$x=12$ でもまだ無視できない密度を保っています。

なぜこれほど違うのか。正規分布の密度は $\exp(-x^2/2\sigma^2)$ のように $x$ の2乗 で減衰します。対数正規の密度は、指数の中身が $(\log x – \mu)^2$、つまり $\log x$ の2乗 で減衰します。$\log x$ は $x$ よりはるかにゆっくり増えるので、裾の減衰も格段に遅い。「2乗で効くのが $x$ か $\log x$ か」という、たったこれだけの違いが、裾の重さの天と地ほどの差を生むのです。

この重い裾は「異常」ではなく、多くの現象でむしろ自然です。なぜなら、対数正規分布は「積」から生まれる分布だからです。次のセクションで、その生成メカニズム——乗法的中心極限定理——を見ていきます。

乗法的中心極限定理

正規分布が中心極限定理によって「和の極限」として現れるなら、対数正規分布はどんな極限として現れるのか。答えは 積の極限 です。これを 乗法的中心極限定理(multiplicative CLT) と呼びます。

設定はこうです。$X_1, X_2, \dots, X_n$ を、すべて正の値を取る独立同分布の確率変数とします(各 $X_i$ が何分布かは問いません)。これらの積を考えます。

$$ P_n = X_1 \times X_2 \times \cdots \times X_n = \prod_{i=1}^{n} X_i $$

両辺の対数を取ると、積は和に変わります。

$$ \log P_n = \sum_{i=1}^{n} \log X_i $$

ここで $Y_i = \log X_i$ と置けば、右辺は独立同分布な確率変数 $Y_i$ の です。$Y_i$ の平均と分散が有限なら、通常の中心極限定理がそのまま適用できます。$n$ が大きいとき、

$$ \log P_n = \sum_{i=1}^{n} Y_i \xrightarrow{\ n \to \infty\ } \mathcal{N}\!\left(n\mu_Y,\ n\sigma_Y^2\right) $$

つまり $\log P_n$ は正規分布に近づきます。$\log P_n$ が正規分布なら、定義より $P_n$ は 対数正規分布 に近づく。これが乗法的中心極限定理の中身です。証明は「対数を取って通常のCLTに帰着させる」だけで、本質的に新しいことは何もしていません。

下の図は、$[0.5, 1.5]$ 上の一様分布から取った因子を $k=1,2,5,30$ 個掛け合わせたときの、積の分布の変化です。

1個、2個、5個、30個の正の因子を掛け合わせたときの積の分布。個数が増えるほど対数正規分布に近づく

$k=1$ では元の一様分布のまま平坦ですが、$k=2,5$ と因子を増やすにつれて右に歪んだ山が現れ、$k=30$ ではきれいな対数正規の形(赤線のフィット)になっています。たった2個の積でも、もう対称性が崩れ始めているのが分かります。掛け算が積み重なる現象では、わずかな回数でも対数正規が顔を出すのです。

この「積から対数正規が生まれる」原理は、加法版(中心極限定理 → 正規分布)と完全に対をなします。下の概念図でその対応を整理しておきましょう。

独立な要因の和は中心極限定理により正規分布に、独立な要因の積は乗法的中心極限定理により対数正規分布になることを示す概念図

上段が「和 → 正規」、下段が「積 → 対数正規」。両者は対数というメガネを通せば同じものです。自然界・経済界の多くの量が掛け算的に決まる(成長率、比例的な変動、連鎖的な効果)ため、対数正規分布は正規分布と並ぶ「基本分布」として遍在します。

掛け算が時間方向に連続的に積み重なる、その極限が金融で最も重要なモデル——幾何ブラウン運動です。次に、株価がなぜ対数正規分布に従うのかを見ていきます。

幾何ブラウン運動と株価

株価モデルの定番である 幾何ブラウン運動(Geometric Brownian Motion, GBM) は、対数正規分布の連続時間版そのものです。ブラック・ショールズのオプション価格理論の土台でもあります。

なぜ株価に「幾何」が付くのか。それは、株価の変動が 絶対額 ではなく 比率(パーセント) で起きるからです。1万円の株が100円動くのと、100万円の株が100円動くのは意味が違う。重要なのは「何パーセント動いたか」です。比率の変化は掛け算で積み重なるので、ここに対数正規が現れます。

GBMでは、株価 $S(t)$ の微小変化を次の確率微分方程式で記述します。

$$ \frac{dS}{S} = \mu\, dt + \sigma\, dW $$

左辺 $dS/S$ は「リターン(変化率)」です。右辺の $\mu\,dt$ は決定的なドリフト(平均的な成長)、$\sigma\,dW$ はランダムな変動($W$ はブラウン運動、$\sigma$ はボラティリティ)を表します。この方程式を伊藤の補題を使って解くと(詳細は確率微分方程式の理論に譲ります)、時刻 $T$ での株価は

$$ \begin{equation} S(T) = S(0)\exp\!\left[\left(\mu – \frac{\sigma^2}{2}\right)T + \sigma W(T)\right] \end{equation} $$

と書けます。ここで $W(T) \sim \mathcal{N}(0, T)$ なので、指数の中身は正規分布です。

$$ \log \frac{S(T)}{S(0)} \sim \mathcal{N}\!\left(\left(\mu – \tfrac{\sigma^2}{2}\right)T,\ \sigma^2 T\right) $$

$\log S(T)$ が正規分布なので、$S(T)$ は 対数正規分布 に従います。株価がゼロより下がらず、上には青天井で伸びる——という冒頭の直感が、ここで数式として実を結びました。

注目すべきは、対数の平均にある $-\sigma^2/2$ という補正項です。これはボラティリティ $\sigma$ が大きいほど効いてくる「ボラティリティ・ドラッグ」と呼ばれる項で、リターンの平均(算術平均)と複利成長率(幾何平均)のずれを表します。前のセクションで導いた平均と中央値の乖離 $e^{\sigma^2/2}$ と、まさに同じ起源です。

下の図は、$S(0)=100$、年率ドリフト $\mu=0.08$、ボラティリティ $\sigma=0.25$ で5年分の株価パスを60本シミュレーションし、満期 $S(T)$ の分布を理論の対数正規と比べたものです。

幾何ブラウン運動による60本の株価パスと、満期株価S(T)が対数正規分布に従うことを示すヒストグラム

左のパスを見ると、多くは控えめに推移する一方、一部の経路が大きく上昇しています。これが右歪みの源です。右のヒストグラムは満期株価 $S(T)$ の分布で、理論の対数正規(赤線)とよく一致しています。株価が対数正規に従うという仮定が、シンプルな乗法的モデルから自然に出てくることが確認できます。

理論が整ったので、次は実データから $\mu$ と $\sigma$ を推定する方法——最尤推定を見ていきます。

最尤推定(MLE)

手元に観測データ $x_1, x_2, \dots, x_n$ があり、これが対数正規分布から得られたと考えるとき、パラメータ $\mu, \sigma$ をどう推定すればよいでしょうか。最尤推定(MLE) を使います。

うれしいことに、対数正規分布のMLEは「対数を取れば正規分布のMLE」に帰着するので、結果は驚くほど簡単です。実際に導いてみましょう。対数尤度は密度の対数の和です。

$$ \ell(\mu, \sigma) = \sum_{i=1}^{n}\log f_X(x_i) = \sum_{i=1}^{n}\left[-\log x_i – \log\sigma – \frac{1}{2}\log(2\pi) – \frac{(\log x_i – \mu)^2}{2\sigma^2}\right] $$

$\mu$ で偏微分してゼロと置きます。$x_i$ や定数は $\mu$ に依存しないので消え、残るのは最後の項だけです。

$$ \frac{\partial \ell}{\partial \mu} = \sum_{i=1}^{n}\frac{\log x_i – \mu}{\sigma^2} = 0 $$

これを $\mu$ について解くと、$\log x_i$ の平均が出てきます。

$$ \begin{equation} \hat{\mu} = \frac{1}{n}\sum_{i=1}^{n}\log x_i \end{equation} $$

次に $\sigma$ で偏微分してゼロと置きます。$-\log\sigma$ の微分と最後の項の微分を合わせると

$$ \frac{\partial \ell}{\partial \sigma} = \sum_{i=1}^{n}\left[-\frac{1}{\sigma} + \frac{(\log x_i – \mu)^2}{\sigma^3}\right] = 0 $$

両辺に $\sigma^3/n$ を掛けて整理すると、$\sigma^2$ について解けます。

$$ \begin{equation} \hat{\sigma}^2 = \frac{1}{n}\sum_{i=1}^{n}(\log x_i – \hat{\mu})^2 \end{equation} $$

結論はシンプルです。データの対数を取って、その標本平均と標本分散を計算するだけ。$\hat\mu$ は $\log x_i$ の平均、$\hat\sigma^2$ は $\log x_i$ の分散です。正規分布のMLE(標本平均と標本分散)と完全に同じ形をしています。

下の図は、真値 $\mu=1.0,\ \sigma=0.6$ の対数正規分布から標本サイズ $N$ を変えてデータを生成し、推定値が真値に収束する様子を示したものです。

標本サイズを増やしたときの最尤推定量μ̂とσ̂が真値に収束する様子

$N$ が小さいうちは推定値が真値から大きくばらつきますが、$N$ が増えるにつれて $\hat\mu, \hat\sigma$ ともに真値(赤の破線)にぴったり収束します。$N=10000$ では $\hat\mu \approx 1.01$、$\hat\sigma \approx 0.60$ と、ほぼ真値を当てています。MLEが一致推定量である(標本が増えれば真値に収束する)ことが数値的にも確認できます。

理論とパラメータ推定が揃いました。ここからはPythonで実装し、所得・粒径・ファイルサイズといった実応用に当てはめていきましょう。

Pythonでの実装

まず、対数正規分布の密度・代表値・乱数生成を SciPy で扱う基本を確認します。注意したいのは SciPy のパラメータ化です。scipy.stats.lognorm では、$\sigma$ を形状パラメータ s に、$e^\mu$ を scale に対応させます。

import numpy as np
from scipy import stats

mu, sigma = 0.0, 0.7
dist = stats.lognorm(s=sigma, scale=np.exp(mu))  # s=σ, scale=e^μ

# 代表値(理論値)
median = np.exp(mu)
mean = np.exp(mu + sigma**2 / 2)
mode = np.exp(mu - sigma**2)
var = (np.exp(sigma**2) - 1) * np.exp(2 * mu + sigma**2)

print(f"中央値  e^μ        = {median:.4f}")
print(f"平均    e^(μ+σ²/2) = {mean:.4f}")
print(f"最頻値  e^(μ-σ²)   = {mode:.4f}")
print(f"分散              = {var:.4f}")

# SciPyの値と一致するか確認
print("SciPyの平均との一致:", np.isclose(dist.mean(), mean))
print("SciPyの分散との一致:", np.isclose(dist.var(), var))
print("SciPyの中央値との一致:", np.isclose(dist.median(), median))

このコードを実行すると、中央値 $1.0000$、平均 $1.2776$、最頻値 $0.6126$ と表示され、最頻値 < 中央値 < 平均の順序が確認できます。また、手で計算した代表値が SciPy の dist.mean() などと一致することから、導出した公式が正しいことを保証できます。$\sigma=0.7$ でも平均は中央値より約 $28\%$ 大きく、右歪みの効きが見て取れます。

次に、定義の核心である「対数を取ると正規分布になる」性質を、乱数で検証します。

import numpy as np

rng = np.random.default_rng(1)
mu, sigma = 0.0, 0.5
n = 200000

# 方法1: 正規分布を生成して指数を取る
z = rng.normal(mu, sigma, n)
x1 = np.exp(z)

# 方法2: numpyの対数正規乱数を直接使う
x2 = rng.lognormal(mu, sigma, n)

# 対数を取った標本の平均・標準偏差は μ, σ に近いはず
print(f"log(x1) の平均 = {np.log(x1).mean():.4f}  (理論 μ = {mu})")
print(f"log(x1) の標準偏差 = {np.log(x1).std():.4f}  (理論 σ = {sigma})")
print(f"x1 の標本平均 = {x1.mean():.4f}  (理論 = {np.exp(mu + sigma**2/2):.4f})")
print(f"x2 の標本平均 = {x2.mean():.4f}")

出力から、log(x1) の標本平均と標本標準偏差がそれぞれ $\mu=0$、$\sigma=0.5$ にきわめて近いことが分かります。これは「$X$ の対数が正規分布に従う」という定義の直接的な確認です。さらに $X$ 自身の標本平均が理論値 $e^{\mu+\sigma^2/2} \approx 1.1331$ と一致することから、平均の公式も裏付けられます。指数を取る方法(方法1)と直接生成(方法2)が同じ分布を与えることも確認できました。

続いて、最尤推定を実装します。前節で導いたとおり、「対数の標本平均と標本標準偏差」を計算するだけです。

import numpy as np
from scipy import stats

rng = np.random.default_rng(5)
mu_true, sigma_true = 1.0, 0.6
data = rng.lognormal(mu_true, sigma_true, 5000)

# 手計算のMLE: 対数の標本平均と標本標準偏差
log_data = np.log(data)
mu_hat = log_data.mean()
sigma_hat = log_data.std(ddof=0)
print(f"手計算MLE:  μ̂ = {mu_hat:.4f},  σ̂ = {sigma_hat:.4f}")

# SciPyのfitと比較(floc=0で位置を0に固定)
s_fit, loc_fit, scale_fit = stats.lognorm.fit(data, floc=0)
print(f"SciPy fit:  σ̂ = {s_fit:.4f},  μ̂ = log(scale) = {np.log(scale_fit):.4f}")

実行すると、手計算のMLE($\hat\mu \approx 1.00$、$\hat\sigma \approx 0.60$)と SciPy の lognorm.fitfloc=0 で位置を固定)の結果がほぼ一致します。真値 $\mu=1.0,\ \sigma=0.6$ もよく当てられています。「対数を取って正規分布のMLEを使う」という方針が、SciPy の汎用フィットと同じ答えを出すことが確認できました。

これらの基本が押さえられたので、いよいよ実応用——所得分布へのフィットに進みましょう。

応用 — 所得・粒径・ファイルサイズ・寿命

対数正規分布は、応用の宝庫です。代表的な4つの分野を挙げます。

  • 所得・資産: 年収や世帯資産は対数正規によく従います。少数の高所得者が右の裾を作り、平均が中央値より大きくなります。
  • 粒径分布: 砂・粉体・エアロゾルの粒径は、粉砕や凝集が「比率的」に進むため対数正規になります(コルモゴロフの粉砕理論)。
  • ファイルサイズ・通信トラフィック: Webファイルのサイズ、ネットワークパケットの間隔なども対数正規でよくモデル化されます。
  • 故障時間(寿命): 部品の疲労寿命や材料の破壊時間は、損傷が乗法的に蓄積するため対数正規(あるいはワイブル)に従います。

ここでは、最も身近な所得分布を例に取ります。仮想的な年収データ(万円)を生成し、最尤推定で対数正規をフィットしてみましょう。

import numpy as np
from scipy import stats

rng = np.random.default_rng(4)
# 中央値400万円付近の年収データを対数正規で生成(単位: 万円)
income = rng.lognormal(np.log(400), 0.55, 20000)

# MLEでフィット(位置を0に固定)
s_hat, loc_hat, scale_hat = stats.lognorm.fit(income, floc=0)
median = scale_hat                      # 中央値 = e^μ = scale
mean = scale_hat * np.exp(s_hat**2 / 2) # 平均 = e^(μ+σ²/2)

print(f"推定 σ̂ = {s_hat:.3f},  scale (= 中央値) = {scale_hat:.1f} 万円")
print(f"中央値 = {median:.0f} 万円")
print(f"平均   = {mean:.0f} 万円")
print(f"平均は中央値の {mean/median:.2f} 倍")

実行すると、中央値が約 $402$ 万円、平均が約 $468$ 万円と推定され、平均が中央値の約 $1.16$ 倍であることが分かります。実際の所得統計でも「平均年収」が「中央値年収」より2〜3割高く出るのは、まさにこの右歪みのためです。「平均だけ見ると豊かに見えるが、中央値で見ると実感に近い」という現象を、対数正規分布は定量的に説明します。

この所得データへのフィットを可視化したのが次の図です。

仮想的な年収データのヒストグラムに対数正規分布をフィットし、平均が中央値より右にあることを示す図

ヒストグラム(標本)にフィットした対数正規(青線)がよく重なっており、平均(赤の破線)が中央値(緑の破線)より右にあることが一目で分かります。所得という社会データが、わずか2つのパラメータ $\mu, \sigma$ できれいに記述できるのは、所得形成が乗法的なプロセス(昇給率、投資リターンなど比率の積み重ね)であることの反映です。

最後に、対数正規としばしば混同される「もう一つの重い裾の分布」——パレート分布との違いを整理しておきましょう。

パレート分布との違い

「重い裾を持つ右歪みの分布」というと、対数正規分布とパレート分布が双璧です。所得分布をめぐっては「対数正規か、パレートか」という長年の議論すらあります。両者は似て見えますが、裾の重さの本質が違います

パレート分布の密度は $f(x) \propto x^{-(\alpha+1)}$ という べき乗則(power law) に従います。これを生存関数($P(X>x)$)で見ると $P(X>x) \propto x^{-\alpha}$ となり、両対数プロット(縦軸・横軸ともに対数)で 完全な直線 になります。これがべき乗則の指紋です。

対数正規分布はどうでしょうか。生存関数を両対数で描くと、最初は直線に近く見えますが、遠くの裾で必ず 下に折れ曲がります。なぜなら、対数正規の対数密度は $-(\log x)^2$ に比例し、$\log x$ の2乗で減衰するからです。べき乗則($\log x$ の1乗で減衰)より、ずっと速く落ちます。つまり対数正規はパレートより「裾が軽い」。極端な巨大値の出やすさで言えば、パレートのほうが上です。

下の図は、両者の生存関数を両対数スケールで比較したものです。

対数正規分布とパレート分布の生存関数を両対数スケールで比較。パレートは直線、対数正規は下に折れ曲がる

パレート(紫の破線)はきれいな直線ですが、対数正規(青線)は途中から下に湾曲し、急速に小さくなっています。実データの裾を両対数で描いて「直線かどうか」を見るのは、どちらの分布が適切かを判定する実用的な方法です。直線ならパレート(べき乗則)、下に折れるなら対数正規が疑われます。

生成メカニズムの違いも重要です。対数正規は「乗法的な変動(比率の積)」から、パレートは「比例的な成長 + ランダムな停止(ユール過程・優先的選択)」から生まれます。どちらも乗法的な要素を含みますが、停止・リセットの構造があるかどうかが分かれ目です。所得の中〜低位は対数正規、最上位の超富裕層はパレート、という「合わせ技」のモデルが実証的には支持されています。

より詳しいパレート分布の性質は、別記事で解説しています。

パレート分布とべき乗則をわかりやすく解説
80:20の法則を生むパレート分布の定義・性質・べき乗則との関係を解説します。

まとめ

本記事では、対数正規分布について直感・導出・応用の三方向から解説しました。

  • 定義: $\log X$ が正規分布に従うとき $X$ は対数正規分布に従う。正規分布を指数関数で写した分布で、つねに正の値を取る
  • 密度の導出: 変数変換のヤコビアン $1/x$ が分布を右に歪ませる。密度は $\frac{1}{x\sigma\sqrt{2\pi}}\exp(-(\log x-\mu)^2/2\sigma^2)$
  • 代表値の乖離: 最頻値 $e^{\mu-\sigma^2}$ < 中央値 $e^{\mu}$ < 平均 $e^{\mu+\sigma^2/2}$。右歪みのため平均が中央値より大きい
  • 乗法的中心極限定理: 正の確率変数の積は対数正規に近づく。「和 → 正規」の双子である「積 → 対数正規」
  • 幾何ブラウン運動: 株価は比率で変動するため対数正規に従う。ブラック・ショールズの基礎
  • 最尤推定: 「データの対数を取り、その標本平均と標本分散を計算する」だけ
  • 応用とパレートとの違い: 所得・粒径・ファイルサイズ・寿命に現れる。パレートは両対数で直線(べき乗則)、対数正規は下に折れる(裾はやや軽い)

対数正規分布を理解する鍵は、「足し算の世界(正規分布)」と「掛け算の世界(対数正規分布)」を対比して捉えることです。対数というメガネをかければ両者は同じものになる——この視点は、確率分布全体を見渡すうえで強力な羅針盤になります。

次のステップとして、以下の記事も参考にしてください。