什么是时间序列中的趋势
时间序列数据是一连串的数据点,这些数据点在有序的时间段内测量一些变量。它是数据库中增长最快的类别,因为它被广泛用于各种行业以了解和预测数据模式。因此,在为建模准备这些时间序列数据时,重要的是检查时间序列成分或模式。这些成分之一是趋势。
趋势 是数据中的一种模式,显示出一个系列在很长一段时间内向相对较高或较低的数值移动。换句话说,当时间序列中有一个增加或减少的斜率时,就可以观察到趋势。趋势通常会发生一段时间,然后消失,它不会重复。例如,一些新的歌曲来了,它有一段时间的趋势,然后就消失了。它没有任何机会再次成为趋势。
一个趋势可能是:
- 上升趋势。时间序列分析显示出一个总体模式是向上的,那么它就是上升趋势。
- 下行趋势。时间序列分析显示出一种向下的模式,那么它就是下行趋势。
- 水平或静止的趋势。如果没有观察到任何模式,那么它被称为水平或静止的趋势。
你可以通过简单的可视化或通过分解数据集来发现数据的趋势。
可视化
通过简单绘制数据集,你可以看到数据的总体趋势
步骤 :
- Import module
- Load dataset
- 将月份列投给日期时间对象
- 设置月份为索引
- Create plot
注意:在下面的例子中,同样的代码被用来显示所有三个趋势,只是使用的数据集不同,以反映特定的趋势。
示例: Uptrend
# importing the libraries
import pandas as pd
import matplotlib
# importing dataset
data = pd.read_csv(r'C:\Users\admin\Downloads\Electric_Production.csv')
# casting Month column to datetime object
data['DATE'] = pd.to_datetime(data['DATE'])
# Setting Month as index
data = data.set_index('DATE')
# Creating the plot
data.plot()
输出 :
示例: Downtrend
import pandas as pd
import matplotlib
# importing dataset
data = pd.read_csv(r'C:\Users\admin\Downloads\AlcoholSale.csv')
# casting Date column to datetime object
data['DATE'] = pd.to_datetime(data['DATE'])
# Setting Date column as index
data = data.set_index('DATE')
# Creating the plot
data.plot()
输出 :
例子:水平趋势
# importing the libraries
import pandas as pd
import matplotlib
# importing dataset
data = pd.read_csv(
r'C:\Users\admin\Downloads\monthly-beer-production-in-austr.csv')
# casting Month column to datetime object
data['Month'] = pd.to_datetime(data['Month'])
# Setting Month as index
data = data.set_index('Month')
# Creating the plot
data['1984':'1994'].plot()
输出 :
Decomposition
为了看到线性可视化背后的复杂性,我们可以对数据进行分解。在statsmodels软件包中,名为sasonal_decompose的函数可以帮助我们将数据分解成其组成部分/显示模式–时间序列的趋势、季节性和残差组成部分。在这里,我们只对趋势成分感兴趣,所以将使用 seasonal_decompose().trend来访问它。
seasonal_decompose函数使用移动平均数方法来估计趋势。
语法 :
statsmodels.tsa.seasonal.seasonal_decompose(x, model=’additive’, period=None, extrapolate_trend=0)
重要的参数:
- x : 类似数组。时间序列。如果是2d,单个系列在列中。x必须包含2个完整的周期。
- model:{“加法”,”乘法”},可选(取决于季节性成分的性质)。
- period(freq.) : int, optional .如果x不是pandas对象或者x的索引没有频率,必须使用。
返回:一个具有季节性、趋势性和剩余属性的对象。
示例 :
# importing function
from statsmodels.tsa.seasonal import seasonal_decompose
# creating trend object by assuming multiplicative model
output = seasonal_decompose(data, model='multiplicative').trend
# creating plot
output.plot()
输出 :