如何在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
相关产品推荐
相关产品推荐

