記得四月底和妮妹坐火車回老家。車上無聊,就想找點啥樂子呢?突然想到,要不數人頭吧,看看從我面前走過的人流有什麼規律沒。然後就真記了一個鐘頭😅
時間 | 經過的人數 |
---|---|
09:22 | 2 |
09:29 | 1 |
09:30 | 1 |
09:31 | 3 |
09:32 | 5 |
09:33 | 3 |
09:38 | 2 |
09:42 | 1 |
09:44 | 2 |
09:49 | 2 |
09:50 | 1 |
09:51 | 2 |
09:54 | 1 |
09:56 | 1 |
09:57 | 1 |
09:58 | 2 |
09:59 | 5 |
10:00 | 1 |
10:03 | 1 |
10:09 | 1 |
10:13 | 1 |
10:14 | 1 |
10:22 | 0[1] |
但當時對人流模型是個什麼樣子也沒什麼想法,就記到飯否上,也沒管了。昨天突然想起來這事,決定做個了結。
第一個想法是,人不多,應該是服從 Poisson 分佈的吧。那就先看看「平均情況下,經過的人流數率」有沒有穩定在某個值上下。在每個數據點下,用「經過的總人數/這段時間」就可以算出每個時刻的人流平均數率。比如:09:22-09:32,一共經過了 12 個人,那麼這 10 分鐘內的平均人流數率就是 12人/10分鐘 = 1.2人/分鐘。
很明顯,人流數率穩定在「0.75人/分鐘」上下。但我發現:這個小時總共有 40 個人經過,所以平均人流數率應該是 2/3 。所以我將所有的平均人流數率用 Excel 的�linest()
線性擬合了下,估了個 0.73 ,覺得這個值可能更靠譜一點。
接下來可以用 Excel 的sumif()
計算頻率:
間隔(m) | 經過人次 |
---|---|
1 | 27 |
2 | 3 |
3 | 2 |
4 | 2 |
5 | 4 |
6 | 1 |
7 | 1 |
其實 Excel 自帶計算 Poisson 分佈的函數poisson.dist()
,我一開始不知道,還手寫了個。
間隔(m) | 經過人次 | 概率 | 預期人次 |
---|---|---|---|
1 | 27 | 35.18% | 9.85 |
2 | 3 | 12.84% | 3.60 |
3 | 2 | 3.12% | 0.87 |
4 | 2 | 0.57% | 0.16 |
5 | 4 | 0.08% | 0.02 |
6 | 1 | 0.01% | 0.00 |
7 | 1 | 0.00% | 0.00 |
可以看到,結果比較令人失望。不說別的,當「間隔 > 4分鐘」以後,概率就已經降到極低了。這就意味着出現可能性很小。而我們當然見過,火車上一大波大媽從面前經過。看來火車上的人流並不符合 Poisson 分佈。
我們注意到,實測人流頭很高,尾巴很長。會不會是冪律分佈呢?將數據取對數,再用線性擬合,可以得到:
間隔(m) | 經過人次 | Poisson 分佈預期人次 | 冪律預期人次 |
---|---|---|---|
1 | 27 | 9.85 | 15.82 |
2 | 3 | 3.60 | 5.88 |
3 | 2 | 0.87 | 3.30 |
4 | 2 | 0.16 | 2.19 |
5 | 4 | 0.02 | 1.59 |
6 | 1 | 0.00 | 1.23 |
7 | 1 | 0.00 | 0.99 |
可喜的是,尾巴很接近了。但頭依然差距很遠。回頭再看看記錄,我們發現:09:38 有 2 個人經過,而之前一條記錄不是 09:37 ,而是 09:33 。這說明在 09:37 - 09:38 之間有 2 個人經過,而 09:33 - 09:37 之間沒有人經過。這樣,我們在 09:38 這樣的記錄之前插入一條「0 記錄」,即「09:37 0」。這樣我們就能用更小的粒度來刻畫人流模型了:
間隔(s) | 經過人次 |
---|---|
12 | 10 |
20 | 6 |
30 | 10 |
60 | 6 |
120 | 1 |
180 | 2 |
240 | 2 |
360 | 1 |
取對數,線性擬合…… 得到:
y = 63 x^(-0.7)
間隔(s) | 經過人次 | 冪律預期人次 |
---|---|---|
12 | 10 | 11.47 |
20 | 6 | 8.07 |
30 | 10 | 6.10 |
60 | 6 | 3.79 |
120 | 1 | 2.35 |
180 | 2 | 1.78 |
240 | 2 | 1.46 |
360 | 1 | 1.10 |
好了,看着還算滿意。期間倒是學了不少 Excel 函數。
其實我想說的是:透過數據,我們能看到更真實的事實、更深層的結構;而如果還是依賴直覺,我們只會將近來發生的相關印象強行拉來作爲判斷依據。偏誤、短視就是這麼造成的。數據思維才是真正的「實事求是」,人可真不知道我們的腦袋瓜子有多不靠譜。今年生日那天早上,我用 Ruby 算了下出生多少天了。因爲之前一直計劃着出生滿 1,0000 天那天要做點有意義的事。結果一看,都已經 1,0593 天了!!!也就是說都已經過去快兩年了!你看,人(至少是我)這腦子對時間的感覺有多不可靠。
上初中、剛學物理那會,就聽過原子彈爆炸的時候,Fermi 丟了一把碎紙片就把爆炸當量測出來了。從那起,就很羨慕那種神一般的「快估」能力。知道最近讀了 Tetlock 的《超預測》才瞭解些門道。原來人家都是先估「基本比率」,再在上面做微調。比如說:你聽說隔壁要搬來那新鄰居,老王,40 出頭,做會計出生,跟老婆離婚了,兒子 5 歲跟外婆住……你覺得他養狗的可能性有多大?
一般人首先會想,「哦,都奔四了,孩子還這麼小,還不跟自己。應該會養個把寵物找個心靈寄託。嗯,應該可能性很大!80% 吧?」。你知道高手怎麼考慮的嗎?他們上來先問「全國養狗的比例是多少?」你看,先考慮「基礎比例」。因爲人只要先得到一個數字,後面就只會在它上下調整。這用心理學的黑話就是「錨定效應」。
「唉唷~懂得可真多。你老婆要說「這麼點小事你都不幫忙!你在乎過我嗎?」,我倒是想看看,你那時候怎麼用數據說服你老婆,你在乎她!」
「呃~好吧」
-
沒有這條數據。但當時我在飯否上寫的是「記錄了一個小時」,所以我推測最後 8 分鐘沒有人經過。 ↩