联华证券配资平台_正规股票配资平台APP排名_联华证券十大配资软件

  • 配资排名 2023国赛E题-黄河含沙量-探索性思路及实现

  • 发布日期:2024-08-25 23:35    点击次数:92

配资排名 2023国赛E题-黄河含沙量-探索性思路及实现

一场酝酿已久的“南塔老兵配资排名,共忆峥嵘”八一建军节主题活动在南塔社区党群服务中心三楼如期举行。

本代码只对2023国赛E题的前两问进行了探索实现。

问题重述

黄河是中华民族的母亲河。研究黄河水沙通量的变化规律对沿黄流域的环境治理、气候变 化和人民生活的影响,以及对优化黄河流域水资源分配、协调人地关系、调水调沙、防洪减灾等方面都具有重要的理论指导意义。

问题 1 研究该水文站黄河水的含沙量与时间、水位、水流量的关系,并估算近 6 年该水 文站的年总水流量和年总排沙量。问题 2 分析近 6 年该水文站水沙通量的突变性、季节性和周期性等特性,研究水沙通量 的变化规律。实现过程

先对数据进行清洗,对残缺值进行补全,可以采用填充平均值、插值等方法。这里具体介绍插值策略。插值 (Interpolation) 是估计两个已知值之间某一点的值的方法。以下是一些常用的插值方法:

线性插值(Linear Interpolation): 线性插值是最简单和最常用的插值方法。它基于两点之间的直线关系来估计中间的值。

其中, 和 是两个已知的函数值,而 是两点 和 之间的任意点。

多项式插值 (Polynomial Interpolation):

多项式插值使用一个多项式来逼近整个数据集。如果有 个数据点,则可以找到一个 阶的多项式来逼近这些点。

其中, 是多项式的系数。

样条插值 (Spline Interpolation): 样条插值使用低阶多项式在每两个点之间进行插值,但是在整个数据集上是平滑的。最常见 的是三次样条插值。

其中, 和 是相邻的两个数据点,而 是样条的系数。

拉格朗日插值 (Lagrange Interpolation): 拉格朗日插值使用已知的数据点来构造一个多项式,这个多项式在给定的每个数据点上的值 与该数据点的已知值相匹配。

基中,

我这里

对于日期数据采用“前向填充”对于含沙量数据采用线性插值

图片

import pandas as pd# List of sheets to readsheets = ['2016', '2017', '2018', '2019', '2020', '2021']# Read each sheet and append to a listdataframes = [pd.read_excel('data/data_E_2023.xlsx', sheet_name=sheet) for sheet in sheets]# Concatenate all dataframesmerged_data = pd.concat(dataframes, ignore_index=True)merged_data.head()  # Display the first few rows of the merged data

然后整合时间数据,生成新列“日期时间”用户时间序列建模

# Forward fill the '年', '月', and '日' columnsmerged_data[['年', '月', '日']] = merged_data[['年', '月', '日']].fillna(method='ffill')# Interpolate the '含沙量(kg/m3)' columnmerged_data['含沙量(kg/m3) '] = merged_data['含沙量(kg/m3) '].interpolate()merged_data.head()  # Display the first few rows after processing
# 1. 将 '年', '月', and '日' 列转换为整数值merged_data[['年', '月', '日']] = merged_data[['年', '月', '日']].astype(int)# 2. 对于时间为 '24:00' 的情况,将时间更改为 '0:00' 并增加日期mask = merged_data['时间'] == '24:00'merged_data.loc[mask, '时间'] = '0:00'merged_data.loc[mask, '日'] = merged_data.loc[mask, '日'] + 1# 3. 根据 '年', '月', '日', 和 '时间' 列创建 '日期时间' 列merged_data['日期时间'] = pd.to_datetime(merged_data['年'].astype(str) + '-' +                                       merged_data['月'].astype(str) + '-' +                                       merged_data['日'].astype(str) + ' ' +                                       merged_data['时间'], errors='coerce')# 4. 调整日期,特别是在月底,当我们之前增加了一天的情况merged_data.loc[mask, '日期时间'] = (merged_data.loc[mask, '日期时间'] - pd.Timedelta(hours=1)) + pd.Timedelta(days=1)

图片

绘制时间序列图

# Create subplots for individual plotsfig, axes = plt.subplots(nrows=3, ncols=1, figsize=(15, 15))# Plot '水位(m)' axes[0].plot(merged_data['日期时间'], merged_data['水位(m)'], color='b', label='水位(m)')axes[0].set_xlabel('日期时间')axes[0].set_ylabel('水位(m)')axes[0].legend()axes[0].set_title('随日期时间变化的水位')# Plot '流量(m3/s)'axes[1].plot(merged_data['日期时间'], merged_data['流量(m3/s)'], color='g', label='流量(m3/s)')axes[1].set_xlabel('日期时间')axes[1].set_ylabel('流量(m3/s)')axes[1].legend()axes[1].set_title('随日期时间变化的流量')# Plot '含沙量(kg/m3) 'axes[2].plot(merged_data['日期时间'], merged_data['含沙量(kg/m3) '], color='r', label='含沙量(kg/m3)')axes[2].set_xlabel('日期时间')axes[2].set_ylabel('含沙量(kg/m3)')axes[2].legend()axes[2].set_title('随日期时间变化的含沙量')plt.tight_layout()plt.show()

图片

接下来对周期性、季节性、趋势性进行分解。对时间序列数据进行分解是为了理解其内在结构。具体要素包括

趋势 (Trend):

趋势描述了数据的长期移动方向。它表示时间序列数据在长时间范围内的总体模式或方向。

季节性 (Seasonal): 季节性描述了固定时间间隔内的模式。例如,一个年度的数据可能会显示每年的某个时间段 有一个明显的峰值或谷值。

周期性 (Cyclic):

循环性描述了数据中的波动,这些波动不是由季节性引起的。它通常与经济周期有关,例如 经济扩张和经济衰退。

随机或残差 (Residual):

这是在从时间序列中去除趋势、季节性和循环性后剩下的部分。它包括随机的“噪声”。有几种不同的方法可以用来分解时间序列,其中最常用的是加法模型和乘法模型。

加法模型: 在加法模型中,时间序列被表示为趋势、季节性和循环性的总和:

其中:

是在时间 的观测值。 是在时间 的趋势。 是在时间 的季节性。 是在时间 的循环性。 是在时间 的残差或随机。乘法模型:

在乘法模型中,时间序列是趋势、季节性和循环性的乘积:

此模型适用于季节性幅度随时间变化的情况。选择哪种模型取决于数据的性质。如果季节性幅度似乎是恒定的,则加法模型可能更为合 适; 如果季节性幅度随时间增加或减少,则乘法模型可能更为合适。

为了实际应用这些模型,通常使用统计方法,如移动平均法来估计趋势组件,而季节性组件可以通过从数据中减去趋势来得到。

我们这里采用加法模型。

from statsmodels.tsa.seasonal import seasonal_decompose# Extract the time series data for '含沙量(kg/m3) 'sand_series = merged_data.set_index('日期时间')['含沙量(kg/m3) ']# Resample the data to daily frequency to handle missing datasand_series_daily = sand_series.resample('D').mean().interpolate()# Decompose the seriesresult = seasonal_decompose(sand_series_daily, model='additive')# Plot the decomposed componentsfig, (ax1,ax2,ax3,ax4) = plt.subplots(4,1, figsize=(15,10))result.observed.plot(ax=ax1, title='Observed')result.trend.plot(ax=ax2, title='Trend')result.seasonal.plot(ax=ax3, title='Seasonal')result.resid.plot(ax=ax4, title='Residual')plt.tight_layout()plt.show()

图片

采用prophet库进行时间序列预测。Prophet是 Facebook 开发的一个用于时间序列预测的工具。它特别适用于具有强季节性和多个季节性的时间序列,并且可以容忍缺失值。下面是 Prophet 的基本数学模型:

趋势:

Prophet 使用 piecewise linear 或 logistic growth curves 来模拟非季节性的趋势。模型选择 逻辑增长或线性增长基于数据和配置。对于线性模型:

其中 是 piecewise linear function,表示趋势。对于 logistic growth model,趋势被限制在预定义的最小值和最大值之间:

其中 是容量, 是增长率, 是偏移参数。

季节性 : 季节性组件 使用 Fourier series 来模拟年度和周季节性。

节假日 (Holiday):

表示节假日效应。用户可以为模型定义特定的节假日,并为每个节假日提供一个窗口来 模拟节假日的效应。

误差项: 是误差项,通常假设它是正态分布的。此外,Prophet 还包括了一种方式来处理异常值或缺失值,并为预测提供了不确定性区间。
from prophet import Prophet# Prepare data for Prophetwater_level_data = merged_data[['日期时间', '水位(m)']].rename(columns={'日期时间': 'ds', '水位(m)': 'y'})water_level_data.dropna(inplace=True)# Initialize and fit the modelwater_level_model = Prophet(yearly_seasonality=True, daily_seasonality=True)water_level_model.fit(water_level_data)# Create a future dataframe for 2 yearsfuture_water_level = water_level_model.make_future_dataframe(periods=365, freq='D')# Predictforecast_water_level = water_level_model.predict(future_water_level)# Plot the forecastfig_water_level = water_level_model.plot(forecast_water_level)plt.title('水位(m) 的预测')plt.xlabel('日期时间')plt.ylabel('水位(m)')plt.show()

图片

prophet库也提供要素分解方法,其分解结果如下:

图片

其他内容略配资排名。

本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报。

相关资讯

如何配资期货 7月23日基金净值:国寿安保尊荣中短债债券A最新净值1.1599,涨0.01%

联华证券配资平台 2024-08-20
同时,重生在最近的更新中修复了暴雷角色与跳伞塔互动时的异常现象,即暴雷无法再直接对跳伞塔施放大招,以避免技能范围异常扩大。此外,重生公布的官方信息确认,第22赛季将于8月6日正式拉开帷幕。关于新赛季的模式亮点,据可靠数据挖掘者透露,初始的1...

炒股配资巨亏 2024年7月27日全国主要批发市场菜油(散装)价格行情

联华证券配资平台 2024-08-22
市场 最高价 最低价 大宗价 安徽合肥周谷堆农产品批发市场 10.50 10.50 10.50 安徽舒城蔬菜批发市场 -- -- 14.00 南昌深圳农产品中心批发市场有限公司 16.00 11.00 13.00 江西南方粮食交易市场 --...

配债的股票 国投证券发布关于绍兴市城市建设投资集团有限公司董事、监事变动的管理事务临时报告

联华证券配资平台 2024-08-28
消息,2024年07月31日配债的股票,国投证券股份有限公司发布了关于绍兴市城市建设投资集团有限公司债券2024年度第一次受托管理事务临时报告(董事、监事变动)。报告公布了绍兴市城市建设投资集团有限公司2021年面向专业投资者公开发行公司债...
    友情链接:

Powered by 联华证券配资平台_正规股票配资平台APP排名_联华证券十大配资软件 @2013-2022 RSS地图 HTML地图

Copyright Powered by365站群 © 2009-2029 联华证券 版权所有