You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Python Facebook Prophet中获取图表方程与R平方值

在Facebook Prophet中获取趋势方程与R平方值

提取趋势的斜率和截距

Prophet的趋势模型分为线性和logistic两种,核心参数存储在模型的params属性中:

线性趋势场景

线性趋势公式为:trend = k + β*t,其中t是从数据起始日期开始的天数(数值型)。拟合模型后直接提取参数:

from prophet import Prophet
import pandas as pd

# 拟合模型
df = pd.read_csv("your_data.csv")
m = Prophet(growth="linear")
m.fit(df)

# 提取斜率(β)和截距(k)
slope = m.params["beta"][0]
intercept = m.params["k"][0]
print(f"趋势方程: y = {slope:.4f}*t + {intercept:.4f}")

Logistic趋势场景

若使用logistic增长(需提前设置cap参数),趋势公式为:trend = cap / (1 + exp(-(k + β*t))),参数提取方式类似:

# 示例:设置容量值
df["cap"] = 1000
m = Prophet(growth="logistic")
m.fit(df)

slope = m.params["beta"][0]
intercept = m.params["k"][0]
cap = df["cap"].iloc[0]
print(f"趋势方程: y = {cap} / (1 + exp(-({intercept:.4f} + {slope:.4f}*t)))")

注意:若模型设置了变点(changepoints),趋势会是分段线性的,单一斜率截距仅代表某一段趋势。可通过forecast['trend']获取各时间点的趋势值,对分段单独计算斜率。

计算R平方值

Prophet未内置R平方计算,可通过实际值与预测值手动计算(逻辑与Excel一致):

from sklearn.metrics import r2_score

# 生成预测结果
forecast = m.predict(df)

# 匹配实际值与预测值
actual_values = df["y"]
predicted_values = forecast["yhat"]

# 计算R平方
r2 = r2_score(actual_values, predicted_values)
print(f"R平方值: {r2:.4f}")

关于Prophet的utilities工具包

utilities工具包主要用于辅助数据预处理(如生成节假日数据集),并不提供参数提取或拟合指标计算的功能,核心模型参数均存储在m.params中。

内容的提问来源于stack exchange,提问作者Juan Gut

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.15 14:45:38