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

在R语言中实现同比(YoY)增长率转环比(QoQ)增长率

从通胀同比(YoY)数据计算环比(QoQ)增长率的解决方案

要从同比数据推导环比,核心是先通过同比反推出连续的物价指数(CPI)序列,再计算相邻季度的物价变化率。以下是具体步骤和R代码实现:

原理说明

同比增长率(YoY)的公式是:

YoY_t = (CPI_t / CPI_{t-4} - 1) × 100%

其中CPI_t是第t季度的物价指数,CPI_{t-4}是去年同期的物价指数。我们可以通过这个公式递推得到完整的CPI序列,再用环比公式计算:

QoQ_t = (CPI_t / CPI_{t-1} - 1) × 100%

可以任意设定一个基期的CPI值(比如设2020Q4的CPI为100),这个选择不会影响环比结果,因为环比是相对变化。

R代码实现

# 确保数据按时间顺序排列
df_sorted <- df[order(df$Date), ]

# 初始化CPI向量,长度与数据行数一致
cpi <- numeric(nrow(df_sorted))

# 设定基期:2020Q4的CPI为100(对应数据框第4行)
cpi[4] <- 100

# 递推计算2021Q1及之后的CPI:当前CPI=去年同期CPI×(1+同比/100)
for(t in 5:nrow(df_sorted)) {
  cpi[t] <- cpi[t-4] * (1 + df_sorted$value[t]/100)
}

# 反推2020Q1-Q3的CPI:去年同期CPI=当前CPI/(1+同比/100)
for(t in 3:1) {
  cpi[t] <- cpi[t+4] / (1 + df_sorted$value[t+4]/100)
}

# 计算环比增长率:当前CPI/上一季度CPI -1,再转为百分比
qoq <- c(NA, (cpi[2:nrow(df_sorted)] / cpi[1:(nrow(df_sorted)-1)] - 1) * 100)

# 将结果合并到原数据框,保留两位小数
df_sorted$CPI <- round(cpi, 2)
df_sorted$QoQ_growth <- round(qoq, 2)

# 查看关键列结果
print(df_sorted[, c("Date", "value", "CPI", "QoQ_growth")])

结果解释

  • CPI列:反推出的相对物价指数,基期为2020Q4=100,保留两位小数。
  • QoQ_growth列:环比增长率(百分比),保留两位小数,2020Q1无环比数据,显示NA。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.11 23:20:37