基于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




