我有一列"y1“,我试图取日志差异,然后查找滞后1、2、3和4。
> # Data Import
> dat <- read.csv("book1.csv", header=TRUE, sep=",")
> dat
year Month y1
1 2000 Feb 125.25
2 2000 Mar 145.23
3 2000 Apr 588.23
4 2000 May 244.12
5 2000 Jun 100.25
6 2000 Jul 585.00
7 2000 Aug 782.25
8 2000 Sep 12.25
> y1 <- dat[,3] # y1 column
> y1
[1] 125.25 145.23 588.23 244.12 100.25 585.00 782.25 12.25
> dy1 <- c(diff(log(y1)))
> y11 <- lag(dy1, 1) # Lag-1
> y12 <- lag(dy1, 2) #Lag-2
> y13 <- lag(dy1, 3) #Lag-3
> y14 <- lag(dy1, 4) #lag-4
>
> y <- cbind(dy1,y11,y12,y13,y14)
> y
dy1 y11 y12 y13 y14
[1,] 0.1480070 0.1480070 0.1480070 0.1480070 0.1480070
[2,] 1.3987993 1.3987993 1.3987993 1.3987993 1.3987993
[3,] -0.8794581 -0.8794581 -0.8794581 -0.8794581 -0.8794581
[4,] -0.8899928 -0.8899928 -0.8899928 -0.8899928 -0.8899928
[5,] 1.7639448 1.7639448 1.7639448 1.7639448 1.7639448
[6,] 0.2905625 0.2905625 0.2905625 0.2905625 0.2905625
[7,] -4.1566484 -4.1566484 -4.1566484 -4.1566484 -4.1566484我原以为,一旦我取了日志差,第一个值就会丢失,代之以"NA“。此外,我还以为,当我对系列赛采取滞后-1时,前两个值将是"NA“,以此类推。任何帮助都将不胜感激。提前谢谢你。
发布于 2017-07-04 18:57:02
为了正确使用lag,您需要将时间数据附加到值中。然后,转移将在时间序列的时间分量中完成,而值保持不变。下面是一个例子。
myTs <- ts(dat$y1, start = c(2000, 2), frequency = 12)
myTs
# Feb Mar Apr May Jun Jul Aug Sep
# 2000 125.25 145.23 588.23 244.12 100.25 585.00 782.25 12.25
lag(myTs, 1)
# Jan Feb Mar Apr May Jun Jul Aug
# 2000 125.25 145.23 588.23 244.12 100.25 585.00 782.25 12.25
lag(myTs, -3)
# May Jun Jul Aug Sep Oct Nov Dec
# 2000 125.25 145.23 588.23 244.12 100.25 585.00 782.25 12.25lag也是为(numeric)向量定义的,但其行为有些不同。这个移位被保存为一个属性(start/end/stepsize),但是结果以后很难使用(至少对我来说是这样)。
y1 <- dat$y1
y1
# [1] 125.25 145.23 588.23 244.12 100.25 585.00 782.25 12.25
lag(y1, 1)
# [1] 125.25 145.23 588.23 244.12 100.25 585.00 782.25 12.25
# attr(,"tsp")
# [1] 0 7 1
lag(y1, -3)
# [1] 125.25 145.23 588.23 244.12 100.25 585.00 782.25 12.25
# attr(,"tsp")
# [1] 4 11 1https://stackoverflow.com/questions/44911220
复制相似问题