时序数据分析——周期性-平稳性检验

举报
就挺突然 发表于 2021/07/28 23:36:49 2021/07/28
【摘要】 时间序列分析,即输入特征都是与时间相关的数据,同时需要考虑周期、趋势、节假日、突变等因素,通过一些手段来分析时间序列的特点,发现其中的变化规律,并用于预测未来时序数据的统计技术。分析时间序列,进行合理预测,做到提前掌握未来的发展趋势,为业务决策提供依据,这也是决策科学化的前提。代码块导入在NAIE训练平台的JupyterLab界面操作时,不需要手动添加这一部分,因为在新创建的特...

时间序列分析,即输入特征都是与时间相关的数据,同时需要考虑周期、趋势、节假日、突变等因素,通过一些手段来分析时间序列的特点,发现其中的变化规律,并用于预测未来时序数据的统计技术。分析时间序列,进行合理预测,做到提前掌握未来的发展趋势,为业务决策提供依据,这也是决策科学化的前提。

代码块导入

在NAIE训练平台的JupyterLab界面操作时,不需要手动添加这一部分,因为在新创建的特征工程下已经包含了导入代码。

import os
os.chdir("/home/ma-user/work/test_anomaly_detection_noah")
from naie.context import Context
from naie.datasets import data_reference
from naie.feature_processing import data_flow
from naie.feature_analysis import data_analysis
from naie.feature_processing.expression import col, cols, cond, f_and, f_not, f_or
from naie.common.data.typedefinition import StepType, ColumnRelationship, JoinType, ColumnSelector,DynamicColumnsSelectorDetails, StaticColumnsSelectorDetails, ColumnsSelectorDetails, DataProcessMode

选择数据1

如果是在NAIE平台上操作,则以下代码可通过点击菜单栏中“数据集”下的“选择数据”自动生成。

dataset = 'ts_data'
dataset_entity = 'ts_decomposition'
attrs={'is_time_series': True, 'time_column': 'time', 'time_format': 'timestamp(s)'}
datareference = data_reference.get_data_reference(dataset, dataset_entity, attrs=attrs)
dataflow = data_flow.create_data_flow(datareference)
dataflow.to_pandas_dataframe()

1. 周期检测

检测给定时序数据的周期,或判断指定的周期是否为时序数据的周期

参数:

  • data: 时序数据,可以是dataframe,数据路径或者dataflow
  • columns: 待进行时序数据分析的目标列,list类型
  • id_column: 代表时序数据id列,没有id列则使用默认值None,即认为整个数据为同一个id下的数据
  • time_column: 时序数据的时间列,没有时间列则使用默认值None. 如果不为None,则会根据给定的时间列对时序数据排序
  • specified_period: 待验证的指定周期,以样本为单位,默认为None。若为None,则根据{'day', 'week', 'month', 'quarter', 'year'}进行遍历周期检测。

返回:

  • 如果时序数据具有周期,则返回检测到的周期,否则返回None。如果给定待检验周期,则检测其是时序的周期时返回True,否则返回False.


from naie.ts_data_analysis import PeriodicityTest


# 周期检测
pt = PeriodicityTest(dataflow, columns=['traffic'], time_column='time')
result = pt.fit()
print('Periodicity test: ')
result

Periodicity test:


# 周期验证
pt = PeriodicityTest(dataflow, columns=['traffic'], time_column='time')
result = pt.fit(specified_period=8640)
print('Periodicity test: ')
result

Periodicity test:



选择数据2

dataset = 'ts_data_analysis'
dataset_entity = 'ts_analysis'
datareference = data_reference.get_data_reference(dataset, dataset_entity)
dataflow = data_flow.create_data_flow(datareference)

2. 平稳性判断

参数:

  • significance_level: 显著性水平

返回:

  • 如果数据平稳,则返回True;否则,返回False
from naie.ts_data_analysis import StationarityTest


st = StationarityTest(data=dataflow, columns=['col_1_20_100', 'col_1_200_100'], id_column=None, time_column=None)
result = st.fit(significance_level=0.001)
print('Stationarity test: ')
result

Stationarity test:




NAIE SDK帮助文档汇总请参考:

网络人工智能园地:NAIE SDK帮助文档汇总 zhuanlan.zhihu.com图标


文章来源: zhuanlan.zhihu.com,作者:网络人工智能园地,版权归原作者所有,如需转载,请联系作者。

原文链接:zhuanlan.zhihu.com/p/381022084

【版权声明】本文为华为云社区用户转载文章,如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。