好了,所以我期待創建滾動滯後於R.滾動滯後差異
vec <- c(43.79979, 44.04865, 44.17308, 44.54638, 44.79524, 44.79524, 44.79524, 44.42195, 44.54638, 44.79524, 44.42195, 43.30206, 43.30206, 43.17764, 43.30206)
> length(vec)
[1] 15
差異這是我到目前爲止已經試過:
vec1 <- rollapply(vec, width = 2, fill = NA, FUN = diff)
這給出了這樣的輸出:
[1] 0.24886 0.12443 0.37330 0.24886 0.00000 0.00000 -0.37329 0.12443 0.24886 -0.37329 -1.11989 0.00000 -0.12442 0.12442 NA
> length(vec1)
[1] 15
注意我們在元素15中有一個NA值。
所以我想這樣做,DIFF在滯後的發言權滯後1,2和3 ...所以上面的代碼並不滿足這一點,所以我嘗試以下:
lag1 <- diff(vec, lag = 1, differences = 1, arithmetic = TRUE, na.pad = TRUE)
lag2 <- diff(vec, lag = 2, differences = 1, arithmetic = TRUE, na.pad = TRUE)
lag3 <- diff(vec, lag = 3, differences = 1, arithmetic = TRUE, na.pad = TRUE)
length(lag1)
length(lag2)
length(lag3)
這樣做的結果:
> lag1
[1] 0.24886 0.12443 0.37330 0.24886 0.00000 0.00000 -0.37329 0.12443 0.24886 -0.37329 -1.11989 0.00000 -0.12442 0.12442
> lag2
[1] 0.37329 0.49773 0.62216 0.24886 0.00000 -0.37329 -0.24886 0.37329 -0.12443 -1.49318 -1.11989 -0.12442 0.00000
> lag3
[1] 0.74659 0.74659 0.62216 0.24886 -0.37329 -0.24886 0.00000 0.00000 -1.24432 -1.49318 -1.24431 0.00000
> length(lag1)
[1] 14
> length(lag2)
[1] 13
> length(lag3)
[1] 12
注意,做上述滯後差異的時候......它放在它減去的值上...所以它把我們的當前值線DIFF結果 - 滯後值。它將差異結果放在滯後值的位置上。然後我們失去了矢量的長度。我希望實際上將差異結果放在起始數字(差異)上,並將領先的數值放在數據集開始時的缺失值。
使用滯後2期爲EN例子,這是我想要的結果:
> lag2
[1] NA NA 0.37329 0.49773 0.62216 0.24886 0.00000 -0.37329 -0.24886 0.37329 -0.12443 -1.49318 -1.11989 -0.12442 0.00000
有誰知道如何糾正此問題的方法?
要也許解釋一下:
這是向量的開始:
vec <- c(43.79979, 44.04865, 44.17308.....
所以,如果我們做一個滯後2差...
我們採取的第3元素... 44.17308
- 43.79979
= 0.37329
的結果。
所以我想有NA NA 0.37329
不是把0.37329
在新LAG2矢量第一的位置。
'C(REP(NA,n)時,DIFF(VEC,滯後= N,差異= 1,算術= TRUE,na.pad = TRUE))' –
AHA - 我看到......所以實際上通過c(rep(NA,n)...)導入矢量中,然後差異被計算出來,以便它們被放置在我想要的位置。好大的 –