最近国内的朋友们都在家没事无聊,不如自己download最新病情数据做点简单的新型冠状病毒的数据分析吧!
在这里首先致谢Guangchuang Yu实现了一个R包可以自动下载拿到当前最新的病情数据(https://github.com/GuangchuangYu),数据应该来自腾讯。所以,一旦拿到每天每省每市的感染(confirmed), 疑似(suspect), 死亡(dead), 治愈(heal) 的人数,我们可以尝试用数据回答几个简单有趣的问题。我个人觉得我下面的一些分析适合中小学生的数学和编程能力。感兴趣的不妨试一试?!
根据目前每日confimed确诊染病人数,可否预测明天的染病人数?
大家拿到数据以后,可以尝试做几个regression analysis。每日确诊的病人数量符合线性分布,指数分布,多项式分布,还是什么分布呢?在此我先给出几个简单的尝试,抛砖引玉。
从下面的两个图中,很显然每日confirmed的染病人数不服从线性方程、也不服从指数方程。
继续尝试,我们发现好像每日confirmed的染病人数服从polynomial (3次方)或者generalized additive model.
所以,按照polynomial(3次方)的拟合, 我们得到的model如下。你可以看到,我们的model的R-squared is 0.9987, p-value is very significant. 有了方程,我们便可以根据Coefficients预测明天的可能会感染的人数。你要不要来试一试?
Call:
lm(formula = confirm ~ poly(date_numeric, 3), data = num_day)
Coefficients:
(Intercept) poly(date_numeric, 3)1 poly(date_numeric, 3)2
3815 20365 11613
poly(date_numeric, 3)3
3146
Residuals:
Min 1Q Median 3Q Max
-448.01 -79.27 -2.68 144.17 257.33
Coefficients:
Estimate Std. Error t value Pr(>|t|)
(Intercept) 3814.71 44.99 84.80 < 2e-16 ***
poly(date_numeric, 3)1 20364.75 206.15 98.78 < 2e-16 ***
poly(date_numeric, 3)2 11612.94 206.15 56.33 < 2e-16 ***
poly(date_numeric, 3)3 3146.24 206.15 15.26 2.35e-11 ***
---
Signif. codes: 0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1
Residual standard error: 206.2 on 17 degrees of freedom
Multiple R-squared: 0.9987, Adjusted R-squared: 0.9985
F-statistic: 4388 on 3 and 17 DF, p-value: < 2.2e-16
当然,你也可以随便画出每个省现在的感染新型冠状病毒的人数。下面是我用R画的图。当然你有时间有兴趣,也可以画每个市的分布图来预测些有趣的东西。
今天就到这儿吧,有兴趣的同学可以向我要代码,我很愿意分享。
(对于死亡人数的模拟我就不做了)
Fan at Boston
2020-02-02