尝试弄清楚如果使用 2 个差分如何正确地求反差分。
我可以使用选项 differences = 2
进行两次差分,一切正常:
diff(c(3,6,23,64,77)) = 3 17 41 13
diff(c(3, 17, 41, 13)) = 14 24 -28
diff(c(3,6,23,64,77), lag = 1, differences = 2) = 14 24 -28
当我两次使用diffinv
时,使用3
作为初始条件(由于第一个差的第一个元素是3
,答案是正确的,它是起始向量:
diffinv(
diffinv(
diff(c(3,6,23,64,77), lag = 1, differences = 2),
xi = 3),
xi=3) = 3 6 23 64 77
但是如果我尝试做两个逆差,我会得到不正确的答案:
diffinv(
diff(c(3, 6, 23, 64, 77), lag = 1, differences = 2),
lag = 1, differences = 2, xi = c(3, 3)
) = 3 3 17 55 65
尝试将 difinv
与 differences = 2
一起使用时,我做错了什么?
最佳答案
如果单独执行反差分,则每种情况下都需要第一项。
但是,如果你同时做两个逆差,你需要原始数据的前两个值
diffinv(
diff(c(3, 6, 23, 64, 77), lag = 1, differences = 2),
lag = 1, differences = 2, xi = c(3, 6)
) = 3 6 23 64 77
请注意,在这种情况下,我必须使用 c(3, 6)
,它们是原始数据的前两个元素。
在前面的例子中,我使用了两次 diffinv,所以 c(3, 3)
是原始数据的第一个元素,也是数据的第一个差分的第一个元素。
关于r - diffinv 函数输出不是我想的那样,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62418375/