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).
开始时才有效
因此,您现在必须从系列的初始级别开始,以便从任何类型的差异中恢复它,这是很自然的。想象一下,我们只知道您每天要赚多少钱和花多少钱。在不知道初始金额的情况下,绝对不可能说出您总共有多少钱。
我有一个一阶差分记录系列,我需要将其转换回原始水平单位。我如何在 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).
开始时才有效因此,您现在必须从系列的初始级别开始,以便从任何类型的差异中恢复它,这是很自然的。想象一下,我们只知道您每天要赚多少钱和花多少钱。在不知道初始金额的情况下,绝对不可能说出您总共有多少钱。