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

分解后的多元时间序列绘图出现额外时段,如何限制X轴为2005-2007?

问题原因与解决方法

为什么会显示2008-2011的额外时段?

decompose()函数对月度时间序列(frequency=12)做季节性分解时,会采用12项移动平均计算趋势成分。移动平均的计算需要在原始序列的首尾两端补充数据,用于处理边缘的移动平均计算,这就导致分解后返回的对象中,时间索引超出了原始的2005-2007范围。而plot.decomposed.ts(即调用plot(decompose(...))时使用的绘图方法)会默认依据分解后的数据范围渲染X轴,直接传入xlim参数无法覆盖这个默认行为。

如何将X轴限制为2005-2007?

方法1:手动绘制分解组件,精准控制X轴

提取分解结果的各个部分,用基础绘图函数逐一绘制,手动指定X轴范围:

# 执行分解
dec <- decompose(hom_rate_combo)
# 获取原始序列的时间范围
original_time_range <- range(time(hom_rate_combo))

# 设置多图布局
par(mfrow = c(4, 1), mar = c(2, 4, 2, 1))

# 绘制原始序列
plot(dec$x, xlim = original_time_range, main = "原始序列")
# 绘制趋势成分
plot(dec$trend, xlim = original_time_range, main = "趋势成分")
# 绘制季节性成分
plot(dec$seasonal, xlim = original_time_range, main = "季节性成分")
# 绘制残差
plot(dec$random, xlim = original_time_range, main = "残差")

方法2:使用stl()分解(更简便)

forecast包中的stl()函数采用LOESS平滑实现季节性分解,不会扩展原始序列的时间范围,直接设置xlim即可生效:

library(forecast)

# 执行stl分解,s.window指定为"periodic"表示固定季节模式
dec_stl <- stl(hom_rate_combo, s.window = "periodic")
# 绘图并限制X轴范围
plot(dec_stl, xlim = c(2005, 2007))

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.06 16:59:51