вывод функции diffinv не такой, как я думал - PullRequest
1 голос
/ 17 июня 2020

Попытка выяснить, как правильно инвертировать разность при использовании двух разностей.

Я могу дважды отличаться с опцией 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?

1 Ответ

0 голосов
/ 17 июня 2020

Если вы выполняете обратную разность индивидуально, вам понадобится первый член в каждом случае.

Но, если вы делаете две обратные разности одновременно, вам понадобятся первые 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) был первым элементом исходных данных и первым элементом первого различия данных.

...