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

R语言时间序列处理:如何对给定表格绘图并去除季节性?

处理步骤

针对你的表格数据,按以下步骤完成绘图和季节性去除操作:

1. 数据整理为时间序列格式

先把表格数据导入R并转换成标准的时间序列结构:

# 创建原始数据框
df <- data.frame(
  Season = c("Χειμώνας", "Άνοιξη", "Καλοκαίρι", "Φθινόπωρο"),
  "2016" = c(1, 3, 6, 4),
  "2017" = c(2, 2, 7, 5),
  "2018" = c(2, 4, 8, 5),
  "2019" = c(1, 3, 8, 6)
)

# 转成长格式(方便后续绘图和处理)
library(tidyr)
df_long <- pivot_longer(df, cols = -Season, names_to = "Year", values_to = "Value")

# 生成对应日期(默认冬季为每年第1季度)
df_long$Quarter <- match(df_long$Season, c("Χειμώνας", "Άνοιξη", "Καλοκαίρι", "Φθινόπωρο"))
df_long$Date <- as.Date(paste(df_long$Year, df_long$Quarter, "01", sep = "-"), format = "%Y-%m-%d")

# 转换成ts时间序列对象(适配R的时间序列工具)
ts_data <- ts(df_long$Value, start = c(2016, 1), frequency = 4)

2. 绘制原始时间序列图

用ggplot2做可视化(新手友好,图形更直观):

library(ggplot2)
ggplot(df_long, aes(x = Date, y = Value, color = Season)) +
  geom_line(size = 1) +
  geom_point() +
  labs(title = "原始季度时间序列", x = "日期", y = "数值") +
  theme_minimal()

如果用基础绘图也可以快速生成:

plot(ts_data, main = "原始季度时间序列", xlab = "年份", ylab = "数值")

3. 去除季节性的几种实用方法

方法一:时间序列分解

用R自带的decompose()函数把序列拆分为趋势、季节性、随机成分,分加法和乘法两种模型:

# 乘法分解(你的数据中夏季数值大、波动也大,更适合这种模型)
decomp_mult <- decompose(ts_data, type = "multiplicative")
plot(decomp_mult)  # 查看拆分后的各成分
ts_deseason_mult <- decomp_mult$trend * decomp_mult$random  # 提取去季节性后的序列

# 加法分解(适合季节性波动不随数值变化的场景)
decomp_add <- decompose(ts_data, type = "additive")
plot(decomp_add)
ts_deseason_add <- decomp_add$trend + decomp_add$random

# 绘图查看去季节性后的结果
plot(ts_deseason_mult, main = "乘法模型去季节性后序列", xlab = "年份", ylab = "数值")

方法二:季节性差分

针对季度数据,直接做4阶差分(取当前值与前一年同季度值的差值),快速去除季节性:

ts_diff <- diff(ts_data, differences = 4)
plot(ts_diff, main = "4阶差分去季节性后序列", xlab = "年份", ylab = "数值")

方法三:STL分解(更鲁棒)

stl()函数对异常值的处理更友好,仅支持加法模型,但灵活性更高:

stl_result <- stl(ts_data, s.window = "periodic")
plot(stl_result)
ts_deseason_stl <- stl_result$time.series[, "trend"] + stl_result$time.series[, "remainder"]
plot(ts_deseason_stl, main = "STL分解去季节性后序列", xlab = "年份", ylab = "数值")

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.23 07:17:11