You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

基于CPI计算面板数据中工资的缩减因子(以2015年为基期)

基于Wooldridge方法计算面板数据工资的缩减因子(以2015年为基期)

我来帮你把伍德里奇的方法落地到你的面板数据上,其实核心逻辑和他书中的例子完全一致——缩减因子就是「基期CPI除以当期CPI」,用这个因子乘以当期名义工资,就能得到以基期货币价值衡量的实际工资。咱们一步步拆解:

1. 先理清楚核心逻辑

伍德里奇书中用107.6/65.2≈1.65计算缩减因子,本质就是拿基期的CPI值(107.6)除以当期的CPI值(65.2),这样就能把当期的名义工资转换为基期的实际工资。对应到你的需求,就是用2015年的CPI作为基准,计算每一年的缩减因子。

2. 整理CPI数据并计算缩减因子

首先需要把你获取的CPI数据里的日期转换成年份,然后以2015年的CPI值为基准计算每一年的缩减因子:

# 加载所需工具包
library(dplyr)
library(Quandl)

# 获取并整理CPI年度数据
CPI00to16 <- Quandl::Quandl("FRED/CPIAUCSL", collapse="annual", start_date="2000-01-01", end_date="2016-01-01")
CPI00to16 <- CPI00to16 %>%
  # 从日期列提取年份
  mutate(yr = as.numeric(format(Date,'%Y'))) %>%
  # 计算缩减因子:2015年CPI / 当期CPI
  mutate(deflation_factor = Value[yr == 2015] / Value) %>%
  # 只保留后续需要的年份和缩减因子列
  select(yr, deflation_factor)

3. 合并缩减因子到工资面板数据

接下来把你的工资数据和CPI的缩减因子按年份匹配合并:

# 先复现你的工资面板数据
set.seed(2)
tbl <- tibble(id = rep(c('Jane', 'Tom'), c(7, 10)), 
              yr = c(2009:2015, 2006:2015), 
              wg = c(rnorm(7, mean=5.1*10^4, sd=9), rnorm(10, 4*10^4, 12)) )

# 按年份合并数据
df <- tbl %>% 
  inner_join(CPI00to16, by = "yr")

4. 计算实际工资

最后用缩减因子乘以名义工资,得到以2015年货币价值衡量的实际工资:

df <- df %>%
  mutate(
    wg_defl = deflation_factor * wg, # 转换后的实际工资
    wg_diff = wg_defl - wg # 名义工资与实际工资的差值(可选,用于对比)
  )

结果验证

看最终输出的结果就能明白:

  • 2015年作为基期,缩减因子为1,所以实际工资和名义工资完全相等;
  • 年份越早,缩减因子越大,实际工资比名义工资越高——这是因为过去的货币购买力更强,比如Tom2006年的名义工资是39997.12,转换为2015年的实际工资后变成了46839.76,直观体现了通胀对工资购买力的影响。

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

火山引擎 最新活动