Lies, Damn Lies and Statistics

2020.Feb.7

之前有人在傳中國政府在謊報武漢肺炎的數據,說「這些數據太過單一、回歸性太強了吧? 應該是假的吧?」我們現在來看看一筆我用亂數產生器生出的模擬數據,看原文中提供「論 述」到底可以得到什麼結論,晚一點來看看實際公佈的數據看看是不是想原文中一樣危言聳 聽:

天數  新增確診 新增死亡  | 累計確診 累計死亡 | 累計死亡率(%)
  0       46      1  |     46       1 |  2.2
  1       64      1  |    110       2 |  1.8
  2       82      0  |    192       2 |  1.0
  3      134      4  |    326       6 |  1.8
  4      138      7  |    464      13 |  2.8
  5      193      3  |    657      16 |  2.4
  6      254      5  |    911      21 |  2.3
  7      351      3  |   1262      24 |  1.9
  8      439     12  |   1701      36 |  2.1
  9      641     11  |   2342      47 |  2.0
 10      845     21  |   3187      68 |  2.1
 11     1065     28  |   4252      96 |  2.3
 12     1435     29  |   5687     125 |  2.2
 13     1900     40  |   7587     165 |  2.2
 14     2526     65  |  10113     230 |  2.3
 15     3425     79  |  13538     309 |  2.3
 16     4388    108  |  17926     417 |  2.3
 17     5934    140  |  23860     557 |  2.3
 18     7849    173  |  31709     730 |  2.3

文中第一個結論竟然是:「哇,死亡率最後幾天都是 2.3%,這筆數據應該是人為設定的吧??」 出現這樣的數字答案很簡單:統計的大數法則 。假設有一個固定死亡率,那我們當然期待統計數字越多的時候,計算結果會越來越趨近真值。我 們簡單使用使用高中教的二項式誤差 來估計這些死亡率計算的誤差:

我們來看看這些 2.3% 的結果到底有沒有在合理的浮動範圍之內,答案是這些數據和隨機浮 動是所謂「統計誤差」以內:

天數  新增確診 新增死亡  | 累計確診 累計死亡 | 累計死亡率(%)
    0     46      1  |     46       1 |  2.174 +- 2.150
    1     64      1  |    110       2 |  1.818 +- 1.274
    2     82      0  |    192       2 |  1.042 +- 0.733
    3    134      4  |    326       6 |  1.840 +- 0.744
    4    138      7  |    464      13 |  2.802 +- 0.766
    5    193      3  |    657      16 |  2.435 +- 0.601
    6    254      5  |    911      21 |  2.305 +- 0.497
    7    351      3  |   1262      24 |  1.902 +- 0.384
    8    439     12  |   1701      36 |  2.116 +- 0.349
    9    641     11  |   2342      47 |  2.007 +- 0.290
   10    845     21  |   3187      68 |  2.134 +- 0.256
   11   1065     28  |   4252      96 |  2.258 +- 0.228
   12   1435     29  |   5687     125 |  2.198 +- 0.194
   13   1900     40  |   7587     165 |  2.175 +- 0.167
   14   2526     65  |  10113     230 |  2.274 +- 0.148
   15   3425     79  |  13538     309 |  2.282 +- 0.128
   16   4388    108  |  17926     417 |  2.326 +- 0.113
   17   5934    140  |  23860     557 |  2.334 +- 0.098
   18   7849    173  |  31709     730 |  2.302 +- 0.084

再來談談回歸分析, 回歸分析 不可以 拿來當做趨勢推算的工具。 在計算 的是 隨機變數 x 和 隨機變數 y 之間的連動關係,也就是今天收集到 1 筆 y 數 據,y 數據有多少隨機性可以被 x 直數據涵蓋到,有多少是什於自身的隨機性。 的計 算在高中所學的線性計算的時候中,因藏著非常多的假設(x、y 各自為高斯分佈…等 等),更不用說非線性回歸的時候, 容易高估變數之間的關聯性[1],所以很多標 準統計工具在非線性回歸都不提供 計算值以免誤導。

正確的回歸應該是使用 測驗: 給定 有誤差的 資料以及模型 , 試找 使得:

有極小值。如果數據誤差為高斯隨機誤差的話, S 的分佈會類似 分佈(故名)。

回歸還有另外的優勢:從算出來的 S 值在 分佈裡面的位置, 可以有效的判斷回歸的結果:如果 S 太大,表示模型不合,或是 y 的誤差有低估;如果 S 太小,表示 y 的誤差可能高估,或是 y 的隨機性有誤[2](在誤差正確估計的情況下 S/ 資料點數應該大約要等於 1 )。

我們這邊如果假設確診人數遠遠小於實際感染人數,那我們確診人數的誤差就用 Poisson 誤 差來計算,得到下表。順便說一下,如我果應試要用 的計算結果來對應到 的計算結果,等於每一筆 y 資料的誤差和 y 的標準差數同一個數量級(遠大於 Poisson 誤差)

天數   累積確診    誤差
    0      46    6.8
    1     110   10.5
    2     192   13.9
    3     326   18.1
    4     464   21.5
    5     657   25.6
    6     911   30.2
    7    1262   35.5
    8    1701   41.2
    9    2342   48.4
   10    3187   56.5
   11    4252   65.2
   12    5687   75.4
   13    7587   87.1
   14   10113  100.6
   15   13538  116.4
   16   17926  133.9
   17   23860  154.5
   18   31709  178.1

我們就來比較四種模型: 原文中使用的 多項式,追加 和用來產生 這一筆模擬資料的 。我們使用 CERN ROOT 裡面提供的 回歸,得到下圖:

我們由此可知,即便是用模擬模型對模擬數據去做回歸分析,都有可能得到很差的。因此, 除非真數據模擬出來的結果非常吻合,不然難以歸納數具有什麼問題。


現在我們來看一下實際公佈的資料:

天數  新增確診 新增死亡  | 累計確診 累計死亡 | 累計死亡率(%)
  0       45      2  |     45       2 |  4.444 +- 3.072
  1       17      0  |     62       2 |  3.226 +- 2.244
  2      139      1  |    201       3 |  1.493 +- 0.855
  3       17      0  |    218       3 |  1.376 +- 0.789
  4      102      3  |    320       6 |  1.875 +- 0.758
  5      223     11  |    543      17 |  3.131 +- 0.747
  6       96      0  |    639      17 |  2.660 +- 0.637
  7      717     24  |   1356      41 |  3.024 +- 0.465
  8      677     15  |   2033      56 |  2.755 +- 0.363
  9      711     24  |   2744      80 |  2.915 +- 0.321
 10     1771     26  |   4515     106 |  2.348 +- 0.225
 11     1459     26  |   5974     132 |  2.210 +- 0.190
 12     1737     38  |   7711     170 |  2.205 +- 0.167
 13     1981     43  |   9692     213 |  2.198 +- 0.149
 14     2102     46  |  11794     259 |  2.196 +- 0.135
 15     2590     45  |  14384     304 |  2.113 +- 0.120
 16     2829     57  |  17213     361 |  2.097 +- 0.109
 17     3235     64  |  20448     425 |  2.078 +- 0.100
 18     3887     65  |  24335     490 |  2.014 +- 0.090

加上誤差之後,有覺得「穩定的死亡率」有過餘步合理嗎,還是跟一般的隨機浮動吻合? 用上面論述的 回歸分析:

這樣可以說有什麼過於吻合的數據點嗎?雖然比我們模擬得到回歸還要「準」,但是離可以 宣稱是「符合模型」的回歸還是天差地遠。如果用更高次多項式,勢必可以得到更吻合的結 果。外差退算的誤差誤差是多大? 一天有好的預測,明天呢?後天呢?這些問題都沒有回以 前,不要妄下定論比較好吧?

[1] https://blog.minitab.com/blog/adventures-in-statistics-2/why-is-there-no-r-squared-for-nonlinear-regression

[2] 實際上用 測驗定義 goodness-of-fit ,需要定義所謂「自由度 (DoF)」。簡單的計算會是(數據點數 - 模型中的變數數量),討論也不能直接用 來討論。不過作為初步討論,這一些計算可以作為初步指標。讓讀者質疑分析方式正是這一 篇文章得目的。