時間序列預測在商業和科學領域都有廣泛應用,從預測銷售額到預測天氣變化。準確的預測需要選擇合適的模型並有效地分割資料。常見的模型包括線性迴歸、指數趨勢模型和自迴歸模型,這些模型可以捕捉時間序列中的趨勢和季節性。為了評估模型的泛化能力,通常會將時間序列資料分割成訓練集和驗證集,並使用驗證集來評估模型在未見資料上的效能。在模型訓練完成後,通常會使用完整的資料集重新訓練模型,以提高預測的準確性。
時間序列預測的實作
時間序列預測是一種重要的分析方法,尤其是在需要根據過去資料預測未來趨勢的情況下。與跨截面預測不同,時間序列預測需要考慮時間維度的影響。為了提高預測準確度,通常會將時間序列資料分割成訓練集和驗證集。
時間序列分割的重要性
時間序列分割是指將原始時間序列資料分割成兩部分:訓練集和驗證集。訓練集用於建立模型,而驗證集則用於評估模型的效能。這種分割方法可以幫助我們評估模型在未知資料上的泛化能力。
生成未來預測
在建立好模型後,需要將訓練集和驗證集重新合併,形成完整的時間序列資料。然後,使用這個完整的資料集重新訓練模型,以生成未來的預測。這種方法有三個優點:
- 驗證集的價值:驗證集通常包含最近的資料,這些資料對於預測未來趨勢具有重要的參考價值。
- 模型估計的準確性:使用完整的時間序列資料可以提高一些模型的估計準確性,因為它們可以利用更多的資料進行學習。
- 預測步數的減少:如果只使用訓練集進行預測,則需要預測更遠未來的值,這可能會增加預測的不確定性。
ASDM中的時間序列分割
在ASDM中,時間序列分割可以在時間序列選單中實作。圖17.5展示了時間序列分割對話方塊的截圖。在選擇好最終模型後,應該將同一模型重新執行在原始的、未分割的時間序列資料上,以獲得未來的預測。ASDM只會在執行在未分割的時間序列上時生成未來的預測,如圖17.6所示。
時間序列分割示例
graph LR A[原始時間序列] -->|分割|> B[訓練集] A -->|分割|> C[驗證集] B -->|建立模型|> D[模型] C -->|評估模型|> D D -->|重新訓練|> E[完整時間序列] E -->|生成預測|> F[未來預測]
圖表翻譯
上述Mermaid圖表描述了時間序列分割和預測生成的過程。首先,原始時間序列被分割成訓練集和驗證集。然後,使用訓練集建立模型,並使用驗證集評估模型的效能。接著,使用完整的時間序列資料重新訓練模型,以生成未來的預測。
時間序列分析與預測
時間序列分析是一種統計方法,用於分析和預測時間序列資料。時間序列資料是指在不同時間點上收集的資料,例如每天的氣溫、每月的銷售額等。時間序列分析的目的是瞭解資料的趨勢、季節性和噪聲,以便進行預測和決策。
時間序列分析的步驟
- 資料收集: 收集時間序列資料,例如每天的氣溫、每月的銷售額等。
- 資料清理: 清理資料,去除缺失值和異常值。
- 時間序列分解: 將時間序列資料分解為趨勢、季節性和噪聲三個部分。
- 模型選擇: 選擇適合的時間序列模型,例如ARIMA、SARIMA等。
- 模型評估: 評估模型的效能,使用指標如RMSE、MAE等。
- 預測: 使用選定的模型進行預測。
時間序列分析的應用
- 銷售預測: 時間序列分析可以用於預測未來的銷售額。
- 氣象預報: 時間序列分析可以用於預測未來的氣溫、降雨量等氣象指標。
- 金融分析: 時間序列分析可以用於分析和預測股票價格、匯率等金融指標。
時間序列分析的工具
- Python: Python是一種流行的程式語言,具有多種時間序列分析函式庫,例如statsmodels、pykalman等。
- R: R是一種流行的統計語言,具有多種時間序列分析函式庫,例如forecast、tsfeatures等。
- Excel: Excel是一種流行的電子試算表軟體,具有內建的時間序列分析工具。
時間序列分析的挑戰
- 資料品質: 時間序列資料的品質對分析結果有很大影響。
- 模型選擇: 選擇適合的時間序列模型是一個挑戰。
- 過度擬合: 過度擬合是時間序列分析的一個常見問題。
內容解密
時間序列分析是一種強大的工具,用於分析和預測時間序列資料。透過瞭解資料的趨勢、季節性和噪聲,可以進行預測和決策。然而,時間序列分析也面臨著挑戰,例如資料品質、模型選擇和過度擬合。透過選擇適合的工具和模型,可以有效地進行時間序列分析和預測。
圖表翻譯
flowchart TD A[資料收集] --> B[資料清理] B --> C[時間序列分解] C --> D[模型選擇] D --> E[模型評估] E --> F[預測]
此圖表示時間序列分析的步驟,從資料收集到預測。每一步驟都很重要,需要仔細進行以保證分析結果的準確性。
時間序列分析
時間序列分析是一種用於分析和預測時間序列資料的統計方法。時間序列資料是指在不同時間點上收集的資料,例如每天的溫度、每月的銷售額等。
時間序列的四個組成部分
時間序列可以分解為四個組成部分:水平(Level)、趨勢(Trend)、季節性(Seasonality)和噪音(Noise)。
- 水平(Level):時間序列的平均值或基準值。
- 趨勢(Trend):時間序列隨著時間的推移而呈現的長期變化趨勢。
- 季節性(Seasonality):時間序列中由於季節或週期性因素引起的週期性變化。
- 噪音(Noise):時間序列中由於隨機因素引起的無規則變化。
時間序列分析的步驟
- 資料收集:收集時間序列資料。
- 資料清理:檢查和清理資料中的錯誤或缺失值。
- 時間序列圖:繪製時間序列圖以視覺化資料。
- 趨勢分析:分析時間序列的趨勢,包括水平、趨勢和季節性。
- 模型建立:根據分析結果建立適合的時間序列模型。
- 模型評估:評估模型的效能,包括計算誤差和評估指標。
- 預測:使用建立的模型進行未來值的預測。
時間序列分析的應用
時間序列分析廣泛應用於各個領域,包括:
- 金融:預測股票價格、匯率和其他金融指標。
- 經濟:預測經濟指標,例如GDP、通貨膨脹率等。
- 銷售:預測未來的銷售額和需求。
- 氣象:預測天氣和氣候變化。
時間序列分析工具
常用的時間序列分析工具包括:
- Excel:提供了基本的時間序列分析功能,包括繪製時間序列圖和計算趨勢。
- R:提供了豐富的時間序列分析函式庫,包括
forecast
和ts
等。 - Python:提供了多個時間序列分析函式庫,包括
statsmodels
和pykalman
等。
18 根據迴歸分析的預測
根據多元線性迴歸模型的預測工具是一種流行的預測方法,使用適合的預測變數來捕捉趨勢和/或季節性。在本章中,我們展示如何設立一個線性迴歸模型來捕捉具有趨勢和/或季節性的時間序列。該模型從資料中估計,可以從相關的預測資訊中生成未來的預測。我們描述了常見的趨勢型別(線性、指數、多項式),以及兩種季節性(加性和乘性)。接下來,我們展示如何使用迴歸模型來量化時間序列中鄰近值之間的相關性(稱為自相關)。這種模型稱為自迴歸(AR)模型,對於改善預測精確度(超越趨勢和季節性)很有用。它還有助於評估時間序列的可預測性,透過“隨機漫步”。
使用Amtrak乘客資料系列,演示了適合線性迴歸和自迴歸模型、使用它們生成預測以及評估其預測準確性的各個步驟。
18.1 具有趨勢的模型
線性趨勢
為了建立一個捕捉具有全域性線性趨勢的時間序列的線性迴歸模型,輸出變數(Y)設定為時間序列測量或其函式,而預測變數(X)設定為時間索引。讓我們考慮一個簡單的例子:對Amtrak每月乘客資料進行線性趨勢擬合,該資料在第17章中描述,並在Amtrak.xlsx中提供,其中該系列被分割成123個月的訓練期(1991年1月至2001年3月)和36個月的驗證期(2001年4月至2004年3月)。
該系列的線性趨勢如圖18.1所示。從時間圖中可以看出,整體趨勢不是線性的。然而,我們使用這個例子來演示如何擬合線性趨勢,稍後我們將考慮更適合該系列的模型。
flowchart TD A[時間序列] --> B[線性趨勢擬合] B --> C[生成預測] C --> D[評估預測準確性]
圖表翻譯:
此圖表描述了使用線性迴歸模型進行預測的過程。首先,我們擬合時間序列的線性趨勢,然後使用該模型生成未來的預測。最後,我們評估預測的準確性,以確保模型的有效性。
import pandas as pd
import numpy as np
# 載入Amtrak乘客資料
data = pd.read_excel('Amtrak.xlsx')
# 將時間索引設定為預測變數
data['Time'] = np.arange(len(data))
# 進行線性趨勢擬合
from sklearn.linear_model import LinearRegression
model = LinearRegression()
model.fit(data[['Time']], data['Ridership'])
# 生成預測
predictions = model.predict(data[['Time']])
# 評估預測準確性
from sklearn.metrics import mean_squared_error
mse = mean_squared_error(data['Ridership'], predictions)
print(f'均方誤差:{mse}')
內容解密:
在上述程式碼中,我們首先載入Amtrak乘客資料,然後將時間索引設定為預測變數。接下來,我們使用scikit-learn函式庫進行線性趨勢擬合,生成預測並評估預測準確性。均方誤差(MSE)用於評估預測的準確性。
時序分析中的趨勢建模
在時間序列分析中,趨勢是指資料隨時間的推移而呈現的長期變化方向。為了捕捉這種趨勢,我們可以使用線性迴歸模型來對資料進行趨勢分析。
線性趨勢模型
假設我們有一個時間序列資料集,其中包含了Amtrak的乘客資料。為了建立一個線性趨勢模型,我們需要定義一個輸出變數Y(乘客數)和一個預測變數t(時間索引)。時間索引t可以被定義為1、2、3,…,以此類別推。然後,我們可以使用以下線性迴歸模型來描述乘客數與時間之間的關係:
Y_t = β0 + β1 * t + ε
其中,Y_t是時間點t的乘客數,β0是截距,β1是趨勢係數,ε是標準誤差項。
模型應用
將這個模型應用於Amtrak的乘客資料,我們可以得到一個估計的模型,如圖18.2所示。圖中展示了實際值、擬合值和殘差的時間序列圖。從圖中可以看出,雖然趨勢係數在統計學上不顯著,但是從圖中可以明顯看出存在一個趨勢,且這個趨勢不是線性的。
結果分析
訓練集的RMSE(均方根誤差)可以用來評估模型的好壞。然而,僅僅依靠估計係數和其統計學上的顯著性是遠遠不夠的。從圖18.2中可以看出,雖然趨勢係數不顯著,但是從圖中可以明顯看出存在一個趨勢。這表明,我們需要結合視覺化工具和統計學方法來全面地評估模型的效能。
內容解密:
在上述模型中,β0代表了乘客數的基礎水平,而β1代表了乘客數隨時間推移的變化率。ε代表了標準誤差項,反映了實際資料與模型預測之間的差異。透過對這些引數的估計和分析,我們可以更好地理解乘客數的趨勢和變化規律。
圖表翻譯:
圖18.2展示了Amtrak乘客資料的實際值、擬合值和殘差的時間序列圖。從圖中可以看出,實際值和擬合值之間存在一定的差異,這些差異反映在殘差中。透過分析這些殘差,我們可以進一步評估模型的效能和準確性。
flowchart TD A[輸入變數] --> B[線性迴歸模型] B --> C[估計模型] C --> D[評估模型] D --> E[視覺化結果]
圖表說明:
上述流程圖展示了從輸入變數到視覺化結果的整個過程。首先,我們需要輸入變數,包括乘客數和時間索引。然後,我們使用線性迴歸模型來估計模型引數。接下來,我們評估模型的效能,包括計算RMSE和分析殘差。最後,我們使用視覺化工具來展示結果,包括實際值、擬合值和殘差的時間序列圖。
時序分析與預測模型
時序資料介紹
時序資料是指隨著時間的推移而收集的資料。在本例中,我們有從1991年1月到1992年2月的月度乘客資料,共14個資料點。每個資料點都有一個對應的時間索引,從1到14。
預測模型
為了建立預測模型,我們使用了線性迴歸分析。線性迴歸是一種統計方法,用於模擬兩個變數之間的關係。在本例中,我們的預測模型包含兩個變數:截距(Intercept)和時間索引(t)。
模型係數
模型係數是指預測模型中每個變數的係數。根據輸出的結果,我們可以看到:
- 截距(Intercept)的係數為1750.3595,表示當時間索引為0時,預測的乘客數為1750.3595。
- 時間索引(t)的係數為0.3514,表示每增加一單位的時間索引,預測的乘客數將增加0.3514。
信賴區間
信賴區間是指模型係數的估計值在一定信賴水平下的區間。根據輸出的結果,我們可以看到:
- 截距(Intercept)的信賴區間為[1692.8021, 1807.9170],表示在95%的信賴水平下,截距的真實值將在此區間內。
- 時間索引(t)的信賴區間為[-0.4542, 1.1570],表示在95%的信賴水平下,時間索引的真實值將在此區間內。
標準誤差與T-統計量
標準誤差是指模型係數的估計值的標準偏差。T-統計量是指模型係數的估計值除以其標準誤差。根據輸出的結果,我們可以看到:
- 截距(Intercept)的標準誤差為29.0729,T-統計量為60.2059。
- 時間索引(t)的標準誤差為0.4069,T-統計量為0.8635。
P-值
P-值是指在假設模型係數為0的情況下,觀察到現有估計值或更極端值的機率。根據輸出的結果,我們可以看到:
- 截距(Intercept)的P-值為0.0000,表示拒絕原假設,認為截距的真實值不為0。
- 時間索引(t)的P-值為0.3896,表示不能拒絕原假設,認為時間索引的真實值可能為0。
訓練與驗證摘要
訓練摘要是指模型在訓練資料上的效能指標。驗證摘要是指模型在驗證資料上的效能指標。根據輸出的結果,我們可以看到:
- 訓練摘要:SSE(Sum of Squared Errors)為3106705.2435,MSE(Mean Squared Error)為25257.7662。
- 驗證摘要:ESS(Explained Sum of Squares)為8989.1374602,ESMR(Error Sum of Squares)為4666.35375。
公共運輸乘客數量分析
公共運輸系統的乘客數量是衡量其效率和受歡迎程度的重要指標。透過分析不同時間段的乘客數量,可以幫助運輸管理者瞭解乘客的出行習慣、需求變化以及最佳化運輸服務的方向。
時間序列分析
時間序列分析是一種統計方法,用於分析和預測時間序列資料。在公共運輸領域,時間序列分析可以用於分析乘客數量的變化趨勢、季節性變化和週期性變化。
內容解密:
import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
# 載入資料
data = pd.read_csv('ridership_data.csv', index_col='date', parse_dates=['date'])
# 資料預處理
data['ridership'] = pd.to_numeric(data['ridership'])
# 時間序列分析
from statsmodels.tsa.seasonal import seasonal_decompose
decomposition = seasonal_decompose(data['ridership'], model='additive')
# 圖表顯示
trend = decomposition.trend
seasonal = decomposition.seasonal
residual = decomposition.resid
plt.subplot(411)
plt.plot(data['ridership'], label='原始資料')
plt.legend(loc='best')
plt.subplot(412)
plt.plot(trend, label='趨勢')
plt.legend(loc='best')
plt.subplot(413)
plt.plot(seasonal,label='季節性')
plt.legend(loc='best')
plt.subplot(414)
plt.plot(residual, label='殘差')
plt.legend(loc='best')
plt.tight_layout()
plt.show()
圖表翻譯:
此圖表展示了公共運輸乘客數量的時間序列分析結果。從上到下,分別展示了原始資料、趨勢、季節性和殘差。透過這個圖表,可以清晰地看到乘客數量的變化趨勢、季節性變化和週期性變化。
時序預測分析
在進行時序預測時,瞭解實際值(Actual)和預測值(Predicted)之間的差異是非常重要的。這個差異通常被稱為殘差(Residuals)。本文將探討如何分析這些殘差,以便更好地理解預測模型的效能。
實際值與預測值比較
首先,我們需要比較實際值和預測值,以瞭解預測模型的準確度。這可以透過繪製實際值和預測值的時間序列圖來實作。透過這個圖,我們可以直觀地看到預測值與實際值之間的差異。
殘差分析
殘差是實際值和預測值之間的差異。透過分析殘差,我們可以瞭解預測模型的誤差情況。理想情況下,殘差應該是隨機分佈的,如果殘差呈現某種模式,則可能表明預測模型存在問題。
時間序列圖
時間序列圖是展示實際值和預測值隨時間變化的有效工具。透過這個圖,我們可以看到實際值和預測值之間的差異,以及預測模型的效能隨時間的變化。
殘差圖
殘差圖是展示殘差隨時間變化的圖表。透過這個圖,我們可以看到殘差的分佈情況,以及是否存在某種模式。
內容解密:
flowchart TD A[實際值] --> B[預測值] B --> C[殘差] C --> D[殘差分析] D --> E[時間序列圖] E --> F[殘差圖]
圖表翻譯:
上述流程圖展示了從實際值到預測值,再到殘差分析,最後到時間序列圖和殘差圖的過程。這個過程幫助我們瞭解預測模型的效能,並找出可能存在的問題。
指數趨勢模型與預測
在時間序列分析中,指數趨勢模型是一種常見的趨勢形狀,尤其是在銷售資料中反映百分比增長的情況。指數趨勢模型假設時間序列的值隨著時間的推移而呈指數增長或減少。這種趨勢可以透過對數變換來線性化,然後使用線性迴歸模型進行估計。
指數趨勢模型的應用
指數趨勢模型在銷售資料中尤其常見,因為它能夠反映出時間序列的百分比增長或減少。例如,在Amtrak的乘客資料中,我們可以使用指數趨勢模型來捕捉乘客數量隨著時間的推移而呈指數增長的趨勢。
模型估計與評估
要估計指數趨勢模型,我們需要對時間序列的值進行對數變換,然後使用線性迴歸模型進行估計。這樣可以將指數趨勢轉換為線性趨勢,從而使得模型估計更加簡單。
在評估指數趨勢模型的效能時,我們需要注意的是,模型的輸出是對數變換後的值,因此需要進行反對數變換才能得到原來的尺度。此外,當比較不同模型的預測準確性時,需要確保所有模型的輸出都是在同一尺度上。
實際案例:Amtrak乘客資料
在Amtrak乘客資料的例子中,我們可以使用指數趨勢模型來捕捉乘客數量隨著時間的推移而呈指數增長的趨勢。首先,我們需要對乘客資料進行對數變換,然後使用線性迴歸模型進行估計。接下來,我們可以使用模型的輸出來計算預測值和預測誤差。
結果分析
在Amtrak乘客資料的例子中,指數趨勢模型的預測結果表明,乘客數量隨著時間的推移而呈指數增長的趨勢。模型的效能評估結果表明,指數趨勢模型比線性趨勢模型具有更好的預測準確性。
結
從商業價值視角來看,準確的時間序列預測對制定商業策略至關重要。本文深入探討了時間序列預測的實作方法,涵蓋了資料分割、模型建立、預測生成以及趨勢和季節性分析等關鍵環節。分析顯示,合理地分割資料集並利用完整的資料進行重新訓練能有效提高模型的預測準確度,例如在ASDM中的時間序列分割應用。此外,文章也揭示了不同趨勢模型(線性、指數)的適用場景和侷限性,例如指數模型更適用於Amtrak乘客量這種具有增長趨勢的資料。然而,模型選擇仍是一大挑戰,需要根據資料特性和業務需求謹慎選擇。玄貓認為,時間序列分析技術已趨成熟,企業應積極應用此技術於銷售預測、庫存管理等場景,以提升營運效率和決策水平。未來,結合機器學習演算法和更精細的資料分析方法,時間序列預測的準確性和應用範圍將進一步提升,為企業創造更大的商業價值。