• 
    

    
    

      99热精品在线国产_美女午夜性视频免费_国产精品国产高清国产av_av欧美777_自拍偷自拍亚洲精品老妇_亚洲熟女精品中文字幕_www日本黄色视频网_国产精品野战在线观看 ?

      高校食堂的菜品銷量分析

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

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

      摘 要: 針對高校食堂菜品存在的浪費(fèi)、搭配不佳問題,根據(jù)連續(xù)85天的用餐人次數(shù)據(jù),用時(shí)間序列分析研究了用餐人次符合的ARIMA(5,1,3)模型。對濟(jì)南市高校常見的菜品及年銷售數(shù)據(jù),用R語言編程,先利用“過半數(shù)規(guī)則”計(jì)算和預(yù)測某一菜品銷量的好壞,并計(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í)

      中圖分類號:TP311 文獻(xiàn)標(biāo)志碼:A 文章編號: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ù)測了每種菜品銷量的漲落。Apriori算法是關(guān)聯(lián)規(guī)則學(xué)習(xí)的一種算法,本文基于此研究了不同菜品之間最強(qiáng)的銷量關(guān)聯(lián)性。

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

      以山東大學(xué)為例,“山東大學(xué)一多食堂”的兩臺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的變化趨勢,因此我們繼續(xù)用時(shí)間序列分析方法提取相關(guān)信息。

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

      運(yùn)用游程檢驗(yàn)法對序列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ù)并非越多越好,過差分會帶來信息的嚴(yán)重?fù)p失。解決方法是對非平穩(wěn)序列進(jìn)行一階差分,并判斷一階差分后的序列是否具有平穩(wěn)性。因此,對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)序列,不需要再對m進(jìn)行二階或其他差分處理。

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

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

      為識別符合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ì)法對該ARMA(5,3)模型進(jìn)行參數(shù)估計(jì),結(jié)果如表3所示。

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

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

      建立模型后需要對整個(gè)模型的有效性進(jìn)行檢驗(yàn),并進(jìn)行參數(shù)的顯著性檢驗(yàn)。先調(diào)用tsdiag()函數(shù)對殘差進(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對這9個(gè)參數(shù)進(jìn)行顯著性檢驗(yàn),取顯著水平α=0.05,t值與顯著性如表4。

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

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

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

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

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

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

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

      else #否則值是0

      pred[i]<-0 }

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

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

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

      此種算法只提供了粗略預(yù)測方法,預(yù)測出錯(cuò)率仍然較高。要精確預(yù)測還需運(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ù)占總觀測次數(shù)的比例。先將各菜品在9個(gè)月內(nèi)的銷量數(shù)據(jù)以向量的形式儲存,并以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) #針對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)性很弱。對于銷售關(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é)的向下封閉檢測兩個(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í)間序列分析法對連續(xù)85天的用餐人次擬合出ARIMA(5,1,3)模型,接著對具體菜品進(jìn)行粗略的銷量漲落預(yù)測,再通過簡單易行的編程方法,對素菜-素菜類、素菜-葷菜類的銷售相關(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] 周永道,王會琦.時(shí)間序列分析及應(yīng)用(第1版)[M].高等教育

      出版社,2015.

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

      版社,2016.

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

      腦知識與科技,2017.13:16-18

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

      社,2016.

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

      [6] 陳玲玲,尹文俊.高校食堂菜品的綜合評價(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平臺數(shù)據(jù)挖掘技術(shù)的研究
      基于R軟件的金融時(shí)間序列的預(yù)測分析
      B—J方法在廣西人均生活用電消費(fèi)量預(yù)測中的應(yīng)用
      基于R語言的湖南產(chǎn)業(yè)結(jié)構(gòu)對其經(jīng)濟(jì)增長貢獻(xiàn)分析
      商(2016年24期)2016-07-20 08:03:39
      基于ARMA模型的我國國內(nèi)生產(chǎn)總值GDP的預(yù)測與分析
      商(2016年13期)2016-05-20 09:13:51
      基于ARMA模型的我國居民消費(fèi)價(jià)格指數(shù)的分析及預(yù)測
      商(2016年6期)2016-04-20 17:55:33
      注重統(tǒng)計(jì)思維培養(yǎng)與應(yīng)用為主導(dǎo)的生物統(tǒng)計(jì)學(xué)課程建設(shè)
      考試周刊(2016年15期)2016-03-25 04:09:43
      微信公眾號未來發(fā)展態(tài)勢的實(shí)證預(yù)測
      中國記者(2016年1期)2016-03-03 18:08:02
      中國石化產(chǎn)業(yè)產(chǎn)能過剩測度及預(yù)警
      阿克| 卓资县| 昌黎县| 罗平县| 北辰区| 渝北区| 广宗县| 定南县| 肇庆市| 临夏县| 绥滨县| 甘洛县| 双城市| 龙南县| 玉环县| 邵阳市| 乐亭县| 合肥市| 安陆市| 临夏市| 三台县| 渭源县| 文化| 河间市| 方正县| 内乡县| 长宁县| 琼海市| 元谋县| 龙陵县| 乌兰浩特市| 营口市| 姚安县| 安平县| 武胜县| 丹东市| 靖边县| 哈尔滨市| 伊通| 合肥市| 通辽市|