美文网首页工作生活
时间序列模型

时间序列模型

作者: 小战牛 | 来源:发表于2019-07-05 10:34 被阅读0次

        最近做基于时间序列的销量预测模型,整理下思路,分享下。大致分为数据预处理、频谱分析、模型构建并预测、模型整合、结果修正等五个步骤。

一、数据预处理:

        考虑到越平稳越有规律的数据预测效果越好,而大中小型等各种促销活动一般不具有规律性,因此,首先需要将部分促销数据进行检测并替换。我采用的是基于统计的和聚类的方法。

        1.1 基于统计的方法

        p80、p90、turkey、td['75%']+0.5*(td['75%']-td['25%'])等

图1 p80去噪 图2 分位数去噪

        1.2 基于聚类的方法

        kmeans等

图3 聚类去噪

        1.3  机器学习方法

        IForest等

        由于时间序列要求时间连续,因此异常点检测之后,需要替换,我尝试过的替换方法有:p80、线性插值、拉格朗日插值、预测值替换等方法。

二、频谱分析

        2.1 生命周期分析

        数据清洗完后,可以对时序波做一个简单的分析。比如生命周期检测,因为像手机、电脑这类的产品一般都会经历进入期、稳定期、衰退期等阶段。具体的生命周期检测我将在后边专门介绍。

        2.2 趋势分解

        一般的产品销售都有自己的周期,比如每个月有一次促销,每周之内也分工作日和周末,所以最好先提取下循环趋势。这里的趋势分解有乘法、加法、伪乘法,但是乘法和伪乘法都要求时序数据中不能有0,所以我暂时采用了加法分解方式。

        decomposition = seasonal_decompose(data, model='additive', two_sided=False,

                                  freq=(7 if len(data) <60 else 30))

        trend = decomposition.trend.dropna()

        seasonal = decomposition.seasonal.dropna()

        residual = decomposition.resid.dropna()

        X = np.arange(0, len(trend)).reshape(len(trend), 1)

        model = LinearRegression()

        model.fit(X, trend)

        trend_line = pd.Series(model.predict(X))

        trend_line.index = trend.index

        de_trend = trend - trend_line

        return de_trend, seasonal, residual, trend_line

图4 趋势分解

       趋势分解后,需要对trend、seasonal、residual分别做预测,再叠加。 trend其实是短期趋势,主要用来预测今期趋势的延伸。一般情况下,这条线还需要再提取一个线性的趋势,分析总体走势。

图5 线性趋势提取

三、模型构建并预测

        上节的趋势分解后,得到de_trend,line_trend,seasonla和residual四条线,需要分别做预测。其中有的不拆解line_trend这条线,直接用trend做arima预测,这里用trend为例做说明。

        在做时序预测时,可以用trend预测,也可以用trend+residual做预测。预测模型我们采用arima。季节趋势是循环趋势,如果用的用加法做的趋势分解,这条趋势多数是规律的循环周期,如果是用乘法做的趋势分解,这条线的周期一般是不一样的。seasonal加法分解出来的大多是一样的周期,所以只需要直接循环预测即可。

相关文章

  • 时间序列分析

    趋势,平稳时间序列模型,非平稳时间序列模型,模型识别,模型估计,参数估计,模型诊断,预测,季节模型,时间序...

  • ARIMA模型——MATLAB实现

    arma() 功能:估计ARMA时间序列模型参数格式:m = armax(data, orders);m = ar...

  • 时间序列模型

    众所周知,时间序列的预测是需要假定在时间序列平稳随机过程的基础上,若为非平稳时间序列,容易造成对随机过程的伪回归,...

  • 时间序列模型

    最近做基于时间序列的销量预测模型,整理下思路,分享下。大致分为数据预处理、频谱分析、模型构建并预测、模型整合、结果...

  • statsmodels.tsa.arima_model out

    还是先来吐槽 时间序列模型arima 用python 实现的话是用statsmodels.tsa.arima_m...

  • 时间序列模型简介

    目录 平稳序列 判断样本的平稳性 时间序列模型 参数选择 实验代码 1. 平稳序列 时间序列是一列观测值的集合, ...

  • 时间序列模型方法

    SARIMAX模型属性与方法 summary 方法 模型的统计量与参数估计等 fittedvalues 属性 对应...

  • 结构时间序列模型

    状态空间模型为时间序列分析提供了一种灵活的方法,尤其是在简化最大似然估计和处理缺失值方面。 结构时间序列模型(st...

  • 时间序列模型(ARIMA)

    时间序列简介 时间序列 是指将同一统计指标的数值按其先后发生的时间顺序排列而成的数列。时间序列分析的主要目的是根据...

  • ARIMA时间序列模型

    1 概念 ARIMA模型,全称为自回归积分滑动平均模型(Autoregressive Integrated ...

网友评论

    本文标题:时间序列模型

    本文链接:https://www.haomeiwen.com/subject/khvdhctx.html