数学建模预测模型MATLAB代码大合集及皮尔逊相关性分析(无需调试、开源)

本文主要是介绍数学建模预测模型MATLAB代码大合集及皮尔逊相关性分析(无需调试、开源),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

已知2010-2020数据,预测2021-2060数据

一、Logistic预测人口

%%logistic预测2021-2060年结果
clear;clc;
X=[7869.34,	8022.99,	8119.81,	8192.44,	8281.09,	8315.11,	8381.47,	8423.50,	8446.19,	8469.09,	8477.26];
n=length(X)-1;
for t=1:nZ(t)=(X(t+1)-X(t))/X(t+1);
end
X1=[ones(n,1) X(1:n)'];
Y=Z';
[B,Bint,r,rint,stats]=regress(Y,X1);%最小二乘(OLS)
gamma=B(1,1);
beta=B(2,1);
b=log(1-gamma);
c=beta/(exp(b)-1);
a=exp((sum(log(1./X(1:n)-c))-n*(n+1)*b/2)/n);
XX=2010:2060;
YY=1./(c+a*exp(b*([XX-2010])));
plot(XX,YY,'r-o')
hold on
plot(XX(1:length(X)),X,'b-*')
legend('预测值','实际值')
xlabel('年份');ylabel('人口数(万人)');
title('人口数量预测')
set(gca,'XTick',[2010:5:2060])
grid on
format short;
forecast=YY(end-40:end);%2021-2060人口的预测结果
MAPE=sum(abs(YY(1:n+1)-X)./X)/length(X);%平均相对差值
a,b,c

二、灰色预测GDP

%%灰色预测模型预测某区2021-2060年GDP量变化
clc;clear;
%建立符号变量a(发展系数)和b(灰作用量)
syms a b;
c = [a b]';
%原始数列(这里我们输入历史碳排放数据)
A = [41383.87,45952.65,50660.20,55580.11,60359.43,65552.00,70665.71,75752.20,80827.71,85556.13,88683.21];
%级比检验
n = length(A);
min=exp(-2/(n+1));
max=exp(2/(n+1));
for i=2:n
ans(i)=A(i-1)/A(i);
end
ans(1)=[];
for i=1:(n-1)
if ans(i)<max&ans(i)>min
else
fprintf('第%d个级比不在标准区间内',i)
disp(' ');
end
end
%对原始数列 A 做累加得到数列 B
B = cumsum(A);
%对数列 B 做紧邻均值生成
for i = 2:n
C(i) = (B(i) + B(i - 1))/2; 
end
C(1) = [];
%构造数据矩阵 
B = [-C;ones(1,n-1)];
Y = A; Y(1) = []; Y = Y';
%使用最小二乘法计算参数 a(发展系数)和b(灰作用量)
c = inv(B*B')*B*Y;
c = c';
a = c(1);
b = c(2);
%预测后续数据
F = []; F(1) = A(1);
for i = 2:(n+40)
F(i) = (A(1)-b/a)/exp(a*(i-1))+ b/a;
end
%对数列 F 累减还原,得到预测出的数据
G = []; G(1) = A(1);
for i = 2:(n+40)
G(i) = F(i) - F(i-1); %得到预测出来的数据
end
disp('预测数据为:');
G
%模型检验
H = G(1:n);
%计算残差序列
epsilon = A - H;
%法一:相对残差Q检验
%计算相对误差序列
delta = abs(epsilon./A);
%计算相对误差平均值Q
disp('相对残差Q检验:')
Q = mean(delta)
%法二:方差比C检验disp('方差比C检验:')
C = std(epsilon, 1)/std(A, 1)
%法三:小误差概率P检验
S1 = std(A, 1);
tmp = find(abs(epsilon - mean(epsilon))< 0.6745 * S1);
disp('小误差概率P检验:')
P = length(tmp)/n
%绘制曲线图
t1 = 2010:2020;
t2 = 2010:2060;
plot(t1, A,'-b','LineWidth',2);
hold on;
plot(t2, G, 's','LineWidth',1);
xlabel('年份'); ylabel('GDP(亿元)');
legend('实际GDP','预测GDP');
title('2021-2060GDP预测');
grid on;

三、BP神经网络预测

       选取2000-2017年x省碳排放量为训练集,2018-2022x省碳排放量作为测试集,以此来预测2023-2026年x省碳排放量。设置训练次数为 1000次,学习速率为0.2;对该训练集BP神经网络模型拟合后模型的训练样本、验 证样本和测试样本的均方误差分别是0.000012、0.0023、0.0042,整体的误差为 0.0082203,因此训练好的BP神经网络模型的预测精度较高。训练好的BP神经网络 神经模型的结果如图3所示

clear allclcclf%% 1,读取数据,并做归一化处理
input_1=[2391,2487,2588,2683,3150,3513,3751,3969,4384,4653,4482,5366,6238,6515,6647,6704,6806,6682,6346,6253,6513,7120,7597];n=length(input_1);row=4; %通过前四年数据,预测第五年
input=zeros(4,n-row);for i =1:rowinput(i,:)=input_1(i:n-row+i-1);endoutput=input_1(row+1:end);[inputn,inputps]=mapminmax(input);[outputn,outputps]=mapminmax(output);%% 2,划分训练集和测试集
inputn_train=inputn(:,1:n-row-5);inputn_test=inputn(:,n-row-4:end);outputn_train=outputn(1:n-row-5);outputn_test=outputn(n-row-4:end);%% 3,构建BP神经网络
hiddennum=10;%隐含层节点数量经验公式p=sqrt(m+n)+anet=newff(inputn_train,outputn_train,hiddennum,{'tansig','purelin'},'trainlm'); %tansig :正切 S 型传递函数。purelin:线性传递函数。trainlm:Levenberg-Marquardt 算法
%% 4,网络参数配置
net.trainParam.epochs=1000;net.trainParam.lr=0.2;%% 5,BP神经网络训练
[net,tr]=train(net,inputn_train,outputn_train);%% 6,仿真计算
resultn=sim(net,inputn_test);%% 7,计算与测试集之间误差
result=mapminmax('reverse',resultn,outputps);output_test=mapminmax('reverse',outputn_test,outputps);error=result-output_test;rmse=sqrt(error*error')/length(error);figure(1)plot(output_test,'b')hold onplot(result,'r*');hold on
plot(error,'s','MarkerFaceColor','k')legend('期望值','预测值','误差')xlabel('数据组数')ylabel('值')%% 8,预测未来四年碳排放
pn=3;[p_in,ps]=mapminmax(input_1(n-row+1:end));p_in=p_in';p_outn=zeros(1,pn);for i = 1:pnp_outn(i)=sim(net,p_in);p_in=[p_in(2:end);p_outn(i)];endp_out=mapminmax('reverse',p_outn,ps)figure(2)plot(2000:2022,input_1,'k--o')hold onplot(2018:2022,result,'b--*')hold onplot(2023:2026,[result(end),p_out],'r--+')legend('实际值','拟合值','预测值')

从图3看出,验证样本和测试样本的均方误差收敛到近 10^{-2}时达到最小,这时训练出的BP神经网络模型是最优的。利用BP神经网络模型预测2023-2026 年x省碳排放量分别 是7149.39 万吨、7556.6 万吨、7441.1 万吨、7479.1 万吨。x省碳排放量实际值、拟合值、预测值的变化趋势见下图。

2018-2022 年实际建筑碳排放量和预测得到的全过程碳排放量的误差图,如下图所示: 

训练完成BP神经网络模型后可以得到训练集、验证集、测试集以及整体结果 的数据相关性。训练样本、验证样本、测试样本的预测输出和目标输出的相关系 数分别为0.99974、0.9935、0.99983,整体的相关系数为0.99238,如图4,5,6,7 所示。BP神经网络拟合结果较好。 

四、皮尔逊相关性分析代码

xiu.xlsx

将该xiu.xlsx放到一新建文件夹中,然后在MATLAB中导入该表格(点击绿色箭头文件夹)

%%皮尔逊相关性分析矩阵代码
clc
clear all
data=xlsread('xiu.xlsx',1,'B2:J12');
figure
% 求维度之间的相关系数
rho = corr(data, 'type','pearson');
% 绘制热图
string_name={'人口','第一产业GDP','第二产业GDP','第三产业GDP','第一产业能源消费量','第二产业能源消费量','第三产业能源消费量','居民生活能源消费量','碳排放总量'};
xvalues = string_name;
yvalues = string_name;
h = heatmap(xvalues,yvalues, rho, 'FontSize',10, 'FontName','宋体');
h.Title = '皮尔逊相关性分析系数矩阵';
colormap summerfigure
% 可以自己定义颜色块
H = heatmap(xvalues,yvalues, rho, 'FontSize',10, 'FontName','宋体');
H.Title = '皮尔逊相关性分析系数矩阵'; 
colormap(autumn(5))%设置颜色个数

colormap函数用于设置当前图形的颜色映射。常见颜色映射有:summer\autumn\winter\spring\cool\hot\hsv\jet

这篇关于数学建模预测模型MATLAB代码大合集及皮尔逊相关性分析(无需调试、开源)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/176153

相关文章

Java调用DeepSeek API的最佳实践及详细代码示例

《Java调用DeepSeekAPI的最佳实践及详细代码示例》:本文主要介绍如何使用Java调用DeepSeekAPI,包括获取API密钥、添加HTTP客户端依赖、创建HTTP请求、处理响应、... 目录1. 获取API密钥2. 添加HTTP客户端依赖3. 创建HTTP请求4. 处理响应5. 错误处理6.

Springboot中分析SQL性能的两种方式详解

《Springboot中分析SQL性能的两种方式详解》文章介绍了SQL性能分析的两种方式:MyBatis-Plus性能分析插件和p6spy框架,MyBatis-Plus插件配置简单,适用于开发和测试环... 目录SQL性能分析的两种方式:功能介绍实现方式:实现步骤:SQL性能分析的两种方式:功能介绍记录

使用 sql-research-assistant进行 SQL 数据库研究的实战指南(代码实现演示)

《使用sql-research-assistant进行SQL数据库研究的实战指南(代码实现演示)》本文介绍了sql-research-assistant工具,该工具基于LangChain框架,集... 目录技术背景介绍核心原理解析代码实现演示安装和配置项目集成LangSmith 配置(可选)启动服务应用场景

Goland debug失效详细解决步骤(合集)

《Golanddebug失效详细解决步骤(合集)》今天用Goland开发时,打断点,以debug方式运行,发现程序并没有断住,程序跳过了断点,直接运行结束,网上搜寻了大量文章,最后得以解决,特此在这... 目录Bug:Goland debug失效详细解决步骤【合集】情况一:Go或Goland架构不对情况二:

0基础租个硬件玩deepseek,蓝耘元生代智算云|本地部署DeepSeek R1模型的操作流程

《0基础租个硬件玩deepseek,蓝耘元生代智算云|本地部署DeepSeekR1模型的操作流程》DeepSeekR1模型凭借其强大的自然语言处理能力,在未来具有广阔的应用前景,有望在多个领域发... 目录0基础租个硬件玩deepseek,蓝耘元生代智算云|本地部署DeepSeek R1模型,3步搞定一个应

Python中顺序结构和循环结构示例代码

《Python中顺序结构和循环结构示例代码》:本文主要介绍Python中的条件语句和循环语句,条件语句用于根据条件执行不同的代码块,循环语句用于重复执行一段代码,文章还详细说明了range函数的使... 目录一、条件语句(1)条件语句的定义(2)条件语句的语法(a)单分支 if(b)双分支 if-else(

Deepseek R1模型本地化部署+API接口调用详细教程(释放AI生产力)

《DeepseekR1模型本地化部署+API接口调用详细教程(释放AI生产力)》本文介绍了本地部署DeepSeekR1模型和通过API调用将其集成到VSCode中的过程,作者详细步骤展示了如何下载和... 目录前言一、deepseek R1模型与chatGPT o1系列模型对比二、本地部署步骤1.安装oll

最长公共子序列问题的深度分析与Java实现方式

《最长公共子序列问题的深度分析与Java实现方式》本文详细介绍了最长公共子序列(LCS)问题,包括其概念、暴力解法、动态规划解法,并提供了Java代码实现,暴力解法虽然简单,但在大数据处理中效率较低,... 目录最长公共子序列问题概述问题理解与示例分析暴力解法思路与示例代码动态规划解法DP 表的构建与意义动

Spring AI Alibaba接入大模型时的依赖问题小结

《SpringAIAlibaba接入大模型时的依赖问题小结》文章介绍了如何在pom.xml文件中配置SpringAIAlibaba依赖,并提供了一个示例pom.xml文件,同时,建议将Maven仓... 目录(一)pom.XML文件:(二)application.yml配置文件(一)pom.xml文件:首

MySQL数据库函数之JSON_EXTRACT示例代码

《MySQL数据库函数之JSON_EXTRACT示例代码》:本文主要介绍MySQL数据库函数之JSON_EXTRACT的相关资料,JSON_EXTRACT()函数用于从JSON文档中提取值,支持对... 目录前言基本语法路径表达式示例示例 1: 提取简单值示例 2: 提取嵌套值示例 3: 提取数组中的值注意