Подтвердить что ты не робот

Что делает функция diff() в R?

Я не понимаю, что делает функция diff() в R. См. Этот пример:

 temp = c(10,1,1,1,1,1,1,2,1,1,1,1,1,1,1,3,10)
 diff(temp)

Вышеприведенный код выводит следующий результат:

 [1] -9  0  0  0  0  0  1 -1  0  0  0  0  0  0  2  7

Каково определение этой функции?

4b9b3361

Ответ 1

Функция вычисляет различия между всеми последовательными значениями вектора. Для вашего примера вектора различия следующие:

 1 - 10 = -9
 1 -  1 =  0
 1 -  1 =  0
.
.
.
 3 -  1 =  2
10 -  3 =  7

Аргумент differences позволяет указать порядок различий.

Например, команда

diff(temp, differences = 2) 
[1]  9  0  0  0  0  1 -2  1  0  0  0  0  0  2  5

дает тот же результат, что и

diff(diff(temp))
[1]  9  0  0  0  0  1 -2  1  0  0  0  0  0  2  5

Следовательно, он возвращает различия различий.


Аргумент lag позволяет указать задержку.

Например, если lag = 2, вычисляются различия между третьим и первым значением, между четвертым и вторым значением, между пятым и третьим значением и т.д.

diff(temp, lag = 2)
[1] -9  0  0  0  0  1  0 -1  0  0  0  0  0  2  9

Ответ 2

Он вычисляет разницу между парами последовательных элементов.

Скажем, temp - наблюдения некоторой переменной, например, показания температуры, сделанные в час. Затем diff(temp) сообщит вам, как изменилась температура в течение каждого часа.

Противоположность diff() равна cumsum() (суммарная сумма):

> temp
 [1] 10  1  1  1  1  1  1  2  1  1  1  1  1  1  1  3 10
> cumsum(c(10, diff(temp)))
 [1] 10  1  1  1  1  1  1  2  1  1  1  1  1  1  1  3 10