乡下人产国偷v产偷v自拍,国产午夜片在线观看,婷婷成人亚洲综合国产麻豆,久久综合给合久久狠狠狠9

  • <output id="e9wm2"></output>
    <s id="e9wm2"><nobr id="e9wm2"><ins id="e9wm2"></ins></nobr></s>

    • 分享

      時(shí)間序列模式(ARIMA)

       阿甘ch1wn8cyc3 2019-03-19

               時(shí)間序列分析的主要目的是根據(jù)已有的歷史數(shù)據(jù)對(duì)未來(lái)進(jìn)行預(yù)測(cè)。如餐飲銷售預(yù)測(cè)可以看做是基于時(shí)間序列的短期數(shù)據(jù)預(yù)測(cè), 預(yù)測(cè)的對(duì)象時(shí)具體菜品的銷售量。

      1.時(shí)間序列算法:

      常見(jiàn)的時(shí)間序列模型;

      ?

      2.時(shí)序模型的預(yù)處理

      1. 對(duì)于純隨機(jī)序列,也稱為白噪聲序列,序列的各項(xiàng)之間沒(méi)有任何的關(guān)系, 序列在進(jìn)行完全無(wú)序的隨機(jī)波動(dòng), 可以終止對(duì)該序列的分析。

      2. 對(duì)于平穩(wěn)非白噪聲序列, 它的均值和方差是常數(shù)。ARMA 模型是最常用的平穩(wěn)序列擬合模型。 

      3. 對(duì)于非平穩(wěn)序列, 由于它的方差和均值不穩(wěn)定, 處理方法一般是將其轉(zhuǎn)化成平穩(wěn)序列。 可以使用ARIMA 模型進(jìn)行分析。

      對(duì)平穩(wěn)性的檢驗(yàn):

      1.時(shí)序圖檢驗(yàn):根據(jù)平穩(wěn)時(shí)間序列的均值和方差都是常數(shù)的特性,平穩(wěn)序列的時(shí)序圖顯示該序列值時(shí)鐘在一個(gè)參數(shù)附近隨機(jī)波動(dòng),而且波動(dòng)的范圍是有界的。如果有明顯的趨勢(shì)或者周期性, 那它通常不是平穩(wěn)序列。

      2.自相關(guān)圖檢驗(yàn):平穩(wěn)序列具有短期相關(guān)性, 這個(gè)性質(zhì)表明對(duì)平穩(wěn)序列而言, 通常 只有近期的序列值得影響比較明顯, 間隔越遠(yuǎn)的過(guò)去值對(duì)現(xiàn)在的值得影響越小。 而非平穩(wěn)序列的自相關(guān)系數(shù)衰減的速度比較慢。

      3.單位根檢驗(yàn):?jiǎn)挝桓鶛z驗(yàn)是指檢驗(yàn)序列中是否存在單位根, 如果存在單位根, 那就是非平穩(wěn)時(shí)間序列。 目前最常用的方法就是單位根檢驗(yàn)。

      原假設(shè)是 非平穩(wěn)序列過(guò)程, 備擇假設(shè)是 平穩(wěn)序列, 趨勢(shì)平穩(wěn)過(guò)程

      ?

      ?

      ?

      ?

      ?

      上述參考:百度文庫(kù)

      3.時(shí)間序列分析:

      ·平穩(wěn)性:

      ·平穩(wěn)性要求經(jīng)由樣本時(shí)間序列所得到的擬合曲線,在未來(lái)一段時(shí)間內(nèi)仍然沿著現(xiàn)有的形態(tài)‘慣性’地延續(xù)下去。

      ·平穩(wěn)性要求序列的均值和方差不發(fā)生明顯的變化。

      ·弱平穩(wěn):期望和相關(guān)系數(shù)(依賴性)不變,未來(lái)某個(gè)時(shí)刻t 的值,Xt 要依賴于它過(guò)去的信息。

      ·差分法:時(shí)間序列在 T 與 T-1 時(shí)刻的差值(使用差分使其滿足平穩(wěn)性),一般差分1,2 階就可以了。

       

      ·AR(自回歸模型):

      ·描述當(dāng)前值與歷史值之間的關(guān)系, 用變量自身的歷史時(shí)間數(shù)據(jù)對(duì)自身進(jìn)行預(yù)測(cè)。自回歸模型必須滿足平穩(wěn)性的要求。

      公式定義:?

      ?

      ?

       

      自回歸模型的限制:

      1.自回歸模型是使用自身的數(shù)據(jù)進(jìn)行預(yù)測(cè)的

      2.必須具有平穩(wěn)性

      3.必須具有相關(guān)性,如果相關(guān)性小于 0.5 , 則不宜使用

      4.自回歸模型只適用于預(yù)測(cè)與自身前期相關(guān)的預(yù)測(cè)。

       

      ·MA(移動(dòng)平均模型):

      ·移動(dòng)平均模型關(guān)注的是自回歸模型中的誤差項(xiàng)的累加

      ·移動(dòng)平均法能有效地消除預(yù)測(cè)中的隨機(jī)波動(dòng)。

      ?

       

      ·ARMA(自回歸平均模型):

      ·自回歸和移動(dòng)平均的結(jié)合。

      ?

      ·ARIMA(p,d,q)差分自回歸移動(dòng)平均模型(Autoregressive Integrated Moving Average  Model ,簡(jiǎn)稱ARIMA)

      ·AR 是自回歸, p 是自回歸項(xiàng), MA 是移動(dòng)平均, q 為移動(dòng)平均項(xiàng), d 為時(shí)間序列稱為平穩(wěn)時(shí) 所做的差分次數(shù)。

      ·原理: 將非平穩(wěn)時(shí)間序列轉(zhuǎn)換成平穩(wěn)時(shí)間序列, 然后將因變量?jī)H對(duì)它的滯后值(p階)以及隨機(jī)誤差項(xiàng)的現(xiàn)值和滯后值進(jìn)行回顧所建立的模型。

       

      ·ARIMA 建模流程:

      ·1.將序列平穩(wěn)化(差分法確定 d)

      ·2.p 和 q 階數(shù)的確定(ACF 和 PACF 確定)

      ·3.建立模型 ARIMA (p , d , q )

       ?

      使用ARIMA 模型對(duì)某餐廳的銷售數(shù)據(jù)進(jìn)行預(yù)測(cè)

      #使用ARIMA 模型對(duì)非平穩(wěn)時(shí)間序列進(jìn)行建模操作
      #差分運(yùn)算具有強(qiáng)大的確定性的信息提取能力, 許多非平穩(wěn)的序列差分后顯示出平穩(wěn)序列的性質(zhì), 這是稱這個(gè)非平穩(wěn)序列為差分平穩(wěn)序列。 
      #對(duì)差分平穩(wěn)序列可以還是要ARMA 模型進(jìn)行擬合, ARIMA 模型的實(shí)質(zhì)就是差分預(yù)算與 ARMA 模型的結(jié)合。 

      #coding=gbk
      #使用ARIMA 模型對(duì)非平穩(wěn)時(shí)間序列記性建模操作
      #差分運(yùn)算具有強(qiáng)大的確定性的信息提取能力, 許多非平穩(wěn)的序列差分后顯示出平穩(wěn)序列的性質(zhì), 這是稱這個(gè)非平穩(wěn)序列為差分平穩(wěn)序列。 
      #對(duì)差分平穩(wěn)序列可以還是要ARMA 模型進(jìn)行擬合, ARIMA 模型的實(shí)質(zhì)就是差分預(yù)算與 ARMA 模型的結(jié)合。 
      
      #導(dǎo)入數(shù)據(jù)
      import pandas as pd
      filename = r'D:\datasets\arima_data.xls'
      data = pd.read_excel(filename, index_col = u'日期')
      
      #畫出時(shí)序圖
      import matplotlib.pyplot as plt     
      plt.rcParams['font.sans-serif'] = ['SimHei']    #定義使其正常顯示中文字體黑體
      plt.rcParams['axes.unicode_minus'] = False      #用來(lái)正常顯示表示負(fù)號(hào)
      # data.plot()
      # plt.show()

      ?

      #畫出自相關(guān)性圖
      from statsmodels.graphics.tsaplots import plot_acf, plot_pacf
      # plot_acf(data)
      # plt.show()
      
      #平穩(wěn)性檢測(cè)
      from statsmodels.tsa.stattools import adfuller
      print('原始序列的檢驗(yàn)結(jié)果為:',adfuller(data[u'銷量']))
      #原始序列的檢驗(yàn)結(jié)果為: (1.8137710150945268, 0.9983759421514264, 10, 26, {'1%': -3.7112123008648155,
      #  '10%': -2.6300945562130176, '5%': -2.981246804733728}, 299.46989866024177)
      #返回值依次為:adf, pvalue p值, usedlag, nobs, critical values臨界值 , icbest, regresults, resstore 
      #adf 分別大于3中不同檢驗(yàn)水平的3個(gè)臨界值,單位檢測(cè)統(tǒng)計(jì)量對(duì)應(yīng)的p 值顯著大于 0.05 , 說(shuō)明序列可以判定為 非平穩(wěn)序列

      ?

      #對(duì)數(shù)據(jù)進(jìn)行差分后得到 自相關(guān)圖和 偏相關(guān)圖
      D_data = data.diff().dropna()
      D_data.columns = [u'銷量差分']
      
      D_data.plot()   #畫出差分后的時(shí)序圖
      # plt.show()
      
      plot_acf(D_data)    #畫出自相關(guān)圖
      # plt.show()
      plot_pacf(D_data)   #畫出偏相關(guān)圖
      # plt.show()
      print(u'差分序列的ADF 檢驗(yàn)結(jié)果為: ', adfuller(D_data[u'銷量差分']))   #平穩(wěn)性檢驗(yàn)
      #差分序列的ADF 檢驗(yàn)結(jié)果為:  (-3.1560562366723537, 0.022673435440048798, 0, 35, {'1%': -3.6327426647230316, 
      # '10%': -2.6130173469387756, '5%': -2.9485102040816327}, 287.5909090780334)
      #一階差分后的序列的時(shí)序圖在均值附近比較平穩(wěn)的波動(dòng), 自相關(guān)性有很強(qiáng)的短期相關(guān)性, 單位根檢驗(yàn) p值小于 0.05 ,所以說(shuō)一階差分后的序列是平穩(wěn)序列

      ?

      ?

      ?

      #對(duì)一階差分后的序列做白噪聲檢驗(yàn)
      from statsmodels.stats.diagnostic import acorr_ljungbox
      print(u'差分序列的白噪聲檢驗(yàn)結(jié)果:',acorr_ljungbox(D_data, lags= 1)) #返回統(tǒng)計(jì)量和 p 值
      # 差分序列的白噪聲檢驗(yàn)結(jié)果: (array([11.30402222]), array([0.00077339])) p值為第二項(xiàng), 遠(yuǎn)小于 0.05
      
      #對(duì)模型進(jìn)行定階
      from statsmodels.tsa.arima_model import ARIMA 
      
      pmax = int(len(D_data) / 10)    #一般階數(shù)不超過(guò) length /10
      qmax = int(len(D_data) / 10)
      bic_matrix = []
      for p in range(pmax +1):
          temp= []
          for q in range(qmax+1):
              try:
                  temp.append(ARIMA(data, (p, 1, q)).fit().bic)
              except:
                  temp.append(None)
              bic_matrix.append(temp)
      
      bic_matrix = pd.DataFrame(bic_matrix)   #將其轉(zhuǎn)換成Dataframe 數(shù)據(jù)結(jié)構(gòu)
      p,q = bic_matrix.stack().idxmin()   #先使用stack 展平, 然后使用 idxmin 找出最小值的位置
      print(u'BIC 最小的p值 和 q 值:%s,%s' %(p,q))  #  BIC 最小的p值 和 q 值:0,1
      #所以可以建立ARIMA 模型,ARIMA(0,1,1)
      model = ARIMA(data, (p,1,q)).fit()
      model.summary2()        #生成一份模型報(bào)告
      model.forecast(5)   #為未來(lái)5天進(jìn)行預(yù)測(cè), 返回預(yù)測(cè)結(jié)果, 標(biāo)準(zhǔn)誤差, 和置信區(qū)間

      利用模型向前預(yù)測(cè)的時(shí)期越長(zhǎng), 預(yù)測(cè)的誤差就會(huì)越大,這是時(shí)間預(yù)測(cè)的典型特點(diǎn)。

      ?

        本站是提供個(gè)人知識(shí)管理的網(wǎng)絡(luò)存儲(chǔ)空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點(diǎn)。請(qǐng)注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購(gòu)買等信息,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請(qǐng)點(diǎn)擊一鍵舉報(bào)。
        轉(zhuǎn)藏 分享 獻(xiàn)花(0

        0條評(píng)論

        發(fā)表

        請(qǐng)遵守用戶 評(píng)論公約

        類似文章 更多