amos拟合度分析,amos模型拟合指数不好
整理了一下大学三年级统计计算课程的作业。
目录
数据采购
来源:
抓取工具:
抓住记录:
数据处理:
数据可视化:
拟合模型:
选择型号:
模型解释
模型解决方案:
数据收集来源:为了提供疫情数据的网址,本文选择腾讯新闻作为真实新闻。该网站的链接如下。实时更新:新冠肺炎疫情的最新消息。
3359 news.QQ.com/ZT 2020/page/Fei Yan . htm #/global
抓取工具:
Python和jupyter笔记本
夺记录:因为这个页面只显示当天的数据,所以先找网页的源代码,找到包含中国和世界历史疫情数据的页面。以下三个链接分别显示包含中国实时数据、中国历史数据和每日新数据、世界历史数据和每日新数据的链接。
3359 view.inews.QQ.com/G2/getonsinfo? name=disease _ H5
3359 view.inews.QQ.com/G2/getonsinfo? name=疾病_其他
3359 view.inews.QQ.com/G2/getonsinfo?名称=疾病_外国
以下仅提供获取湖北和非湖北历史数据的代码。
#湖北与非湖北历史数据def get _ data _ 1(:with open(filename, w ,encoding=utf_8_sig ,newline=) ascsv) dead , heal ,Now definition] head writer . writerow(header)for iinrange)len)湖北_ nothing
Bei _ Noth湖北[I] [W] [现确认],湖北_ north湖北[I] [W] [死率],湖北_ north湖北[I] [W] [健康率]] writer.writerow (data _同时,我们使用SIR模型拟合时,并不使用所有的数据,所以选择不同时期的数据。
data _ washing-function(input _ dt){ require(lubridate)input _ dt $ date _ new-format(as。Date(input_dt$date,format=%Y-%m-%d ),format= % m-% d )input _ dt $ date-as。Date(input_dt$date,Format=%Y-%m-%d) #更改数据格式date _ start-ymd(input _ dt $ date[1])date _ end-ymd(input _ dt $ date[length(input _ dt $ date)])Complete _ date-date _ start天数(0:as . numeric(date _ end-date _ start))#合并数据df1-data . frame(date=input _ dt $ date,total _ confirm=input _ dt $ total _ confirm)df2-data . frame(date=Complete _ date All=TRUE) return(merged_data)}数据可视化:图1是1月28日-6月3日全球确诊总人数与1月20日-6月3日中国确诊人数的对比散点图(注意,此图中确诊人数为确诊总人数,未统计治愈和死亡,散点图是递增的。 单独拉出中国的散点图,如图2,可以看到中国确诊总人数。
图3显示了1月20日至6月3日中国、湖北和非湖北确诊病例数的比较散点图。
图4显示了湖北和非湖北的治愈率和死亡率曲线。
图5是中国治愈率和死亡率的曲线(可以看出,中国的治愈率和死亡率在5月和6月趋于稳定)。
拟合模型:模型选择:传染病模型研究中有很多模型,如SI、SIS、SERS、SIR等。本文采用SIR模型来研究新型冠状病毒的发展。
解释SIR模型:SIR模型是一种传播模型,是对信息传递过程的抽象描述,也是传染病模型中最经典的模型,其中S代表易感者,I代表感染者,R代表移居者。
基本假设
(1)假设给定的数据是真实的,不考虑出生、死亡、流动性等。人口中,城市总人口N不变,即每年流入人口等于流出人口。
(2)假设当天人群的健康状况只能分为三类:健康人群、新型冠状病毒感染患者和恢复者;
(3)假设人口不动,即没有患者流入或流出城市;
(4)假设严格隔离的新型冠状病毒感染者不再传染他人;
符号描述
N——研究区域的总人口;
S——易感类,成员未感染新型冠状病毒,无免疫力,可能感染新型冠状病毒。设T时刻易感人群占总人群的比例为s(t),s(T)=n * s(T);
I——感染者,其成员已感染新型冠状病毒,为确诊患者,可将病毒传播给S类(即易感类)成员。设T时刻这类人占总人口的比例为i(t),I(T)=N * I(T);
R——免疫类,其成员从新型冠状病毒中康复或死于新冠肺炎,并且已经具有免疫力,不再对其他成员产生任何影响。设T时刻该阶层占总人口的比例为r(t),r(T)=n * r(T);
Beta——感染系数,T时刻单位时间内所有患者感染的人数为Beta * n * s(T)* I(T);
——恢复系数,t时刻单位时间内的恢复器个数为* n * I(t);
T——模型中的时间单位。
感染机制:
总感染人数是原时刻的感染人数,即J时刻的感染人数加上I时刻的感染人数。
新免疫人数是指在第一时刻对感染者免疫的人数。
S(i) I(j) I(i) I(j)
国际关系组织
为了拟合流行病爆发的动态模型,需要以下三个微分方程:
注:这个微分方程是用来表示三个类别中人对其他类别的转换速度的三个比值。
模型求解:#建立sir模型SIR _ model-function (beta,gamma,s0,i0,r0,times) {require (de solve) #-SIR微分模型SIR _ equations-function (time,variables,parameters){ with(as . list(c(variables,parameters)),{#使用分式方程ds-beta * I * s di-beta * I * s-gamma * I Dr-gamma * I return(list(c(ds,di,Dr))})} #-定义变量parameters _ values-c (beta=beta,gamma=1 R=R0) # -通过ode (initial _ values,times,sir _ equations,Parameters_values)模拟流行病out-ode #-此时得到R0。 由于疾病的潜伏期最长为14天,=1/14,求解模型参数的问题就变成了求解参数的问题。
2.根据公式R0=/,R0为基础感染数,是指在没有外界干预,所有人都没有免疫力的情况下,其他人会被某种传染病感染的平均人数。R0对于疾病的传播和预防具有重要意义。根据以前的一些研究,新冠肺炎的R0值一般在2到3左右。然而,根据美国CDC杂志《新兴传染病》发表的一项新研究,新冠肺炎的R0值高达5.7。
如果按照方法2求解微分方程,根据R0=5.7计算=0.407,代入微分方程进行计算。可以绘制以下图像:
从图像中可以看出,当我们将S的初始值设为140000000时,对确诊人数的拟合明显与真实情况不符。因此,我试图缩小S的值,可以得到下图。可以看出图像的后半部分还是比较符合真实情况的,所以我又试着改变了R0的值和S的初始值。
从图像中可以看出,R0为5.7时绘制的图形非常不准确,我们可以通过改变R0的值来逼近真实数据。
第二种方法:可以用最受伤服装乘法法求beta,通过计算拟合beta曲线与真实beta曲线之间的最受伤服装乘法残差,将使最受伤服装乘法残差最小的beta值即SSE值带入SIR模型进行拟合,从而判断拟合质量。我们用于不良跟随比较的beta范围是0.142~0.407,步长为0.001。从下面的运行结果可以看出,最合适的beta值为0.356,对应的R0值为4.984。
从下图可以看出,不同beta下,最伤服确诊人数乘以残差的真值和拟合值的变化。
图9是SIR模型的拟合散点图和确诊患者数量的真实值的散点图。
郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。