R中第一个差分测井序列的连续积分

时间:2018-12-05 20:28:15

标签: r integration difference continuous

我有一个第一个差分记录系列,需要转换回原始级别单位。如何在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

1 个答案:

答案 0 :(得分:1)

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

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

让X 1 ,X 2 ,X 3 ,X 4 成为原始系列。最终,您有了

Z 1 = ln(X 2 )-ln(X 1 ),

Z 2 = ln(X 3 )-ln(X 2

Z 3 = ln(X 4 )-ln(X 3

给出Z 1 ,Z 2 ,Z 3 ,您希望恢复X 1 ,X < sub> 2 ,X 3 ,X 4 。然后注意

Z 1 = ln(X 2 )-ln(X 1 ),

Z 2 + Z 1 = ln(X 3 )-ln(X 1 ),< / p>

Z 3 + Z 2 + Z 1 = ln(X 4 )-ln(X < sub> 1 ),

这样

Z 1 + ln(X 1 )= ln(X 2 ),

Z 2 + Z 1 + ln(X 1 )= ln(X 3 ),< / p>

Z 3 + Z 2 + Z 1 + ln(X 1 )= ln(X < sub> 4 ),

exp(Z 1 + ln(X 1 ))= X 2

exp(Z 2 + Z 1 + ln(X 1 ))= X 3 ,< / p>

exp(Z 3 + Z 2 + Z 1 + ln(X 1 ))= X 4

这就是事实(比第一个解决方案更透明)

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

确实。结果,

 exp(diffinv(dl))

仅当原始系列开始于 1 = exp(0)时,才有效。

因此,您现在必须将系列的初始水平从任何差异中恢复,这是完全自然的。想象一下,我们只知道您每天将赚多少钱。在任何时候都无法说出您总共有多少钱,却不知道初始金额。