文中內容僅限技術學習與代碼實踐參考,市場存在不確定性,技術分析需謹慎驗證,不構成任何投資建議。
Prophet 是一種基于加法模型的時間序列數據預測程序,在該模型中,非線性趨勢與年、周、日季節性以及節假日效應相匹配。它最適用于具有強烈季節效應和多季歷史數據的時間序列。先知對缺失數據和趨勢變化具有很強的魯棒性,通常能很好地處理異常值。
Prophet 是 Facebook 核心數據科學團隊發布的開源軟件。
飽和預測
預測增長
默認情況下,Prophet 使用線性模型進行預測。在預測增長時,通常會有一個最大可達到的點:總市場規模、總人口規模等。這稱為承載能力,預測應在這個點達到飽和。
Prophet 允許你使用帶有指定承載能力的邏輯增長趨勢模型進行預測。我們以維基百科上 R(編程語言)頁面的訪問量的對數為例:
# R
df <- read.csv('https://raw.githubusercontent.com/facebook/prophet/main/examples/example_wp_log_peyton_manning.csv')
# Python
df = pd.read_csv('https://raw.githubusercontent.com/facebook/prophet/main/examples/example_wp_log_peyton_manning.csv')
我們必須在一列 cap
中指定承載能力。這里我們假設一個特定值,但通常會根據市場規模的數據或專業知識來設置。
# Python
df['cap'] = 8.5
需要重點注意的是,cap
必須為數據框中的每一行指定,并且它不必是常數。如果市場規模在增長,那么 cap
可以是一個遞增序列。
然后,我們像以前一樣擬合模型,只是傳入一個額外的參數來指定邏輯增長:
# R
m <- prophet(df, growth = 'logistic')
# Python
m = Prophet(growth='logistic')
m.fit(df)
我們像以前一樣為未來預測創建一個數據框,只是還必須在未來指定承載能力。這里我們將承載能力保持在與歷史相同的值不變,并預測未來 5 年:
# R
future <- make_future_dataframe(m, periods = 1826)
future$cap <- 8.5
fcst <- predict(m, future)
plot(m, fcst)
# Python
future = m.make_future_dataframe(periods=1826)
future['cap'] = 8.5
fcst = m.predict(future)
fig = m.plot(fcst)
邏輯函數有一個隱式的最小值 0,并且會像在承載能力處飽和一樣在 0 處飽和。也可以指定一個不同的飽和最小值。
飽和最小值
邏輯增長模型還可以處理飽和最小值,其通過一個與 cap
列指定最大值相同的方式指定的 floor
列來實現:
# R
df$y <- 10 - df$y
df$cap <- 6
df$floor <- 1.5
future$cap <- 6
future$floor <- 1.5
m <- prophet(df, growth = 'logistic')
fcst <- predict(m, future)
plot(m, fcst)
# Python
df['y'] = 10 - df['y']
df['cap'] = 6
df['floor'] = 1.5
future['cap'] = 6
future['floor'] = 1.5
m = Prophet(growth='logistic')
m.fit(df)
fcst = m.predict(future)
fig = m.plot(fcst)
要使用帶有飽和最小值的邏輯增長趨勢,也必須指定最大承載能力。
風險提示與免責聲明
本文內容基于公開信息研究整理,不構成任何形式的投資建議。歷史表現不應作為未來收益保證,市場存在不可預見的波動風險。投資者需結合自身財務狀況及風險承受能力獨立決策,并自行承擔交易結果。作者及發布方不對任何依據本文操作導致的損失承擔法律責任。市場有風險,投資須謹慎。