精华内容
下载资源
问答
  • 时间序列预处理
    2021-01-12 04:54:22

    【Python算法】时间序列预处理

    1.时间序列的预处理

    拿到一个观察值序列后,首先要对它的纯随机性和平稳性进行检验,这两个重要的检验被称为序列的预处理。根据检验结果可以将序列分为不同的类型,对不同类型的序列会采取不同的分析方法。

    对于纯随机序列(又称为白噪声序列),序列的各项之间没有任何相关关系,序列在进行完全无序的随机波动,可以终止对该序列的分析。白噪声序列是没有信息可提取的平稳序列。

    对于平稳非白噪声序列,它的均值和方差是常数,现已有一套非常成熟的平稳序列的建模方法。通常是建立一个线性模型来拟合该序列的发展,借此提取该序列的有用信息。ARMA 模型是最常用的平稳序列拟合模型。

    对于非平稳序列,由于它的均值和方差不稳定,处理方法一般是将其转变为平稳序列,这样就可以应用有关平稳时间序列的分析方法,如建立ARMA模型来进行相应的研究。如果一个时间序列经差分运算后具有平稳性,则该序列为差分平稳序列,可以使用ARIMA模型进行分析。

    2.平稳性检验

    2.平稳性的检验

    对序列的平稳性的检验有两种检验方法:

    一种是根据时序图和自相关图的特征做出判断的图检验,该方法操作简单、应用广泛,缺点是带有主观性;

    另一种是构造检验统计量进行检验的方法,目前最常用的方法是单位根检验。

    ① 时序图检验 根据平稳时间序列的均值和方差都为常数的性质,平稳序列的时序图显示该序列值始终在一个常数附近随机波动,而且被动的范围有界;如果有明显的趋势性或者周期性,那它通常不是平稳序列。

    ② 自相关图检验 平稳序列具有短期相关性,这个性质表明对平稳序列而言通常只有近期的序列值对现时值的影响比较明显,间隔越远的过去值对现时值的影响越小。随着延迟期数k的增加,平稳序列的自相关系数pk(延迟 k 期)会比较快的衰减趋向于零,并在零附近随机波动,而非平稳序列的自相关系数衰减的速度比较慢,这就是利用自相关图进行平稳性检验的标准。

    ③ 单位根检验单位根检验是指检验序列中是否存在单位根,如果存在单位根就是非平稳时间序列。

    3.纯随机性检验

    如果一个序列是纯随机序列,那么它的序列值之间应该没有任何关系,即满足y(k) = 0, k ≠ 0,这是一种理论上才会出现的理想状态,实际上纯随机序列的样本自相关系数不会绝对为零,但是很接近零,并在零附近随机波动。

    纯随机性检验,一般是构造检验统计量来检验序列的纯随机性,常用的检验统计量有Q统计量、LB统计量,由样本各延迟期数的自相关系数可以计算得到检验统计量,然后计算出对应的p值,如果p值显著大于显著性水平a,则表示该序列不能拒绝纯随机的原假设,可以停止对该序列的分析。

    更多相关内容
  • 时间序列预处理

    千次阅读 2020-12-19 21:43:55
           ...时间序列预处理流程图(侵删) 下面来详细介绍每个阶段的处理 数据预处理流程图 数据预处理-平稳性检验        

           数据预处理的主要流程为:数据清洗、特征选择、归一化处理、划分窗口、Shuffle和划分数据集等五个阶段。选用何种方法没有统一的标准,只能根据不同类型的分析数据和业务需求,在对数据特性做了充分的理解之后,再选择与其最适配的数据预处理技术。

    时间序列预处理流程图(侵删)

    下面来详细介绍每个阶段的处理

    在这里插入图片描述

    数据预处理流程图

    数据预处理-平稳性检验

           一种是根据时序图和自相关图做出判断的图检验方法;一种是构造检验统计量进行假设检验的方法。 图检验操作简便,运用广泛,它的缺点是判别结论带有很强的主观色彩。所以最好能用统计检验的方法加以辅助判断。目前最常用的平稳性检验方法是单位根检验(unit root test)。
    1.时序图检验
           根据平稳时间序列均值、方差Wie常数的性质,平稳时间序列的时序图应该是显示出该数列始终在一个常数值附近随机波动,而且波动的范围有界的特点。如下图中,图1为非平稳序列,图2为平稳序列。
    在这里插入图片描述

    图1:非平稳序列

    在这里插入图片描述

    图2:平稳序列

    2.自相关图检验
           自相关图就是一个平面二维坐标垂线图,一个坐标轴表示延迟时期数,另一个坐标轴表示自相关系数,通过以垂线表示自相关系数的大小。
           平稳时间序列通常具有短期相关性,该性质使用自相关系数来描述就是随着延迟期数k的增加,平稳时间序列的自相关系数ρ会很快地衰减为0;反之,非平稳序列的自相关系数ρ衰减向0的速度通常会比较慢。

    数据预处理-清洗转换

           当数据质量校验完成后,针对有问题的数据要进行的是数据清洗和转换,另外还包括对正常数据的转换。数据清洗的主要作用包括:纠正错误、删除重复项、统一规格、转换构造。

    一、纠正错误

           错误数据是数据源环境中经常出现的一类问题。数据错误的形式包括:
           数据值错误: 数据直接是错误的,例如超过固定域集、超过极值、拼写错误、属性错误、源错误等。
    数据类型错误: 数据的存储类型不符合实际情况,如日期类型的以数值型存储,时间戳存为字符串等。
           数据编码错误: 数据存储的编码错误,例如将UTF-8写成UTF-80。
           数据格式错误: 数据的存储格式问题,如半角全角字符、中英文字符等。
           数据异常错误: 如数值数据输成全角数字字符、字符串数据后面有一个回车操作、日期越界、数据前后有不可见字符等。
           依赖冲突: 某些数据字段间存储依赖关系,例如城市与邮政编码应该满足对应关系,但可能存在二者不匹配的问题。
           多值错误: 大多数情况下,每个字段存储的是单个值,但也存在一个字段存储多个值的情况,其中有些可能是不符合实际业务规则的。这类错误产生的原因是业务系统不够健全,尤其是在数据产生之初的校验和入库规则不规范,导致在接收输入后没有进行判断或无法检测而直接写入后台数据库造成的。
           具体示例:
           1.处理非等间隔
           处理非等间隔时间序列的方法有两类,一类是内插法,最常用的是线性内插法。然而内插法往往会带来显著的且不易量化的偏差,因为分析拟合误差时往往不能区分哪些是模型本身带来的误差,哪些是由于内插带来的误差。另一类是直接对数据建模,例如可以把处理等间隔时间序列方法通过某种变换再应用之,或者直接考虑新的适用于非等间隔序列的模型。
           2.处理缺失值
           常见的方法有两种,一种是直接丢弃含缺失数据的记录;另一种是用新值替代缺失数据。实际中,后者的处理方式更常用,因为前者对数据分析而言是很大的浪费。用新值替代缺失值的常见方法有如下几种:
           1)替代法: 可考虑用该序列中已观测序列值的均值替代;或最近邻域替代法,即设t时刻的序列值缺失,而已观测到t-1时刻的序列值 x t − 1 x_{t-1} xt1,则寻找整个序列中与 x t − 1 x_{t-1} xt1最接近的观测值x且其后一时刻 x s + 1 x_{s+1} xs+1非缺失,则可用 x s + 1 x_{s+1} xs+1替代t时刻的序列值。
           2)内插法: 线性内插法,即根据两个时刻的观测值内插得到这两个时刻之间的时刻的序贯估计值。例如,设某一天的温度序列中,一点钟的气温为20℃,三点钟时为14℃,可以用线性内插法推测一点半及两点钟时的气温分别是18。5℃及17℃;K-最近距离法,即根据欧式距离或相关分析选取离缺失值最近的K个已观测序列值,将这K个值按照距离长度加权平均来估计该样本的缺失数据。
           3)统计模型: 即通过一些建模方法获得缺失处的预测值,常见的有样条法和回归模型法。样条法是通过对已观测序列值建立样条模型,如三阶样条、光滑样条等,从而预测出缺失值。回归模型包括一元线性回归和多元线性回归,即根据观测序列,构造出回归模型所需的自变量和因变量,从而得到自变量与因变量之间的关系,并得到缺失处的预测值。
           4)多重插补: 其思想来源于贝叶斯估计,认为待插补的值是随机的。实际中,通常先估计出待插补的值,然后再加上不同的噪声,形成多组可选插补值;对每个插补数据集合,都用针对完整数据集的统计方法进行统计分析,从而得到不同的结果;并根据评分函数进行选择,产生最终的插补值。
           以上四种插补方法,均值替代法是最容易实现的,也是以前人们经常使用的,但是它对样本存在极大的干扰,尤其是当插补后的值作为解释变量进行回归时,参数的估计值与真实值的偏差很大。实践证明,线性内插法等直观方法所产生的结果也并不理想。回归模型往往效果不错,即用已有数据作为训练样本来建立预测模型,预测缺失数据。该方法最大限度地利用已知的相关数据,是比较流行的缺失数据处理技术。此外,多重插补法综合比较其他各种处理方法,并得到在某种评分准则下最优的处理方法,故应用较多。
           除了上述处理方法之外,还有基于EM算法的替代模型,最大似然估计,外推法如增长量推算法、发展速度推算法、比例推算法等方法。
           3.处理离群点
           离群点(Outlier)是指一个时间序列中,远离序列一般水平的极端大值和极端小值。
           离群点可分为四种类型:
           1)加性离群点: 该干扰只影响发生的那一个时刻t时的序列值而不影响该时刻以后的序列值;
           2)更新离群点: 造成离群点的干扰不仅作用于Xt,且影响t时刻以后序列的所有观测值;
           3)水平移位离群点: 造成这种离群点的干扰是在某一时刻t系统的结构发生了变化,并持续影响t时刻以后的所有观测值,在数列上往往表现出t时刻前后的序列均值发生水平位移;
           4)暂时变更离群点: 造成这种离群点的干扰是在t时刻干扰发生时具有一定初始效应,以后随时间根据衰减因子的大小呈指数衰减。

    离群点常见的检测方法

           1.将序列值与平滑值(时间序列的平滑方法可百度/谷歌自查)进行比较,根据差异,结合相应的评价准则检验其是否显著大(或小)。这种方法比较简单,但对于判断离群点的类型存在着不足。
           2.干预分析法,其思想是,首先根据数据建立模型,利用拟合模型的残差序列计算特定的统计量,测出显著的离群点及其类型,并用所建立的模型对离群点进行修正,然后用修正后的时间序列再建立模型,重复上面的工作方法。
           3.检测序列值与其相应的时间序列平滑估计值的绝对离差是否大于某预先设定的值。

    离群点处理方法

           若是离群点正是我们所关心的信息,直接提取出来并加以分析;若离群点不是我们所希望见到的,可以考虑把离群点光滑化,即用某些值替代离群点,然后再对处理后的时间序列进行分析。

    二、 删除重复项

           由于各种原因,数据中可能存在重复记录或重复字段(列),对于这些重复项目(行和列)需要做去重处理。
    对于重复项的判断,基本思想是“排序和合并”,先将数据库中的记录按一定规则排序,然后通过比较邻近记录是否相似来检测记录是否重复。这里面其实包含了两个操作,一是排序,二是计算相似度。
           常见的排序算法:插入排序、冒泡排序、选择排序、快速排序、堆排序、归并排序、基数排序、希尔排序。
           常见的判断相似度的算法:基本的字段匹配算法标准化欧氏距离、汉明距离、夹角余弦、杰卡德距离、马氏距离、曼哈顿距离、闵可夫斯基距离、欧氏距离、切比雪夫距离、相关系数、信息熵。
           对于重复的数据项,尽量需要经过业务确认并进行整理提取出规则。在清洗转换阶段,对于重复数据项尽量不要轻易做出删除决策,尤其不能将重要的或有业务意义的数据过滤掉,校验和重复确认的工作必不可少。

    三、统一规格

           由于数据源系统分散在各个业务线,不同业务线对于数据的要求、理解和规格不同,导致对于同一数据对象描述规格完全不同,因此在清洗过程中需要统一数据规格并将一致性的内容抽象出来。
           数据字段的规则大致可以从以下几个方面进行统一:
           名称: 对于同一个数据对象的名称首先应该是一致的。例如对于访问深度这个字段,可能的名称包括访问深度、人均页面浏览量、每访问PV数。
           类型: 同一个数据对象的数据类型必须统一,且表示方法一致。例如普通日期的类型和时间戳的类型需要区分。
           单位: 对于数值型字段,单位需要统一。例如万、十万、百万等单位度量。
           格式: 在同一类型下,不同的表示格式也会产生差异。例如日期中的长日期、短日期、英文、中文、年月日制式和缩写等格式均不一样。
           长度: 同一字段长度必须一致。
           小数位数: 小数位数对于数值型字段尤为重要,尤其当数据量累积较大时会因为位数的不同而产生巨大偏差。
           计数方法: 对于数值型等的千分位、科学计数法等的计数方法的统一。
           缩写规则: 对于常用字段的缩写,例如单位、姓名、日期、月份等的统一。例如将周一表示为Monday还是Mon还是M。
    值域:对于离散型和连续型的变量都应该根据业务规则进行统一的值域约束。
           约束: 是否允许控制、唯一性、外键约束、主键等的统一。
           统一数据规格的过程中,需要注意的一点是确认不同业务线带来数据的规格一致性,这需要业务部门的参与、讨论和确认,以明确不同体系数据的统一标准。

    四、转换构造

           数据变换是数据清理过程的重要步骤,是对数据的一个的标准的处理,几乎所有的数据处理过程都会涉及该步骤。数据转换常见的内容包括:数据类型转换、数据语义转换、数据值域转换、数据粒度转换、表/数据拆分、行列转换、数据离散化、提炼新字段、属性构造、数据压缩等。
           1.数据类型转换
    当数据来自不同数据源时,不同类型的数据源数据类型不兼容可能导致系统报错。这时需要将不同数据源的数据类型进行统一转换为一种兼容的数据类型。
           2.数据语义转换
    传统数据仓库中基于第三范式可能存在维度表、事实表等,此时在事实表中会有很多字段需要结合维度表才能进行语义上的解析。例如,假如字段M的业务含义是浏览器类型,其取值分为是1/2/3/4/5,这5个数字如果不加转换则很难理解为业务语言,更无法在后期被解读和应用。
           3.数据粒度转换
    业务系统一般存储的是明细数据,有些系统甚至存储的是基于时间戳的数据,而数据仓库中的数据是用来分析的,不需要非常明细的数据,一般情况下,会将业务系统数据按照数据仓库中不同的粒度需求进行聚合。
           4.表/数据拆分
    某些字段可能存储多中数据信息,例如时间戳中包含了年、月、日、小时、分、秒等信息,有些规则中需要将其中部分或者全部时间属性进行拆分,以此来满足多粒度下的数据聚合需求。同样的,一个表内的多个字段,也可能存在表字段拆分的情况。
           5.行列转换
    某些情况下,表内的行列数据会需要进行转换(又称为转置),例如协同过滤的计算之前,user和term之间的关系即互为行列并且可相互转换,可用来满足基于项目和基于用户的相似度推荐计算。
           6.数据离散化
    将连续取值的属性离散化成若干区间,来帮助消减一个连续属性的取值个数。例如对于收入这个字段,为了便于做统计,根据业务经验可能分为几个不同的区间:0~3000、3001~5000、5001~10000、10001~30000、大于30000,或者在此基础上分别用1、2、3、4、5来表示。
           7.数据标准化
    不同字段间由于字段本身的业务含义不同,有些时间需要消除变量之间不同数量级造成的数值之间的悬殊差异。例如将销售额进行离散化处理,以消除不同销售额之间由于量级关系导致的无法进行多列的复合计算。数据标准化过程还可以用来解决个别数值较高的属性对聚类结果的影响。
           8.提炼新字段
    很多情况下,需要基于业务规则提取新的字段,这些字段也称为复合字段。这些字段通常都是基于单一字段产生,但需要进行复合运算甚至复杂算法模型才能得到新的指标。
           9.属性构造
    有些建模过程中,也会需要根据已有的属性集构造新的属性。例如,几乎所有的机器学习都会讲样本分为训练集、测试集、验证集三类,那么数据集的分类(或者叫分区)就属于需要新构建的属性,用户做机器学习不同阶段的样本使用。

    数据预处理-特征选择

    一、基于Filter的

           1.方差选择法  
           使用方差选择法,先要计算各个特征的方差,然后根据阈值,选择方差大于阈值的特征。
           2.相关系数法  
           使用相关系数法,先要计算各个特征对目标值的相关系数以及相关系数的P值。
           3.卡方检验  
           经典的卡方检验是检验定性自变量对定性因变量的相关性。假设自变量有N种取值,因变量有M种取值,考虑自变量等于i且因变量等于j的样本频数的观察值与期望的差距,构建统计量:
    在这里插入图片描述
           不难发现,这个统计量的含义简而言之就是自变量对因变量的相关性。
           4.互信息法  
           经典的互信息也是评价定性自变量对定性因变量的相关性的,互信息计算公式如下:
    在这里插入图片描述

    二、基于Wrapper的

           递归特征消除法  
           递归消除特征法使用一个基模型来进行多轮训练,每轮训练后,消除若干权值系数的特征,再基于新的特征集进行下一轮训练。

    三、基于Embedded的

           基于惩罚项的特征选择法  
           使用带惩罚项的基模型,除了筛选出特征外,同时也进行了降维。如LASSO:Least Absolute Shrinkage and Selection Operator 最小绝对收缩和选择算子。
           基于树模型的特征选择法  
           树模型中的GBDT也可用来作为基模型进行特征选择。

    数据预处理-降维

           主成分分析法(PCA)和线性判别分析(LDA),线性判别分析本身也是一个分类模型。PCA和LDA有很多的相似点,其本质是要将原始的样本映射到维度更低的样本空间中,但是PCA和LDA的映射目标不一样:PCA是为了让映射后的样本具有最大的发散性;而LDA是为了让映射后的样本有最好的分类性能。所以说PCA是一种无监督的降维方法,而LDA是一种有监督的降维方法。

    数据预处理-归一化处理

           数据归一化是对所有维度的数据进行数值上缩放到统一的固定区间,不同维度上的数据具有不同范围的数据将会导致模型收敛很慢甚至很难收敛。常用归一化方法主要为 Min-Max 和 Z-score。
           Min-Max 也被称为离差标准化,是对原有数据的线性变换,使得数据被缩放至[0,1]区间,其变换公式为: x ^ = x − x min ⁡ x max ⁡ − x min ⁡ \widehat{x}=\dfrac{x-x_{\min }}{x_{\max }-x_{\min }} x =xmaxxminxxmin
           Z-score 则利用原始数据的均值和方差进行放缩: x ^ = x − μ σ \widehat{x}=\dfrac{x-\mu }{\sigma } x =σxμ,归一化后的数据将符合标准正态分布,同时消除数据量纲对建模的影响。

    数据预处理-划分窗口

           划分窗口是将数据集按照时间步长进行划分,同时也意味着模型根据一个窗口长度的历史数据信息进行预测。

    数据预处理-Shuffle与数据集划分

           Shuffle 阶段是打乱上一步骤划分滑动窗口的输出序列,而数据集化分则将原始数据集大小按照 10%,10%,20%进行划分,其中训练集数据量占原始数据的 80%,验证集占10%用于调整模型参数,最后测试集占10%用于评估模型性能。


    学识浅薄,欢迎指正补充。

    展开全文
  • Jupyter中的时间序列预处理工作室:Jupyter笔记本中的时间序列数据预处理Studio
  • 时间序列分析方法分为描述性时序分析和统计时序分析。1、描述性时序分析通过直观的数据比较或绘图观测,寻找序列中蕴含的发展规律,这种分析方法就称为描述性时序分析。描述性时序分析方法具有操作简单、直观有效的...

    既然有了序列,那怎么拿来分析呢?

    时间序列分析方法分为描述性时序分析和统计时序分析。

    1、描述性时序分析

    通过直观的数据比较或绘图观测,寻找序列中蕴含的发展规律,这种分析方法就称为描述性时序分析。

    描述性时序分析方法具有操作简单、直观有效的特点,它通常是人们进行统计时序分析的第一步。

    2、统计时序分析

    (1)频域分析方法

    原理:假设任何一种无趋势的时间序列都可以分解成若干不同频率的周期波动

    发展过程:

    1)早期的频域分析方法借助富里埃分析从频率的角度揭示时间序列的规律

    2)后来借助了傅里叶变换,用正弦、余弦项之和来逼近某个函数

    3)20世纪60年代,引入最大熵谱估计理论,进入现代谱分析阶段

    特点:非常有用的动态数据分析方法,但是由于分析方法复杂,结果抽象,有一定的使用局限性

    (2)时域分析方法

    原理:事件的发展通常都具有一定的惯性,这种惯性用统计的语言来描述就是序列值之间存在着一定的相关关系,这种相关关系通常具有某种统计规律。

    目的:寻找出序列值之间相关关系的统计规律,并拟合出适当的数学模型来描述这种规律,进而利用这个拟合模型预测序列未来的走势

    特点:理论基础扎实,操作步骤规范,分析结果易于解释,是时间序列分析的主流方法

    说了半天,其实,时域分析才是我们经常接触的。

    时域分析方法的分析步骤:

    考察观察值序列的特征

    根据序列的特征选择适当的拟合模型

    根据序列的观察数据确定模型的口径

    检验模型,优化模型

    利用拟合好的模型来推断序列其它的统 计性质或预测序列将来的发展

    时域分析方法的发展过程

    基础阶段

    G.U.Yule:1927年,AR模型

    G.T.Walker:1931年,MA模型,ARMA模型

    核心阶段

    G.E.P.Box和G.M.Jenkins

    1970年,出版《Time Series Analysis Forecasting and Control》

    提出ARIMA模型(Box—Jenkins 模型)

    Box—Jenkins模型实际上是主要运用于单变量、同方差场合的线性模型

    完善阶段

    异方差场合:Robert F.Engle,1982年,ARCH模型

    Bollerslov,1985年GARCH模型

    多变量场合:C.Granger ,1987年,提出了协整(co- integration)理论

    非线性场合:汤家豪等,1980年,门限自回归模型

    用哪些软件可以做时间序列分析呢?

    S-plus,Matlab,Gauss,TSP,Eviews 和SAS。

    上述软件楼主觉得Eviews是基础版,Gauss是小众版,Matlab&S-pluss是正常小青年,SAS—万能的软件BOSS啊~~~

    时间序列的预处理1-----平稳性检验

    序列在建模前到底要做哪些预处理呢?首先,大伙都知道的平稳性检验是必须的!

    说到平稳,其实有两种平稳——宽平稳、严平稳。

    严平稳相较于宽平稳来说,条件更多更严格,而我们时常运用的时间序列,大多宽平稳就够了。

    什么是严平稳:

    是在固定时间和位置的概率分布与所有时间和位置的概率分布相同的随机过程。这样,数学期望和方差这些参数也不随时间和位置变化。(比如白噪声)。

    什么是宽平稳:

    宽平稳是使用序列的特征统计量来定义的一种平稳性。它认为序列的统计性质主要由它的低阶矩决定,所以只要保证序列低阶矩平稳(二阶),就能保证序列的主要性质近似稳定。

    两者关系:

    一般关系:严平稳条件比宽平稳条件苛刻,通常情况下,严平稳(低阶矩存在)能推出宽平稳成立,而宽平稳序列不能反推严平稳成立。

    特例:不存在低阶矩的严平稳序列不满足宽平稳条件,例如服从柯西分布的严平稳序列就不是宽平稳序列。当序列服从多元正态分布时,宽平稳可以推出严平稳。

    如何判断序列是平稳的?

    先从图形法上看(通常越是简单的方法,往往越能看到问题,图形给出的第一感觉也许就是真相哦~~~~)

    时序图,例如(eviews画滴):

    544a86b5d147228dcf6833999d0d5133.png

    分析:

    什么样的图不平稳,先说下什么是平稳,平稳就是围绕着一个常数上下波动。 看看上面这个图,很明显的增长趋势,不平稳。

    我们还可以根据自相关和偏相关系数来查看:

    948c012185f272237ec8514cdc95f182.png

    还以上面的序列为例:用eviews得到自相关和偏相关图,Q统计量和伴随概率。

    分析:

    平稳的序列的自相关图和偏相关图不是拖尾就是截尾。

    截尾就是在某阶之后,系数都为 0 ,怎么理解呢,看上面偏相关的图,当阶数为 1 的时候,系数值还是很大, 0.914. 二阶长的时候突然就变成了 0.050. 后面的值都很小,认为是趋于 0 ,这种状况就是截尾。

    再就是拖尾,拖尾就是有一个衰减的趋势,但是不都为 0 。 自相关图既不是拖尾也不是截尾。

    以上的图的自相关是一个三角对称的形式,这种趋势是单调趋势的典型图形。

    平稳序列的预测

    平稳性是指时间序列的所有统计性质都不会随着时间的推移而发生变化,对于一个平稳的时间序列来说,需要具有以下特征:

    (1)均数和方差不随时间变化;

    (2)自相关系数只与时间间隔有关,与所处的时间无关。

    相关系数是用来量化变量之间的相关程度。

    自相关系数研究的是一个序列中不同时期的相关系数,也就是时间序列计算其当前期和不同滞后期的一系列相关系数。

    目前主流的时间序列预测方法都是针对平稳的时间序列进行分析的,但是实际上,我们遇到的大多数时间序列都不平稳,所以在分析时,需要首先识别序列的平稳性,并且把不平稳的序列转换为平稳序列。一个时间序列只有被平稳化处理过,才能被控制和预测。

    检测出来序列不是平稳的怎么办?

    将时间序列平稳化的方式有很多,基础的方法是差分,因为这个方法有助于我们解读时间序列模型。

    差分,就是指序列中前后相邻的两期数据之差。

    差分,就是指序列中前后相邻的两期数据之差,一般用∇ \nabla∇表示。那么,计算一次差分,其表达式为:∇ y t = y t − y t − 1 \nabla y_t=y_t-y_{t-1}∇yt​=yt​−yt−1​

    其中,y t y_tyt​是当前的数值,y t − 1 y_{t-1}yt−1​是上一期的数值,∇ y t \nabla y_t∇yt​即为一次差分,也为一阶差分。

    同理,二阶差分的表达式为:∇ 2 y t = ∇ ( ∇ y t ) = ( y t − y t − 1 ) − ( y t − 1 − y t − 2 ) \nabla ^2y_t=\nabla(\nabla y_t)=(y_t-y_{t-1})-(y_{t-1}-y_{t-2})∇2yt​=∇(∇yt​)=(yt​−yt−1​)−(yt−1​−yt−2​)

    1.什么是差分?有哪些类型?区别在哪?

    差分其实不仅仅是只有一次差分,通常我们将一次差分运算叫做一阶差分,再一次差分就叫做二阶差分,以此类推,P次差分就是P阶差分。

    最开始的差分:

    d162bf13251bbcf125d4b6335e93173e.png

    P阶差分

    340df40bfaf73d8a7453d4b74d4626ae.png

    K步差分

    这个不常见,但有时也会用到.

    abc36fa5c6c7ebf7518ebb998368ba50.png

    P阶,就是P次的概念;K步就是在一次差分里间隔K个数据的概念.

    2.什么是延迟算子?

    延迟算子类似于一个时间指针,当前序列值乘以一个延迟算子,就相当于把当前序列值的时间向过去拨了一个时刻记B为延迟算子,有

    869d8d281ee354a31c11c491e67fd239.png

    延迟算子性质

    41cc03341b7d0e25414fd4fa74ea2f67.png

    为什么要提到延迟算子?因为可以用它来表示差分运算.

    8fc5d5bc4497dc7e1007f52b7008af1d.png

    自回归模型

    自回归模型(英语:Autoregressive model,简称AR模型),是统计上一种处理时间序列的方法,用同一变数例如 x xx 的之前各期,亦即 x 1 x_1x1​ 至 x t − 1 x_{t-1}xt−1​ 来预测本期xt的表现,并假设它们为一线性关系。因为这是从回归分析中的线性回归发展而来,只是不用 x xx 预测 y yy,而是用 x xx 预测 x xx(自己);所以叫做自回归。

    自回归模型被广泛运用在经济学、信息学、自然现象的预测上。

    X t = c + ∑ i = 1 p φ i X t − i + ϵ t X_t=c+\sum_{i=1}^p\varphi_iX_{t-i}+\epsilon_tXt​=c+i=1∑p​φi​Xt−i​+ϵt​

    其中:c cc 是常数项;被假设为平均数等于0,标准差等于 σ \sigmaσ 的随机误差值; σ \sigmaσ 被假设为对于任何的t都不变。

    文字叙述为:X XX的当期值等于一个或数个落后期的线性组合,加常数项,加随机误差。

    自回归方法的优点是所需资料不多,可用自身变数数列来进行预测。但是这种方法受到一定的限制:

    必须具有自相关,自相关系数 φ i \varphi_iφi​ 是关键。如果自相关系数小于0.5,则不宜采用,否则预测结果极不准确。

    自回归只能适用于预测与自身前期相关的经济现象,即受自身历史因素影响较大的经济现象,如矿的开采量,各种自然资源产量等;对于受社会因素影响较大的经济现象,不宜采用自回归,而应改采可纳入其他变数的向量自回归模型。

    自相关系数

    相关系数度量指的是两个不同事件彼此之间的相互影响程度;而自相关系数度量的是同一事件在两个不同时期之间的相关程度,形象的讲就是度量自己过去的行为对自己现在的影响。

    在时间序列分析分析中,对于时间序列{ X t , x ∈ T } \{X_t,x\in T\}{Xt​,x∈T},任取 t , s ∈ T , t,s∈T,t,s∈T,定义γ$(t,s)为序列{Xt}的自协方差函数:

    时间序列的预处理2-----残差白噪声检验

    预处理还有一项内容就是随机性检验,其实就是俗称的残差白噪声检验。

    为什么残差要是白噪声?

    答:得到白噪声序列,就说明时间序列中有用的信息已经被提取完毕了,剩下的全是随机扰动,是无法预测和使用的,残差序列如果通过了白噪声检验,则建模就可以终止了,因为没有信息可以继续提取。如果残差不是白噪声,就说明残差中还有有用的信息,需要修改模型或者进一步提取。

    怎样对白噪声进行检验?

    答:白噪声检验的步骤为:打开resid序列,view,correlogram,差分阶数选择level,确定,看q统计量的伴随p值是不是很大就行了。

    以上是在“人大经济论坛”里看到的!https://bbs.pinggu.org/thread-3342817-1-1.html

    展开全文
  • 在本文中,我们研究了一些常见的时间序列数据预处理技术。我们从排序时间序列观察开始;然后研究了各种缺失值插补技术。因为我们处理的是一组有序的观察结果,所以时间序列插补与传统插补技术不同。此外,还将一些...

    时间序列数据随处可见,要进行时间序列分析,我们必须先对数据进行预处理。时间序列预处理技术对数据建模的准确性有重大影响。

    在本文中,我们将主要讨论以下几点:

    • 时间序列数据的定义及其重要性。

    • 时间序列数据的预处理步骤。

    • 构建时间序列数据,查找缺失值,对特征进行去噪,并查找数据集中存在的异常值。

    首先,让我们先了解时间序列的定义:

    时间序列是在特定时间间隔内记录的一系列均匀分布的观测值。

    时间序列的一个例子是黄金价格。在这种情况下,我们的观察是在固定时间间隔后一段时间内收集的黄金价格。时间单位可以是分钟、小时、天、年等。但是任何两个连续样本之间的时间差是相同的。

    在本文中,我们将看到在深入研究数据建模部分之前应执行的常见时间序列预处理步骤和与时间序列数据相关的常见问题。

    时间序列数据预处理


    时间序列数据包含大量信息,但通常是不可见的。与时间序列相关的常见问题是无序时间戳、缺失值(或时间戳)、异常值和数据中的噪声。在所有提到的问题中,处理缺失值是最困难的一个,因为传统的插补(一种通过替换缺失值来保留大部分信息来处理缺失数据的技术)方法在处理时间序列数据时不适用。为了分析这个预处理的实时分析,我们将使用 Kaggle 的 Air Passenger 数据集。

    时间序列数据通常以非结构化格式存在,即时间戳可能混合在一起并且没有正确排序。另外在大多数情况下,日期时间列具有默认的字符串数据类型,在对其应用任何操作之前,必须先将数据时间列转换为日期时间数据类型。让我们将其实现到我们的数据集中:

    import pandas as pd 
     
    passenger = pd.read_csv('AirPassengers.csv') 
    passenger['Date'] = pd.to_datetime(passenger['Date'])  
    passenger.sort_values(by=['Date'], inplace=True, ascending=True)
    

    图片

    时间序列中的缺失值

    处理时间序列数据中的缺失值是一项具有挑战性的任务。传统的插补技术不适用于时间序列数据,因为接收值的顺序很重要。为了解决这个问题,我们有以下插值方法:

    插值是一种常用的时间序列缺失值插补技术。它有助于使用周围的两个已知数据点估计丢失的数据点。这种方法简单且最直观。处理时序数据时可以使用以下的方法:

    • 基于时间的插值

    • 样条插值

    • 线性插值

    让我们看看我们的数据在插补之前的样子:

    from matplotlib.pyplot import figure 
    import matplotlib.pyplot as plt 
     
    figure(figsize=(12, 5), dpi=80, linewidth=10) 
    plt.plot(passenger['Date'], passenger['Passengers']) 
    plt.title('Air Passengers Raw Data with Missing Values') 
    plt.xlabel('Years', fontsize=14) 
    plt.ylabel('Number of Passengers', fontsize=14) 
    plt.show()
    

    图片

    让我们看看以上三个方法的结果:

    passenger[‘Linear’] = passenger[‘Passengers’].interpolate(method=’linear’) 
    passenger[‘Spline order 3] = passenger[‘Passengers’].interpolate(method=’spline’, order=3) 
    passenger[‘Time’] = passenger[‘Passengers’].interpolate(method=’time’) 
     
    methods = ['Linear', 'Spline order 3', 'Time'] 
     
    from matplotlib.pyplot import figure 
    import matplotlib.pyplot as plt 
    for method in methods: 
        figure(figsize=(12, 4), dpi=80, linewidth=10) 
        plt.plot(passenger["Date"], passenger[method]) 
        plt.title('Air Passengers Imputation using: ' + types) 
        plt.xlabel("Years", fontsize=14) 
        plt.ylabel("Number of Passengers", fontsize=14) 
        plt.show()
    

    图片

    所有的方法都给出了还不错的结果。当缺失值窗口(缺失数据的宽度)很小时,这些方法更有意义。但是如果丢失了几个连续的值,这些方法就更难估计它们。

    时间序列去噪

    时间序列中的噪声元素可能会导致严重问题,所以一般情况下在构建任何模型之前都会有去除噪声的操作。最小化噪声的过程称为去噪。以下是一些通常用于从时间序列中去除噪声的方法:

    滚动平均值

    滚动平均值是先前观察窗口的平均值,其中窗口是来自时间序列数据的一系列值。为每个有序窗口计算平均值。这可以极大地帮助最小化时间序列数据中的噪声。

    让我们在谷歌股票价格上应用滚动平均值:

    rolling_google = google_stock_price['Open'].rolling(20).mean() 
    plt.plot(google_stock_price['Date'], google_stock_price['Open']) 
    plt.plot(google_stock_price['Date'], rolling_google) 
    plt.xlabel('Date') 
    plt.ylabel('Stock Price') 
    plt.legend(['Open','Rolling Mean']) 
    plt.show()
    

    图片

    傅里叶变换

    傅里叶变换可以通过将时间序列数据转换到频域来帮助去除噪声,我们可以过滤掉噪声频率。然后应用傅里叶反变换得到滤波后的时间序列。我们用傅里叶变换来计算谷歌股票价格。

    denoised_google_stock_price = fft_denoiser(value, 0.001, True) 
    plt.plot(time, google_stock['Open'][0:300]) 
    plt.plot(time, denoised_google_stock_price) 
    plt.xlabel('Date', fontsize = 13) 
    plt.ylabel('Stock Price', fontsize = 13) 
    plt.legend([‘Open’,’Denoised: 0.001']) 
    plt.show()
    

    图片

    时间序列中的离群值检测

    时间序列中的离群值是指趋势线的突然高峰或下降。导致离群值可能有多种因素。让我们看一下检测离群值的可用方法:

    基于滚动统计的方法

    这种方法最直观,适用于几乎所有类型的时间序列。在这种方法中,上限和下限是根据特定的统计量度创建的,例如均值和标准差、Z 和 T 分数以及分布的百分位数。例如,我们可以将上限和下限定义为:

    图片

    取整个序列的均值和标准差是不可取的,因为在这种情况下,边界将是静态的。边界应该在滚动窗口的基础上创建,就像考虑一组连续的观察来创建边界,然后转移到另一个窗口。该方法是一种高效、简单的离群点检测方法。

    孤立森林

    顾名思义,孤立森林是一种基于决策树的异常检测机器学习算法。它通过使用决策树的分区隔离给定特征集上的数据点来工作。换句话说,它从数据集中取出一个样本,并在该样本上构建树,直到每个点都被隔离。为了隔离数据点,通过选择该特征的最大值和最小值之间的分割来随机进行分区,直到每个点都被隔离。特征的随机分区将为异常数据点在树中创建更短的路径,从而将它们与其余数据区分开来。

    图片

    K-means 聚类

    K-means 聚类是一种无监督机器学习算法,经常用于检测时间序列数据中的异常值。该算法查看数据集中的数据点,并将相似的数据点分组为 K 个聚类。通过测量数据点到其最近质心的距离来区分异常。如果距离大于某个阈值,则将该数据点标记为异常。K-Means 算法使用欧几里得距离进行比较。

    图片

    可能的面试问题

    如果一个人在简历中写了一个关于时间序列的项目,那么面试官可以从这个主题中提出这些可能的问题:

    • 预处理时间序列数据的方法有哪些,与标准插补方法有何不同?

    • 时间序列窗口是什么意思?

    • 你听说过孤立森林吗?如果是,那么你能解释一下它是如何工作的吗?

    • 什么是傅立叶变换,我们为什么需要它?

    • 填充时间序列数据中缺失值的不同方法是什么?

    总结

    在本文中,我们研究了一些常见的时间序列数据预处理技术。我们从排序时间序列观察开始;然后研究了各种缺失值插补技术。因为我们处理的是一组有序的观察结果,所以时间序列插补与传统插补技术不同。此外,还将一些噪声去除技术应用于谷歌股票价格数据集,最后讨论了一些时间序列的异常值检测方法。使用所有这些提到的预处理步骤可确保高质量数据,为构建复杂模型做好准备。

    推荐文章

    技术交流

    欢迎转载、收藏、有所收获点赞支持一下!数据、代码可以找我获取

    在这里插入图片描述

    目前开通了技术交流群,群友已超过2000人,添加时最好的备注方式为:来源+兴趣方向,方便找到志同道合的朋友

    • 方式①、发送如下图片至微信,长按识别,后台回复:加群;
    • 方式②、添加微信号:dkl88191,备注:来自CSDN
    • 方式③、微信搜索公众号:Python学习与数据挖掘,后台回复:加群

    长按关注

    展开全文
  • 第二章时间序列预处理PPT学习教案.pptx
  • 来源:Deephub Imba 本文约2600字,建议阅读5分钟 在本文中,我们将看到在深入研究数据建模部分之前应执行的常见时间序列预处理步骤和与时间序列数据相关的常见问题。时间序列数据随...
  • 1 时间序列预处理 2 平稳性检验 2.1 特征统计量(概率分布的意义) 2.2 时间序列的概率分布 2.3 概率分布族应用的局限性 2.4 特征统计量(均值、方差) 2.5 平稳时间序列的定义(严平稳、宽平稳) 2.6 ...
  • 二、时间序列预处理

    万次阅读 2018-06-11 11:28:29
    一般情况下,拿到一个观察值序列之后,首先要对它的平稳性和纯随机性进行检验,这两个重要的检验称为序列预处理。根据检验的结果可以将序列分为不同的类型,对不同类型的序列我们会采用不同的分析方法。 一、平稳...
  • 时间序列预处理流程

    千次阅读 2019-09-11 09:30:33
    时间序列分析之前,需要进行序列的预处理,包括纯随机性和平稳性检验,通过计算序列的四个特征统计量,根据检验结果可以将序列分为不同的类型,然后采取不同的分析方法。 四个特征统计量 1.均值 2.方差 3.自协方差...
  • 时间序列预处理

    万次阅读 2018-10-11 23:19:50
    本文转自时间序列ARIMA模型详解:python实现店铺一周销售量预测 顾名思义,时间序列是时间间隔不变的情况下收集的时间点集合。这些集合被分析用来了解长期发展趋势,为了预测未来或者表现分析的其他形式。但是是...
  • 定义:我们把获取时间序列以及对其进行检查,整理和预处理等工作,称之时间序列的建立。 采样:为了数字处理上的方便,往往只按照一定的时间间隔对所研究系统的响应进行记录和观念,我们称之为采样,相应地把记录和...
  • 第二章 时间序列预处理
  • 时间序列数据预处理

    2022-03-19 00:15:19
    时间序列数据随处可见,要进行时间序列分析,我们必须先对数据进行预处理。时间序列预处理技术对数据建模的准确性有重大影响。在本文中,我们将主要讨论以下几点:时间序列数据的定义及其重要性。时间序...
  • 时间序列预测(一)—— 数据预处理

    万次阅读 多人点赞 2019-05-20 15:20:56
    时间序列预测(一)—— 数据预处理   最近在做时间序列的预测问题,这里就稍微总结回顾一下,便于以后查阅,也希望能给大家提供到帮助,有什么问题欢迎多多交流。   这是一个系列的文章,主要从代码的角度分析...
  • python时间序列处理1-预处理时间序列平稳性判断时序图检验自相关图检验纯随机性检验LB检验Q检验 时间序列平稳性判断 时序图检验 import pandas as pd import numpy as np import seaborn as sns import ...
  • 应用时间序列分析时间序列预处理.pptx
  • 时间序列分析时间序列预处理PPT学习教案.pptx
  • 应用时间序列分析-时间序列预处理.pptx
  • 时间序列预处理时间序列可以看成是对所研究系统的响应进行观察和记录,并称之为采样。相应地把观察和记录时间间隔称为采样间隔,通常采用等间隔采样,然而实际中常遇到非等间隔的时间序列。另一方面,由于数据传输...
  • 时间序列-第二章时间序列预处理.pptx
  • 时间序列预处理.pptx
  • 文章目录0 封面1 标题(title) 写在前面:计算机应用;主办方:中国科学院成都分院、四川省计算机学会;中文核心期刊;月刊;C类 0 封面 这篇文章采用【精读】: ...多维时间序列异常检测算法综述 ...
  • 时间序列预处理教材.pptx
  • 应用时间序列分析-时间序列预处理.pdf

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 56,954
精华内容 22,781
关键字:

时间序列预处理