什么是时间序列的趋势?
时间序列数据是一系列数据点,用于在有序的时间段内测量某些变量。它是增长最快的数据库类别,因为它被广泛用于各个行业以了解和预测数据模式。因此,在准备用于建模的时间序列数据时,检查时间序列组件或模式非常重要。这些组件之一是趋势。
趋势 是数据中的一种模式,它显示了一个系列在很长一段时间内向相对较高或较低值的移动。换句话说,当时间序列的斜率增加或减少时,就会观察到趋势。趋势通常会发生一段时间然后消失,它不会重复。例如,一些新歌来了,它流行了一段时间,然后就消失了。它很有可能再次流行。
一个趋势可能是:
- 上升趋势:时间序列分析显示了向上然后是上升趋势的一般模式。
- 下降趋势:时间序列分析显示一个向下的模式,然后它是下降趋势。
- 水平或平稳趋势:如果没有观察到模式,则称为水平或平稳趋势。
您可以通过简单的可视化或分解数据集来发现数据的趋势。
可视化
通过简单地绘制数据集,您可以看到数据的总体趋势
方法 :
- 导入模块
- 加载数据集
- 将月份列转换为日期时间对象
- 将月份设置为索引
- 创建情节
注意:在下面给出的示例中,相同的代码用于显示所有三种趋势,只是使用的数据集不同以反映该特定趋势。
数据集链接:点击这里
示例:上升趋势
Python3
# 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()
Python3
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()
Python3
# 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()
Python3
# 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()
输出 :
示例:下降趋势
蟒蛇3
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()
输出 :
示例:水平趋势
蟒蛇3
# 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()
输出 :
分解
为了了解线性可视化背后的复杂性,我们可以分解数据。 statsmodels包中的seasonal_decompose函数可以帮助我们将数据分解为其组成部分/显示模式——时间序列的趋势、季节性和残差组成部分。在这里,我们只对趋势组件感兴趣,因此将使用season_decompose().trend访问它。
Season_decompose函数使用移动平均线方法来估计趋势。
Syntax :
statsmodels.tsa.seasonal.seasonal_decompose(x, model=’additive’, period=None, extrapolate_trend=0)
Important parameters :
- x : array-like. Time-Series. If 2d, individual series are in columns. x must contain 2 complete cycles.
- model : {“additive”, “multiplicative”}, optional (Depends on nature on seasonal component)
- period(freq.) : int, optional . Must be use if x is not pandas object or index of x does not have a frequency.
Returns : A object with seasonal, trend, and resid attributes.
例子 :
蟒蛇3
# 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()
输出 :