利用ARIMA模型預(yù)測資金流入流出


一、

數(shù)據(jù)說明

  • 針對全國的余額寶用戶,按照一定的規(guī)則抽樣,給出對應(yīng)的性別、城市和星座
  • 針對抽樣用戶,抽取他們的余額寶交易數(shù)據(jù),并歸類為申購和贖回兩類
  • 訓(xùn)練數(shù)據(jù):20130701到20140731期間用戶的所有申購贖回?cái)?shù)據(jù)
  • 預(yù)測數(shù)據(jù):20140801到20140831之間,31天內(nèi)所有用戶每天的申購和贖回總量

用戶申購贖回?cái)?shù)據(jù)表
user_balance_table
核心財(cái)務(wù)表,包含了申購數(shù)據(jù)和贖回?cái)?shù)據(jù)
申購:支付寶余額,銀行卡,收益自動申購
贖回:消費(fèi),轉(zhuǎn)出到支付寶,轉(zhuǎn)出到銀行卡

列名及含義

user_id                 用戶 id           
report_date             日期  
tBalance    bigint      今日余額    
yBalance    bigint      昨日余額    
total_purchase_amt      今日總購買量 = 直接購買 + 收益  
direct_purchase_amt     今日直接購買量 
purchase_bal_amt        今日支付寶余額購買量  
purchase_bank_amt       今日銀行卡購買量    
total_redeem_amt        今日總贖回量 = 消費(fèi) + 轉(zhuǎn)出    
consume_amt             今日消費(fèi)總量  
transfer_amt            今日轉(zhuǎn)出總量  
tftobal_amt             今日轉(zhuǎn)出到支付寶余額總量    
tftocard_amt            今日轉(zhuǎn)出到銀行卡總量  
share_amt               今日收益    
category1               今日類目 1 消費(fèi)總額 
category2               今日類目 2 消費(fèi)總額 
category3               今日類目 3 消費(fèi)總額 
category4               今日類目 4 消費(fèi)總額 

評估指標(biāo)

評估指標(biāo)的設(shè)計(jì)主要期望能夠?qū)ξ磥?0天內(nèi)每天申購和贖回的總量數(shù)據(jù)預(yù)測的越準(zhǔn)越好,每天的誤差選用相對誤差來計(jì)算,然后根據(jù)用戶預(yù)測申購和贖回的相對誤差,得到一個(gè)每天預(yù)測結(jié)果的得分,將30天內(nèi)的得分匯總,然后結(jié)合實(shí)際業(yè)務(wù)的傾向,對申購贖回總量預(yù)測的得分情況進(jìn)行家全球和,得到最終評分。具體操作如下:


二、數(shù)據(jù)預(yù)處理

python代碼(使用了pandas科學(xué)計(jì)算包)

# -*- coding: UTF-8 -*-
import matplotlib.pyplot as plt
import numpy as np
import pandas as pd
from pandas import Series,DataFrame

user_balance = pd.read_csv('./data2/user_balance_table.csv',usecols=[0,1,4,8],names=['userid','date','purchase','redeem'],parse_dates = ['date'])
#讀取源數(shù)據(jù),取第一列,第二列,第五列,第九列。對data列做parse操作
timeGroup = user_balance.groupby(['date'])
#按date進(jìn)行分組
purchaseRedeemTotal = timeGroup['purchase', 'redeem'].sum()
#求出總申購量、總贖回量
print purchaseRedeemTotal
purchaseRedeemTotal.to_csv('./data2/total_date_purchase_redeem.csv')
#導(dǎo)出到本地文件
purchaseRedeemTotal.plot()
plt.show()
#數(shù)據(jù)呈現(xiàn)

三、關(guān)于ARIMA

  • 模型介紹
    ARIMA并不是一個(gè)特定的模型,而是一類模型的總稱。它的3個(gè)參數(shù)p,d,q分別表示自相關(guān)(p階AR模型),d次差分,滑動平均(q階MA模型)。因此有:
    p=d=0,ARIMA模型即MA(q)模型;
    d=q=0,ARIMA模型即AR(p)模型。

關(guān)于d的確定
對于原始數(shù)據(jù)做差分運(yùn)算
0次差分評分,d=0
1次差分后平穩(wěn),d=1
...

關(guān)于pq的確定
p的值就是ACF第一次穿過上置信區(qū)間時(shí)的橫軸值。q的值就是PACF第一次穿過上置信區(qū)間的橫軸值。
通過ACF,PACF進(jìn)行ARIMA(p,d,q)的p,q參數(shù)估計(jì)

實(shí)驗(yàn)python代碼

# -*- coding: UTF-8 -*-
import matplotlib.pyplot as plt
import numpy as np
import pandas as pd
from pandas import Series,DataFrame
from statsmodels.tsa.stattools import acf,pacf
from statsmodels.tsa.arima_model import ARIMA
import statsmodels.api as sm


purchaseRedeemTotal = pd.read_csv('./data2/total_date_purchase_redeem_after20140301.csv',names=['date','purchase','redeem'],parse_dates=['date'])
purchaseRedeemTotal.index = purchaseRedeemTotal['date'].tolist()
del purchaseRedeemTotal['date']

"""
1次差分 diff1
2次差分 diff2
兩次差分均具備一定的周期性
故確定差分項(xiàng)d=0
"""

# purchase_log_diff1 = purchase.diff(1)
# purchase_log_diff2 = purchase.diff(2)
# purchase_log_diff1.plot(color='red')
# purchase_log_diff2.plot(color='blue')
# purchase.plot(color='yellow')

purchase = purchaseRedeemTotal['purchase']
redeem = purchaseRedeemTotal['redeem']

model = ARIMA(purchase.astype(float),order=(2,0,2))
results_ARIMA = model.fit(disp=-1)
predict_purchase = results_ARIMA.predict('2014-08-01','2014-08-31',dynamic=True)
print predict_purchase

# model2 = ARIMA(redeem.astype(float),order=(2,0,2))
# results_ARIMA2 = model2.fit(disp=-1)
# predict_redeem = results_ARIMA2.predict('2014-08-01','2014-08-31',dynamic=True)
# print predict_redeem
purchaseACF = pd.DataFrame(acf(purchase))
purchaseACF.plot(title = 'purchaseACF', kind ='line')
purchasePACF = pd.DataFrame(pacf(purchase))
purchasePACF.plot(title = 'purchasePACF', kind ='line')
plt.show()
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容