【发布时间】:2021-10-11 01:02:16
【问题描述】:
假设我们有一个示例数据框df,它是具有date 和MoM 列的假CPI 数据,我需要根据它们计算base_effect 和new_price_effect:
date MoM base_effect new_price_effect
0 2019-01 1.010 NA NA
1 2019-02 1.010 NA NA
2 2019-03 1.010 NA NA
3 2019-04 1.010 NA NA
4 2019-05 1.010 NA NA
5 2019-06 1.010 NA NA
6 2019-07 1.010 NA NA
7 2019-08 1.010 NA NA
8 2019-09 1.010 NA NA
9 2019-10 1.010 NA NA
10 2019-11 1.010 NA NA
11 2019-12 1.010 NA NA
12 2020-01 1.015 1.115668 1.015000
13 2020-02 1.015 1.104622 1.030225
14 2020-03 1.015 1.093685 1.045678
15 2020-04 1.015 1.082857 1.061364
16 2020-05 1.015 1.072135 1.077284
17 2020-06 1.015 1.061520 1.093443
18 2020-07 1.015 1.051010 1.109845
19 2020-08 1.015 1.040604 1.126493
20 2020-09 1.015 1.030301 1.143390
21 2020-10 1.015 1.020100 1.160541
22 2020-11 1.015 1.010000 1.177949
23 2020-12 1.015 1.000000 1.195618
或者:
structure(list(date = c("2019-1-1", "2019-2-1", "2019-3-1", "2019-4-1",
"2019-5-1", "2019-6-1", "2019-7-1", "2019-8-1", "2019-9-1", "2019-10-1",
"2019-11-1", "2019-12-1", "2020-1-1", "2020-2-1", "2020-3-1",
"2020-4-1", "2020-5-1", "2020-6-1", "2020-7-1", "2020-8-1", "2020-9-1",
"2020-10-1", "2020-11-1", "2020-12-1"), MoM = c(1.01, 1.01, 1.01,
1.01, 1.01, 1.01, 1.01, 1.01, 1.01, 1.01, 1.01, 1.01, 1.015,
1.015, 1.015, 1.015, 1.015, 1.015, 1.015, 1.015, 1.015, 1.015,
1.015, 1.015)), class = "data.frame", row.names = c(NA, -24L))
base_effect的计算基于以下公式:
即:计算2020-06 的基本效果,我们使用MoM(2019-07) * MoM(2019-08) * MoM(2019-09) * MoM(2019-10) * MoM(2019-11) * MoM(2019-12) = 1.061520,对于2020-09,MoM(2019-10) * MoM(2019-11) * MoM(2019-12) = 1.030301
new_price_effect 基于:
ie:计算2020-04的新价格效应,我们使用MoM(2020-01) * MoM(2020-02) * MoM(2020-03) * MoM(2020-04) = 1.061364;对于2020-06、MoM(2020-01) * MoM(2020-02) * MoM(2020-03) * MoM(2020-04) * MoM(2020-05) * MoM(2020-06) = 1.093443等
我们可以看到,对于base_effect,上一年的December 的MoM 是固定的,而对于new_price_effect,今年的January 的MoM 是固定的。还有the base effect of for each December is always 1.00.
我如何用 R 计算它们?谢谢。
参考:
Calculate base effect based on month to month changes in Pandas
【问题讨论】:
-
对于 2020-09,不是 1.015 ^ 3 = 1.0456 不是 1.030301 吗?您确定 MoM 会在 2020 年从 1.01 更改吗?
-
base_effect是根据上一年的MoMs 计算出来的,所以2020-09的值是MoM(2019-10) * MoM(2019-11) * MoM(2019-12) = 1.030301,而new_price_effect是由MoMs 计算出来的当前年份。