diff()函数---useR!

2019-10-29  本文已影响0人  淡水鱼Ada

diff(x, lag = 1, differences = 1)

  • x是numeric vector
  • lag是一个整数,表明相减的两项相距多元,即被减数距离减数多远。
  • difference: 连续执行多少次diff()函数。

这个函数有两个重要的参数lag和differences,需要特别注意一下。
看一下列子体会一下:

diff(c(2,3,5,18,4,6,4),lag=1)
#[1] 1 2 13 -14 2 -2

参数lag=1的diff()函数是这样计算的:因为lag值为1,所以滞后一项,也就是说,相减的两项,位置相距1项,即后一项减前一项的值。
1- 第二项减去第一项的值,3-2=1
2-第三项减去第二项的值,5-3=2
3-第四项减去第三项的值,18-5
13
4-第五项减去第四项的值,4-18=-14
5-第六项减去第五项的值,6-4=2
6-第七项减去第六项的值,4-6=-2

diff(c(2,3,5,18,4,6,4),lag=2)
#[1] 3 15 -1 -12 0

参数lag=1的diff()函数是这样计算的:因为lag值为2,所以滞后两项,也就是说,相减的两项位置相隔2。具体计算如下:
1- 第三项减去第一项的值,5-2=3
2-第四项减去第二项的值,18-3=15
3-第五项减去第三项的值,4-5
-1
4-第六项减去第四项的值,6-18=-12
5-第七项减去第五项的值,4-4=0

diff(c(2,3,5,18,4,6,4),lag=1,differences=2)
#[1] 1 11 -27 16 -4

本例参数lag=1,differences=2,也就是说执行两次diff(x,lag=1),具体来说,首先计算diff(x,lag=1),以这个函数的结果作为下一次diff()函数中的x,再执行一遍diff(x,lag=1)


图3-1.png

从图3-1可以看到,首先计算一遍diff(x,lag=1),得到的值在表格第一行中;然后,再以这些值作为input=x,计算diff(x,lag=1),得到的结果在表格的第二行。

下面这个网站上有一个小练习:Calculate a difference of a series using diff()

diff()函数还可以用来计算导数

导数
x# a vector of x axis points
y# a vector of y axis points
#change in Y: diff(y)
#change in X: diff(x)
slope=diff(y)/diff(x)
上一篇下一篇

猜你喜欢

热点阅读