精华内容
下载资源
问答
  • 季节模型
    2022-04-04 15:28:51

    利用ARIMA季节模型预测

    目的:某公司业务具有明显的季节性波动,为了提前做好假日部署,需根据历史数据预测未来留存用户数量

    1、数据准备

    import pmdarima as pm
    import pandas as pd
    import matplotlib.pyplot as plt
    
    #导入数据
    data=pd.read_excel(r"C:\Users\csdn\Desktop\test.xlsx",sheet_name="OG",index_col = u'month')['liucun']
    data=pd.DataFrame(data)
    
    #查看原始数据时序图
    plt.rcParams['font.sans-serif'] = ['SimHei'] #用来正常显示中文标签
    plt.rcParams['axes.unicode_minus'] = False #用来正常显示负号
    data.plot()
    plt.show()
    

    2、查看数据基本情况

    #查看原始数据自相关系数
    from statsmodels.graphics.tsaplots import plot_acf
    plot_acf(data).show()
    
    #定义ADF输出格式化函数,结果中Test Statistic大于1%置信水平值,P>0.05,liucun存在单位根,序列不平稳
    from statsmodels.tsa.stattools import adfuller
    def adf_test(timeseries):
        print ('ADF检验结果:')
        dftest = adfuller(timeseries, autolag='AIC')
        dfoutput = pd.Series(dftest[0:4], index=['Test Statistic','p-value','Number of Lags Used','Number of Observations Used'])
        for key,value in dftest[4].items():
           dfoutput['Critical Value (%s)'%key] = value
        print (dfoutput)
    
    #对数据集使用ADF检验
    adf_test(data[u'liucun'])
    
    

    3、如果时间序列不平稳,需进行差分转换,得到差分之后的平稳序列再进行预测
    (1)如果明确需一阶差分的话

    #ADF检验结果说明原始序列不平稳,需进行差分,一阶 差分
    D_data = data.diff(1).dropna()
    D_data.columns = [u'liucun差分']
    D_data.plot() #时序图
    plt.show()
    plot_acf(D_data).show() #自相关图
    
    #对一阶差分后的序列进行单位根检验,P值小于0.05,一阶差分后的序列平稳
    from statsmodels.graphics.tsaplots import plot_pacf
    plot_pacf(D_data).show() #偏自相关图
    adf_test(D_data[u'liucun差分'])
    

    (2)如果不明确需进一步定阶

    #定好差分阶数后,对模型p,q定阶,可用aic或bic指标,ARIMA(data, (0, 0, 1)).fit().bic
    from statsmodels.tsa.arima_model import ARIMA
    pmax =int(len(data) / 5)    #一般阶数不超过 length /10
    qmax = int(len(data) / 5)
    aic_matrix = []
    for p in range(pmax +1):
        temp= []
        for q in range(qmax+1):
            try:
                temp.append(ARIMA(data, (p, 1, q)).fit().aic)
            except:
                temp.append(None)
        aic_matrix.append(temp)
    
    aic_matrix = pd.DataFrame(aic_matrix)   #将其转换成Dataframe 数据结构
    print(aic_matrix)
    
    p,q = aic_matrix.stack().idxmin()   #先使用stack 展平, 然后使用 idxmin 找出最小值的位置
    print(u'AIC 最小的p值 和 q 值:%s,%s' %(p,q))
    

    4、定好阶后可带入ARIMA模型进行拟合

    #找到是AIC/BIC最小的p,q参数,代入ARIMA模型中,进行拟合
    from statsmodels.tsa.arima_model import ARIMA
    print(ARIMA(data, (5,1,0)).fit().bic)
    model=ARIMA(data, (5,1,0)).fit()
    model.summary2() 
    
    #model.fittedvalues
    fittedvalues = pd.Series(model.fittedvalues, copy=True)
    plt.figure(figsize=(10, 6))
    plt.plot(fittedvalues,label="forecast")
    plt.plot(data,label="real")
    plt.plot(D_data,label="diff")
    plt.xlabel('month',fontsize=12,verticalalignment='top')
    plt.ylabel('avgdau',fontsize=14,horizontalalignment='center')
    plt.legend()
    plt.show()
    
    

    5、对拟合的模型效果进行评价

    # 计算R平方值
    import numpy as np
    yhat =model.fittedvalues                        # or [p(z) for z in x]
    ybar = np.sum(D_data[u'liucun差分'])/len(D_data[u'liucun差分'])          # or sum(y)/len(y)
    ssreg = np.sum((D_data[u'liucun差分']-ybar)**2)   # or sum([ (yihat - ybar)**2 for yihat in yhat])
    sstot = np.sum((D_data[u'liucun差分'] -yhat)**2)    # or sum([ (yi - ybar)**2 for yi in y])
    R =1- (sstot/ssreg)
    R
    

    6、利用拟合出来的模型进行预测

    #利用模型进行预测
    model.forecast(7)   #为未来8个月进行预测, 返回预测结果, 标准误差, 和置信区间
    
    更多相关内容
  • 本文研究乘积季节模型在我校图书借阅预测中的应用,通过对我校2007年1月到2009年12月的月度图书借阅数据来进行实证分析,采用差分方法对序列资料进行平稳化,然后进行模型定阶并估计其参数,建立了我校图书借阅的乘积...
  • 基于ARIMA季节乘积模型,提出一种新的矿井涌水量的预测方法,通过普通差分和季节差分保证矿井涌水量时间序列的平稳化,以模型定阶、参数估计和假设检验等过程建立合适的乘积季节模型ARIMA(2,1,1)(1,1,1)12。...
  • 本文研究乘积季节模型在我校图书借阅预测中的应用,通过对我校2007年1月到2009年12月的月度图书借阅数据来进行实证分析,采用差分方法对序列资料进行平稳化,然后进行模型定阶并估计其参数,建立了我校图书借阅的乘积...
  • ARIMA乘积季节模型及其在月径流预测中的应用,卢艳,,本文研究了应用ARIMA乘积季节模型在月径流预测中的可行性。以1985年1月至2001年12月汀江观音桥站月流量资料建立模型,以2002年的资料作�
  • ARIMA乘积季节模型理论及其在煤炭出口量,周丽莉,,本文研究ARIMA乘积季节模型及其在煤炭出口量预测中的应用。运用SPSS软件中时间序列模块中的建模方法建立了我国煤炭出口模型。文章首
  • ARIMA乘法季节模型

    2022-04-26 10:58:01
    序列的季节效应、长期趋势效应和随机波动之间有着复杂的相互关联性,简单的季节模型不能充分地提取其中的相关关系,这时常采用乘积季节模型。 例题1我国1949-2008年年末人口总数(单位:万人)。选择适当的指数平滑法...

    目录

    ARIMA乘法季节模型

    例题1 

    例题 2

    例题3


    ARIMA乘法季节模型

            序列的季节效应、长期趋势效应和随机波动之间有着复杂的相互关联性,简单的季节模型不能充分地提取其中的相关关系,这时常采用乘积季节模型。

    例题1 

    我国1949-2008年年末人口总数(单位:万人)。选择适当的指数平滑法拟合该序列的长期趋势,并作5期预测。

    代码:

    加载数据:

    a<-read.table('D:/桌面/大三下作业/时间序列/实验报告6/习题4-5.csv',sep=',',header=T) #读取数据
    x<-ts(a$population,start=1949)
    plot(x,main='时序图') #绘制时序图

    返回:

    由时序图可知,该序列为显著的线性递增序列,可以使用holt两参数指数平滑法进行趋势拟合和预测,或使用ARIMA ( 1,1,0)模型进行拟合和预测。

    拟合模型:

    fit1<-HoltWinters(x,gamma=F) #进行2参数指数平滑法进行拟合
    fit1 #输出拟合结果

    返回:

    plot(fit1,main='拟合结果时序图') #对拟合结果绘制时序图

    返回:

    由于没有指定平滑系数的值,所以R基于最优拟合原则计算出平滑系数:

    通过Holt两参数指数平滑法,不断迭代,得到最后一期的参数估计值为:

    则未来任意k期的预测值为:

     进行5期预测:

    fore1<-forecast(fit1,h=5)
    fore1

    返回:

    plot(fore1) #对预测结果绘制时序图
    lines(fore1$fitted,col='red') #拟合值
    

    返回:

    例题 2

    某地区1962-1970年平均每头奶牛的月度产奶量数据(单位:磅)。

    (1)绘制该序列的时序图,直观考查该序列的特点(有无趋势和季节)。

    (2)选择适当的指数平滑法预测下一年该地区奶牛的月度产奶量。写出指数平滑模型、预测模型,预测值和80%、95%的置信区间,绘制预测图。

    (1)

    加载数据:

    a<-read.table('D:/桌面/大三下作业/时间序列/实验报告6/习题4-7.csv',sep=',',header=T)
    x<-ts(a$ milk_yield,start=c(1962,1),frequency=12)
    

    绘制时序图:

    plot(x,main='时序图') #绘制时序图

    返回:

            从时序图中可以看到,该序列具有明显的线性递增趋势以及以年为周期的季节效应, 所以可以确定这个序列受到2个因素的影响:长期趋势、季节效应,由于季节性没有随趋势变化而发生显著变化,所以可选择加分模型。

    (2)

    指数平滑模型预测

    拟合:

    xfit1<-HoltWinters(x) #三参数指数平滑模型拟合

    xfit1

    返回:

    由于没有特别指定平滑系数的值,所以R基于最优拟合原则计算出平滑系数:

     通过Holt-winters三参数指数平滑加法迭代公式,得到三参数的最后迭代值为:

     参数的最后12个估计值对应的是12个月的季节指数,见表1.

    表1

    月份j

    季节指数

    月份j

    季节指数

    1

    -14.0658

    7

    33.47357

    2

    -53.0368

    8

    -11.9391

    3

    37.0976

    9

    -54.9495

    4

    50.88901

    10

    -50.0478

    5

    109.6942

    11

    -77.2317

    6

    82.63421

    12

    -35.5463

    下一年该地区奶牛的月度产奶量的预测模型为:

     进行预测:

    library(forecast)

    fore1<-forecast(xfit1,h=12)

    fore1

    返回:

    plot(fore1) #绘制时序图

    lines(fore1$fitted,col=2) #绘制拟合趋势

    返回:

    用以前知识实现模型预测:

    差分运算:

    dif1<-diff(diff(x),12) #1阶差分12步

    plot(dif1) #绘制1阶差分的时序图

    返回:

    平稳性检验:

    library(aTSA)

    adf.test(dif1)

    返回:

    由结果可知,三期结果的p值均小于0.05,所以认为该序列平稳

    白噪声检验:

    for(i in 1:2)print(Box.test(dif1,lag=6*i))

    返回:

    由结果可知,6期和12期的p值均小于0.05,所以拒绝原假设,认为不是白噪声序列

    模型定阶:

    acf(dif1,main='自相关系数图')

    pacf(dif1,main='偏自相关系数图')

    返回:

    由自相关系数图可知,可以认为自相关系数1阶拖尾,由偏自相关系数图可知,可以认为偏自相关系数1阶拖尾,则可以建立定阶为ARIMA(1,1,0)

    拟合模型:

    fit2<-arima(x,order=c(1,1,0),seasonal=list(order=c(0,1,1),period=12))

    fit2

    返回:

     对模型进行检验:

    library(aTSA)

    ts.diag(fit2)

     返回:

     由图可知拟合效果良好。

    进行预测:

    fore2<-forecast(fit2,h=12)

    fore2

    返回:

     绘制时序图:

    plot(fore2)

    lines(fore2$fitted,col=2)

    返回:

     例题3

    2013-2020年中国农村居民人均消费支出累计值(元)如附件所示。

    (1)绘制该序列的时序图,直观考查该序列的特点(有无趋势和季节)。

    (2)选择适当的指数平滑法预测未来3年中国农村居民人均消费支出累计值(元)。写出指数平滑模型、预测模型,预测值和80%、95%的置信区间,绘制预测图。

    (1)

    加载数据:

    a<-read.table('D:/桌面/大三下作业/时间序列/实验报告6/农村居民人均消费支出累计值(元).csv',sep=',',header=T)

    x<-ts(a$zhichu,start=c(2013,1),frequency=4)

    plot(x,main='时序图') #绘制时序图

    返回:

      从时序图中可以看到,该序列具有明显的线性递增趋势以及以年为周期的

    季节效应, 所以可以确定这个序列受到2个因素的影响:长期趋势、季节效应,由于季节性有随趋势变化而发生显著变化,所以可选择乘法模型。

    (2)

    指数平滑模型预测:

    拟合:

    xfit1<-HoltWinters(x,seasonal="mult") #三参数指数平滑模型拟合

    xfit1

    返回:

    由于没有特别指定平滑系数的值,所以R基于最优拟合原则计算出平滑系数:

    通过Holt-winters三参数指数平滑乘法迭代公式,得到三参数的最后迭代值为:

     参数的最后4个估计值对应的是4个季度的季节指数,见表2.

    表2

    季度

    1季度

    2季度

    3季度

    4季度

    0.45802

    0.786094

    1.135653

    1.620233

    该序列向前任意K期的预测值等于

    对为来3年进行预测:

    library(forecast)

    fore1<-forecast(xfit1,h=12)

    fore1

    返回:

    plot(fore1) #绘制时序图

    lines(fore1$fitted,col=2) #绘制拟合趋势

    返回:

    展开全文
  • 简单季节模型 ? 简单季节模型通过简单的趋势差分季节 差分之后序列即可转化为平稳它的模型 结构通常如下 t t d D B x B ? ) ( ) ( ? ? ? ? ? 例 ? 拟合 1962 1991 年德国工人季度失业率序列 差分平稳 ? 对原序列作...
  • 基于时间序列的加法季节模型和乘法季节模型以及两者之间的比较如下: 实验数据来源与1962年到1991年德国工人季度失业率序列: 一、加法季节模型 1、首先加载所需的包: 2、导入数据,并将数据转换为季节...

    基于时间序列的加法季节模型和乘法季节模型以及两者之间的比较如下:

    实验数据来源与1962年到1991年德国工人季度失业率序列:

    一、加法季节模型

    1、首先加载所需的包:

      

    2、导入数据,并将数据转换为季节数据:

    3、得到时序图如下,发现既有季节效应又有上升趋势效应:

    4、接着我们对数据进行一阶四部差分:

    一阶四步差分时序图如下:

    从一阶四步差分时序图可以看出,我们消除了上升趋势效应以及季节效应,即为平稳序列。

    5、接着画出差分后序列相关图和偏自相关图:

     

     结果显示自相关具有拖尾性,偏自相关图在一阶和3阶之后都落入两倍的标准差之内了,综合考虑,最后拟合一个假发季节模型:ARIMA((1,4),(1,4),0))

    6、模型拟合结果及优化结果对比显示:

      结果显示ARIMA((1,4),(1,4),0))模型aic数值较小,ARIMA((1,4),(1,4),0))模型较好。

    7、运用forecast函数进行预测

     8、预测结果可视化:

    9、模型的残差序列白噪声检验:

    p值较大,说明加法季节模型很好的提取了数据信息,模型拟合效果很理想。

    二、乘法季节模型

    数据来源于1948年到1981年美国女性月度事业率序列

    1、读取数据,并将数据转换为时间序列数据2、输出时间序列时序图,发现既有周期性又有上升趋势效应:

     接着我们对数据进行一阶12步差分:

    从一阶12步差分时序图可以看出,我们消除了上升趋势效应以及周期效应,即为平稳序列。

    3、接着画出差分后序列相关图和偏自相关图:

    结果显示自相关和偏自相关都具有拖尾性。

    4、首先拟合一个加法季节模型:ARIMA(1,12),1)

     5、模型残差序列白噪声检验:

     由结果可得6阶时p值为0.08228,12阶时p值为2.2e-16,取α值为0.1时,均拒绝原假设,说明残差为非白噪声序列,说明时间序列选择加法季节效应模型不正确。

    6、接着我们选择乘积季节效应进行拟合,关键在于阶数的选择,结束的选择,我们仍选择用自相关和偏自相关图来观察:

     从短期来看,自相关在短期和偏自相关都是拖尾的,自相关认为时1阶即一个周期截尾的,偏自相关系数1阶拖尾,p取0,q取1。

    7、6期乘法季节序列模型预测:

     8、结果可视化:

     9、模型残差序列白噪声检验:

    p值较大,说明乘法季节模型很好的提取了数据信息,模型拟合效果很理想。

    展开全文
  • 季节性时间序列模型.pptx
  • 本文研究乘积季节模型在我国煤矿事故总数预测中的应用,通过对我国2006年1月到2010年12月煤矿事故总数数据来进行实证分析,采用差分方法对序列资料进行平稳化,然后进行模型定阶并估计其参数,建立了合适的乘积季节预测...
  • ARIMA加法季节模型

    2022-06-06 20:58:02
    ARIMA加法季节模型 ARIMA加法季节模型函数 例题

    目录

    ARIMA加法季节模型

    ARIMA加法季节模型函数

    例题


    ARIMA加法季节模型

    季节效应和其它效应之间是加法关系

    x_t=S_t+T_t+I_t

    通过简单的趋势差分、季节差分之后转化为平稳,模型结构通常如下

    \bigtriangledown _s\bigtriangledown^{d}x_t=\frac{\Theta(B)}{\Phi (B)}

    ARIMA加法季节模型函数

    例题

    部分数据:

    timex
    Jan-93977.5
    Feb-93892.5
    Mar-93942.3
    Apr-93941.3
    May-93962.2
    Jun-931005.7
    Jul-93963.8
    Aug-93959.8
    Sep-931023.3
    Oct-931051.1
    Nov-931102

    数据链接:蓝奏云

    R程序如下:

    读取数据:

    a<-read.table('D:/桌面/6_2.csv',sep=',',header=T) #读取数据
    x<-ts(a$unemployment_rate,start=c(1962,1),frequency=4)
    
    # 时序图
    plot(x,main='时序图')

    返回时序图:

    差分处理:

    # 1阶4步差分
    xdif<-diff(diff(x),4)
    
    #时序图
    plot(xdif,main='差分后时序图')

    返回:

    单位根检验

    # 导入库
    library(aTSA)
    # 差分后单位根检验
    adf.test(xdif) 

    返回:

    由结果可知,p值均小于0.05,所以通过了检验。

    差分后白噪声检验

    for(i in 1:2)print(Box.test(xdif,lag=6*i))

    返回:

    由结果知,6期、12期的序列结果的p值均小于0.05,所以该序列通过了白噪声检验。

    差分后自相关和偏自相关图

    acf(xdif,main='自相关图')
    pacf(xdif,main='偏自相关图')

    返回:

    由自相关图知,该序列具有拖尾性。

    由偏自相关图知,该序列具有4阶截尾性。

    综上,差分后该序列可建立,AR(4),又因为原序列经过了1阶4步差分,所以原序列的拟合模型可以为疏系数模型,定阶为ARIMA((1,4),(1,4),0))

    (1-B)(1-B^4)x_t=\frac{1}{1-\Phi_1B-\Phi_4B^4}\varepsilon_t

    疏系数模型

    #需人工干预
    xfit<-arima(x,order=c(4,1,0),transform=F,fixed=c(NA,0,0,NA),seasonal=list(order=c(0,1,0),period=4)) 

    返回:

     所以可得模型为:

    (1-B)(1-B^4)x_t=\frac{1}{1-0.4449B-+0.2720B^4}\varepsilon_t

                                   其中\varepsilon_t\sim N(0,0.09266)

    模型检验

    ts.diag(xfit)

    返回:

    由结果可知,该模型拟合效果很好。

    三年预测

    # 导入库
    library(forecast)
    # 预测
    xfore<-forecast(xfit,h=12)

     返回:

    # 绘制时序图
    plot(xfore)
    lines(xfore$fitted,col=4)

    返回:

    由预测时序图结果可知,该模型的拟合效果较好。

    展开全文
  • 数据回归-结合季节模型和小波-非参数自回归模型的中国入境游人数的预测.pdf
  • 人工智能-基于乘积季节模型和LSTM神经网络的铁路货运量预测研究.pdf
  • 总结 为预测美国新单户住宅的销售量,基于1973年到1995年的月销售量数据建立了乘法季节模型。由于数据集平稳较差,首先采用了Box-Cox变换;转换后的数据显示了一定的趋势和季节性成分,因此进行了季节性的差分、...
  • 时间序列分析-------乘法季节模型 实验 名称 乘法季节模型 实验 内容 乘法季节模型 实验 目的 2、熟练建立乘法季节模型 乘法季节...
  • 疏系数模型 和季节模型 实验 内容 1、简单季节模型 实验 目的 1、掌握疏系数模型 2、熟练建立季节模型 目录 简单季节模型结构 模型建立 时序...
  • 提出了应用ARIMA乘积季节模型对大坝位移监测数据进行分析和预报的新方法,并给出了基于开源R语言建立乘积季节模型的方法步骤和关键技术。结合某大坝径向位移监测数据进行计算分析,结果表明:ARIMA乘积季节模型能较...
  • 单位根检验、航空模型、季节模型

    千次阅读 2019-01-08 09:45:14
    单独写这篇文章的用意是源于我在单位根平稳性检验上面花费了很多时间,在这个过程中,又不断对季节模型有了更为深刻的理解,所以我要单独将这些心得写出来。本篇文章需要结合《收入时间序列——之模型探索篇》来看,...
  • 基于ARIMA季节模型的新能源汽车市场前景预测研究.pdf
  • 数学建模学习方法-ARIMA乘积季节模型及其在传染病发病预测中的应用
  • 运用SPSS软件和SAS软件系统中的时间序列建模方法建立了我国城乡居民储蓄存款模型,并认为用最大似然估计法(ML)对结果进行短期预测,用无约束最小二乘估计法(ULS)对结果进行中长期预测,可得到较高的预测精度.
  • 自己编写的在2018版matlab上是没有问题的,过早的版本可能会报错如2014版之前
  • 季节加法模型

    千次阅读 2019-06-26 13:49:09
    1.模型简介 季节加法模型是指序列中季节效应和其他效应之间是加法...所以简单季节模型实际上就是通过趋势差分、季节差分将序列将序列转化为平稳序列,再对其进行拟合。它的模型结构通常如下: 式中 2.建模过程 (...
  • 测试序列稳定性:看以看到整体的序列并没有到达稳定性要求,要将时间序列转为平稳序列,有如下几种方法:DeflationbyCPILogarithmic(取对数)FirstDifference(一阶差分)SeasonalDifference(季节差分)...
  • 季节ARIMA模型在社会消费品零售总额预测中的应用,蒋建,石学军,本文首先简要介绍了ARMA模型季节ARIMA模型,接着利用统计软件EViews,通过分析我国社会消费品零售总额从1997年1月到2010年6月的月度数�
  • 第一次尝试使用Python创建季节性ARIMA模型

    千次阅读 多人点赞 2019-04-25 21:26:48
    时间序列之ARIMA模型前言ARIMA模型简介Python实现ARIMA模型预测数据的获取与准备绘制1995-2002年时间序列趋势图去均值化后ADF平稳性检验以及差分绘制自相关函数以及偏相关函数图生成一个适合你的列表创建一个表格...
  • 季节性ARIMA模型【R语言】

    万次阅读 多人点赞 2018-10-18 16:31:43
    季节性的ARIMA模型可以预测含有季节性,趋势性的时间序列。他的形式如下 这里m是每一季节的周期值。季节项与非季节项的模型非常相近。但是季节项中包含了季节周期性。例如对于ARIMA(1,1,1)(1,1,1)4模型能够写成: ...
  • 案例五季节ARIMA模型建模与预测实验指导 一实验目的 学会识别时间序列的季节变动 能看出其季节波动趋势 学会剔除季节因素的方法 了 解ARIMA模型的特点和建模过程掌握利用最小二乘法等方法对 ARIMA模型进行估计 利用...
  • 服装零售的季节性离散灰色预测模型

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 13,362
精华内容 5,344
关键字:

季节模型