数学建模传染病模型.docx
《数学建模传染病模型.docx》由会员分享,可在线阅读,更多相关《数学建模传染病模型.docx(17页珍藏版)》请在冰豆网上搜索。
数学建模传染病模型
数学建模传染病模型
传染病的传播
摘要:
本文先根据材料提供的数据建立了指数模型,并且全面地评价了该模型的合理性与实用性。
而后对模型与数据做了较为扼要地分析了指数模型的不妥之处。
并在对问题进行较为全面评价的基础上引入更为全面合理的假设和建立系统分析模型。
运用联立微分方程组体现疫情发展过程中各类人的内在因果联系,并在此基础上建立方程求解算法结合MATLAB编程(程序在附件二)拟合出与实际较为符合的曲线并进行了疫情预测。
同时运用双线性函数模型对卫生部的措施进行了评价并给出建议以及指出建立一个真正能够预测以及能为预防和控制提供可靠、足够的信息的模型,这样做的困难本文的最后,通过本次建模过程中的切身体会,说明建立如SARS预测模型之类的传染病预测模型的重要意义。
关键词:
微分方程SARS 数学模型感染率
1问题的重述
SARS(SevereAcuteRespiratorySyndrome,严重急性呼吸道综合症,俗称:
非典型肺炎)是21世纪第一个在世界范围内传播的传染病。
SARS的爆发和蔓延给我国的经济发展和人民生活带来了很大影响,我们从中得到了许多重要的经验和教训,认识到定量地研究传染病的传播规律、为预测和控制传染病蔓延创造条件的重要性。
请你们对SARS的传播建立数学模型,具体要求如下:
1)建立传染病传播的指数模型,评价其合理性和实用性。
2)建立你们自己的模型,说明为什么优于指数模型;特别要说明怎样才能建立一个真正能够预测以及能为预防和控制提供可靠、足够的信息的模型,这样做的困难在哪里?
对于卫生部门所采取的措施做出评论,如:
提前或延后5天采取严格的隔离措施,对疫情传播所造成的影响做出估计。
附件1提供的数据供参考。
3)说明建立传染病数学模型的重要性。
2定义与符号说明
N…………………………………表示为SARS病人的总数;
K(感染率)……………………表示为平均每天每人的传染他人的人数;
L…………………………………表示为每个病人可能传染他人的天数;
N(t)…………………………表示为每天(单位时间)发病人数;
N(t)-N(t-L)………………………表示可传染他人的病人的总数减去失去传染能力的病人数;
t…………………………………表示时间;
R
………………………………表示拟合的均方差;
3建立传染病传播的指数模型
3.1模型假设
1)该疫情有很强的传播性,病人(带菌者)通过接触(空气,食物,……)将病菌传播给健康者。
单位时间(一天)内一个病人能传播的人数是常数k;
2)在所传染的人当中不考虑已治愈的人是否被再次被传播,治愈的人数占该地区的总人数是绝对的少数,治愈者不会再被传播并不影响疫情在该时间内的感染率常数k;
3)病者在潜伏期传播可能性很小,仍按健康人处理;
4)SARS对不同的年龄组的感染率略有不同(相差不大),但我们只考虑它健康人的感染率是一样的;
图3-3
3.3对指数模型的验证和评价
在图形3-3中的横坐标的数值表示图形1中所表示的天数之后的天数,如1即表示4月15日之后的45天之后的有第六天,也就是4月15日之后的第51天,即表示4月15日之后的第67天。
首先在图形3-3结合图形3-1可以看出,图形3-1中的第45天与图形2中的第一天(相隔一天)的人数统计是相差比较大的,存在这种情况的原因是在我们在计算第61天,数据值发生了改变,从0.16204到0.0273是一个很大的变化,而在实际的生活中的情况是k值每天都在进行数值在减小的改变,但改变的没有这么大,也正是因为k有了跳跃,N(t)的值才会发生这么大的变化,这是可以理解的。
我们对图形2的整个曲线来与附件1中的图形1进行比较,可以发现,在整个阶段的数值曲线图形都是很接近的。
我们在对全国在前期和后期k分别取k=0.16204和k=0.0273的值来代入所给的模型来计算并画出的图形,与实际的数据和图形进行了比较,是有着很好的吻合,同样我们也可以对k取值一个定值来对全国进行计算和画图,同样也是合理的。
因此我们就认为题目中给我们的那个模型N(t)=
n
(1+K)
是合理的。
通过这个模型我们可以根据某一地区的疫情从爆发到高潮或某一阶段的时间的长短来拟合得到一个与该地区这种疫情的感染率,就可以用该模型来计算或预测该地区现在及以后的病人的累计数,这也就是该模型的实用性所在。
4建立新模型
4.1模型假设
模型假设与指数模型假设一致不在赘述。
4.2模型分析与建立
4.2.1模型分析
初期由于疫情初期政府控制力度不够,大众的对SARS的防范意识不强,造成病情迅速蔓延。
而当政府采取有力措施,人们的防患意识增强,疫情则趋于缓和,病患者人数迅速下降。
所以SARS传播大体上可分为两个阶段:
1)控制前期:
即认为病毒传播方式是自然传播。
2)控制后期:
政府强力介入之后的病毒传播模型。
4.2.2模型建立
根据对指数模型的分析和4.2的分析疫情走势的微分方程如下;
N(t)=K[N(t)–N(t–L)].
(1)
4.3模型的求解
如果假定有一个初始爆发时间,最初有N0个病人突然出现,在L天之内(tN(t-L)=0。
在这个初发期间内,方程
(1)给出的发病人数呈指数增长
N(t)=N
(1+K)
(0(2)
当LN(t)=N
[(1+K)
–(t-L)K(1+K)
](L当2LN(t)=N
(1+K)
–N(t-L)(2LL可理解为平均每个病人在被发现前后可以造成直接传染的期限,在此期限后他失去传染作用,可能的原因是被严格隔离、病愈不再传染或死去等。
在不同的时期L的取值范围也是不一样的,我们所得到的资料中总结出不论对于疫情的爆发阶段,还是疫情的控制阶段,这个参数都不能用得太小,否则无法描写好各阶段的数据。
该参数放在15-25之间比较好,现在医学界还没有确定出L的值,我们想象可能有的人抵抗能力强,有的人抵抗能力差,因此我们把它固定在20(天)上这个值有一定统计上的意义.
我们把L的值定在了20天,是合理的,当t的取值比较大时,该模型又有指数关系,N(t)前后之间的差距比较大,然而当t>60时,在这之前失去传播能力的只占了少部分,因此规定当t>60时也可用N(t)=N
(1+K)
–N(t-L)的模型。
K的值其实是一个变量,它每天的值都在发生变化。
疫情刚开始的时候,K的值大,原因可能有刚可能是政府部门还没有足够重视起来,人们也还没有重视,医疗部门也还没有比较好的设备,医生们对病情也还没有很了解,技术上可能也还有不足。
但随着病情的日益加重,来自各个方面的重视程度都有很大的提高,这是K的值就比较小了。
在此模型中,我们认为感染率(K)在数值上与病例的增长率是相等的,疫情患者他传播在传播给健康人的时候,健康人他可能是带病毒了,但健康热处于潜伏期状态,据“全国“非典”科技攻关组公布七大科研进展”与于2003-06-03日报道中指出潜伏期患者传染的可能很小。
有关部门对非典暴发过程中两例传播链进行了细致的调查和分析,这两个案例中共追查到潜伏期密切接触者158人,无一人死亡。
因此我们在模型中说的感染率只为疫情患者传染给他人,而且他人发病,若他人不发病则不为感染率。
增长率在数值上即为感染率。
我们对全国所提供的所有数据中的已确诊病例累计进行了分析计算,得出感染率K的变化数据并画出了曲线图。
如图4-1所示:
图4-1
K(感染率)是一条跟t的值有关的曲线,我们通过回归法K的公式为:
K=7E-13t
-4E-10t
+8E-08t
-1E-05t
+0.0006t
-0.0191t+
0.2325(5)
图4-1中R
=0.6988为曲线回归的均方差,可见存在的误差并不大。
t为疫情流行的天数。
4.4模型检验
通过该公式可预测疫情开始时或以后的累计病人总数。
例如要预测某一天病人的累计总数,将时间t的天数代入方程(5)即可求得K(感染率)的大小,因为L的值定在20天,所以当0(2);
当20当40当t=10时,我们根据方程(5),可求得K=0.0923,我们再将K=0.0923代入
(2)得到N=8。
当t=50时,我们根据方程(5),可求得K=0.0614,我们再将K=0.0614代入
(2)得到N=308。
这与实际给出的数据非常接近。
可以说明我们的模型是一个比较能够预测以及能为预防和控制提供信息的模型。
4.5模型的应用与推广
此模型可以作为预测以及能为预防和控制提供可靠、足够的信息的模型。
4.6与指数模型的比较
1)我们对不同阶段的疫情的计算和预测建立了不同的模型,这样来分析比附件1所提供的早期模型更加的精确。
2)对感染率K求出了方程,可以知道每一天的疫情感染率,可以更加有效的计算与预测有关数据。
3)该模型实用性更强,能更加准确的反映实情。
5建立模型的关键和困难
建立模型的关键在于对模型进行动态的分析,当传染病发展到一定阶段在政府的控传染率下降。
此时还用之前的误差会很大。
在建立模型过程中有以下几个方面的困难:
1)对不同地区SARS的卫生知识的宣传的多少的不同,K的值就不一样;2)对某一地区的不同地方的强化管理也不一样(如公交、商场、餐厅、娱乐场所等),K的值也就不一样;3)还有保护工具的使用、建筑物的通风条件、居住的卫生条件等等的不同,都会有有不同的K的取值。
6对于卫生部门采取的措施的评价
对于卫生部门提前或延后5天采取严格的隔离措施的影响,我们可以建立下面的模型进行辅助分析估计:
1)模型参数定义:
S(t)——t时刻易感人群总数
I(t)——t时刻出现的新增患者
——患者从患病起经过
时间,仍为患者的概率
——患者距发病
时间,具有传染性的概率
——患者与易感人群接触率
近断时间的医学研究表明,从正式发病到治愈一般需7—14天或更长时间,假定平均治愈时间为12天。
2)基本条件假设:
新患者出现的数量与现有患者的数量成正比,也与现有易感者的数量成正比,即发病率是患者人数和易感者人数的双线性函数。
由基本假设条件可得:
S(t+1)=S(t)-I(t+1)
(1)
I(t+1)=
S(t)
(2)
经整理后得:
S(t+1)=S(t)-
(3)
S(t+1)=S(t)(1-
(4)
S(t+1)/S(t)=(1-
(5)
虽然不能具体知道
的数值,那么我可以根据较为理想的均匀平均递减概率参数,可得下表:
0
1
2
3
4
5
6
7
8
9
10
11
12
1
11/12
10/12
9/12
8/12
7/12
6/12
5/12
4/12
3/12
2/12
1/12
0
表6-1
如果病人发病后5天才开始隔离,并且
的值在疫情初期又较大的话,那么由上表可知病人已经分别以11/12、10/12、9/12、8/12、7/12的大概率在社会上与易感人群接触和传染。
由(5)式得:
S(t+1)/S(t)=(1-
<1(6)
也就是S(t+1)
而且在现实生活中
在第5天的
(5)>7/12。
当处于潜伏期时,传染性几乎为0,因而同理我们有理由相信:
S(t+1)/S(t)=(1-
(7)
即S(t+1)近似于S(t)。
所以,如果在病人发病前提前5天隔离的话,新增病人数将变得很小。
7建立传染病数学模型的重要性
随着卫生设施的改善、医疗水平的提高以及人类文明的不断发展,诸如霍乱、天花等曾经肆虐全球的传染病已经得到有效的控制,但是在世界的某些地区,特别是贫穷的发展中国家,还不时出现传染病流行的情况,与次同时,一些鲜为人知的险恶传染病则跨国越界在既包括发达国家也包括发展中国家的更大范围内蔓延。
一直以来,建立传染病的数学模型来描述传染病的传播过程,分析受感染人数的变化规律,预报传染病高潮的到来等等,
有着重要的作用。
以最近突发性的险恶传染病——SARS为例。
从2002年11月16日在中国广东佛山市首例发生家族聚集性发病至2003年5月,疾病呈迅速蔓延趋势。
目前全世界30多个国家和地区有病例报告。
中国大陆、香港和台湾发病人数占全球的90%以上。
世界卫生组织(WHO)总干事Brundtlard博士指出,SARS已威胁到全球人类的健康。
由于目前对SARS尚无可靠的病理学诊断,所以只能根据医疗卫生部门提供的可靠数据统计资料,建立模型来描述SARS病毒的宏观传播过程,有助于从量的方面来分析受感染人数的变化趋势,掌握SARS的流行规律,从而及时对疫情进行控制,提供科学的数据,认清传染的基本要素,为防病提供必要的依据。
例如,5月8日,西安交通大学医学院紧急启动“建立非典流行趋势预测与控制策略数学模型”研究项目。
于5月19日初步完成了第一批成果,这一数学模型利用实际数据拟合参数,并对全国和北京、山西等地的疫情进行了计算仿真。
结果指出,将患者及时隔离对于抗击非典至关重要。
分析报告说,就全国而论,若非典病人延迟隔离1天,就医人数将增加1000人左右,推迟两天约增加2100人左右;若外界输入1000人中包含一个病人和一个潜伏病人,将增加患病人数100人左右;若4月21日以后,政府未采取隔离措施,则高峰期病人人数将达60万人。
同时美国《科学》杂志网站5月23日发表的两份最新研究报告显示,如果对非典采取严密的公共卫生防治措施,这种新型疾病是能够得到控制的。
而采取这种措施需要有一个预见性,这就需要人们通过模型的建立对SARS的发病周期、发病人数的变化趋势、疑似人数的变化趋势等来分析和预测。
并为政府和医疗卫生部门进行决策和资料调配提供直接的服务,为相关的研究部门提供科学的数据。
SARS作为新发传染病之一,虽有着其特殊性,但也符合一般传染病的传播规律。
从SARS对人民身体健康造成严重危害可以看出及时对传染病建立模型并进行分析和预测对人类的生命健康有着至关重要的作用。
8参考文献
[1]姜启源〈数学模型〉高等教育出版社1993.8
[2]云舟工作室〈数学建模基础教程〉人民邮电出版社2001.7
[3]刘双等 〈SARS临床病例及影像学分析〉 中国医药科技出版社 2003.5
附录A
疫情的数据表
日期
已确诊病例累计
现有疑似病例
死亡累计
治愈出院累计
4月20日
339
402
18
33
4月21日
482
610
25
43
4月22日
588
666
28
46
4月23日
693
782
35
55
4月24日
774
863
39
64
4月25日
877
954
42
73
4月26日
988
1093
48
76
4月27日
1114
1255
56
78
4月28日
1199
1275
59
78
4月29日
1347
1358
66
83
4月30日
1440
1408
75
90
5月1日
1553
1415
82
100
5月2日
1636
1468
91
109
5月3日
1741
1493
96
115
5月4日
1803
1537
100
118
5月5日
1897
1510
103
121
5月6日
1960
1523
107
134
5月7日
2049
1514
110
141
5月8日
2136
1486
112
152
5月9日
2177
1425
114
168
5月10日
2227
1397
116
175
5月11日
2265
1411
120
186
5月12日
2304
1378
129
208
5月13日
2347
1338
134
244
5月14日
2370
1308
139
252
5月15日
2388
1317
140
257
5月16日
2405
1265
141
273
5月17日
2420
1250
145
307
5月18日
2434
1250
147
332
5月19日
2437
1249
150
349
5月20日
2444
1225
154
395
5月21日
2444
1221
156
447
5月22日
2456
1205
158
528
5月23日
2465
1179
160
582
5月24日
2490
1134
163
667
5月25日
2499
1105
167
704
5月26日
2504
1069
168
747
5月27日
2512
1005
172
828
5月28日
2514
941
175
866
5月29日
2517
803
176
928
5月30日
2520
760
177
1006
5月31日
2521
747
181
1087
6月16日
2521
3
190
2053
6月17日
2521
5
190
2120
6月18日
2521
4
191
2154
6月19日
2521
3
191
2171
6月20日
2521
3
191
2189
6月21日
2521
2
191
2231
6月22日
2521
2
191
2257
6月23日
2521
2
191
2277
6月1日
2522
739
181
1124
6月2日
2522
734
181
1157
6月3日
2522
724
181
1189
6月4日
2522
718
181
1263
6月5日
2522
716
181
1321
6月6日
2522
713
183
1403
6月8日
2522
550
184
1543
6月9日
2522
451
184
1653
6月10日
2522
351
186
1747
6月13日
2522
71
187
1944
6月14日
2522
4
189
1994
6月15日
2522
3
189
2015
6月7日
2523
668
183
1446
6月11日
2523
257
186
1821
6月12日
2523
155
187
1876
附录B
functionE=BJ(theta)
formatlong;
x=[……];
C=[%出院人数
……];
A=[%累计个案
……];
B=[……];死亡人数
y=A-B-C;
s0=theta(4);n0=theta(5);
[t,s]=ode45('feidian',[0:
64],[s0n033951],[],theta);
E=sum((y-s(:
3)).^2+(B+C-s(:
4)).^2)%+(C-s(:
5)).^2)
functionE=BJ(theta)
formatlong;
x=[……];
C=[%出院人数
……];
A=[%累计个案
……];
B=[……];死亡人数
y=A-B-C;
s0=theta(4);n0=theta(5);
[t,s]=ode45('feidian',[0:
64],[s0n033951],[],theta);
E=sum((y-s(:
3)).^2+(B+C-s(:
4)).^2)%+(C-s(:
5)).^2)
[X,FVAL,EDITFLAG]=fminsearch('bj',[0.00020.20.051800180]);
options=odeset('reltol',10^(-14),'abstol',10^(-15));
theta=X
IMIN=FVAL
y=zeros(65,1);
B=[%死亡人数
……];
C=[%出院人数
……];
A=[%累计个案
……];
y=A-B-C;
[t,s]=ode45('feidian',[0:
100],[theta(4)theta(5)339
51],options,theta);
plot(t,s(:
3))
holdon
T=0:
64;
plot(T,y,'o')
xlabel('时间');
ylabel('染病人数');
title('全国:
4月20日至6月12日');
figure
plot(t,s(:
4))
holdon
T=0:
64;
plot(T,B+C,'o')
xlabel('时间');
ylabel('移除人数');
title('全国:
4月20日至6月12日');
figure