原文链接:http://tecdat.cn/?p=19211
原文出处:拓端数据部落公众号
随着新型冠状病毒COVID-19的威逼遍布世界,咱们生存在一个日益担心的时代,本文用matlab剖析COVID-19数据集。
COVID-19数据源
咱们查看解压缩的文件。蕴含:
- data.csv -2020年各省/州的寰球病例每日程度数据
- confirmed.csv-确诊病例的工夫序列数据
- deaths.csv-死亡人数的工夫序列数据
- recovered.csv-痊愈人数的工夫序列数据
地图上可视化
咱们在地图上可视化已确诊病例的数量。咱们首先加载纬度和经度变量。
opts = detectImportOptions(filenames(4), "TextType","string");
数据集蕴含“省/州”变量,但咱们要在“国家/地区”等级汇总数据。在此之前,咱们须要略微整顿一下数据。
times\_conf.("Country/Region")(times\_conf.("Country/Region") == "China") = "Mainland China";times\_conf.("Country/Region")(times\_conf.("Country/Region") == "Czechia") = "Czech Republic";
当初,咱们能够应用 groupsummary 将已确认的案例相加并均匀经纬度来按国家/地区汇总数据。
country = groupsummary(times_conf,"Country/Region",{'sum','mean'},vars(3:end));
输入中蕴含不必要的列,例如纬度和经度的总和。咱们删除这些变量。
vars = regexprep(vars,"^(sum_)(?=L(a|o))","remove_");vars = regexprep(vars,"^(mean_)(?=\[0-9\])","remove_");
times\_conf\_exChina = times\_conf\_country(times\_conf\_country.("Country/Region") ~= "Mainland China",:);
让咱们应用 geobubble 可视化数据集中的第一个和最初一个日期数据。
for ii = \[4, length(vars)\] times\_conf\_exChina.Category = categorical(repmat("<100",height(times\_conf\_exChina),1)); times\_conf\_exChina.Category(table2array(times\_conf\_exChina(:,ii)) >= 100) = ">=100"; gb.LegendVisible = "off";
咱们能够看到它最后只影响了大陆四周的国家/地区。值得注意的是,咱们早在2020年1月22日就曾经在美国确认了病例。
美国确诊病例
进入美国的省/州级别。
figuret = tiledlayout("flow");for ii = \[5, length(vars)\] gb.BubbleColorList = \[1,0,1;1,0,0\]; gb.LegendVisible = "off"; gb.Title = "As of " + vars(ii); gb.SizeLimits = \[0, max(times\_conf\_us.(vars{length(vars)}))\]; gb.MapCenter = \[44.9669 -113.6201\]; gb.ZoomLevel = 1.7678;
能够看到它始于华盛顿,并在加利福尼亚和纽约暴发了大规模疫情。
按确诊病例排名国家/地区
让咱们应用covid\_19\_data.csv比拟按国家/地区确认的病例数。日期工夫格局中存在不统一之处,因而咱们一开始会将其视为文本。
opts = detectImportOptions(filenames(3), "TextType","string","DatetimeType","text");
清理日期工夫格局。
Data.nDate = regexprep(Data.Date,"\\/20$","/2020");Data.Date = datetime(Data.Date);
咱们还须要标准化“国家/地区”中的值。
Country\_Region(Country\_Region == "Iran (Islamic Republic of)") = "Iran";
数据集蕴含省/州变量。让咱们在“国家/地区”级别汇总数据。
countryData = groupsummary(provData,{'ObservationDate','Country_Region'}, ... "sum",{'Confirmed','Deaths','Recovered'});
countryData蕴含每日累积数据。咱们只须要最新的数字。
确认病例按国家/地区的增长
咱们还能够查看这些国家中病例的增长速度。
figureplot(countryData.ObservationDate(countryData.Country_Region == labelsK(2)), ...hold onfor ii = 3:length(labelsK) plot(countryData.ObservationDate(countryData.Country_Region == labelsK(ii)), ...
只管韩国显示出增长放缓的迹象,但它在其余中央正在减速倒退。
按国家/地区划分的新病例增长
咱们能够通过减去两个日期之间已确认病例的累计数量来计算新病例的数量。
for ii = 1:length(labelsK) country = provData(provData.Country_Region == labelsK(ii),:); country = groupsummary(country,{'ObservationDate','Country_Region'}, ... if labelsK(ii) ~= "Others" nexttile
您能够看到,中国和韩国没有很多新病例。可见,曾经遏制住了疫情。
中国
因为中国的感化速度正在放缓,咱们来看看仍有多少沉闷病例。您能够通过从确诊病例中减去复原病例和死亡来计算沉闷病例。
for ii = 1:length(labelsK) by\_country{ii}.Active = by\_country{ii}.Confirmed - by_country{ii}.Deaths - figure
拟合曲线
无效案例的数量正在降落,曲线看起来大抵为高斯曲线。咱们能够拟合高斯模型并预测流动案例何时为零吗?
我应用 曲线拟合工具箱 进行高斯拟合。
ft = fittype("gauss1");\[fobj, gof\] = fit(x,y,ft,opts);gof
gof = struct with fields: sse: 4.4145e+08 rsquare: 0.9743 dfe: 47 adjrsquare: 0.9732 rmse: 3.0647e+03
让咱们通过减少20天来将输入预测。
当初咱们对后果进行绘制。
figurearea(ObservationDate,by_country{1}.Active)hold onplot(xdates,yhat,"lineWidth",2)
韩国
让咱们来查看韩国的沉闷病例,复原案例和死亡人数。
应用高斯模型无奈取得任何适合的后果。
最受欢迎的见解
1.在python中应用lstm和pytorch进行工夫序列预测
2.python中利用长短期记忆模型lstm进行工夫序列预测剖析
3.应用r语言进行工夫序列(arima,指数平滑)剖析
4.r语言多元copula-garch-模型工夫序列预测
5.r语言copulas和金融工夫序列案例
6.应用r语言随机稳定模型sv解决工夫序列中的随机稳定
7.r语言工夫序列tar阈值自回归模型
8.r语言k-shape工夫序列聚类办法对股票价格工夫序列聚类
9.python3用arima模型进行工夫序列预测