変数変換とヤコビアン:「面積を1に保つための係数」だった【第4回】

はじめに

第3回では分散を扱いました。今回は第4章「変数変換」から、ヤコビアンを中心に見ていきます。

この章は、過去に一度つまずいた記憶があります。「ヤコビアン」という名前と ddyg1(y)\left|\frac{d}{dy}g^{-1}(y)\right| という見た目に圧倒されて、何のための量なのか分からないまま公式だけ眺めていました。

結論を先に書くと、ヤコビアンは「確率の総量を1に保つための調整係数」でした。それだけです。

なお筆者は統計の専門家ではありません。理解の誤りが含まれる可能性があるため、試験対策として読む場合は必ず公式テキストで確認してください。

TL;DR

  • 身長も体重も正規分布なのに、BMI(体重÷身長²)は歪む。だから「変換後の分布」を求める必要がある
  • 分布が変わる理由は、変換で区間の幅が伸び縮みするから
  • 密度は「単位幅あたりの確率」なので、幅が変われば高さも変えないと辻褄が合わない
  • ヤコビアンが保つのは「全体の面積=1」だけ。平均も標準偏差も変わる
  • 一般形は「元の密度を引く」と「幅の伸縮を補正する」を1行で書いたもの

統計の用語が出てくるので、先に用語集を置いておきます。用語を知っている方は「こういう困りごとから始まる」まで飛ばしてください。

用語集

この記事の鍵になる2つだけ挙げておきます。後で具体例つきで説明するので、いま覚える必要はありません。

用語記号意味
密度関数fX(x)f_X(x)変数Xの密度関数に、値xを入れたもの。「x付近の密集度」
ヤコビアンdxdy\left\lvert \dfrac{dx}{dy} \right\rvert変換による幅の伸縮率。密度を補正する係数

fX(x)f_X(x) の添字 XX は「どの変数の話か」、括弧の (x)(x) は「代入する値」を表します。変換後の変数Yには fY(y)f_Y(y) という別の関数を使います。

こういう困りごとから始まる

身長の分布はわかっている。体重の分布もわかっている。 ——では、BMI(体重 ÷ 身長²)の分布はどうなるのか?

「元が正規分布なら、BMIも正規分布だろう」と考えたくなります。しかし違います。

身長・体重・BMIの分布。身長と体重は正規分布だがBMIは右に歪む

身長と体重はどちらも歪度がほぼ0(左右対称)ですが、BMIは歪度+0.175で右に裾が伸びています。割り算や2乗を通すと形が変わるのです。

だから「変換後の分布を知りたい」という需要が生まれます。これが第4章の存在理由でした。

実務でもよく起きます。単価×個数で売上を出す、対数を取る、比率にする——どれも変換なので、元の分布の性質はそのまま引き継がれません。

まず記号の意味を確認する

本題に入る前に、fX(x)f_X(x) という記号を整理しておきます。私はここが曖昧なまま公式を眺めていたので、つまずいたのだと思います。

密度関数の記号の意味を示す2枚組の図。左は身長の密度曲線で、横軸が身長x(150〜190cm)、縦軸が密度f_X(x)。曲線上の3点にf_X(164)=0.0403、f_X(170)=0.0665(ピーク)、f_X(182)=0.0090と値が書き込まれ、添字のXは「どの変数の話か」、括弧の中のxは「代入する値」だと注記されている。右は同じ曲線の170cm付近に幅1cmの短冊を赤く塗った図で、高さ0.0665×幅1cm=面積0.0665が確率になることを示し、密度そのものは確率ではないと注記されている

左の図が fX(x)f_X(x) の意味です。xを入れると密度が返ってくる関数で、fX(170)=0.0665f_X(170) = 0.0665 は「170cm付近の密集度が0.0665」を表します。

密度は確率ではない

ここが重要な注意点です。fX(170)=0.0665f_X(170) = 0.0665 は「170cmの人が6.65%いる」という意味ではありません。連続的な値では「ちょうど170.000…cm」の確率は0になってしまいます。

密度は「単位幅あたりの確率」で、幅を掛けて初めて確率になります。

確率密度×\text{確率} \approx \text{密度} \times \text{幅}

実際に確かめました。

区間実測した確率密度 × 幅
169.5〜170.5cm1cm0.06650.0665 × 1 = 0.0665
169.95〜170.05cm0.1cm0.006650.0665 × 0.1 = 0.00665

一致します。そしてこの性質が、ヤコビアンが必要な理由そのものでした。密度が「単位幅あたりの量」だから、変換で幅が変わったら密度も変わるのです。

核心:変換で「区間の幅」が変わる

なぜ分布の形が変わるのか。もっと単純な例で見ます。0〜1の一様分布を Y=X2Y = X^2 に変換します。

変数変換で区間の幅が変わることを示す3パネルの図。左の大きなパネルは横軸が元の変数X(0〜1の一様分布)、縦軸が変換後のY=X²で、放物線に沿って幅0.10の区間を3つ色分けして置いている。X側はどれも幅0.10なのに、Y側の幅は0.0〜0.1の赤が0.01、0.45〜0.55のオレンジが0.10、0.9〜1.0の緑が0.19と変わり、狭くなった区間ほどデータが密集すると注記されている。右上は変換前のXのヒストグラムで密度1の平らな分布、右下は変換後のYのヒストグラムで0付近に密度4以上まで集中し、理論値1/(2√y)の黒い曲線と重なっている

左の図を見てください。X側で同じ幅0.1の区間が、Y側では違う幅になっています。

X側の区間(幅0.1)Y側の区間Y側の幅
0.0 〜 0.10.00 〜 0.010.01(1/10に潰れる)
0.45 〜 0.550.20 〜 0.300.10(そのまま)
0.9 〜 1.00.81 〜 1.000.19(1.9倍に広がる)

200万個のデータで、各区間に入る個数を数えました。

区間X(変換前)Y(変換後)
0.0 〜 0.1200,343個632,920個
0.4 〜 0.5199,572個149,476個
0.9 〜 1.0199,874個102,530個

理屈はこうです。X[0.0,0.1]X \in [0.0, 0.1] という幅0.1の区間は、2乗すると幅0.01に潰れます。データの個数は変わりません。 同じ数のデータが1/10の狭さに押し込まれるので、密度は10倍に濃くなる

逆に X[0.9,1.0]X \in [0.9, 1.0] は1.9倍に広がるので、密度は薄くなります。

ヤコビアンは伸縮率の補正にすぎない

この伸縮率は、変換の傾き(微分)そのものです。

dydx=2x\frac{dy}{dx} = 2x

密度は「個数 ÷ 幅」なので、幅が 2x2x 倍になれば密度は 1/(2x)1/(2x) 倍になります。つまり、

fY(y)=fX(x)×1dy/dx=12x=12yf_Y(y) = f_X(x) \times \frac{1}{\lvert dy/dx \rvert} = \frac{1}{2x} = \frac{1}{2\sqrt{y}}

シミュレーションで検算しました。

yy実測した密度理論値 1/(2y)1/(2\sqrt{y})
0.015.1775.000
0.250.9951.000
0.810.5640.556

一致しました。上の図の右下でも、ヒストグラムに理論曲線がぴったり重なっています。

f_X と f_Y は別の関数

添字が違うのは、別の関数だからです。同じデータでも「Xの目線」と「Yの目線」で違う形になります。

f_Xとf_Yの比較。同じデータでも座標が違うと密度の分布が違って見える

変換前 X の目線変換後 Y の目線
密度関数fX(x)=1f_X(x) = 1fY(y)=12yf_Y(y) = \dfrac{1}{2\sqrt{y}}
x=0.5 / y=0.251.01.0
x=0.2 / y=0.041.02.50
x=0.8 / y=0.641.00.62

Xの目線ではどこも1で平らですが、Yの目線では場所によって2.50や0.62に変わります。データは同じなのに、見る座標が違うと密度の分布が違って見える——これが変数変換の本質でした。

一般形を分解する

ここまで分かれば、公式も自然に読めます。

fY(y)=fX ⁣(g1(y))×ddyg1(y)f_Y(y) = f_X\!\left(g^{-1}(y)\right) \times \left\lvert \frac{d}{dy}g^{-1}(y) \right\rvert

一般形の分解と具体例

式は2つのパーツの掛け算です。

パーツ役割
fX ⁣(g1(y))f_X\!\left(g^{-1}(y)\right)① 元の密度を引いてくる
ddyg1(y)\left\lvert \frac{d}{dy}g^{-1}(y) \right\rvert② 幅の伸縮を補正する(=ヤコビアン)

日本語に訳すとこうです。

知りたい y での密度は、元をたどった位置 x での密度に、幅の変化率を掛けたもの

y=0.25y = 0.25 の場合を追います。

  1. 元をたどるg1(0.25)=0.25=0.5g^{-1}(0.25) = \sqrt{0.25} = 0.5  ←「y=0.25 になったのは、元が x=0.5 だったから」
  2. そこでの密度を調べるfX(0.5)=1f_X(0.5) = 1  ←一様分布なのでどこでも1
  3. 幅の変化率を計算するddyy=120.25=1.0\left\lvert \frac{d}{dy}\sqrt{y} \right\rvert = \frac{1}{2\sqrt{0.25}} = 1.0
  4. 掛けるfY(0.25)=1×1.0=1.0f_Y(0.25) = 1 \times 1.0 = 1.0  ←実測値1.0011と一致

なぜ「逆関数」を使うのか

素朴には「xを入れてyを出す」変換 gg を使いたくなりますが、式には g1g^{-1} が出てきます。

理由は、求めたいものが「yの関数」だからです。fY(y)f_Y(y) を求めるとは「yを入れたら密度が返る関数」を作ることなので、右辺もすべてyで書けていなければなりません。しかし元の密度 fXf_X はxを入れる関数です。だから g1g^{-1} で「yからxに戻す」必要があります。

ヤコビアンが dxdy\left\lvert \frac{dx}{dy} \right\rvert の形(dydx\frac{dy}{dx} ではない)なのも同じ理屈でした。

ヤコビアンが保つのは「面積」だけ

ここが今回いちばん腹に落ちた部分です。ヤコビアンは何を守っているのか。

答えは「密度関数の全体の面積が1になること」です。密度関数には、全区間で積分すると必ず1になるという性質があります。

fX(x)dx=1fY(y)dy=1\int_{-\infty}^{\infty} f_X(x)\,dx = 1 \qquad \int_{-\infty}^{\infty} f_Y(y)\,dy = 1

確率の合計は必ず1でなければならない、という当たり前の要求です。ヤコビアンはこの制約を守るための調整でした。

ヤコビアンが面積を保つことを示す図。面積は常に1だが標準偏差はバラバラに変わる

図の右端 Y=3XY = 3X の例がいちばん分かりやすいです。Xの範囲が0〜1だったのに、3倍するとYの範囲は0〜3になります。横に3倍伸びたので、高さをそのまま1にしておくと面積が3になってしまう。 だから高さを 1/31/3 に下げる。この 1/31/3 がヤコビアンです。

標準偏差は保たれない

私は最初「標準偏差を1に保つための係数」だと勘違いしていました。実際に測ると違います。

変換変換前の標準偏差変換後の標準偏差密度の面積
Y=X2Y = X^20.28860.29811.000000
Y=3XY = 3X0.28860.86581.000000
Y=XY = \sqrt{X}0.28860.23561.000000
Y=eXY = e^X0.28860.49191.000000

標準偏差は0.2356から0.8658まで大きく動いていますが、面積は常に1.000000です。保たれているのは面積だけでした。

なお「標準偏差を1にする」のは標準化という別の操作です。Z=XμσZ = \frac{X - \mu}{\sigma} のように意図的に平均0・標準偏差1に揃える変換で、目的が違います(ただし標準化も変数変換の一種なので、その密度を求めるならヤコビアンが必要です)。

面積を保つ要求から、公式が導ける

そしてここが気持ちよかった点です。「面積=1を保つ」という要求から、一般形が自動的に出てきます。

同じデータの塊をXの目線とYの目線で見たとき、含まれる確率は同じでなければなりません。確率 = 密度 × 幅 なので、

fX(x)×dx=fY(y)×dyf_X(x) \times dx = f_Y(y) \times dy

これを fY(y)f_Y(y) について解くと、

fY(y)=fX(x)×dxdyf_Y(y) = f_X(x) \times \left\lvert \frac{dx}{dy} \right\rvert

一般形になりました。公式として暗記するものではなく、制約から導かれる結果だったわけです。

第3回とつながる:E[g(X)] ≠ g(E[X])

もう一つ、前回の内容と直結する発見がありました。「平均身長・平均体重の人のBMI」は、「BMIの平均」と一致しません。

計算方法結果
平均身長1.70m・平均体重65kgから計算したBMI22.491
全員のBMIを計算して平均を取ったもの22.570

これはJensenの不等式と呼ばれる性質です。

Jensenの不等式の図解。凸関数では弦が曲線の上を通る

曲線が下に凸なので、2点を結ぶ弦は必ず曲線の上を通ります。だから「2乗してから平均」のほうが「平均してから2乗」より大きくなる。

なお正確に言うと、BMIは身長と体重の2変数の関数なので、上の1変数の図だけで不等号の向きが決まるわけではありません(W/H2W/H^2 は2変数関数としては凸ではありません)。上のBMIで差が出たのは、身長の側の 1/H21/H^2 が凸であることが効いているためです。「非線形な変換を通すと、平均を入れた結果と結果の平均は一致しない」という事実が本質で、どちら向きにずれるかは変換の形ごとに確かめる必要があります。

そしてこの差が、前回やった分散でした。

E[X2](E[X])2=V[X]E[X^2] - (E[X])^2 = V[X]

第3回で「2乗の平均 − 平均の2乗が分散」と確かめましたが、その正体は、「変換してから平均」と「平均してから変換」のズレだったわけです。図では E[g(X)]=109E[g(X)]=109g(E[X])=100g(E[X])=100 で差が9。これがそのまま分散になっています。

実務での注意点

平均値を代表値として使い、それを何かの式に入れて計算する——この操作は非線形な式では誤差を生みます

  • 「平均レスポンスタイムから平均スループットを計算する」
  • 「平均単価 × 平均個数で売上を見積もる」

こういった計算は、厳密には正しくありません。式が非線形なら、平均を入れた結果と結果の平均は一致しないからです。

AIを使ってみた感想

今回いちばん役に立ったのは、自分の理解を言葉にしてぶつけたことでした。

「ヤコビアンは標準偏差を1に保つための変換」と思っていたのですが、これをAIに確認したところ違いを指摘され、実際に4つの変換で標準偏差を測って「バラバラに変わる」「面積だけが1で不変」と確かめられました。自分で計算するまでは、たぶん勘違いしたまま先に進んでいたと思います。

もう一つは、記号の意味を飛ばさずに聞けたことです。fX(x)f_X(x) の添字と括弧が何を指すのか、なぜ fYf_Y と区別するのか。当たり前すぎて教科書には書いていない部分ですが、ここが曖昧だと公式が読めません。分からないところを分からないと言えるのは、AI相手の学習の利点だと思います。

この章で押さえること

問い答え
何に使うのか元の分布から、変換後の分布を求める
なぜ分布が変わるのか変換で区間の幅が伸縮し、密度が変わるから
ヤコビアンとは幅の伸縮を打ち消す補正係数
何を保っているのか密度の全体面積=1(確率の合計)
なぜ絶対値を付けるのか密度が負になってはいけないから
注意点E[g(X)]g(E[X])E[g(X)] \neq g(E[X])。そのズレが分散だった

準1級では、この変数変換が第6章で本格的に使われます。t分布やカイ二乗分布は、正規分布を変換した結果として導かれるので、「なぜあの形なのか」を追うにはここの理解が前提になります。

次回

第5回は第5章「離散型分布」を予定しています。

二項分布・ポアソン分布・幾何分布あたりを扱います。「1日に何件クレームが来るか」「何回打ったらヒットが出るか」のような、数えられる現象の型を整理する回です。


この連載は、うまくいった記録だけでなく詰まった箇所も含めて書いています。同じく準1級を目指している方、一度挫折した方の参考になれば嬉しいです。