R 中一阶差分记录系列的持续集成

Continuous Integration of a 1st Differenced Logged Series in R

我有一个一阶差分记录系列,我需要将其转换回原始水平单位。我如何在 R 中执行此操作?

以下是我的数据系列和尝试的代码:

原始系列:

1.1, 2.6, 3.6, 4.8, 5.1, 6.0, 7.3, 8.8, 9.4, 10.5

尝试的代码:

o <- c(1.1, 2.6, 3.6, 4.8, 5.1, 6.0, 7.3, 8.8, 9.4, 10.5)
l <- log(o)
dl <- diff(l)

exp(diffinv(dl, differences = 1)) # Attempt to recover o

当前输出:

[1] 1.000000 2.363636 3.272727 4.363636 4.636364 5.454545 6.636364 8.000000 
[9] 8.545455 9.545455

期望的输出:

[1] 1.1 2.6 3.6 4.8 5.1 6.0 7.3 8.8
[9] 9.4 10.5

在不知道其第一个元素的情况下无法完全恢复原始系列:

exp(diffinv(dl) + log(1.1))
# [1]  1.1  2.6  3.6  4.8  5.1  6.0  7.3  8.8  9.4 10.5

exp(cumsum(c(log(1.1), dl)))
# [1]  1.1  2.6  3.6  4.8  5.1  6.0  7.3  8.8  9.4 10.5

设X1,X2,X3,X4为原系列。那么最终你有

Z1 = ln(X2) - ln(X1),

Z2 = ln(X3) - ln(X2)

Z3 = ln(X4) - ln(X3)

给定 Z1, Z2, Z3, 你希望恢复 X 1, X2, X3, X4 .然后注意

Z1 = ln(X2) - ln(X1),

Z2 + Z1 = ln(X3) - ln(X 1),

Z3 + Z2 + Z1 = ln(X4) - ln(X1),

这样

Z1 + ln(X1) = ln(X2),

Z2 + Z1 + ln(X1) = ln(X 3),

Z3 + Z2 + Z1 + ln(X1) = ln(X4),

exp(Z1 + ln(X1)) = X2,

exp(Z2 + Z1 + ln(X1)) = X3,

exp(Z3 + Z2 + Z1 + ln(X1)) = X4,

这正是(比第一个解决方案更透明)

exp(cumsum(c(log(1.1), dl)))

确实如此。因此,

 exp(diffinv(dl))

仅当原始系列从 1 = exp(0).

开始时才有效

因此,您现在必须从系列的初始级别开始,以便从任何类型的差异中恢复它,这是很自然的。想象一下,我们只知道您每天要赚多少钱和花多少钱。在不知道初始金额的情况下,绝对不可能说出您总共有多少钱。