对长江江豚迁地保护种群数量的预测 基于Leslie和Logistic模型

对2022年一月初进行的xjtu的美赛选拔赛进行一点总结(学到了一些MATLAB技巧,比赛经验),比赛时间为1月13日6点~1月17日9点,一共给出了两道题

A题:要求预测长江江豚在迁地保护下20年后的种群数量和假设没有迁地保护下江豚是否会出现功能性灭绝。

B题:研究人才流动模型,判断当前西安人才现状的健康状况,研究一个人才引进政策体系,提出建议。

A题为预测拟合类题目,B题为评价标准类题目,感觉A题更加易于建模(脚踏实地点),最后选择了A题,以下为详细题目:

比赛日记

Day1

上午:查找论文,统计各地江豚数量(长江支流,鄱阳湖,洞庭湖,保护区如:天鹅洲),绘制江豚数量统计表,确定第一问使用 LeslieLeslie 模型,第二问使用 LogisticLogistic 模型。

下午:学习 LeslieLeslie 模型,由天鹅洲保护区从1991年到2021年的数据进行建模(其实就三个点),建模关键是对 生存率 的估计。

晚上: 调整生存率参数,完成拟合。

Day2

上午:提取昨天由 LeslieLeslie 模型拟合的数据(生育模式,年龄分布)。

下午:用2021年的预测数据在不同的性别比例下,对20年后(2041年)保护区总江豚数进行预测。

晚上:绘制不同地区江豚数量的散点图,思考如何拟合 LogisticLogistic 模型,修改论文格式。

Day3

上午:通过加入假想数据,成功使用 Auto2Fit 对数据进行 LogisticLogistic 模型拟合。

下午:利用第一题所做出的预测,完成对种群功能性灭绝进行估计,提取预测数据,撰写拟合方法。

晚上:修改论文图片格式。

Day4

上午:学习SPSS(但没用上),整理全部代码。

下午:翻译代码注释,转换格式。

晚上:整理论文格式,转化为PDF,加入公式编号,优化图片质量。

模型

Leslie 人口预测模型

变量声明

l 性别参数, l=m为男性, l=w为女性xl(i,k) 第 k 年,年龄范围在 [i,i+1) 岁,性别为 l 的人口数量dl(i) 年龄范围在 [i,i+1) 岁,性别为 l 的死亡率(死亡人数在当年总人口中的占比)sl(i)=1dl(i) 年龄范围在 [i,i+1) 岁,性别为 l 的存活率(从第 i 岁活到 i+1 岁的人在当年总人口中的占比)b(i) 生育率(每位 [i,i+1) 岁女性平均生育婴儿数)a(k) 新生儿中男婴占比[i1,i2] 育龄区间(具有生育能力女性的年龄范围)vl(i,k) 第 k 年,年龄范围在 [i,i+1) 岁,性别为 l 的迁移数量(迁入为正,迁出为负)\begin{aligned} l\sim&\ \text{性别参数},\ l=m\text{为男性},\ l=w\text{为女性}\\ x^l(i, k)\sim&\ \text{第 } k\text{ 年,年龄范围在 } [i,i+1) \text{ 岁,性别为 }l\text{ 的人口数量}\\ d^l(i)\sim&\ \text{年龄范围在 } [i,i+1) \text{ 岁,性别为 }l\text{ 的死亡率}\\ &\text{(死亡人数在当年总人口中的占比)}\\ s^l(i)=1-d^l(i)\sim&\ \text{年龄范围在 } [i,i+1) \text{ 岁,性别为 }l\text{ 的存活率}\\ &\text{(从第 }i\text{ 岁活到 }i+1\text{ 岁的人在当年总人口中的占比)}\\ b(i)\sim&\ \text{生育率}\text{(每位 }[i,i+1)\text{ 岁女性平均生育婴儿数)}\\ a(k)\sim&\ \text{新生儿中男婴占比}\\ [i_1,i_2]\sim&\ \text{育龄区间(具有生育能力女性的年龄范围)}\\ v^l(i, k)\sim&\ \text{第 } k\text{ 年,年龄范围在 } [i,i+1) \text{ 岁,性别为 }l\text{ 的迁移数量}\\ &\text{(迁入为正,迁出为负)} \end{aligned}

对于此题,通过查阅资料知道,江豚平均寿命为20年,雌性育龄期为 441616 岁,可以假设保护区没有迁入迁出变化,从而确定以下变量

a(k)= 12[i1,i2]= [4,16]vl(i,k)= 0\begin{aligned} a(k) =&\ \frac{1}{2}\\ [i_1,i_2]=&\ [4,16]\\ v^l(i, k) =&\ 0 \end{aligned}

递推公式

根据上述变量含义可以给出如下的人数递推公式

{xl(1,k+1)=sl(0)a(k)i=i1i2b(i)xw(i,k)+vl(0,k)xl(i+1,k+1)=sl(i)xl(i,k)(l=m,w)\begin{cases} \displaystyle x^l(1, k+1) =s^l(0)a(k)\sum_{i=i_1}^{i_2}b(i)x^w(i, k)+v^l(0, k)\\ \displaystyle x^l(i+1,k+1)=s^l(i)x^l(i, k) \end{cases} \quad(l=m, w)

代入已确定的变量得

{xl(1,k+1)=12sl(0)i=i1i2b(i)xw(i,k)xl(i+1,k+1)=sl(i)xl(i,k)(l=m,w)\begin{cases} \displaystyle x^l(1, k+1) =\frac{1}{2}s^l(0)\sum_{i=i_1}^{i_2}b(i)x^w(i, k)\\ x^l(i+1,k+1)=s^l(i)x^l(i, k) \end{cases} \quad(l=m, w)

矩阵递推

为了更方便地递推,使用矩阵乘法代替求和,引入如下记号(下文中 ii 岁均指:年龄在 [i,i+1)[i,i+1) 范围内的个体)

总生育率(每位女性一生的平均剩余数):β= i=i1i2b(i)\displaystyle\beta=\ \sum_{i=i_1}^{i_2}b(i)
生育模式( ii 岁女性的生育数在育龄女性中的占比):h(i)= b(i)β(k)\displaystyle h(i) =\ \frac{b(i)}{\beta(k)}

人口分布向量(第 kk 年人口在不同年龄段上的分布):xl(k)= [xl(1,k),xl(2,k),,xl(n,k)]T\bm{x}^l(k) = \ \left[x^l(1, k), x^l(2, k),\cdots, x^l(n, k)\right]^T

存活率矩阵(人口分布变化):

Sl=[0000sl(1)0000sl(2)0000sl(n1)0]S^l = \left[\begin{matrix} 0&0&\cdots&0&0\\ s^l(1)&0&\cdots&0&0\\ 0&s^l(2)&\cdots&0&0\\ \vdots&\vdots&\ddots&\vdots&\vdots\\ 0&0&\cdots&s^l(n-1)&0 \end{matrix}\right]

生育模式矩阵:

H=[00h(i1)h(i2)00000000000000]H = \left[\begin{matrix} 0&\cdots&0&h(i_1)&\cdots&h(i_2)&0&\cdots&0\\ 0&\cdots&0&0&\cdots&0&0&\cdots&0\\ \vdots&\ddots&\vdots&\vdots&\ddots&\vdots&\vdots&\ddots&\vdots\\ 0&\cdots&0&0&\cdots&0&0&\cdots&0 \end{matrix}\right]

转移矩阵(可以验证,下述转移矩阵和上述的递推式等价)

{xm(k+1)=Smxm(k)+12sm(0)βHxw(k)xw(k+1)=Swxw(k)+12sm(0)βHxw(k)\begin{cases} \displaystyle \bm{x}^m(k+1) = S^m\bm{x}^m(k)+\frac{1}{2}s^m(0)\beta H\bm{x}^w(k)\\ \displaystyle \bm{x}^w(k+1) = S^w\bm{x}^w(k)+\frac{1}{2}s^m(0)\beta H\bm{x}^w(k) \end{cases}

观察上式发现,影响男女分布主要参数是 SlS^l,影响整个种群总数的参数是 β,H\beta, H 和初始的雌雄分布比例。

生育率使用概率中的 Γ\Gamma 分布:

y=1baΓ(a)xa1ex/by = \frac{1}{b^a\Gamma(a)}x^{a-1}e^{-x/b}

利用如下公式生成(别人给的,不懂原理)

h(i)=12nΓ(n)(ii1+1)n1e(ii1+1)/2h(i) = \frac{1}{2^n\Gamma(n)}(i-i_1+1)^{n-1}e^{-(i-i_1+1)/2}

其中 n=ici1+22n = \frac{i_c-i_1+2}{2}i1ii2i_1\leqslant i\leqslant i_2i1=4,i2=16,ic=6i_1=4,i_2=16,i_c=6ici_c 称为生育高峰期),生成效果如下(代码中所有年份都要减去1才是真实年份,因为matlab没有0😢)

生育模式

调参拟合

经过手动调整生存率参数(只会手动调。。。),得到以下较好的拟合图形

1991年对2021年数据拟合

接下来利用1991年预测得到的2021年的年龄分布先进行单位化,在根据性别比例等比例缩放至总数为150只(因为所有保护区的总数为150只,而上述预测只是对天鹅洲一地所进行的),再使用 LeslieLeslie 模型对20年后种群总数量进行预测。

思路比较简单直接上代码:

预测效果如下图

2021年不同性别比例对20年后种群数量的影响

Logistic 拟合

这个相比上面就暴力多了,希望直接使用 LogisticLogistic 函数往目标数据上套,于是使用如下的方法:

首先 LogisticLogistic 函数就是一个微分方程的解:

dxdt=u(xa)2r(xa)\frac{dx}{dt}=u(x-a)^2-r(x-a)

解得

x=ru+ert+c+ax = \frac{r}{u+e^{rt+c}}+a

原方程中其实没有变量 aa,但是如果没有 aa (即函数下界为 00)对于近几年的拟合效果较差。

先通过绘制不同地区的离散图,选择适合的数据。

不同地区的离散图

用于生成图像的代码(里面包含了实际观测的数据)。

最后选择对 种群数量 进行 LogisticLogistic 预测,由于可用参数太少了,所以只能加入一些假想的点

假想点设置

然后使用Auto2Fit进行拟合(Auto2Fit软件很不好下,这里给出一个网盘下载连接 提取码:1234

Auto2Fit 的代码很简短易懂,只需要把变量写出来,可变参数直接写在式子中,点击上面运行键即可进行拟合(拟合代码如下):

Variable x, y;
Function y=a/(b+exp(a*x+c))+d;
Data;
         0    2.7000
    4.0000    2.6000
    6.0000    2.4000
    7.0000    2.2000
    9.0000    2.0000
   10.0000    1.8000
   13.0000    1.4000
   17.0000    1.2000
   21.0000    1.0450
   26.0000    1.0120

两种函数拟合效果的比较

拟合图像代码:

由于2021年前迁地保护的江豚数量在总种群数目中占比较小,可以忽略,所以上述模拟的可以认为是总江豚数目的变换,由于21年后保护区的江豚总数在总种群数目中占比逐渐增大,直接通过减法,即可预测到没有迁地保护下江豚数目的变化。

预测结果

制图代码:

至此完成了全部拟合过程,其实也没很复杂,只是第一次操作,对MATLAB函数运用不是很灵活,下面记录些常用的函数

% 在同一个figure中绘制多个子图
tiledlayout(1, 2); 
ax1 = nexttile; 
bar(ax1, s1); 
ax2 = nexttile; 
bar(ax2, s2); 

% 离散Gamma函数
gampdf(x, a, b);

% 将矩阵导出为Excel表格,文件名的后缀要用.xlsx或.xls
% writematrix(矩阵名称, '文件名.xlsx', 'Range', '矩阵输入的左上角对应Excel中的单元格,横轴为A-Z,纵轴为1,2,3...');
writematrix(m, 'Leslie.xlsx', 'Range', 'D1');

% 对x,y轴加标签,标题也是可以的,设置字体,字体大小
xlabel('Year', 'FontName', 'Times New Roman', 'FontSize', 11);
ylabel('Total Number of Populations(Unit: Head)', 'FontName', 'Times New Roman', 'FontSize', 11); 

% x,y轴范围限制,[x左端点 x右端点 y左端点 y右端点]
axis([1991 2021 5 105]);

% 同一个图像中有多个曲线,对不同曲线进行标注,方法是创建一个字符向量,从左到右,分别代表绘制曲线的顺序
legends = string(0.7:0.1:1.3);
legend(legends);

% 设置曲线颜色
p = plot(x, y, '-'); 
p.Color = '#EDB120'; % 好像还可以用RGB设置

% 设置曲线宽度,参数'linewidth'
plot(t, x3, '-', 'linewidth', 1.5); 

最后要感谢队友们的共同努力😆,共同完成整篇论文(英文论文语法使用,排版和格式做的是真的好)(不然上面整的都是摆设~(>_<。)\)。


对长江江豚迁地保护种群数量的预测 基于Leslie和Logistic模型
https://wty-yy.github.io/posts/58946/
作者
wty
发布于
2022年1月16日
许可协议