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

如何从R语言Facebook Prophet包提取年中日/周中日季节性数值

在R的Prophet包中提取季节性数据的具体数值

问题背景

已通过Prophet训练时间序列模型并能绘制包含「年中日」「周中日」的季节性组件图,但无法提取这些组件的具体数值。以下是可行的解决方案:


步骤1:准备模型与预测数据

先加载测试数据并完成模型训练与预测(确保ds为日期格式):

library(prophet)

# 加载测试数据并转换日期格式
df <- structure(list(ds = c("2019-01-01", "2019-01-02", "2019-01-03", "2019-01-04", "2019-01-05"), 
                     y = c(0.0586635581195361, 0.14179154500982, 0.154505062394315, 0.138202481405581, 0.0992742352440193)), 
                row.names = c(NA, 5L), class = "data.frame")
df$ds <- as.Date(df$ds)

# 训练模型并生成预测
m <- prophet(df, daily.seasonality = TRUE)
future <- make_future_dataframe(m, periods = 20, freq = 'day')
forecast <- predict(m, future)

方法1:提取指定日期的季节性数值

predict()生成的forecast数据框中直接包含每个日期对应的季节性贡献值:

# 提取日期、周中日、年中日、每日季节性数值
seasonal_values <- forecast[, c("ds", "weekly", "yearly", "daily")]
head(seasonal_values)
  • weekly:对应日期的周中日季节性贡献
  • yearly:对应日期的年中日季节性贡献
  • daily:对应日期的每日季节性贡献(因开启了daily.seasonality = TRUE)

方法2:提取完整周期的季节性曲线数值

如果需要获取整个周期的季节性趋势(比如全年365天的年中日曲线、一周7天的周中日曲线),可以通过Prophet内部绘图函数提取数据:

提取周中日完整曲线

# 获取周中日季节性绘图对象并提取数据
weekly_plot <- prophet:::plot_weekly(m)
weekly_seasonality_df <- weekly_plot$data
print(weekly_seasonality_df)

提取年中日完整曲线

# 获取年中日季节性绘图对象并提取数据
yearly_plot <- prophet:::plot_yearly(m)
yearly_seasonality_df <- yearly_plot$data
print(yearly_seasonality_df)

手动计算季节性数值(可选)

也可以利用模型中的季节性参数手动计算,以周中日为例:

# 生成一周的日期数据
week_days <- data.frame(ds = seq(as.Date("2023-01-01"), as.Date("2023-01-07"), by = "day"))
# 获取周季节性的傅里叶参数与周期
weekly_params <- m$weekly$params
weekly_period <- m$weekly$period
fourier_order <- m$weekly$fourier.order
# 计算周中日季节性值
week_days$weekly_seasonality <- prophet:::fourier_series(week_days$ds, weekly_period, fourier_order) %*% weekly_params
print(week_days)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.03 03:35:42