M1.1 13 分鐘閱讀 2026年9月

M1.1 從鞋子猜身高:Conditional Expectation

起點:只看鞋子

朋友傳來一張照片,只拍到一雙鞋。你查到那是 25 公分的尺寸,然後被要求猜鞋主的身高。

問題一:你會猜幾公分?依據是什麼?

問題二:朋友補了一句「是男生」。你的猜測往哪邊動、動多少? 如果補的是「是女生」呢?

請寫下兩題的答案與確定程度。多數人第一題會說「大概 165」,第二題會說「男生就往上調到 170 左右、女生往下調」。這些直覺大致對。但有一件事直覺通常說不出來:「男生的猜測」與「女生的猜測」和「不知道性別時的猜測」之間,有一個精確的關係,而且這個關係決定了「多一個條件」到底是幫了什麼。這一篇把「用已知條件去猜」寫成一個數學物件,然後回來看這個關係。

課堂提問Q1

把情境翻成數學:這裡的隨機變數有哪些?「猜身高」在數學上是在算什麼?「再知道性別」改變了哪個物件?

先想一想,再展開看整理後的答案

最直覺的說法是「身高是隨機變數」,然後就卡住。要多說三件事。

隨機的來源是「這個人是誰」。 想像鞋主是從某個母體(例如台灣的成年人)裡隨機抽出來的一個人。抽到誰決定了三個數:身高 YY、鞋碼 XX、性別 GG。它們是同一次抽樣產生的三個隨機變數,彼此有關——鞋子大的人通常比較高。

「猜」是在算一個平均。 「知道 X=25X=25,猜 YY」最自然的做法:把母體裡所有鞋碼 25 的人找出來,算他們的平均身高。這個數記成 E[YX=25]\mathbb E[Y\mid X=25]。它不是「一定對」的預測(同一個鞋碼的人身高有一整個範圍),而是那一桶人的中心。

「再知道性別」是換了一個更細的桶。 「鞋碼 25 且男性」是一桶,「鞋碼 25 且女性」是另一桶,各有自己的平均:E[YX=25,G=]\mathbb E[Y\mid X=25,G=\text{男}]E[YX=25,G=]\mathbb E[Y\mid X=25,G=\text{女}]。原本那一桶,正好是這兩桶倒在一起。翻譯到這裡,問題二就變得精確:兩個細桶的平均與粗桶的平均是什麼關係? 這是 conditional expectation 的核心性質。

分桶、取平均、再合併

把一整個班的人按鞋碼排隊:23 的一桶、24 的一桶、25 的一桶……每桶算一個平均身高,寫在桶上。「知道鞋碼猜身高」就是看鞋碼、讀桶上的數字。所以這個猜測不是一個數,是一張表:每個鞋碼對應一個數。

現在把每一桶再依性別分成兩小桶,各算平均。三件事會發生:(一)男生小桶的數字通常比原桶高、女生小桶通常比原桶低;(二)把兩個小桶倒回去,總平均一定等於原桶的數字——因為那本來就是同一群人;(三)小桶裡的人彼此更像,每桶內的身高散得比較開的程度變小了。

第(二)點是這一篇的主角。它說「多一個條件」不會系統性地把猜測往某邊推——推上去的和推下去的,按人數加權後剛好抵消。

把桶寫成數學

定義。 XXYY 是同一次抽樣得到的隨機變數。對 XX 的每個可能值 xx

m(x)=E[YX=x]=yyP(Y=yX=x)(連續時 yp(yx)dy)m(x)=\mathbb E[Y\mid X=x]=\sum_y y\,P(Y=y\mid X=x)\quad\Big(\text{連續時 }\int y\,p(y\mid x)\,dy\Big)

是「X=xX=x 那一桶的 YY 平均」——一個。把 xx 換成隨機變數 XX 本身,E[YX]:=m(X)\mathbb E[Y\mid X]:=m(X) 就是「看到 XX 之後讀出來的桶上數字」——它是 XX函數,因此自己也是一個隨機變數(抽到誰、鞋碼就不同、讀到的數字就不同)。這是初學最容易混的一點:E[YX=25]\mathbb E[Y\mid X=25] 是 165.2 這種數,E[YX]\mathbb E[Y\mid X] 是整張表。

四個性質。

  1. 總平均E[E[YX]]=E[Y]\mathbb E\big[\mathbb E[Y\mid X]\big]=\mathbb E[Y]——所有桶的數字按人數加權平均,就是全班平均。
  2. Tower property(迭代條件):對任何額外的資訊 GG
E[E[YX,G]    X]=E[YX].\mathbb E\big[\,\mathbb E[Y\mid X,G]\;\big|\;X\,\big]=\mathbb E[Y\mid X].

細桶(X,GX,G 都知道)的數字,在只知道 XX 的情況下取平均,就回到粗桶。性質 1 是它在「XX 什麼都不告訴你」時的特例。 3. 提出已知的東西E[h(X)YX]=h(X)E[YX]\mathbb E[h(X)\,Y\mid X]=h(X)\,\mathbb E[Y\mid X]——在桶裡 XX 是常數,h(X)h(X) 可以直接提出來。 4. 獨立:若 XXYY 獨立,E[YX]=E[Y]\mathbb E[Y\mid X]=\mathbb E[Y]——每桶的數字都一樣,分桶白做。

展開細節Tower property 的證明(離散,四行)

固定 X=xX=x。左邊是「先算細桶數字 E[YX=x,G=g]\mathbb E[Y\mid X=x,G=g],再對 ggP(G=gX=x)P(G=g\mid X=x) 加權」:

gP(gx)yyP(yx,g)=yygP(y,gx)=yyP(yx)=E[YX=x].\sum_g P(g\mid x)\sum_y y\,P(y\mid x,g)=\sum_y y\sum_g P(y,g\mid x)=\sum_y y\,P(y\mid x)=\mathbb E[Y\mid X=x].

中間那一步用了 P(gx)P(yx,g)=P(y,gx)P(g\mid x)P(y\mid x,g)=P(y,g\mid x)(條件機率的乘法),以及「對 gg 加總把 gg 邊際掉」。連續情形把和換成積分,一字不改。

回到情境:兩個直覺,一個關係

問題一。 「猜 165」就是讀 E[YX=25]\mathbb E[Y\mid X=25]。它是對的做法——不過「對」在這裡有一個很具體的意思:它是那一桶的中心,同桶的人身高散在它兩側。為什麼「中心」是好猜測、以及在哪種意義下最好,是 M1.2 的事;這裡只確認它是有定義、可以算的量。

問題二。 「男生往上調到 170、女生往下調到 162」對應 E[YX=25,G]\mathbb E[Y\mid X=25,G] 的兩個值。tower property 給了直覺說不出的那件事:0.4×170+0.6×162=165.20.4\times170+0.6\times162=165.2,兩個細桶按性別比例加權回來,必須等於粗桶。所以「多一個條件」不是「往某邊修正」,而是把一個猜測拆成幾個猜測——拆得對不對,可以用加權平均是否回到原值來檢查。也因此,如果有人告訴你「鞋碼 25 的男生平均 170、女生平均 168、整體 165」,你可以立刻判斷這組數字不可能同時成立

多一個條件到底幫了什麼? 不是改變平均,而是縮小每桶內的散佈:細桶裡的人彼此更像,猜錯的幅度變小。這件事下一篇會寫成一條精確的等式。

這一切依賴什麼。 第一,E[YX]\mathbb E[Y\mid X] 是對母體的聯合分佈定義的。鞋主如果不是從你腦中那個母體抽出來的(例如照片來自籃球隊聚會),表就用錯了——不是數學錯,是母體錯。第二,實務上這張表是從資料估出來的:每桶的平均由桶內的樣本算。桶分得越細,每桶樣本越少,桶上的數字越不穩。條件多到一定程度,「理論上更準」會被「估計上更抖」吃掉。

回到情境:用一個合成母體跑一次

import numpy as np
rng = np.random.default_rng(1)
def population(n):                                   # 合成母體:性別 → 鞋碼 → 身高
    g = rng.random(n) < 0.5                          # True = 男
    shoe = np.where(g, rng.normal(26.5, 1.0, n), rng.normal(23.5, 1.0, n))
    height = np.where(g, 176 + 4*(shoe-26.5), 158 + 4*(shoe-23.5)) + rng.normal(0, 5, n)
    return g, shoe, height
for n in (200_000, 60):                              # 大母體 vs 只有 60 筆資料
    g, shoe, h = population(n)
    b = np.abs(shoe - 25) < 0.25                     # 鞋碼 25 那一桶
    pm = g[b].mean()                                 # 桶內男生比例
    EY, EYm, EYf = h[b].mean(), h[b & g].mean(), h[b & ~g].mean()
    print(f"n={n:>6}: 桶內 {b.sum()} 人  E[Y|25]={EY:.1f}  男={EYm:.1f} 女={EYf:.1f}  "
          f"加權回來={pm*EYm+(1-pm)*EYf:.1f}  桶內標準差 {h[b].std():.1f} → 男 {h[b&g].std():.1f}{h[b&~g].std():.1f}")

大母體那一行:三個平均按比例加權後與 E[Y25]\mathbb E[Y\mid 25] 完全相同(這是恆等式,不是近似),而桶內標準差從約 5.8 掉到約 5(男生桶平均約 170、女生桶約 164,兩桶各自散佈 5,混在一起多出「桶間差距」那一份)——多知道性別讓散佈變小、平均不變。n=60n=60 那一行:鞋碼 25 的桶裡可能只有幾個人,分性別後有的小桶只剩一兩個、甚至是空的,桶上的數字跳來跳去——這就是「條件太細、樣本太少」。

先消化一下

想一想

E[YX]\mathbb E[Y\mid X]E[YX=25]\mathbb E[Y\mid X=25] 的差別是:

想一想

一家外送平台想預測每筆訂單的送達時間。它先按「距離」分桶算平均,再細分成「距離 × 是否下雨」。下列哪個敘述正確?

想一想

你手上只有 80 筆「鞋碼、身高、性別、年齡、居住縣市」的資料。想用所有五個欄位當條件來猜身高。最可能發生的事是:

參考文獻

  1. Grimmett, G., Stirzaker, D. Probability and Random Processes, 3rd ed. Oxford University Press 2001.(conditional expectation 的定義與性質。)
  2. Williams, D. Probability with Martingales. Cambridge University Press 1991, Ch. 9.(把 E[YX]\mathbb E[Y\mid X] 當成隨機變數、tower property 的一般形式。)
  3. Blitzstein, J. K., Hwang, J. Introduction to Probability, 2nd ed. CRC Press 2019, Ch. 9.(Adam’s law/tower property 與大量生活化例題。)