首页 > 其他分享 >【高质量】2024数学建模国赛E题高质量代码+思路(点个关注,后续会更新)

【高质量】2024数学建模国赛E题高质量代码+思路(点个关注,后续会更新)

时间:2024-06-03 23:59:13浏览次数:16  
标签:plt data 模型 .# 高质量 国赛 2024 水流量 数据

您的点赞收藏是我继续更新的最大动力!

一定要点击如下的卡片链接,那是获取资料的入口!

点击链接加入群聊【2024国赛资料合集】:http://qm.qq.com/cgi-bin/qm/qr?_wv=1027&k=tvWLj22l8fsRZPV1zKOwfcihPex9VNXi&authKey=dHAIZyRWUaLsvrRpqr0KxbF7gslsivHrAA1dQQ04dycSAZOyzrALr7scpfsSnxW9&noverify=0&group_code=604186428icon-default.png?t=N7T8http://qm.qq.com/cgi-bin/qm/qr?_wv=1027&k=tvWLj22l8fsRZPV1zKOwfcihPex9VNXi&authKey=dHAIZyRWUaLsvrRpqr0KxbF7gslsivHrAA1dQQ04dycSAZOyzrALr7scpfsSnxW9&noverify=0&group_code=604186428

E 题 黄河水沙监测数据分析
黄河是中华民族的母亲河。研究黄河水沙通量的变化规律对沿黄流域的环境治理、气候变
化和人民生活的影响,以及对优化黄河流域水资源分配、协调人地关系、调水调沙、防洪减
灾 等方面都具有重要的理论指导意义。 附件 1 给出了位于小浪底水库下游黄河某水文站
近 6 年的水位、水流量与含沙量的实际监 测数据,附件 2 给出了该水文站近 6 年黄河断
面的测量数据,附件 3 给出了该水文站部分监测 点的相关数据。请建立数学模型研究以下
问题:
问题 1 研究该水文站黄河水的含沙量与时间、水位、水流量的关系,并估算近 6 年该水 文
站的年总水流量和年总排沙量。
思路:
1. 数据整理:
o 从附件 1 中获取包含水位、水流量、含沙量和时间的数据。确保
数据按照时间顺序排列,并做好数据预处理,包括处理缺失值和
异常值。
2. 数据可视化(可选):
o 可以使用数据可视化工具(如 Matplotlib)绘制含沙量、水位和
水流量随时间变化的图表,以初步观察它们之间的关系。
3. 建立数学模型:
o 假设含沙量与时间、水位和水流量之间存在某种关系,可以选择
使用多元线性回归模型。该模型可以表示为: 含沙量 = β0 + 
β1 * 时间 + β2 * 水位 + β3 * 水流量 + ε
o 这里,β0、β1、β2 和 β3 是模型的参数,ε 是误差项。
4. 模型参数估计:
o 使用线性回归分析方法,根据数据拟合模型,估计模型中的参数
β0、β1、β2 和 β3。
o 估计的参数将反映时间、水位和水流量对含沙量的影响程度。
5. 模型评估:
o 使用模型对训练数据进行预测,得到预测值。
o 计算模型的拟合优度(通常使用 R 方值)来评估模型的拟合质
量。R 方值越接近 1,说明模型拟合得越好。
6. 年总水流量和年总排沙量估算:
o 使用模型对近 6 年的水位、水流量和时间数据进行预测,从而估
算含沙量。
o 计算这 6 年的年总水流量和年总排沙量,即将估算得到的含沙量
求和。


7. 结果解释和分析:
o 解释模型的参数,例如,参数 β1、β2 和 β3 表示时间、水位和
水流量对含沙量的影响程度。
o 分析年总水流量和年总排沙量的估算结果,了解近 6 年黄河水文
情况,以及含沙量与水位、水流量和时间的关联性。

8. # 导入必要的库
9. import numpy as np
10.import pandas as pd11.from sklearn.linear_model import LinearRegression
12.from sklearn.metrics import r2_score
13.
14.# 1. 数据整理
15.# 读取附件 1 的数据
16.data = pd.read_csv("附件 1.csv") # 假设数据保存在名为"附件 1.csv"的
文件中
17.
18.# 2. 数据可视化(可选)
19.# 可以使用 Matplotlib 或其他库绘制数据的图表,以初步观察关系
20.
21.# 3. 建立数学模型
22.# 分离自变量(时间、水位、水流量)和因变量(含沙量)
23.X = data[['时间', '水位', '水流量']]
24.y = data['含沙量']
25.
26.# 初始化线性回归模型
27.model = LinearRegression()
28.
29.# 4. 模型参数估计
30.# 使用线性回归拟合模型
31.model.fit(X, y)
32.
33.# 输出模型参数
34.intercept = model.intercept_
35.coefficients = model.coef_
36.
37.# 5. 模型评估
38.# 使用模型预测含沙量
39.y_pred = model.predict(X)
40.
41.# 计算模型的拟合优度
42.r_squared = r2_score(y, y_pred)
43.
44.# 6. 年总水流量和年总排沙量估算
45.# 假设您已经有了近 6 年的数据
46.
47.# 计算年总水流量
48.annual_total_flow = data['水流量'].sum()
49.
50.# 计算年总排沙量
51.annual_total_sediment = data['含沙量'].sum()
52.
53.# 7. 结果解释和分析54.# 打印模型参数和评估结果
55.print("模型参数:")
56.print("截距:", intercept)
57.print("系数:", coefficients)
58.print("拟合优度 (R^2):", r_squared)
59.
60.# 打印年总水流量和年总排沙量估算结果
61.print("年总水流量估算:", annual_total_flow)
62.print("年总排沙量估算:", annual_total_sediment)
63.
64.# 进一步分析模型的结果和含沙量与时间、水位、水流量之间的关系
65.
66.#具体算法思路:
67.
68.import pandas as pd
69.from sklearn.linear_model import LinearRegression
70.
71.# 1. 数据整理
72.data = pd.read_csv("附件 1.csv") # 假设数据保存在名为"附件 1.csv"的
文件中
73.X = data[['时间', '水位', '水流量']]
74.y = data['含沙量']
75.
76.# 3. 建立数学模型
77.model = LinearRegression()
78.model.fit(X, y)
79.
80.# 4. 模型参数估计
81.intercept = model.intercept_
82.coefficients = model.coef_
83.
84.# 6. 年总水流量和年总排沙量估算
85.# 假设您已经有了近 6 年的数据
86.annual_total_flow = data['水流量'].sum()
87.annual_total_sediment = data['含沙量'].sum()
88.
89.# 7. 结果解释和分析
90.print("模型参数:")
91.print("截距:", intercept)
92.print("系数:", coefficients)
93.print("年总水流量估算:", annual_total_flow)
94.print("年总排沙量估算:", annual_total_sediment)


95.问题二
1. 数据整理:
• 收集近 6 年的水位、水流量和含沙量数据,确保数据按照时间顺序排
列。
2. 数据预处理:
• 可能需要处理缺失数据和异常值。
• 对时间序列数据进行时间划分,例如按月或按季节。
3. 检验突变性:
• 使用统计方法(例如,变点检验)来检验水沙通量时间序列是否存在突
变点。突变点可能表示重大的水文事件,如洪水或干旱。
• 一种常用的方法是基于均值或方差的突变检验,例如 CUSUM(累积和)
或 Z 检验。
4. 季节性分析:
• 使用季节分解方法(例如 STL 分解)来分解水沙通量时间序列,以识别
季节性成分(如季节波动)。
• 可以计算每个季节成分的振幅、相位和频率。
5. 周期性分析:
• 使用傅里叶变换或小波变换等频域分析方法来检测水沙通量时间序列是
否存在周期性成分。
• 可以估计主要周期和振幅,并绘制周期性成分的谱图。


6. 建立数学模型:
• 可以使用时间序列分析方法,如 ARIMA(自回归整合移动平均模型)或
Prophet 等,来建立水沙通量的预测模型。
• 例如,ARIMA 模型可以表示为:
• 其中,Yt 是时间序列观测值,εt 是白噪声误差,ϕ 和 θ 是模型参
数,p 是阶数。
7. 模型评估:
• 使用模型对数据进行预测,然后评估模型的拟合优度,例如均方根误差
(RMSE)或 R 方值。
• 可以使用交叉验证等技术来验证模型的稳定性和准确性。8. 结果解释和分析:
• 解释模型的参数和结果,例如,检测到的突变点、季节性和周期性成分
的特性。
• 分析水沙通量的变化规律,特别关注可能导致突变或季节性变化的因
素,如降雨、融雪等。
9. 数据可视化:
• 使用图表、谱图等可视化工具来呈现突变性、季节性和周期性分析的结
果,使其更容易理解和传达给决策者。
 

• import pandas as pd
• import numpy as np
• import matplotlib.pyplot as plt
• import statsmodels.api as sm
• from statsmodels.tsa.statespace.sarimax import SARIMAX
• from statsmodels.graphics.tsaplots import plot_acf, plot_pacf
• from statsmodels.stats.diagnostic import acorr_ljungbox
• from statsmodels.tsa.seasonal import seasonal_decompose
• from sklearn.metrics import mean_squared_error
•
• # 1. 数据准备
• # 读取水沙通量数据,确保数据包含日期列
• data = pd.read_csv("水沙通量数据.csv") # 假设数据保存在名为"水沙通量
数据.csv"的文件中
• data['日期'] = pd.to_datetime(data['日期'])
• data.set_index('日期', inplace=True)
• ts = data['水沙通量']
•
• # 2. 差分操作
• ts_diff = ts.diff().dropna() # 一阶差分操作
•
• # 3. 模型选择(自相关和偏自相关图)
• fig, (ax1, ax2) = plt.subplots(2, 1, figsize=(12, 8))
• plot_acf(ts_diff, lags=40, ax=ax1)
• plot_pacf(ts_diff, lags=40, ax=ax2)
• plt.show()
•
• # 4. 参数选择
• # 根据自相关和偏自相关图选择 ARIMA 模型的阶数
• p = 1 # 自回归阶数
• d = 1 # 差分阶数
• q = 1 # 移动平均阶数
•
• # 5. 模型拟合和诊断• model = SARIMAX(ts, order=(p, d, q))
• results = model.fit()
•
• # 检查残差是否是白噪声
• residuals = results.resid
• lb, p_value = acorr_ljungbox(residuals, lags=20)
• if np.any(p_value < 0.05):
• print("模型的残差不是白噪声,可能需要进一步优化模型。")
•
• # 6. 季节性分解
• decomposition = seasonal_decompose(ts, model='additive', 
freq=12) # 假设季节性周期为 12 个月
• trend = decomposition.trend
• seasonal = decomposition.seasonal
• residual = decomposition.resid
•
• # 7. 模型预测
• n_forecast = 12 # 假设预测未来 12 个月的水沙通量
• forecast = results.get_forecast(steps=n_forecast)
• forecast_mean = forecast.predicted_mean
• forecast_ci = forecast.conf_int()
•
• # 8. 结果可视化
• plt.figure(figsize=(12, 8))
• plt.subplot(2, 2, 1)
• plt.plot(ts, label='原始数据')
• plt.title('原始数据')
• plt.subplot(2, 2, 2)
• plt.plot(trend, label='趋势')
• plt.title('趋势')
• plt.subplot(2, 2, 3)
• plt.plot(seasonal, label='季节性')
• plt.title('季节性')
• plt.subplot(2, 2, 4)
• plt.plot(residual, label='剩余部分')
• plt.title('剩余部分')
• plt.tight_layout()
•
• plt.figure(figsize=(12, 6))
• plt.plot(ts, label='观测值')
• plt.plot(forecast_mean, label='预测值', color='red')
• plt.fill_between(forecast_ci.index, forecast_ci.iloc[:, 0], 
forecast_ci.iloc[:, 1], color='pink', alpha=0.3)
• plt.legend()• plt.title('水沙通量预测')
• plt.show()


问题三
1. 数据准备:
• 收集历史时间序列数据,确保数据包括时间戳和相应的观测值。
• 检查数据是否平稳,如果不平稳,需要进行差分操作,使其平稳化。
2. 模型选择:
• 使用自相关函数(ACF)和偏自相关函数(PACF)的图形分析来选择
ARIMA 模型的阶数(p、d、q)。
• ARIMA 模型的三个部分分别表示自回归(AR)、差分(I)和移动平均
(MA)的阶数。
• AR 部分用于捕捉序列的自相关性,MA 部分用于捕捉随机误差的自相关
性。


3. 模型拟合:
• 根据选择的 ARIMA 模型阶数,拟合模型到历史数据中。
• 使用统计工具(如 Python 的 statsmodels 库)来执行拟合。
4. 模型诊断:
• 检查模型的残差序列,确保其是白噪声。可以使用 Ljung-Box 检验等方
法进行检查。
• 如果残差不是白噪声,可能需要重新调整模型或尝试其他模型。
5. 模型预测:
• 利用已拟合的 ARIMA 模型对未来时间点的值进行预测。
• 在预测时,需要提供预测的时间点数目,模型将返回预测值以及相应的
置信区间。
6. 结果解释:
• 可以将预测结果可视化,包括观测数据和预测值的时间序列图,以及置
信区间。
• 分析预测结果,了解未来时间序列的趋势、季节性和周期性特征。
7. 模型评估:

• 使用适当的性能指标来评估模型的预测性能,如均方根误差(RMSE)或
平均绝对误差(MAE)。
• 可以使用历史数据中的一部分作为训练集,其余部分作为测试集来评估
模型。
• 8. 模型诊断和评估:
• 评估模型的性能,可以使用不同的性能指标如均方根误差(RMSE)、平
均绝对误差(MAE)等,或者绘制实际观测值和预测值的残差图来检查模
型的质量。
• 检查模型的残差序列,确保它们是白噪声,如果残差不是白噪声,可能
需要重新调整模型。
9. 模型优化:
• 可以尝试不同的 ARIMA 模型阶数(p、d、q),或者考虑使用季节性
ARIMA(SARIMA)模型来更好地捕捉季节性成分。
• 可以使用网格搜索或交叉验证等技术来寻找最佳的模型参数。
10. 长期预测:
• 如果需要进行更长时间的预测,可以连续多次使用模型来逐步预测未
来,每次更新历史数据。
11. 不确定性估计:
• 在预测结果中,置信区间提供了每个时间点的不确定性范围。这些区间
可用于评估预测的可信度。
12. 监测和更新:
• 定期监测模型的性能,并根据新的观测数据进行更新和重新拟合。时间
序列数据可能会随着时间的推移发生变化,因此需要不断调整模型。
13. 决策和应用:
• 利用预测结果来支持决策制定。预测的应用可能涵盖多个领域,如金
融、销售、气象、环境等。
• 预测的结果可以用于制定策略、资源分配、风险管理等方面的决策

标签:plt,data,模型,.#,高质量,国赛,2024,水流量,数据
From: https://blog.csdn.net/qq_50593822/article/details/139427202

相关文章

  • LitCTF2024——ezrc4
    0x01关于rc4rc4简介rc4的维基具体实现step1rc4_init()voidrc4_init(unsignedchar*s_box,unsignedchar*key){ inti=0,j=0; chark[256]; intlen=strlen(key); for(i=0;i<256;i++){ //以256填充s盒 s[i]=i; //使用key循环填充k k[i]=key[i%len]; } //......
  • 工作感受月记(202406月)
    2024年06月03日进入六月,自己的年度计划呢?好像都很片段,不连续。想考在职研究生,想学习AI,想学习一些基础的代码C#,写文章,想学习心学。零零散散不系统。今日工作事项:1/做手中案例跟进,两个icm,看PG的新comments,但是没有实质性进展。2/一个redis的数据转移案例,然后自己突然想完善这......
  • P10536 [Opoi 2024] 二十六点 题解
    比较直接的做法。当\(P_x=1\)时显然可以暴力DP,设\(f_{x,c}\)表示\(x\)的子树中以\(c\)开头的最长不下降子序列的长度。直接转移即可。\(P_x\neq1\)的时候呢?我们发现,所谓“忽略掉这些路径中的第\(2\)到第\(P_x\)个的点”,代表的就是按照深度转移,大概就是这样:......
  • 2024.6.3 时光机会是最没用的发明
    正如标题,时光机会是最无用的发明。如果问昨天的我,时光机有用吗,我会毫不犹豫地回答有用。我希望回到5月,乞求自己好好改初赛;我希望回到1月,乞求自己不要虚度光阴;我希望回到去年9月,乞求自己不要头铁T2,乞求自己检查T1;我希望回到去年6月,乞求自己不要玩florr,这个万恶之源;我希望回到......
  • 2024-6-3 石群电路-22
    2024-6-3,星期一,20:45,天气:晴,心情:阴转晴。今天没有发生了一些令人不开心事情,心情有些差,不过还是调整过来了,活好自己,就是对你讨厌的人最大的惩罚。因为准备毕业论文答辩的材料所以更新的晚了一点。今日观看了石群老师电路课程的第38个视频,开始了第九章的学习,主要学习内容为:阻抗的......
  • 20240531/01模拟赛
    地盘划分想说暴力思路对于任意两个\(a\)和\(b\),当\(a<b\)时,可以发现最大的正方形应该是\(a\timesa\)。既然题目要让每一个正方形最大,那么就可以直接用刚刚的方法来解决这一题直到最短的一条边为\(0\)。这个思路的的时间复杂度时\(O(n)\)可以获得\(50\)分。这个思路的问题是......
  • 2024年人文艺术与媒体传播国际学术会议(ICHAMC 2024)
    2024年人文艺术与媒体传播国际学术会议(ICHAMC2024)会议简介随着全球化的深入,人文、艺术与传媒交流的交汇与融合成为推动社会进步和文化发展的重要力量。本次会议将聚焦人文、艺术与传媒之间的紧密联系,探讨如何更好地通过传媒的力量传承和发展人文艺术。会议将涵盖多个议题,......
  • 2024年新能源科学技术与储能研究国际会议(ICNESTESR 2024)
    2024年新能源科学技术与储能研究国际会议(ICNESTESR2024)会议简介随着全球能源结构的转变和可持续发展理念的日益普及,新能源技术和储能研究引起了广泛关注。国际新能源科学与技术及储能研究大会将汇聚世界各地的顶尖专家,共同探讨该领域的最新成果、技术趋势和市场应用。参会者......
  • 2024年计算机视觉、设计与算法国际会议( ICCVDA 2024)
    2024年计算机视觉、设计与算法国际会议( ICCVDA2024)会议简介本次大会旨在建立一个国际性的学术交流和合作平台,重点关注计算机视觉领域的最新进展、设计与算法的创新应用,分享前沿研究成果,并探索未来发展趋势。我们诚挚邀请全球各地的学者、专家、企业代表及感兴趣的个人积......
  • P10550 [THUPC2024] 贸易 题解
    正式场上拿了这题的首\(A\),让队伍不至于无奖而返。思路容易发现题目的买入卖出过程形似一个括号匹配。那么我们可以对每一种类型的物品做括号匹配。若是一个匹配的括号在询问区间内则可以记入答案。就变成了一个二维数点问题。离线树状树组即可。Code#include<bits/stdc......