时间序列分析是一种强大的统计技术,广泛应用于经济学、金融学、环境科学和工程学等领域。它涉及研究以特定时间间隔收集或记录的数据点,使分析师能够识别趋势、周期和季节性变化。了解时间序列分析背后的数学原理对于准确解释数据和做出明智的预测至关重要。

自相关和偏自相关

自相关测量不同滞后观测值之间的相关性。从数学上讲,滞后 k 的自相关函数定义为:

$$ \rho_k=\frac{\sum_{t=k+1}^T\left(y_t-\bar{y}\right)\left(y_{t-k}-\bar{y}\right)}{\sum_{t=1}^T\left(y_t-\bar{y}\right)^2} $$

偏自相关测量不同滞后观测值之间的相关性,控制较短滞后时间序列的值。滞后 $k$ 的偏自相关函数是去除所有中间滞后的线性依赖性后 $y_t$ 和 $y_{t-k}$ 之间的相关性。

Python自相关计算

方式1,使用lag_plot

 import pandas as pd
 
 data = pd.read_csv("minimum-temperatures.csv",
                 header=0, index_col=0, parse_dates=True,
                 squeeze=True)
 data.head(15)
 pd.plotting.lag_plot(data, lag=1)

方式2,使用 pandas.corr()

 data = pd.read_csv("minimum-temperatures.csv",
                 header=0, index_col=0, parse_dates=True,
                 squeeze=True)
 
 values = pd.DataFrame(data.values)
 dataframe = pd.concat([values.shift(3), values.shift(2),
                     values.shift(1), values], axis=1)
 dataframe.columns = ['t', 't+1', 't+2', 't+3']
 result = dataframe.corr()
 print(result)

方式3,使用plot_acf()

 import pandas as pd
 from statsmodels.graphics.tsaplots import plot_acf
 
 data = pd.read_csv("minimum-temperatures.csv",
                 header=0, index_col=0, parse_dates=True,
                 squeeze=True)
 plot_acf(data)

移动平均模型

移动平均模型通过对滑动窗口内的数据点进行平均来平滑时间序列。对于时间序列 $y_t$,$q$ 阶模型为:

$$ y_t=\mu+\epsilon_t+\theta_1 \epsilon_{t-1}+\theta_2 \epsilon_{t-2}+\ldots+\theta_q \epsilon_{t-q} $$

其中 $\mu$ 是均值,$\epsilon_t$ 是误差项,$\theta_i$ 是参数。

Python计算移动平均模型

简单计算

方式1

 import numpy as np
 ​
 arr = [1, 2, 3, 7, 9]
 window_size = 3
 ​
 i = 0
 moving_averages = []
 ​
 while i < len(arr) - window_size + 1:
 ​
     window_average = round(np.sum(arr[
     i:i+window_size]) / window_size, 2)
     moving_averages.append(window_average)
     i += 1
 print(moving_averages)