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

R中时间序列全周期与子周期绘图趋势矛盾的原因排查

问题分析与解决方案

核心原因

你犯的关键错误是:创建子周期时间序列时,没有筛选2000-2022年的对应数据,只是把完整数据集的时间标签改成了从2000年开始——相当于把1981年的早期数据,强行标成2000年的数据绘图,这完全不是你想要的2000-2022年真实数据。

从你提供的dput结果能直接验证:

  • prod_2的前6个值是1981年的原始数据,时间标签以1981开头
  • prod_periode_2的前6个值和prod_2完全一致,但时间标签被改成了2000开头

这就导致:全周期图里的2000-2022是真实后期数据,而你单独绘制的"子周期"其实是1981年的早期数据,两者根本不是同一批数据,趋势自然完全不同。

修正后的代码

全周期时间序列创建(精简冗余代码)

# 提取原始数据列
production_2 <- serie_elec$`Production brute d'électricité nucléaire (en GWh)`
# 直接创建全周期时间序列,去掉冗余的无效步骤
prod_2 <- ts(production_2, start = c(1981, 1), end = c(2022, 11), frequency = 12)
summary(prod_2)
plot.ts(prod_2)

子周期时间序列创建(正确筛选数据)

推荐用window()函数直接从全周期序列中截取区间,这是时间序列处理的标准方法:

# 先创建全周期时间序列
prod_full <- ts(serie_elec$`Production brute d'électricité nucléaire (en GWh)`,
                start = c(1981, 1), end = c(2022, 11), frequency = 12)
# 截取2000-2022年的子周期
prod_periode_2 <- window(prod_full, start = c(2000, 1), end = c(2022, 11))

summary(prod_periode_2)
plot.ts(prod_periode_2)

验证修正效果

修正后,执行dput(head(prod_periode_2))会输出2000年1-6月的真实数据,而非1981年的数据,此时单独绘制的子周期趋势会和全周期图中2000-2022段的趋势完全一致。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.22 01:12:48