【优秀python算法毕设】基于python时间序列模型分析气温变化趋势的设计与实现

简介: 本文介绍了一个基于Python的时间序列模型,用于分析和预测2021-2022年重庆地区的气温变化趋势,通过ARIMA和LSTM模型的应用,揭示了气温的季节性和趋势性变化,并提供了对未来气温变化的预测,有助于气象预报和相关决策制定。

1 绪论

1.1 研究背景与意义

在气候变化日益受到全球关注的背景下,天气气温的变化已经对人们的生活各方面都产生了影响,人们在外出时大多都会在手机上看看天气如何,根据天气的变化来决定衣物的穿着和出行的安排。[1]如今手机能提供的信息已经十分精确,已经到了每个小时都有预测的温度和天气状况,还可以看到湿度,能见度,气压等实时信息。然而手机和各个天气网站提供的信息大多都是按星期和月,更长期的预测却是没有的。针对重庆地方地区进行长期预测,重庆位于长江中游的沿岸地区,地势起伏,存在着明显的山地气候变化差异,是很适合进行长期预测的地区,其气候变化对于城市规划、农业、生态保护和人类生活等方面都具有重要影响。因此,研究地方性气温变化趋势具有明显的实践意义[2]。

时间序列模型是一种常用于分析时序数据的方法。它可以根据观测数据中呈现的线性或非线性变化趋势、周期性变化等模式,对未来的某一时刻的变量值进行预测。[3]对重庆历史天气数据进行分析,对部分地区的天气状况,最低气温,最高气温,平均气温和风力风向的数据等方面进行分析,揭示重庆部分地区2021-2022年的平均气温变化趋势,通过分析年、季、月或更细粒度的平均气温数据,探索气温的长期变化趋势,如逐年变化、季节性变化等再逐个进行对比分析。[4]研究可能对重庆地区气温变化的驱动因素进行分析,对过去的气温数据进行分析,从而找出气温变化的长期趋势。有助于了解局部气候变化和季节性气候等变化等现象。可以捕捉气温变化的周期性和季节性规律。进而对未来气温变化进行预测,对于短期和长期的气象预报,农业生产,能源需求预测具有重要意义[5]。

在中国,目前主要的天气预测技术大致分为静态模型和动态模型静态模型通过历史数据得到的统计学预报方法,比如常规的回归分析,聚类分析,人工神经网络等,这种方法计算简单,速度较快,缺点是无法反映天气形势比纳湖和动态性,范围有限。动态模型主要是通过数值预报的方法,利用率大量的观测资料,理论模型和计算机程序来预测未来天气的形况[6]。用来反映天气形式的动态变化。但同时也存在计算复杂,数据量大和模型有偏差等缺点。

综上,将时间序列模型应用于重庆市部分地区的气温预测,根据大量的历史数据,不仅能提高气温预测的针对性和精度,而且可以更直观的看出不同因素对结果的影响。对于重庆各个方面也具有一定的参考价值。

1.2 研究现状分析

时间序列分析在气象领域中得到了广泛应用,以预测和分析气候变化为目标。特别是针对气温变化趋势的研究,已经有许多国内外学者进行了深入探索。

ARIMA模型是一种常见的时间序列分析方法,被广泛应用于气温预测研究中。高亮[7]等人在研究中使用ARIMA模型对气温数据进行建模和预测,得出了准确的预测结果。研究表明,LSTM模型在捕捉时间序列数据中的长期依赖关系方面具有优势,能够提高气温预测的准确性。

随着深度学习技术的发展,LSTM模型也被广泛应用于气温预测研究中。许红蕾[8]等人针对重庆地区气温的研究表明,LSTM模型相比传统的ARIMA模型,在气温预测的准确性和稳定性方面取得了更好的效果。此外,黄晓芬等人[9]的研究探索了ARIMA和LSTM模型的结合应用,以进一步提高气温预测的精度。

除了模型选择,可视化也是时间序列分析中不可或缺的一部分。Matplotlib是一种常用的Python库,被广泛用于数据可视化[10]。通过绘制折线图、趋势图等形式,可以直观地展示气温变化趋势,以及模型预测结果与实际观测值之间的对比[11]。

根据研究表明,ARIMA和LSTM模型在气温变化趋势分析和预测方面具有良好的性能。随着深度学习技术的发展和数据处理工具(如Pandas)的应用,时间序列分析在气象领域中的应用将更加广泛。同时,结合Matplotlib等可视化工具,可以直观地展示气候变化趋势,为气象决策提供有力支持[12]。

1.3 主要研究方法

1. 数据收集与整理:收集重庆地区2021-2022年的气温数据,包括最高气温、最低气温和平均气温等。对收集的数据进行整理和清洗,确保数据有效、准确和完整,便于进行后续分析[13]。

2. 描述性统计分析:对重庆地区2021-2022年的气温数据进行描述性统计分析,包括计算均值、中位数、标准差等统计指标,以直观地了解气温数据的基本分布情况。

3. 时间序列模型建立:根据气温数据的特征,选择合适的时间序列模型(如AR、MA、ARMA或ARIMA等)进行建模。通过模型识别、参数估计和模型检验等步骤,得到一个较为满意的模型[14]。

4. 模型预测与验证:利用建立的时间序列模型对重庆地区未来一段时间内的气温进行预测,并与实际情况进行对比,评估模型的预测准确性和可靠性[15]。

4 时间序列模型分析

4.1 ARIMA模型预测实现

4.1.1ARIMA模型原理

ARIMA(Autoregressive Integrated Moving Average)模型是一种常用的时间序列预测模型,它结合了自回归(AR)模型、差分(I)和移动平均(MA)模型的特点。ARIMA模型适用于具有一定趋势和季节性的时间序列数据。

ARIMA模型的原理可以概括为以下几个步骤:

差分(Differencing):如果时间序列数据存在明显的趋势或季节性,首先需要对其进行差分,以消除这些特征。通过计算当前值与前一个值之间的差异来实现差分。如果仍然存在趋势,则可能需要多次差分。

自回归(Autoregression):AR部分是基于过去的观测值来预测当前值。AR模型的阶数p表示使用的过去观测值的数量。每个观测值与前p个观测值的线性组合有关。

移动平均(Moving Average):MA部分是基于残差(观测值与通过AR模型预测的值之间的差异)来预测当前值。MA模型的阶数q表示使用的残差的数量。

整合(Integration):I部分是对差分后的数据进行反向操作,将预测值转换为原始数据的尺度。整合的阶数d表示进行差分的次数。

ARIMA模型的公式可以表示为:

ARIMA(p, d, q):Y(t) = c + φ(1)*Y(t-1) + φ(2)*Y(t-2) + ... + φ(p)*Y(t-p) + θ(1)*ε(t-1) + θ(2)*ε(t-2) + ... + θ(q)*ε(t-q) + ε(t)

其中,Y(t) 是时间序列在时刻t的观测值,c 是常数项,φ(i) 是自回归系数,i=1,2,...,p,Y(t-i) 是时间序列在时刻t-i的观测值,θ(j) 是移动平均系数,j=1,2,...,q,ε(t-j) 是残差,在时刻t-j的残差,ε(t) 是白噪声误差,在时刻t的误差。

4.1.2ARIMA模型实现步骤思路

ARIMA模型被成功应用于重庆的温度预测,通过数据预处理、平稳性检验、自相关和偏自相关分析、参数选择和模型拟合,得到了具有最小AIC和BIC值的最佳ARIMA模型,并使用该模型对未来5天的最高温度和最低温度进行了预测。这样的温度预测结果有助于理解重庆的气温趋势和变化,并为决策和规划提供参考。

4.1.3数据预处理

通过将日期字段的时间部分去除,并按日期对数据进行排序和索引设置,确保日期被正确解析和排序。然后,对最高温度和最低温度字段进行数据清洗和转换,将温度值中的度符号"°"去除并将字符串类型转换为数值类型。

随后,通过调用matplotlib库的plot方法,创建了一个14x7英寸大小的图形,并在图表中绘制了最高温度和最低温度的曲线。图表的横轴表示日期,纵轴表示温度,其中最高温度用实线表示,最低温度用虚线表示。此图表展示了重庆的温度趋势。如图4.1.3所示:

图4.1.3 重庆的温度趋势图

4.1.4平稳性检验

使用statsmodels库的adfuller函数,对最高温度和最低温度数据进行ADF检验,以评估它们的平稳性。ADF检验的结果包括ADF统计量、p-value和关键值。通过这些结果,可以判断温度数据是否平稳。如表5.1.4所示:

表4.1.4 ADF检验结果

检验

最高温数据

最低温数据

ADF Statistic for Temperature

-4.513908

-2.620858

p-value

    0.000186

0.088763

Critical Values

1%: -3.431

5%: -2.862

10%: -2.567

1%: -3.431

5%: -2.862

10%: -2.567

4.1.5自相关和偏自相关分析

对最低温度数据进行一阶差分,并再次使用ADF检验对差分后的数据进行平稳性检验。通过打印ADF统计量、p-value和关键值,可以评估差分后的最低温度数据是否平稳。如表4.1.5所示:

表4.1.5 ADF一阶差分检验结果

检验

最低温数据

ADF Statistic for Temperature

 -44.659409

p-value

0.000000

Critical Values

1%: -3.431

5%: -2.862

10%: -2.567

接下来,使用statsmodels库的plot_acf和plot_pacf函数,绘制了最高温度和差分后的最低温度的自相关图(ACF)和偏自相关图(PACF)。这些图表有助于确定ARIMA模型中的参数。如图4.1.5所示:

图4.1.5 自相关图(ACF)和偏自相关图(PACF)图

4.1.6参数选择和模型拟合

在完成数据预处理和分析后,使用一个名为best_arima_model的函数来计算最佳的ARIMA模型。该函数遍历指定的p和q范围,尝试不同的参数组合,选择具有最小AIC和BIC值的模型作为最佳模型。

使用最佳ARIMA模型对最高温度数据进行拟合,并通过调用get_forecast方法对未来5天的最高温度进行预测,获取预测结果的平均值。同时,对差分后的最低温度数据也使用最佳ARIMA模型进行拟合,并根据差分后的数据得到预测结果。为了将差分后的最低温度还原到原始尺度,累积预测结果并加上最后一个实际观测值。

最后,使用pd.date_range函数创建了未来5天的时间序列索引,并使用matplotlib库绘制了温度预测的结果图表。在图表中,实线表示实际的最高温度和最低温度,虚线表示预测的最高温度和最低温度。通过这个图表,可以直观地比较实际温度和预测温度,从而评估模型的准确性。如图4.1.6所示:

图4.1.6 温度预测的结果图

4.1.7结论

根据给出的ADF检验结果和最佳ARIMA模型的AIC和BIC值,可以得出以下结论:

对于最高温度数据,ADF统计量的值为-4.513908,p-value为0.000186。与临界值进行比较,可以发现ADF统计量小于1%的临界值,因此可以拒绝原假设,即最高温度数据是非平稳的。这表明最高温度数据具有趋势或季节性变化。

对于最低温度数据,ADF统计量的值为-2.620858,p-value为0.088763。与临界值进行比较,可以发现ADF统计量大于1%的临界值,因此无法拒绝原假设,即最低温度数据可能是非平稳的。这意味着最低温度数据存在一定的随机性。

对于差分后的最低温度数据,ADF统计量的值为-44.659409,p-value为0.000000。与临界值进行比较,可以发现ADF统计量远小于1%的临界值,因此可以拒绝原假设,即差分后的最低温度数据是平稳的。这说明通过一阶差分,成功地消除了最低温度数据中的趋势和季节性。

根据AIC和BIC的值,最佳ARIMA模型为ARIMA(3, 0, 1)对于最高温度数据,AIC值为134424.798,BIC值为134474.638。对于差分后的最低温度数据,最佳ARIMA模型为ARIMA(1, 0, 1),AIC值为122014.725,BIC值为122047.951。

综上所述,根据ADF检验结果和最佳ARIMA模型的AIC和BIC值,可以得出以下结论:最高温度数据是非平稳的,具有趋势或季节性变化;最低温度数据是非平稳的,存在一定的随机性;经过一阶差分处理后,最低温度数据变得平稳;对于最高温度数据,最佳ARIMA模型为ARIMA(3, 0, 1);对于差分后的最低温度数据,最佳ARIMA模型为ARIMA(1, 0, 1)。

4.2 LSTM模型预测实现

4.2.1 LSTM模型原理

LSTM(Long Short-Term Memory)模型是一种常用的循环神经网络(RNN)变体,用于处理和预测时间序列数据。相比传统的RNN模型,LSTM模型能够更好地解决长期依赖问题,并且能够捕捉到更长时间范围内的上下文信息。

LSTM模型的原理可以概括为以下几个关键组件:

细胞状态(Cell State):LSTM中引入了一个细胞状态,用于存储和传递长期的记忆。细胞状态在整个时间序列中保持不变,可以通过门控机制来决定是否更新和重置。

输入门(Input Gate):输入门控制着将什么信息加入到细胞状态中。它使用sigmoid函数来决定输入门的打开程度,以及tanh函数来产生一个新的候选值。

遗忘门(Forget Gate):遗忘门决定了从细胞状态中删除哪些信息。它使用sigmoid函数来决定遗忘门的打开程度,控制着细胞状态中的旧信息被保留还是被遗忘。

输出门(Output Gate):输出门决定从细胞状态中提取出哪些信息。它使用sigmoid函数来决定输出门的打开程度,并使用tanh函数将细胞状态的值进行缩放。最后,通过输出门来生成LSTM单元的输出。

LSTM模型的公式可以表示为:

输入门:i(t) = sigmoid(W(i) * [h(t-1), x(t)] + b(i))

遗忘门:f(t) = sigmoid(W(f) * [h(t-1), x(t)] + b(f))

更新细胞状态:C(t) = f(t) * C(t-1) + i(t) * tanh(W(c) * [h(t-1), x(t)] + b(c))

输出门:o(t) = sigmoid(W(o) * [h(t-1), x(t)] + b(o))

输出隐藏状态:h(t) = o(t) * tanh(C(t))

其中,i(t) 是输入门的输出,f(t) 是遗忘门的输出,o(t) 是输出门的输出,C(t) 是细胞状态的值,h(t) 是隐藏状态(LSTM单元的输出)的值,W(i),W(f),W(c),W(o) 是权重矩阵,b(i),b(f),b(c),b(o) 是偏置项向量,x(t) 是当前时间步的输入数据,h(t-1) 是上一时间步的隐藏状态。

4.2.2 LSTM模型实现步骤思路

LSTM模型被应用于温度预测。通过数据预处理、序列创建、模型定义、训练、评估和预测等步骤,可以得到准确的温度预测结果,并通过评估指标来评估模型的性能。这样的温度预测结果对于气象预测和决策制定具有重要意义。

4.2.3 数据预处理

通过将日期字段的时间部分去除,并按日期对数据进行排序和索引设置,确保日期被正确解析和排序。然后,使用StandardScaler对最高温度数据进行标准化。

4.2.4 序列创建

定义了一个create_sequences函数,用于创建序列数据。该函数根据给定的序列长度,将输入数据切割成输入序列和目标序列,并返回这些序列的数组形式。使用create_sequences函数将训练集和测试集数据划分成输入序列和目标序列,并将其转换为张量类型。

4.2.5 模型定义与训练

Attention类和DeepBiLSTMWithAttention类。Attention类用于计算注意力权重和上下文向量,DeepBiLSTMWithAttention类是深度双向LSTM模型,带有注意力机制。创建了最佳参数best_params,并使用这些参数创建了最佳模型best_model。同时,定义了优化器和损失函数。开始训练模型,在每个epoch中,遍历训练数据集,将输入数据传入模型进行前向传播和反向传播,并更新模型的参数。在每个epoch结束后,计算并打印训练损失。

4.2.6 模型评估和预测

使用测试数据集对训练好的模型进行评估。使用MSE损失函数计算测试损失,并打印出平均测试损失。使用best_model对测试数据集进行预测,并将预测结果和真实值反缩放回原始尺度。绘制了真实值和预测值之间的折线图,用于可视化模型的性能。

在此基础上,使用sklearn库的mean_squared_error、mean_absolute_error和r2_score函数计算了不同的评估指标,包括均方误差(MSE)、均方根误差(RMSE)、平均绝对误差(MAE)和决定系数(R2)。如图4.2.7.1所示:

图4.2.7.1评估指标结果图

最后,使用best_model对未来时间的温度进行预测,并将预测结果绘制成折线图。这些预测结果展示了从2021年1月到2023年10月的温度趋势。同理,最低温度预测也是如此。如图5.2.7.2所示:

图4.2.7.2 2021年1月到2023年12月的温度预测的结果图

5 总结与展望

5.1 总结

基于时间序列模型分析重庆2021-2022年气温变化趋势的研究为提供了对该地区气温变化的深入理解。通过使用ARIMA和LSTM这两种常用的时间序列模型,可以得出以下结论:

首先,通过ARIMA模型分析,发现最高温度数据在2021年到2022年期间呈现出明显的季节性和趋势性变化。根据ADF检验结果,可以确认最高温度数据是非平稳的,并且需要进行差分处理才能达到平稳性。经过一阶差分后,最高温度数据变得平稳,然后选择最佳ARIMA模型为(3, 0, 1),对未来5天的最高温度进行了预测。预测结果显示了温度的整体趋势和变化。

其次,通过LSTM模型分析,可以捕捉到更复杂的时间序列特征。使用LSTM模型对最高温度数据进行训练和预测,得到了与ARIMA模型相似的结果。LSTM模型具有记忆单元和隐藏状态的结构,能够更好地捕捉时间序列中的长期依赖关系。通过引入注意力机制,LSTM模型还能够聚焦于关键的时间步,进一步提高了预测性能。

这两种模型的特色在于它们都可以根据历史数据进行预测,并且能够灵活地处理不同的时间序列特征。ARIMA模型适用于具有明显季节性和趋势性变化的数据,而LSTM模型能够更好地捕捉复杂的时间序列模式。此外,还对预测结果进行了评估,计算了常见的评估指标,如均方误差(MSE)、均方根误差(RMSE)和平均绝对误差(MAE),以评估模型的准确性。

5.2 展望

然而,这些模型也存在一些不足之处。首先,ARIMA模型对数据的平稳性要求较高,如果数据不满足平稳性条件,则需要进行差分或其他转换方法来处理。其次,LSTM模型对于参数的选择和调优比较困难,需要通过实验和经验来确定最佳的模型结构和超参数设置。此外,时间序列数据可能受到多种因素的影响,如季节性、趋势性、周期性和异常值等,模型在处理这些复杂情况时可能会出现挑战。

基于时间序列模型分析重庆2021-2022年气温变化趋势的研究实现了对气温数据的预测和分析。其特色在于能够根据历史数据捕捉时间序列的特征,并提供了关于未来气温变化的预测结果。然而,这些模型在处理非平稳数据和复杂时间序列模式时仍然存在一定的局限性,需要进一步的改进和调优。

相关文章
|
8天前
|
机器学习/深度学习 人工智能 算法
猫狗宠物识别系统Python+TensorFlow+人工智能+深度学习+卷积网络算法
宠物识别系统使用Python和TensorFlow搭建卷积神经网络,基于37种常见猫狗数据集训练高精度模型,并保存为h5格式。通过Django框架搭建Web平台,用户上传宠物图片即可识别其名称,提供便捷的宠物识别服务。
128 55
|
24天前
|
搜索推荐 Python
利用Python内置函数实现的冒泡排序算法
在上述代码中,`bubble_sort` 函数接受一个列表 `arr` 作为输入。通过两层循环,外层循环控制排序的轮数,内层循环用于比较相邻的元素并进行交换。如果前一个元素大于后一个元素,就将它们交换位置。
125 67
|
24天前
|
存储 搜索推荐 Python
用 Python 实现快速排序算法。
快速排序的平均时间复杂度为$O(nlogn)$,空间复杂度为$O(logn)$。它在大多数情况下表现良好,但在某些特殊情况下可能会退化为最坏情况,时间复杂度为$O(n^2)$。你可以根据实际需求对代码进行调整和修改,或者尝试使用其他优化策略来提高快速排序的性能
116 61
|
26天前
|
算法 数据安全/隐私保护 开发者
马特赛特旋转算法:Python的随机模块背后的力量
马特赛特旋转算法是Python `random`模块的核心,由松本真和西村拓士于1997年提出。它基于线性反馈移位寄存器,具有超长周期和高维均匀性,适用于模拟、密码学等领域。Python中通过设置种子值初始化状态数组,经状态更新和输出提取生成随机数,代码简单高效。
104 63
|
18天前
|
机器学习/深度学习 人工智能 算法
【宠物识别系统】Python+卷积神经网络算法+深度学习+人工智能+TensorFlow+图像识别
宠物识别系统,本系统使用Python作为主要开发语言,基于TensorFlow搭建卷积神经网络算法,并收集了37种常见的猫狗宠物种类数据集【'阿比西尼亚猫(Abyssinian)', '孟加拉猫(Bengal)', '暹罗猫(Birman)', '孟买猫(Bombay)', '英国短毛猫(British Shorthair)', '埃及猫(Egyptian Mau)', '缅因猫(Maine Coon)', '波斯猫(Persian)', '布偶猫(Ragdoll)', '俄罗斯蓝猫(Russian Blue)', '暹罗猫(Siamese)', '斯芬克斯猫(Sphynx)', '美国斗牛犬
106 29
【宠物识别系统】Python+卷积神经网络算法+深度学习+人工智能+TensorFlow+图像识别
|
12天前
|
算法
基于模糊PI控制算法的龙格库塔CSTR模型控制系统simulink建模与仿真
本项目基于MATLAB2022a,采用模糊PI控制算法结合龙格-库塔方法,对CSTR模型进行Simulink建模与仿真。通过模糊控制处理误差及变化率,实现精确控制。核心在于将模糊逻辑与经典数值方法融合,提升系统性能。
|
12天前
|
存储 算法
基于HMM隐马尔可夫模型的金融数据预测算法matlab仿真
本项目基于HMM模型实现金融数据预测,包括模型训练与预测两部分。在MATLAB2022A上运行,通过计算状态转移和观测概率预测未来值,并绘制了预测值、真实值及预测误差的对比图。HMM模型适用于金融市场的时间序列分析,能够有效捕捉隐藏状态及其转换规律,为金融预测提供有力工具。
|
23天前
|
并行计算 算法 测试技术
C语言因高效灵活被广泛应用于软件开发。本文探讨了优化C语言程序性能的策略,涵盖算法优化、代码结构优化、内存管理优化、编译器优化、数据结构优化、并行计算优化及性能测试与分析七个方面
C语言因高效灵活被广泛应用于软件开发。本文探讨了优化C语言程序性能的策略,涵盖算法优化、代码结构优化、内存管理优化、编译器优化、数据结构优化、并行计算优化及性能测试与分析七个方面,旨在通过综合策略提升程序性能,满足实际需求。
54 1
|
1月前
|
机器学习/深度学习 算法 大数据
蓄水池抽样算法详解及Python实现
蓄水池抽样是一种适用于从未知大小或大数据集中高效随机抽样的算法,确保每个元素被选中的概率相同。本文介绍其基本概念、工作原理,并提供Python代码示例,演示如何实现该算法。
34 1
|
1月前
|
机器学习/深度学习 人工智能 算法
基于Python深度学习的【垃圾识别系统】实现~TensorFlow+人工智能+算法网络
垃圾识别分类系统。本系统采用Python作为主要编程语言,通过收集了5种常见的垃圾数据集('塑料', '玻璃', '纸张', '纸板', '金属'),然后基于TensorFlow搭建卷积神经网络算法模型,通过对图像数据集进行多轮迭代训练,最后得到一个识别精度较高的模型文件。然后使用Django搭建Web网页端可视化操作界面,实现用户在网页端上传一张垃圾图片识别其名称。
79 0
基于Python深度学习的【垃圾识别系统】实现~TensorFlow+人工智能+算法网络

热门文章

最新文章