当前位置: 首页 > 科技观察

时间序列分析中的自相关

时间:2023-03-21 21:34:49 科技观察

什么是自相关以及为什么它在时间序列分析中有用。在时间序列分析中,我们经常利用对过去的理解来预测未来。为了使这个过程成功,我们必须彻底了解我们的时间序列并找到这个时间序列中包含的信息。自相关是分析方法之一,它可以检测时间序列中的某些特征并为我们的数据选择最佳预测模型。在这篇简短的文章中,我想回顾一下:什么是自相关,它为什么有用,以及如何在Python中将它应用到一个简单的数据集。什么是自相关?自相关是数据与其自身的相关性。我们不是测量两个随机变量之间的相关性,而是测量随机变量与其自身之间的相关性。因此它被称为自相关。相关性是指两个变量之间的关系有多强。如果值为1,则变量完全正相关,-1为完全负相关,0为不相关。对于时间序列,自相关是该时间序列在两个不同时间点的相关性(也称为滞后)。也就是说,我们正在使用自身的一些滞后版本来预测时间序列。从数学上讲,自相关的计算方法是:其中N是时间序列y的长度,k是时间序列的特定滞后。在计算r_1时,我们计算y_t和y_{t-1}之间的相关性。y_t和y_t之间的自相关为1,因为它们相同。为什么有用?自相关用于衡量时间序列与其自身滞后版本的相关性。这个计算让我们对序列的特征有了一些有趣的了解:季节性:假设我们发现某些滞后通常比其他滞后更相关。这意味着我们的数据中有一些季节性成分。例如,如果我们有每天的数据并且我们发现7个滞后中的每一个都有比其他滞后值更高的值,那么我们可能有一些每周的季节性。趋势:如果近期滞后的相关性很高,并且随着滞后的增加而缓慢下降,那么我们的数据中存在某种趋势。因此,我们需要做一些差分以使时间序列平稳。让我们使用一个Python示例来了解它是如何工作的。我们将使用的Python示例是经典的航空客运数据集:https://www.kaggle.com/datasets/ashfakyeafi/air-passenger-data-for-time-series-analysis#Importpackagesimportplotly.expressaspximportpandasaspd#读入数据data=pd.read_csv('AirPassengers.csv')#绘制数据fig=px.line(data,x='Month',y='#Passengers',fig.update_layout(template="simple_white",fnotallow=dict(size=18),可视化可以看到有明显的上升趋势和年度季节性(数据点按月索引)。这里可以使用statsmodels包中的plot_acf函数绘制不同延迟时间序列的自相关图。这种类型的图称为相关图:11,5))plot_acf(data['#Passengers'],lags=48)plt.ylim(0,1)plt.xlabel('Lags',fnotallow=18)plt.ylabel('Correlation',fnotallow=18)plt.xticks(fnotallow=18)plt.yticks(fnotallow=18)plt.title('AutocorrelationPlot',fnotallow=20)plt.tight_layout()plt.show()这里需要注意以下几点:每个12步滞后中都有清晰的周期性模式。这是因为我们的数据是按月编制的,所以我们的数据具有每年的季节性。随着滞后的增加,相关强度一般呈现缓慢下降的趋势。这表明我们数据中的趋势需要在建模时进行区分以实现稳定。蓝色区域表示哪些滞后具有统计显着性。因此,在基于此数据构建预测模型时,下个月的预测可能只考虑先前值的~15,因为它们具有统计显着性。值为0的滞后与1完全相关,因为我们将时间序列与其自身的副本相关联。总结在这篇文章中,我们描述了什么是自相关以及我们如何使用它来检测时间序列中的季节性和趋势。自相关还有其他用途。例如,我们可以使用预测模型残差的自相关图来确定残差是否确实独立。如果残差的自相关不接近于零,那么拟合模型可能没有考虑到所有信息,可以改进。