国产日韩欧美一区二区三区三州_亚洲少妇熟女av_久久久久亚洲av国产精品_波多野结衣网站一区二区_亚洲欧美色片在线91_国产亚洲精品精品国产优播av_日本一区二区三区波多野结衣 _久久国产av不卡

?

高校食堂的菜品銷量分析

2017-07-20 13:15王楚瑜汪慶華王楚楚陳艷輝華祎恒
計(jì)算機(jī)時(shí)代 2017年7期
關(guān)鍵詞:ARMA模型時(shí)間序列分析R語言

王楚瑜+汪慶華+王楚楚+陳艷輝+華祎恒

摘 要: 針對(duì)高校食堂菜品存在的浪費(fèi)、搭配不佳問題,根據(jù)連續(xù)85天的用餐人次數(shù)據(jù),用時(shí)間序列分析研究了用餐人次符合的ARIMA(5,1,3)模型。對(duì)濟(jì)南市高校常見的菜品及年銷售數(shù)據(jù),用R語言編程,先利用“過半數(shù)規(guī)則”計(jì)算和預(yù)測(cè)某一菜品銷量的好壞,并計(jì)算出不同的素菜-素菜、素菜-葷菜之間的銷量關(guān)聯(lián)性。最后使用Python編程,用Apriori算法進(jìn)一步挖掘菜品間的銷售關(guān)聯(lián)。

關(guān)鍵詞: 時(shí)間序列分析; ARMA模型; R語言; 關(guān)聯(lián)規(guī)則學(xué)習(xí)

中圖分類號(hào):TP311 文獻(xiàn)標(biāo)志碼:A 文章編號(hào):1006-8228(2017)07-65-04

The analysis of dishes sales in university dining room

Wang Chuyu1, Wang Qinghua1, Wang Chuchu1, Chen Yanhui2, Hua Yiheng1

(Shandong University School of Mathematics, Jinan, Shandong 250100, China; 2. Shandong University School of Software)

Abstract: In view of the waste and poor collocation of dishes in university canteens, the model of ARIMA (5,1,6) suiting well the number of customers in the consecutive 85 days is studied. Based on the lists of the most common dishes in the universities in Jinan and the sales of the dishes, with the aid of R language, the 'more than the half' rule is applied to compute a 'k' which predicts the sale of the next month is good or not. Finally, programming in Python, Apriori algorithm is used to further tap the sales correlation between the dishes.

Key words: time series analysis; ARMA model; R language; learning of association rules

0 引言

高校食堂是一個(gè)特殊的“經(jīng)營實(shí)體”,高校食堂須考慮如何改善菜肴品質(zhì)及服務(wù)質(zhì)量。本文用時(shí)間序列分析、關(guān)聯(lián)規(guī)則挖掘等算法,研究了用餐人次的變化規(guī)律,并初步預(yù)測(cè)了每種菜品銷量的漲落。Apriori算法是關(guān)聯(lián)規(guī)則學(xué)習(xí)的一種算法,本文基于此研究了不同菜品之間最強(qiáng)的銷量關(guān)聯(lián)性。

1 基于時(shí)間序列分析的用餐人次預(yù)測(cè)

以山東大學(xué)為例,“山東大學(xué)一多食堂”的兩臺(tái)pos收款機(jī)記載了交易時(shí)間、交易額、現(xiàn)有余額、用卡次數(shù)等數(shù)據(jù),我們選擇其中2016年10月、11月、12月的用餐數(shù)據(jù)進(jìn)行研究,用向量m表示連續(xù)85天的用餐人次,在R中繪制m的時(shí)間序列圖,如圖1所示。

根據(jù)圖1還不能確定m的變化趨勢(shì),因此我們繼續(xù)用時(shí)間序列分析方法提取相關(guān)信息。

1.1 平穩(wěn)性檢驗(yàn)

運(yùn)用游程檢驗(yàn)法對(duì)序列m作平穩(wěn)性檢驗(yàn):m的均值為996.1412,大于均值的樣本個(gè)數(shù)為N1=41,小于均值的樣本個(gè)數(shù)為N2=44游程數(shù)為Nr=22,N=85,游程的均值和方差分別為,Var(Nr)=,且Nr近似服從正態(tài)分布,即統(tǒng)計(jì)量。游程判別法認(rèn)為,在給定的顯著性水平α=0.05下,若,則認(rèn)為序列是平穩(wěn)的,否則認(rèn)為是非平穩(wěn)的[1]。根據(jù)已知數(shù)據(jù)計(jì)算,得,由游程判別法知,序列m是非平穩(wěn)序列。

1.2 平穩(wěn)性檢驗(yàn)與白噪聲檢驗(yàn)

理論上來說,任何一個(gè)非平穩(wěn)時(shí)間序列經(jīng)過多階差分后都可變成平穩(wěn)序列。但差分的階數(shù)并非越多越好,過差分會(huì)帶來信息的嚴(yán)重?fù)p失。解決方法是對(duì)非平穩(wěn)序列進(jìn)行一階差分,并判斷一階差分后的序列是否具有平穩(wěn)性。因此,對(duì)m進(jìn)行一階差分并在R中繪制時(shí)間序列圖,如圖2所示。

tseries程序包含檢驗(yàn)時(shí)間序列平穩(wěn)性的adf.test()函數(shù)。調(diào)用該函數(shù)后得到p值是0.01,小于顯著性水平(一般取0.1或0.05)。說明diff(m)已經(jīng)是平穩(wěn)序列,不需要再對(duì)m進(jìn)行二階或其他差分處理。

進(jìn)一步利用Q統(tǒng)計(jì)量和LB統(tǒng)計(jì)量分別對(duì)diff(m)進(jìn)行白噪聲檢驗(yàn),得到表1中的結(jié)果。

1.3 模型識(shí)別與參數(shù)估計(jì)

為識(shí)別符合diff(m)序列的時(shí)間序列模型,應(yīng)作出自相關(guān)函數(shù)與偏自相關(guān)函數(shù)。由圖3知,自相關(guān)函數(shù)與偏自相關(guān)函數(shù)均呈現(xiàn)拖尾性特點(diǎn),初步推斷diff(m)符合ARMA(p,q)模型。

接著調(diào)用arima()函數(shù),使用CSS-ML估計(jì)法對(duì)該ARMA(5,3)模型進(jìn)行參數(shù)估計(jì),結(jié)果如表3所示。

因此diff(m)的擬合結(jié)果是:

1.4 模型檢驗(yàn)與參數(shù)的顯著性檢驗(yàn)

建立模型后需要對(duì)整個(gè)模型的有效性進(jìn)行檢驗(yàn),并進(jìn)行參數(shù)的顯著性檢驗(yàn)。先調(diào)用tsdiag()函數(shù)對(duì)殘差進(jìn)行白噪聲檢驗(yàn)。

在圖4中,標(biāo)準(zhǔn)殘差的序列圖呈現(xiàn)出“中間變幅大、兩頭變幅小”的特點(diǎn),類似于正態(tài)分布的分布函數(shù)形態(tài);殘差的樣本ACF都處于2倍標(biāo)準(zhǔn)差范圍內(nèi),可近似于零;Ljung-Box檢驗(yàn)統(tǒng)計(jì)量的p值均大于0.5,明顯大于顯著水平。上述三點(diǎn)證明了殘差服從正態(tài)分布,相關(guān)信息已被模型提取。

利用SPSS對(duì)這9個(gè)參數(shù)進(jìn)行顯著性檢驗(yàn),取顯著水平α=0.05,t值與顯著性如表4。

2 菜品銷量漲落的預(yù)測(cè)

用餐人次一定程度上可反映食堂銷量的漲落,但涉及具體菜品的銷量漲落時(shí),這種研究方法便失去了實(shí)際意義。針對(duì)具體菜品的銷售漲落,可以采用“過半數(shù)規(guī)則”粗略預(yù)測(cè)。將食堂菜品分為面條、主食、煲湯、點(diǎn)心、飲品、素菜、葷菜、蓋飯8類,并選擇每類中銷量較好的幾種菜品。以這些菜品為范圍,調(diào)查了近1000名在校學(xué)生的日常用餐搭配。

“過半數(shù)規(guī)則”根據(jù)最近k期的銷售漲落,來預(yù)測(cè)下一期的銷售。高于平均值的月份用1表示(表示菜品在該月內(nèi)“暢銷”),低于平均值的月份用0表示(表示菜品在該月內(nèi)“滯銷”)。如果在最近k期里1的個(gè)數(shù)大于等于k/2,那么預(yù)測(cè)下一個(gè)值是1,否則為0。算法的核心在于合理確定k值,解決方案是根據(jù)已知的數(shù)據(jù),變換不同的k值,比較各預(yù)測(cè)出錯(cuò)率的大小。

以菜品“西紅柿炒雞蛋”為例,計(jì)算出銷量的年平均值(除寒暑假),則該菜品在一年內(nèi)的銷售漲落向量是x=[0,1,1,0,0,1,1,0,0]??梢栽O(shè)計(jì)出一種簡便的編程算法,在R中的主要代碼與運(yùn)行結(jié)果如下[4-5]:

pred<-function(x,k) {

n<-length(x);k2<-k/2

pred<-vector(length=n-k) #定義一個(gè)長度為n-k的“預(yù)測(cè)向量”

csx<-c(0,cumsum(x)) #計(jì)算之前k期中值為1的個(gè)數(shù)并儲(chǔ)存

for(i in 1:(n-k)) {

if(csx[i+k]-csx[i]>=k2) #如果最近k期里1的個(gè)數(shù)大于等于k/2

pred[i]<-1 #預(yù)測(cè)下一期的值是1

else #否則值是0

pred[i]<-0 }

return(mean(abs(pred-x[(k+1):n]))) } #計(jì)算預(yù)測(cè)值與

真實(shí)值誤差絕對(duì)值的均值

不同結(jié)果對(duì)應(yīng)了不同k值的預(yù)測(cè)出錯(cuò)率。本著預(yù)測(cè)出錯(cuò)率“越小越好”的原則,就“西紅柿炒雞蛋”而言,k取1或5時(shí)達(dá)到預(yù)測(cè)出錯(cuò)率的最小值。但是從實(shí)際看,易見k=1時(shí)參考價(jià)值較小,因此留下k=5,預(yù)測(cè)出錯(cuò)率達(dá)到最小0.5?,F(xiàn)實(shí)解釋是:欲預(yù)測(cè)下一個(gè)月“西紅柿炒雞蛋”的銷量好壞,只需觀測(cè)從這個(gè)月開始的前5個(gè)月銷量高漲是否超過3,如果是,則下個(gè)月銷售高漲,否則是銷售低谷。

此種算法只提供了粗略預(yù)測(cè)方法,預(yù)測(cè)出錯(cuò)率仍然較高。要精確預(yù)測(cè)還需運(yùn)用時(shí)間序列分析,此處略。

3 菜品銷量的關(guān)聯(lián)性

類似于“牛奶-啤酒”的經(jīng)典案例,高校食堂不同菜品之間的銷售量也具有關(guān)聯(lián)規(guī)則[6]。這里先進(jìn)行關(guān)聯(lián)性的初估計(jì),再結(jié)合Apriori算法作精確挖掘。

3.1 關(guān)聯(lián)性的初估計(jì)

定義兩組數(shù)據(jù)的關(guān)聯(lián)性:關(guān)聯(lián)性是它們同時(shí)上升或下降次數(shù)占總觀測(cè)次數(shù)的比例。先將各菜品在9個(gè)月內(nèi)的銷量數(shù)據(jù)以向量的形式儲(chǔ)存,并以c1~c8分別表示菜品的類別,以cxy表示各菜品的名稱,例如c11表示素菜類中的西紅柿炒雞蛋。

首先研究七種素菜(即西紅柿炒雞蛋c11、清炒花菜c12、清炒土豆絲c13、干煸四季豆c14、菠菜炒蛋c15、家常豆腐c16、海帶絲c17)之間49種搭配的銷售關(guān)聯(lián)性,以下是代碼實(shí)現(xiàn),并將結(jié)果以矩陣A11表示[6]:

findud<-function(v) { #定義一個(gè)“銷售相關(guān)性”函數(shù)

vud<-diff(v) #定義向量的一階差分

return(ifelse(vud>0,1,-1))} #如果vud大于0,則函數(shù)返回值是1,反之是1

udcorr<-function(x,y) {

ud<-lapply(list(x,y),findud) #針對(duì)x與y分別調(diào)用findud函數(shù)

return(mean(ud[[1]]==ud[[2]]))} #計(jì)算同時(shí)上升或下降的比例

矩陣元素代表素菜類中第i種菜品和第j中菜品之間的關(guān)聯(lián)性,本著銷量關(guān)聯(lián)性“越大越好”的原則,可見c11與c13、c13與c14、c13與c16、c14與c15、c15與c16之間的關(guān)聯(lián)性較高,達(dá)0.875。

素菜類與葷菜類(即糖醋里脊c21、水煮牛肉c22、土豆燒肉c23、毛血旺c24、翡翠蝦仁c25、清蒸扁魚c26、口水雞c27)之間49種搭配的關(guān)聯(lián)性A12可用相同算法計(jì)算:

可見,c11與c23、c12與c26、c15與c24和c25之間有較強(qiáng)的銷售關(guān)聯(lián)性,而c12與c27的銷售關(guān)聯(lián)性很弱。對(duì)于銷售關(guān)聯(lián)性較大的兩種菜品,建議食堂進(jìn)行捆綁搭配。

3.2 基于Apriori算法的關(guān)聯(lián)規(guī)則學(xué)習(xí)

在搜集數(shù)據(jù)的同時(shí),受訪人的“個(gè)人飲食記錄”也隨之產(chǎn)生。據(jù)此用Apriori算法,在Python語言進(jìn)行關(guān)聯(lián)規(guī)則學(xué)習(xí)。Apriori是一種挖掘關(guān)聯(lián)規(guī)則的頻繁項(xiàng)集算法,核心思想是通過候選集生成和情節(jié)的向下封閉檢測(cè)兩個(gè)階段來挖掘頻繁項(xiàng)集。首先找出所有的頻集,項(xiàng)集的頻繁性至少和預(yù)定義的最小支持度一樣。然后由頻集產(chǎn)生強(qiáng)關(guān)聯(lián)規(guī)則,規(guī)則必須滿足最小支持度和最小可信度。接著使用找到的頻集產(chǎn)生期望的規(guī)則,產(chǎn)生只包含集合的項(xiàng)的所有規(guī)則。一旦這些規(guī)則被生成,只有大于用戶給定的最小可信度的規(guī)則才被留下來。

編程實(shí)現(xiàn)過程與運(yùn)算結(jié)果如下,最后得到了銷售關(guān)聯(lián)最好的一種菜品組合[7]。

def createC1(dataSet): #構(gòu)建所有候選項(xiàng)集的集合

return list(map(frozenset, C1)) #使用frozenset,被

“冰凍”的集合,為后續(xù)建立字典key-value使用。

def scanD(D,Ck,minSupport): #由候選項(xiàng)集生成符合最

小支持度的項(xiàng)集L。參數(shù)分別為數(shù)據(jù)集、候選項(xiàng)集列表,最小支持度

return retList, supportData

def apriori(dataSet, minSupport=0.5):

C1=createC1(dataSet)

D=list(map(set,dataSet))

L1, supportData=scanD(D, C1, minSupport)

L=[L1]

while (len(L[k-2])>0):

Ck=aprioriGen(L[k-2], k)

Lk, supK=scanD(D, Ck, minSupport)

supportData.update(supK)

L.append(Lk)

k+=1

return L, supportData

在此算法基礎(chǔ)上導(dǎo)入“個(gè)人飲食記錄”中的數(shù)據(jù)集,得到符合最小支持度的頻繁1項(xiàng)集:{'31'}, {'74'}所有符合最小支持度的項(xiàng)集:{'31'},{'74'}, {'74', '31'},頻繁2項(xiàng)集:{'74', '31'}所有符合最小支持度為0.7的項(xiàng)集:{'31'},{'74'}, {'74', '31'}。

由于數(shù)據(jù)依然較稀疏,關(guān)聯(lián)頻集數(shù)目仍然較小,此時(shí)有c31(豬排蓋飯)與c74(優(yōu)酸乳)的銷售關(guān)聯(lián)性最強(qiáng)。

4 結(jié)束語

本文用時(shí)間序列分析法對(duì)連續(xù)85天的用餐人次擬合出ARIMA(5,1,3)模型,接著對(duì)具體菜品進(jìn)行粗略的銷量漲落預(yù)測(cè),再通過簡單易行的編程方法,對(duì)素菜-素菜類、素菜-葷菜類的銷售相關(guān)性進(jìn)行挖掘,得出最優(yōu)的搭配組合。最后用Apriori算法,發(fā)現(xiàn)豬排蓋飯與優(yōu)酸乳的銷售關(guān)聯(lián)性最強(qiáng)。用數(shù)學(xué)建模的方式定量分析不同菜品特征比傳統(tǒng)的直觀觀察更精確,能發(fā)現(xiàn)數(shù)據(jù)間蘊(yùn)藏的價(jià)值,擁有較好的研究前景。關(guān)于不同菜品的口味、烹飪方式等屬性還有待進(jìn)一步研究,考察更細(xì)致的菜品屬性能讓銷售關(guān)聯(lián)性的挖掘更有現(xiàn)實(shí)價(jià)值。

參考文獻(xiàn)(References):

[1] 周永道,王會(huì)琦.時(shí)間序列分析及應(yīng)用(第1版)[M].高等教育

出版社,2015.

[2] 趙華.時(shí)間序列數(shù)據(jù)分析R軟件應(yīng)用(第1版)[M].清華大學(xué)出

版社,2016.

[3] 趙玉新.基于R語言時(shí)間序列的轎車銷量分析及預(yù)測(cè)[J].電

腦知識(shí)與科技,2017.13:16-18

[4] 陳堰平,邱怡軒.R語言編程藝術(shù)(第1版)[M].機(jī)械工業(yè)出版

社,2016.

[5] 高濤,肖楠.R語言實(shí)戰(zhàn)(第1版)[M].機(jī)械工業(yè)出版社,2013.

[6] 陳玲玲,尹文俊.高校食堂菜品的綜合評(píng)價(jià)系統(tǒng)[J].科技創(chuàng)新,

2015.33:13-15

[7] CSDN.《使用Apriori算法進(jìn)行關(guān)聯(lián)分析》[EB/OL].http://

blog.csdn.net/u010454729/article/details/49078505,

2015-10-12.

猜你喜歡
ARMA模型時(shí)間序列分析R語言
基于GPS軌跡數(shù)據(jù)進(jìn)行分析改善城市交通擁擠
基于R語言的Moodle平臺(tái)數(shù)據(jù)挖掘技術(shù)的研究
基于R軟件的金融時(shí)間序列的預(yù)測(cè)分析
基于R語言的湖南產(chǎn)業(yè)結(jié)構(gòu)對(duì)其經(jīng)濟(jì)增長貢獻(xiàn)分析
基于ARMA模型的我國國內(nèi)生產(chǎn)總值GDP的預(yù)測(cè)與分析
基于ARMA模型的我國居民消費(fèi)價(jià)格指數(shù)的分析及預(yù)測(cè)
注重統(tǒng)計(jì)思維培養(yǎng)與應(yīng)用為主導(dǎo)的生物統(tǒng)計(jì)學(xué)課程建設(shè)
企業(yè)工資增長模型與養(yǎng)老保險(xiǎn)基金收支平衡模型
鹤峰县| 马尔康县| 昌邑市| 灌阳县| 萍乡市| 油尖旺区| 元阳县| 肥西县| 望都县| 寿光市| 敦煌市| 武安市| 濉溪县| 夹江县| 灵台县| 同德县| 连江县| 天等县| 九寨沟县| 甘洛县| 莆田市| 怀柔区| 星座| 商南县| 大足县| 丁青县| 茶陵县| 伊金霍洛旗| 襄汾县| 邛崃市| 白城市| 民勤县| 十堰市| 额济纳旗| 景德镇市| 泗洪县| 锦屏县| 叶城县| 甘洛县| 安乡县| 即墨市|