天天看點

怎麼檢視表用了那個序列_Excel中的時間序列!學習在Excel中用于時間序列預測的指數平滑模型...

怎麼檢視表用了那個序列_Excel中的時間序列!學習在Excel中用于時間序列預測的指數平滑模型...

總覽

  • Excel非常适合建構您的時間序列預測模型
  • 我們将讨論時間序列預測的指數平滑模型,包括其背後的數學模型
  • 我們還将在MS Excel中實作這些指數平滑模型

介紹

Excel中的時間序列–看起來很自然,對吧?從銷售預測到收入審查,我們一直在Excel中檢視和設計折線圖,這完全符合我們在分析和資料科學中使用Excel的想法。

但是,這就是時間序列預測的問題–對于初學者而言,它似乎令人生畏。這不是在公園散步。我們需要了解如何處理時間成分,而不僅僅是其他變量。那個時間成分常常會弄亂我們的整個分析!

盡管大多數課程和教程都将向您展示如何使用Python和R執行時間序列預測,但本文沒有這樣的期望。您所需要的隻是對Excel的實用知識-您将可以很好地遵循!

怎麼檢視表用了那個序列_Excel中的時間序列!學習在Excel中用于時間序列預測的指數平滑模型...

那麼我們将在本文中介紹什麼呢?我們将讨論時間序列預測的指數平滑模型的概念以及所涉及的數學,并向您展示如何在MS Excel中進行指數平滑。

目錄

  1. 時間序列預測簡介
  2. 快速檢視不同的時間序列元件
  3. 指數平滑模型清單
  4. 簡單指數平滑(在Excel中實作)
  5. 雙指數平滑(在Excel中實作)
  6. 三重指數平滑(在Excel中實作)

時間序列預測簡介

我們幾乎每天處理時間序列資料(沒有一半時間實作)。在我們的日常生活中,我們經常根據過去的觀察和經驗對某些事情做出結論。

例如,如果特定公司的股價在過去10天内一直持續下跌,我們可以假設股價明天也會下跌。或者,如果過去一周的每一天都在下雨,我們可以猜測今天也會下雨,是以最好帶傘。

以上示例表明,最近的過去可以使我們對未來有一個清晰的認識。這是時間序列預測背後的主要思想。

在時間序列中,每個點都取決于先前的值。是以,我們可以使用過去的值并估計将來的值。“時間”部分在這裡至關重要。

您可以參考以下文章,以了解有關時間序列預測的更多資訊:

  • 全面的初學者指南,用于建立時間序列預測(使用Python和R中的代碼)

快速檢視不同的時間序列元件

要了解指數平滑模型及其如何預測未來值,我們必須熟悉不同的時間序列組成部分。時間序列包含以下三個組成部分:

  1. 趨勢成分

    趨勢描述了資料的總體趨勢,可能會增加或減少或保持穩定。例如,在取消貨币化時,我們觀察到股價下降的趨勢。或多年來,我們已經看到智能手機的銷售數量在增加。

    趨勢通常描繪了該系列的長期運動。看一下以下示例–您可以确定這些系列的趨勢嗎?

怎麼檢視表用了那個序列_Excel中的時間序列!學習在Excel中用于時間序列預測的指數平滑模型...
怎麼檢視表用了那個序列_Excel中的時間序列!學習在Excel中用于時間序列預測的指數平滑模型...

即使資料中有些雜音,您也可以觀察到上述系列中的趨勢呈上升趨勢。

  1. 季節性成分

    下一個重要組成部分是時間序列的季節性組成部分。例如,在新年或排燈節前後,服裝和糖果的銷量可能會更高。同樣,整個假期期間的航班預訂量可能會增加。而且這種模式可以全年觀察到。

    如果您仔細觀察下面的圖像,您會發現有某種模式會不斷重複。

    在序列中觀察到的這種重複模式是時間序列的季節性組成部分 。它描繪了該系列的短期走勢。
怎麼檢視表用了那個序列_Excel中的時間序列!學習在Excel中用于時間序列預測的指數平滑模型...
怎麼檢視表用了那個序列_Excel中的時間序列!學習在Excel中用于時間序列預測的指數平滑模型...

盡管由于該系列中的噪音,您會注意到在第一個系列中識别季節性有點困難。但是第二個系列的季節性很明顯。我們有一個每年重複的特殊模式,這表明我們第二個系列具有每年的季節性。如果您探索第一個系列并仔細研究,您會發現它具有每周的季節性。

  1. 殘留成分

    假設我們從一個時間序列中識别趨勢和季節成分,然後将其删除。除去這兩部分後剩下的就是殘留成分。它沒有任何模式或趨勢。顧名思義,殘留成分是不規則的。

是以,既然我們了解了時間序列的不同組成部分,就讓我們了解指數平滑算法如何使用它們進行預測。

指數平滑算法清單

指數平滑算法通常用于預測單變量時間序列。這是三種類型的指數平滑算法:

  • 簡單的指數平滑
  • 雙指數平滑
  • 三重指數平滑

我們将學習每種方法的工作原理,研究每種方法的數學方程式,并在Excel中實作這些算法。

這是我們将要處理的問題陳述:

我們為您提供了當天預訂JetRail的人數。我們需要預測未來幾個月的預定數量。

簡單指數平滑(在Excel中實作)

我們知道時間序列中的資料點互相依賴。是以,我們可以使用曆史資料對未來進行預測。

現在,問題是–如果您要預測明天的股價,您會考慮昨天的價格還是10天前或去年的價格?

顯然,與一年前的價格相比,昨天的價格或上周的價格會更好地了解這一預測。

這意味着新近度是預測值的重要因素。這就是指數平滑算法大放異彩的地方。
簡單的指數平滑模型會考慮曆史值,并為這些值配置設定權重。這個想法是,對于最近的觀察,權重更高。

讓我們看一下數學方程式:

Ŷt+ 1 =αYt+α(1-α)Yt-1 +α(1-α)2Yt-2 +α(1-α)3Yt-3 +…。.. ..(1)

哪裡,

  • Yt代表曆史價值
  • 這是預測
  • alphaα是平滑參數

alpha(α)的值介于0-1之間。如您在上面的等式中所看到的,每個随後的Yt的權重都較小。Alpha是一個超參數,我們可以選擇alpha的值。下表将幫助您了解更改Alpha值如何影響預測:

怎麼檢視表用了那個序列_Excel中的時間序列!學習在Excel中用于時間序列預測的指數平滑模型...

如果alpha值較低,則将考慮更多數量的曆史值用于預測。對于較高的α值(例如0.8或0.9),很少考慮到觀察結果。

現在,如果我們對第二個預測使用相同的等式,則将是:

Ŷt+ 2 =αYt+ 1 +α(1-α)Yt +α(1-α)2Yt-1 +α(1-α)3Yt-2 +α(1-α)4Yt-3 +…。.. ..(2)

同樣,我們可以為剩餘的預測寫出此等式。您可以看到每個新術語都是附加的(1-alpha)。上面的等式也可以寫成:

Ŷt+ 2 =αYt+ 1 +(1-α)[αYt+α(1-α)1Yt-1 +α(1-α)2Yt-2 +α(1-α)3Yt-3 +…....] ..(3)

如果比較第一個和第三個方程,您會發現此方程中的方括号本質上具有第一個方程的LHS。是以,我們可以簡化第三個方程,并将其寫為:

Ŷt+ 2 =αYt+ 1 +(1-α)[Ŷt+ 1] .. ..(4)

這是簡單指數平滑算法的簡化版本。對于後續的預測,我們考慮了先前的觀測值和先前預測的(1-alpha)倍。這将為我們節省大量計算。我們無疑可以使用擴充版本,但這會增加計算量。

現在,我們對上述方程式有了很好的了解,讓我們繼續使用該方程式來預測值并在Excel中實作。

第1步:

首先,我們在第一步中沒有任何曆史價值。是以,第一個值是手動初始化的。在這裡,我隻是将其作為第一個觀察值:

怎麼檢視表用了那個序列_Excel中的時間序列!學習在Excel中用于時間序列預測的指數平滑模型...

第2步:

然後,對于下一個值,我們使用了上面讨論的公式(4)。您可以在編輯欄中看到相同的内容:

怎麼檢視表用了那個序列_Excel中的時間序列!學習在Excel中用于時間序列預測的指數平滑模型...

請注意,這裡我們使用“觀察值”并進行預測。當涉及測試或驗證集時,我們将沒有任何觀察到的值,對嗎?那我們不能做進一步的預測嗎?讓我們找出答案。

第三步:

由于我們沒有測試集(或驗證集)的實際值,是以我們将最後觀察到的值用作實際值。這是我們可以做到的:

怎麼檢視表用了那個序列_Excel中的時間序列!學習在Excel中用于時間序列預測的指數平滑模型...

在公式欄中檢視公式-我們已固定Yt值。通過使用帶有列和行值的$符号來完成此操作。是以,這就是您可以對驗證集進行預測的方式。在此示範中,我将alpha值固定為0.7。繼續嘗試不同的alpha值,看看結果如何變化。

這是預測的結果。黃線是預測,藍線和紅線是火車和驗證資料:

怎麼檢視表用了那個序列_Excel中的時間序列!學習在Excel中用于時間序列預測的指數平滑模型...

注意,這裡有一條平線。簡單的指數平滑算法僅考慮曆史值,但趨勢成分不包括在預測中。這可以通過雙指數平滑算法解決。

雙指數平滑(在Excel中實作)

雙指數平滑算法使用與簡單指數平滑相同的思想。它使用曆史值進行預測并以指數級增加的方式配置設定權重(對最近的觀察值權重更高)。此外,雙指數平滑還考慮了該系列的“趨勢”。

預測(DES)=水準+趨勢

“水準”是曆史資料的權重平均值,與我們為簡單指數平滑計算的平均值相同。我們可以将Level的等式寫成:

Lt + 1 =αLt+(1-α)[L't] .. ..(5)

這類似于簡單的指數平滑方程。雙指數平滑模型中的另一個組成部分是“趨勢”。“趨勢”的計算公式為:

Tt + 1 =β(Lt + 1- Lt)+(1-β)Tt .. ..(6)

這裡的beta是趨勢分量的平滑參數。計算出特定時間的趨勢是級别項之間的差異(表示級别的增加或減少)。為了考慮過去趨勢值的權重總和,我們使用(1-β)Tt,其中Tt是為上一個時間步長計算的趨勢。

現在最終的預測将是Ŷt= Lt + Tt。讓我們找出如何在Excel中使用這些方程式!

第1步:

和以前一樣,由于第1步沒有任何曆史值,是以我們必須自己初始化這些值。是以,請手動初始化第一個值。

在這裡,我簡單地将其作為L1的值作為第一個觀察值。趨勢(T1)的值取為1.2(您可以更改此值并檢視預測如何變化)。

怎麼檢視表用了那個序列_Excel中的時間序列!學習在Excel中用于時間序列預測的指數平滑模型...

此時還定義了平滑參數值。

第2步:

然後,對于下一個值,我們将使用上面讨論的公式(5)和公式(6)。您可以在編輯欄中看到相同的内容。

Lt + 1 =αLt+(1-α)[L't] .. ..(5)

Tt + 1 =β(Lt + 1- Lt)+(1-β)Tt .. ..(6)

怎麼檢視表用了那個序列_Excel中的時間序列!學習在Excel中用于時間序列預測的指數平滑模型...
怎麼檢視表用了那個序列_Excel中的時間序列!學習在Excel中用于時間序列預測的指數平滑模型...

像前面的示例一樣,在這裡我們使用“觀察值”進行預測。對于驗證或測試集,我們将沒有任何觀測值。我們将在整個驗證集中考慮最後的觀測值以進行預測。

第三步:

在前面的公式中,我們将驗證集的Lt和Tt替換為最後的觀測值。新的預測公式變為:Ŷt= Lt + hTt。

如果Lt和Tt的值固定,則所有未來點的預測都将相同。是以,考慮到增加的趨勢,将系數“ h”與趨勢分量相乘。對于下一個n個預測,h的值取為1,2,3,…..n:

怎麼檢視表用了那個序列_Excel中的時間序列!學習在Excel中用于時間序列預測的指數平滑模型...

參見公式欄中的方程式-我們已固定Lt和Tt值。以下是預測結果。黃線是預測,而藍線和紅線是火車和驗證資料:

怎麼檢視表用了那個序列_Excel中的時間序列!學習在Excel中用于時間序列預測的指數平滑模型...

注意,這裡我們增加了一條線。雙指數平滑算法在進行預測時會考慮趨勢和曆​​史值。

讓我們看一下三重指數平滑模型,該模型還考慮了時間序列的季節性成分。

三重指數平滑(在Excel中實作)

這也被普遍稱為

Holt Winter算法

。正如您已經猜到的,三重指數平滑算法考慮了三個組成部分:水準,趨勢和季節性。

注意,季節成分可以是加法或乘法形式。這意味着最終預測可以采用以下兩種形式之一:

+ 1t + 1 =(等級+趨勢)+季節性

+ 1t + 1 =(等級+趨勢)x季節性

讓我們看一下其中每一個的數學方程式,然後我們将使用Excel中的乘法形式進行預測。

1.三重指數平滑:加性季節性

為了預測值,我們需要找到“水準”,“趨勢”和“季節性”的值。在這種情況下,水準方程具有季節性調整後的觀測值(Yt – St-m),因為我們正在添加季節性分量進行預測。随之而來的是,Level的計算包括先前觀測值的水準和趨勢:

Lt =α(Yt – St-m)+(1-α)[Lt-1 + Tt-1]

趨勢方程與雙指數平滑模型相同,由下式給出:

Tt + 1 =β(Lt + 1- Lt)+(1-β)Tt

最後,我們需要季節性方程來進行預測。在前面的部分中,我們讨論了季節性的概念。季節性是在系列中觀察到的重複模式,可用于預測值。例如,在每周的季節性中,該模式将每7天重複一次。

為了捕獲季節性,我們考慮了先前的第n個值(而不是即時值)。以下是加性季節成分的方程式:

St = γ(Yt – Lt)+(1 - γ)St-m

Gamma是季節性分量的平滑參數。在這裡,我們考慮St-m,這是前m個時間步的季節性。是以,對于每周的季節性,m = 7。

現在讓我們看一下三次指數平滑的乘法系列。

2.三重指數平滑:乘法季節性

在本節中,我們将讨論乘法形式的水準,趨勢和季節分量方程,并使用它們在Excel中建立三重指數平滑模型。我們可以通過以下方式計算級别:

Lt =α(Yt / St-m)+(1-α)[Lt-1 + Tt-1]

請注意,季節性分量未減去,而是在此處進行了劃分。趨勢方程類似于雙指數平滑模型。這是等式:

Tt + 1 =β(Lt + 1- Lt)+(1-β)Tt

最後,我們有一個季節性因素。這是特定時間步長t處的季節性值和tm步長處的季節性值。這是我們如何計算最終值:

St = γ(Yt / Lt)+(1 - γ)St-m

值得深思的–第一步,我們沒有St-m值。那麼我們将如何計算St的值呢?好了,我們将必須像在簡單和雙指數平滑模型中那樣對值進行初始化。我們來看一下!

第1步:

首先,對于三重指數平滑算法,我們必須初始化季節性分量的值。由于在此示例中我們有每周的季節性,是以我們必須初始化前7個值。這些将用于計算系列的季節性成分。您可以在結束時初始化這些值。

怎麼檢視表用了那個序列_Excel中的時間序列!學習在Excel中用于時間序列預測的指數平滑模型...

此外,以以下方式初始化第一級和趨勢值:

Lt = Yt / St-7

Tt = Lt – Lt-1

初始化所需的值以及alpha,beta和gamma值後,我們可以繼續進行下一步。alpha,beta和gamma是超參數,您可以在末端調整這些值以檢視結果如何變化。在這裡,我将這些值定義為:

怎麼檢視表用了那個序列_Excel中的時間序列!學習在Excel中用于時間序列預測的指數平滑模型...

第2步:

這樣我們就有了初始值和平滑參數。現在,我們将使用前面讨論的方程式來計算水準,趨勢和季節性的值。

在任何時間步長處的電平計算為Lt =α(Yt / St-m)+(1-α)[Lt-1 + Tt-1]。

怎麼檢視表用了那個序列_Excel中的時間序列!學習在Excel中用于時間序列預測的指數平滑模型...

對于趨勢分量,我們将使用時間步長t和t-1處的水準差。除此之外,前面的時間步長的影響是采用(1-β)的權重。這是等式:Tt + 1 =β(Lt + 1- Lt)+(1-β)Tt。

怎麼檢視表用了那個序列_Excel中的時間序列!學習在Excel中用于時間序列預測的指數平滑模型...

最後,季節成分為:St = γ(Yt / Lt)+(1 - γ)St-m。

怎麼檢視表用了那個序列_Excel中的時間序列!學習在Excel中用于時間序列預測的指數平滑模型...

現在,我們可以使用以下方程式進行最終預測:

Ŷt+ 1 =(Lt + Tt)x St

第三步

這些方程對于訓練資料将非常有效,其中我們具有Yt值,該值用于計算水準和季節分量。進行驗證集的預測(其中Yt不可用)有點棘手。

為了在驗證階段确定水準和趨勢值,我們将使用與在雙指數平滑中實作的想法相同的想法。我們将把Lt和Tt的值固定為最後計算的值。此外,為了包括增加的趨勢因子,我們将使用系數h。但是季節性(St)值呢?我們将修複St.的最後七個值。

下圖将幫助您更好地了解該想法:

怎麼檢視表用了那個序列_Excel中的時間序列!學習在Excel中用于時間序列預測的指數平滑模型...

驗證集開始于2014年3月26日。是以,最近一次觀察到的水準和趨勢值在25-03-2014。另外,最後七個季節性成分值用于進行未來七天的預測。其餘系列重複相同的模式。

第4步:

一旦計算了三個組成部分(水準,趨勢和季節性),最終的預測将是:

+ 1t + 1 =(等級+趨勢)x季節性

這是顯示實際值和預測的圖:

怎麼檢視表用了那個序列_Excel中的時間序列!學習在Excel中用于時間序列預測的指數平滑模型...

您可以看到,在這種情況下,預測明顯優于前兩種算法。

尾注

讓我們總結一下我們剛剛完成的大量學習!我們了解了指數平滑模型及其工作原理。我們還在Excel中實作了所有這些模型,以詳細了解方程式和計算。

如果您有任何疑問或回報,請随時在下面的評論部分中與我們聯系。