Re: [問卦] 武漢肺炎也會數學?

看板Gossiping作者 (安穩殘憶)時間4年前 (2020/02/06 23:18), 4年前編輯推噓19(21210)
留言33則, 25人參與, 4年前最新討論串5/12 (看更多)
生活中總是會遇到許許多多數據 也不知道究竟是真是假 所以現在檢定的時間到了 對於這種增量正比於存量的數據通常我們會使用一種神祕的定律 Benford's law 簡單來說,該定律描述數據其第一個數據之分布情形 具體來說 (10 進位下),認為數據第一位數字之機率有如下表 第一位數字 | 出現機率 ------------------------ 1 | 0.301029996 2 | 0.176091259 3 | 0.124938737 4 | 0.096910013 5 | 0.079181246 6 | 0.06694679 7 | 0.057991947 8 | 0.051152522 9 | 0.045757491 如,各國的地區人口數、各國 GDP、國土面積、放射性元素之半衰期等 其數據之第一位數字都成這樣的機率分布,十分之神奇 李永樂老師有視頻介紹,並附有該情況下的證明 https://www.youtube.com/watch?v=CCo4k9Ax7cM
本文就考量下一次感染的人數亦可與現有已感染人數呈正比關係 及根據 hugoyo 提供之數據嘗試與 Benford's law 進行比較與檢定 首先,我們畫張圖 https://s1.imgs.cc/img/aaaabbvbw.png?_w=750 看起來有點像,又有點不像 所以我們考慮具體一點的比較,即統計檢定 我們善意的假設數據沒有造假,故如下設計 虛無假設 H0: 數據沒有造假 即,該數據應與 Benford's law 分布相近 對立假設 H1: 數據存在造假 即,該數據與 Benford's law 分布不相似 檢驗方式邏輯大概如下 在善意考量沒有造假下,官方數據應該與 Benford's law 相似 那麼我們詢問在 Benford's law 的情況下,出現像是這次官方數據的機率大概有多高 先列一下官方數據與 Benford's law 的各首位數字出現機率 首位數字 | 官方數據 | Benford's law ---------------------------------------------- 1 | 0.21053 | 0.30103 2 | 0.31579 | 0.17609 3 | 0.05263 | 0.12493 4 | 0.10526 | 0.09691 5 | 0.10526 | 0.07918 6 | 0.10526 | 0.06694 7 | 0.05263 | 0.05799 8 | 0.00000 | 0.05115 9 | 0.05263 | 0.04576 具體的算法是使用 Chi-Square Test 方法來自 Google 文獻 https://evoq-eval.siam.org/Portals/0/Publications/SIURO/Vol1_Issue1/Testing _for_the_Benford_Property.pdf (有斷行,請注意) 將本次事件之數據第一個數字 k 之機率定為 p(k) 該 k 之數字於 Benford's law 下發生機率定為 b(k) 則根據文獻可以知道一 Chi-Square Test 檢定量如下 檢定量 = 資料筆數 * sum[(p(k)-b(k))^2/b(k)] (k=1~9) Chi-Square Test 自由度為 9-1=8 可以知道檢定量值約為 5.01230 該檢定 p-value = 0.75626 基本上不拒絕虛無假設的結論 (reject H0) 也就是說,我們理性上不排斥推論該數據存在其實是正常的。 以上如果有錯麻煩跟我說。 謝謝 下附 Python 程式碼 def getHeader(value,base,onoff=True): v=int(value/base) if v!=0 and onoff: v=getHeader(v,base,onoff=True) else: v=value return v from math import log def benfordDistribution(n,base): pr=log(n+1,base)-log(n,base) return pr def realDistribution(n,vlist): pr=len([v for v in vlist if v==n])/len(vlist) return pr from scipy.stats import chi2 def getChi(vlist,base): vlist=[getHeader(v,base) for v in vlist] vsum=0 for n in range(base-1): pr0=realDistribution(n+1,vlist) pr1=benfordDistribution(n+1,base) vsum=vsum+((pr0-pr1)**2)/pr1 v=len(vlist)*vsum pvalue=1-chi2.cdf(v,base-2) return {'Chi-Square 檢定量':v,'p-value':pvalue} base=10 vlist=[45,62,201,218,320,543,639,1356,2033,2744,4515,5974,7711,9692,11794, 14384,17213,20448,24335] v=getChi(vlist,base) for key in v: print(key,v[key]) ---------------------------- 2020.02.07.1037 修正 感謝 newwu 來信指出錯誤 已修正 ※ 引述《hugoyo (阿佑)》之銘言: : ※ 引述《terrymoon (說好的幸福呢)》之銘言: : : 剛剛在FB看到的 : : https://i.imgur.com/bNLvEbB.jpg
: : 1/30 : : 170死/7821確診=2.1% : : 1/31 : : 213死/9800確診=2.1% : : 2/1 : : 259死/11880確診=2.1% : : 2/2 : : 304死/14401確診=2.1% : : 2/3 : : 361死/17238確診=2.1% : : 怎麼死亡率都剛好在2.1%上下徘徊? : 大概大概啦,他們公布的東西就是這樣 : 天數 日期 確診 累積確診 死亡 累積死亡 死亡率 : 1 1月18日 45 45 2 2 4.44% : 2 1月19日 17 62 0 2 3.23% : 3 1月20日 139 201 1 3 1.49% : 4 1月21日 17 218 0 3 1.38% : 5 1月22日 102 320 3 6 1.88% : 6 1月23日 223 543 11 17 3.13% : 7 1月24日 96 639 0 17 2.66% : 8 1月25日 717 1356 24 41 3.02% : 9 1月26日 677 2033 15 56 2.75% : 10 1月27日 711 2744 24 80 2.92% : 11 1月28日 1771 4515 26 106 2.35% : 12 1月29日 1459 5974 26 132 2.21% : 13 1月30日 1737 7711 38 170 2.20% : 14 1月31日 1981 9692 43 213 2.20% : 15 2月 1日 2102 11794 46 259 2.20% : 16 2月 2日 2590 14384 45 304 2.11% : 17 2月 3日 2829 17213 57 361 2.10% : 18 2月 4日 3235 20448 64 425 2.08% : 19 2月 5日 3887 24335 65 490 2.01% : 猜猜看明天是不是 2.00% 左右?? : 從一月底開始都穩穩地控制了,死亡率漸漸變低,這樣大家才會比較安心 : 那麼,明天會多少確診呢? 既然大家覺得數據都是Garbage,再怎麼分析都是Garbage out : 還是可以猜猜看明天的Garbage長什麼樣子呀~ : 不想太認真用分佈的模型來積分成error function : 用大家都能懂得多項式就好,抓個3次方。 : https://i.imgur.com/pqua02g.png
還蠻平的~ : https://i.imgur.com/ni4FgcQ.png
: 所以明天中國大概 確診 28297 人,增加 4046 人 : 死亡 566 人,增加 76 人 : 個人希望他們不要真的這樣玩數據。 -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 140.112.90.228 (臺灣) ※ 文章網址: https://www.ptt.cc/bbs/Gossiping/M.1581002324.A.F8E.html

02/06 23:19, 4年前 , 1F
恩恩 跟我想的一樣
02/06 23:19, 1F
※ 編輯: Glamsight (140.112.90.228 臺灣), 02/06/2020 23:19:35

02/06 23:19, 4年前 , 2F
對!我也這麼覺得!!
02/06 23:19, 2F

02/06 23:19, 4年前 , 3F
這個求證有厲害到推一個
02/06 23:19, 3F

02/06 23:20, 4年前 , 4F
推個
02/06 23:20, 4F

02/06 23:20, 4年前 , 5F
你的中英文大綱跟參考文獻勒?頭尾都沒有
02/06 23:20, 5F

02/06 23:20, 4年前 , 6F
中間就不用看了,退回去重寫!
02/06 23:20, 6F
Q.Q ※ 編輯: Glamsight (140.112.90.228 臺灣), 02/06/2020 23:20:44

02/06 23:20, 4年前 , 7F
視頻
02/06 23:20, 7F

02/06 23:21, 4年前 , 8F
跟我想ㄉ一樣
02/06 23:21, 8F

02/06 23:22, 4年前 , 9F
結論:reject H0, 數據造假
02/06 23:22, 9F

02/06 23:22, 4年前 , 10F
研究回顧才介紹一個影片 口試最好是會過
02/06 23:22, 10F

02/06 23:22, 4年前 , 11F
02/06 23:22, 11F

02/06 23:23, 4年前 , 12F
跟我想的一樣
02/06 23:23, 12F

02/06 23:24, 4年前 , 13F
恩恩 跟我想的一樣
02/06 23:24, 13F

02/06 23:27, 4年前 , 14F
要先證明Benford's law用在疫情會準
02/06 23:27, 14F

02/06 23:29, 4年前 , 15F
is CNN
02/06 23:29, 15F

02/06 23:32, 4年前 , 16F
嗯嗯 我當研究生時把這學的買
02/06 23:32, 16F

02/06 23:32, 4年前 , 17F
滿完整的
02/06 23:32, 17F

02/06 23:32, 4年前 , 18F
*學的滿
02/06 23:32, 18F

02/06 23:33, 4年前 , 19F
嗯嗯,嗯?
02/06 23:33, 19F

02/06 23:38, 4年前 , 20F
原來如此
02/06 23:38, 20F

02/06 23:38, 4年前 , 21F
0.0"
02/06 23:38, 21F

02/06 23:48, 4年前 , 22F
可以預測接下來一週的死亡人數精確到個位
02/06 23:48, 22F

02/06 23:48, 4年前 , 23F
數了
02/06 23:48, 23F

02/07 00:21, 4年前 , 24F
工三小?
02/07 00:21, 24F

02/07 00:28, 4年前 , 25F
112
02/07 00:28, 25F

02/07 00:34, 4年前 , 26F
結論:很大的機率是數據造假
02/07 00:34, 26F

02/07 00:47, 4年前 , 27F
不對啦 你code有bug,檢查一下
02/07 00:47, 27F

02/07 00:50, 4年前 , 28F
你把數據開頭當成每個數的機率了
02/07 00:50, 28F
謝謝,已修正

02/07 01:48, 4年前 , 29F
嗯嗯 我正要po這個方法的 被你發走了
02/07 01:48, 29F

02/07 03:07, 4年前 , 30F
推統計
02/07 03:07, 30F

02/07 03:58, 4年前 , 31F
????
02/07 03:58, 31F

02/07 10:17, 4年前 , 32F
你算錯了
02/07 10:17, 32F
Q.Q 我改好ㄌ ※ 編輯: Glamsight (140.112.90.228 臺灣), 02/07/2020 10:37:19 ※ 編輯: Glamsight (140.112.90.228 臺灣), 02/07/2020 10:38:15

02/07 23:47, 4年前 , 33F
嗯嗯,沒錯沒錯(摸下巴點頭
02/07 23:47, 33F
文章代碼(AID): #1UF2vK-E (Gossiping)
討論串 (同標題文章)
文章代碼(AID): #1UF2vK-E (Gossiping)