To be continue … …
文章目录
- 一、Logistic模型
- 1.1 Logistic方程概述
- 1.2 Logistic方程的性质
- 二、Logistic曲线拟合方法
- 2.1 Logistic曲线初值的选取
- 2.2 Logistic曲线的参数拟合方法
- 2.2.1 三点法
- 2.2.2 四点法
- 2.2.3 拐点法
- 2.2.4 误差估计——决定系数
- 2.2.5 非线性拟合
- 三、Logistic预测增长
这是创新训练传染病的微分方程
模型Logistic
曲线笔记
一、Logistic模型
1.1 Logistic方程概述
图1
Logistics
方程可用下列微分方程描述
????dtdN?=r(1?Nm?N?)NN(t0?)=N0???(1)
变量分离
方程,其中
Nm?表示理论上的最大值,
N0?表示
t0?时刻的病人数
分离变量,得
(1?Nm?N?)Nm?N?dN?=rNm?dt
即
N1?dN?Nm??N1?d(Nm??N)=rdt
也就是
?lnN?ln(Nm??N)=rt+C′?ln(Nm??NN?)=rt+C′?Nm??NN?=Cert(其中,C=eC′)?N=1+1/C?e?rtNm???
代入初值条件
N(t0?)=N0?,得
C=Nm??N0?N0??e?rt0?
代入上式得
?N=1+(N0?Nm???1)e?r(t?t0?)Nm???N=Nm?1?+(N0?1??Nm?1?)e?r(t?t0?)1??(2)
由上式可看出,令
t→∞,
N→Nm?,也即
N=N0?(er(t?t0?)?1)+Nm?N0?Nm?er(t?t0?)?
另外一种形式的logistic
微分方程如下
????dtdN?=rN?kN2N(t0?)=N0???(3)
其中,
r表示发病率
,
k表示预防效果
同理即得
N=rk?+(N0?1??rk?)e?r(t?t0?)1?
其中,
Nm?=kr?,(while t→∞),表示理论上的最大人数
1.2 Logistic方程的性质
图2
由
dtdN?=?kN2+rN的右端函数,不妨设为
f(N),则
易知
f>0对
N∈(0,Nm?)恒成立,函数图像为开口向下的抛物线
也就是
dtdN?>0对
N∈(0,Nm?)恒成立,也即
N(t)在
(0,Nm?)单调递增
又因为
f′=?2kN+r,即
f′(Nm?/2)=0;当
N<2Nm??时,
f′>0,当
N>2Nm??时,
f′<0。即表明当
N<2Nm??时,增长率
dtdN?是增加的,当
N>2Nm??时,增长率是减小的。在
N=2Nm??时,增长率
dtdN?达到最大。可看成疫情拐点
的到来。且当
t→∞时,
N→Nm?。
由上式,代入
N=2Nm??,求得时间
t,即
t=r1?ln(N0?Nm???1)+t0?=r1?ln(kN0?r??1)+t0?(4)
即为疫情出现拐点的可能时间
t。
二、Logistic曲线拟合方法
对于logistic
曲线的参数拟合方法,见参考文献
拟合的初值选取方法等
2.1 Logistic曲线初值的选取
对于如下一组数据
表1
序号 |
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
日期 |
11 |
18 |
19 |
20 |
21 |
22 |
23 |
24 |
25 |
26 |
27 |
28 |
29 |
30 |
31 |
感染人数 |
41 |
45 |
62 |
291 |
440 |
571 |
830 |
1287 |
1975 |
2744 |
4515 |
5974 |
7711 |
9692 |
11791 |
用logistic
曲线拟合
用形如
A/(1+be?ct)拟合
Matlab
拟合
clear
clc
x=1:15;
y=[41,45,62,291,440,571,830,1287,1975,2744,4515,5974,7711,9692,11791];
% syms b c
% [b,c]=solve(5000/(1+b*exp(-c*1))==43,5000/(1+b*exp(-c*2))==45,b,c)
c0=[5000,120.6896,0.0459];
% c0=[6000 145.0271 0.0458];c0=[10000 242.3770 0.0457];
fun=inline('c(1)./(1+c(2).*exp(-c(3).*x))','c','x');
b=nlinfit(x,y,fun,c0);disp("各参数的值(c(1) c(2) c(3)):");disp(b);
t=0:0.1:30;
plot(x,y,'rs',t,fun(b,t),'b');set(gca,'ygrid','on');
legend("真实值","预测曲线");xlabel("日数");ylabel("累计病人数");
对于A的初值选取,可任意选取
A0?=5000,将初值
F(1)=43,F(2)=45代入
syms b c
[b,c]=solve(5000/(1+b*exp(-c*1))==43,5000/(1+b*exp(-c*2))==45,b,c)
解得:
C0?=[5000,b,c]
即得logistic方程
如下
N=1+473?e?0.4553t17715?
图3
python
拟合
一般来说,
r越小,累计病人数增多,且结束的时间长;反之亦然
图4
2.2 Logistic曲线的参数拟合方法
主要参考文献
- 殷祚云.Logistic曲线拟合方法研究[J].数理统计与管理,2002(01):41-46.
- 主要包括(
线性
或非线性
):三点法、四点法和拐点法
Logistic方程为
N=1+eb?rtNm??(5)
其中,N为生物量,r为内禀自然增长率
,
Nm?为环境容纳量
,b为积分常数
将上式取对数
,整理得
lnNNm??N?=b?rt(6)
2.2.1 三点法
假设有实测数据
Q={(t1?,N1?),(t2?,N2?),?,(tn?,Nn?)},分别选取数据Q的始点
、中点
和终点
数据,即
A(T1?,NT1??),B(T2?,NT2??),(CT3?,NT3???),代入(6)得
??????lnN1?Nm??N1??=b?rT1? ①lnN2?Nm??N2??=b?rT2? ②lnN3?Nm??N3??=b?rT3? ③??(7)
其中
2T2?=T1?+T2?,由①+③-2②整理得
2lnNT2??N?NT2???=lnNT1??N?NT1???+lnNT3??N?NT3???
化简得
Nm?(N22?1??N1?N3?1?)=?N2?N1?+N3??+N2?2?
整理得
Nm?=N1?N3??N22?2N1?N2?N3??N22?(N1?+N3?)?(8)
如上对于表1数据,可取
A(t初?=1,41),B(t中?=8,1287),C(t终?=15,11791),代入(2)式得
Nm?=15648。此时对于(1)式用最小二乘法
做线性拟合,即形如
y=b?rt。
最小二乘法估计公式:设有一列点
(xi?,yi?),i=1,2,?,n,利用
y=ax+b估计
????????????aˉ=n∑i=1n?xi2??(∑i=1n?xi?)2n∑i=1n?xi?yi??(∑i=1n?xi?)(∑i=1n?yi?)?bˉ=n∑i=1n?xi2??(∑i=1n?xi?)2(∑i=1n?xi2?)(∑i=1n?yi?)?(∑i=1n?xi?yi?)(∑i=1n?xi?)???
对于原始数据Q做变换得
表2
序号 |
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
变换后 |
5.9419 |
5.8486 |
5.5270 |
3.9660 |
3.5428 |
3.2735 |
2.8822 |
2.4122 |
1.9349 |
1.5481 |
0.9025 |
0.4820 |
0.0289 |
-0.4869 |
-1.1174 |
这是线性拟合
利用cftool
线性最小二乘法拟合求得
r=0.5042,b=6.4793
clear
clc
t=1:15;
N=[41 45 62 291 440 571 830 1287 1975 2744 4515 5974 7711 9692 11791];
K=15648;
NN=log(K./N-1);
plot(t,N,'s');set(gca,'ygrid','on');
p=polyfit(t,NN,1)
2.2.2 四点法
假设有实测数据
Q={(t1?,N1?),(t2?,N2?),?,(tn?,Nn?)},分别选取数据Q的始点
、中点两点
和终点
共四个数据,即
A(T1?,N1?),B(T2?,N2?),C(T3?,N3?),D(T4?,N4?),代入(i)得,
??????????lnN1?Nm??N1??=b?rT1? ?lnN2?Nm??N2??=b?rT2? ?lnN3?Nm??N3??=b?rT3? ?lnN4?Nm??N4??=b?rT4? ???(9)
其中
T1?+T4?=T2?+T3?,由
?+?????得
lnN2?Nm??N2??+lnN3?Nm??N3??=lnN1?Nm??N1??+lnN4?Nm??N4??
整理得
Nm?(N2?N3?1??N1?N4?1?)=N2?N3?N2?+N3???N1?N4?N1?+N4??
即
Nm?=N1?N4??N2?N3?N1?N4?(N2?+N3?)?N2?N3?(N2?+N3?)?(10)
同理,对于表1的数据,可取
A(t初?=1,41),B(t=6,571),
C(t=10,2744),
D(t终?=15,11791),计算可得
Nm?=15632。此时对于(1)式用最小二乘法
做线性拟合
2.2.3 拐点法
拐点的另外一种求法
对于方程
dtdN?=r(1?Nm?N?)N
左右两边对
t求导数,即
dtd2N?=r(1?Nm?2N?)dtdN?(12)
当
dtdN???=0时,即得
dtd2N?=0?N=2Nm??,即当
dtdN?最大时,也就是曲线斜率最大
处时
Nk?=2Nm??,即
Nm?=2Nk?。曲线由凸变凹。
2.2.4 误差估计——决定系数
一个特定数值对于其平均值的偏离,称为离差
。决定系数的定义公式为
R2=SSTSSR?=∑(y?yˉ?)2∑(y^??yˉ?)2?=1?∑(y?yˉ?)2∑(y?y^?)2?
2.2.5 非线性拟合
任意取A的一个初值
A0?,然后利用两个方程求解另两个参数的初值
syms b c
[b,c]=solve(5000/(1+b*exp(-c*1))==43,5000/(1+b*exp(-c*2))==45,b,c)
然后用L-M
方法据梯度降速求得最优参数。
三、Logistic预测增长