1
我試圖找出如何在R中解決這個問題。我想在時間序列數據上使用不同的機器學習迴歸模型,這是在監督學習領域。在那種情況下,我需要一個函數/程序包,讓我可以前進一步,後退一步,就像滑動窗口函數一樣。該表顯示了輸入(t-n)和輸出(t + n)變量,當前觀測值(t)被視爲輸出值。序列/時間序列監督學習的滯後值
var1(t-1) var2(t-1) var1(t) var2(t) var1(t+1) var2(t+1)
1 4 69 5 70 6 71
2 5 70 6 71 7 72
3 6 71 7 72 8 73
4 7 72 8 73 9 74
5 8 73 9 74 10 75
6 9 74 10 75 11 76
7 10 75 11 76 12 77
8 11 76 12 77 13 78
我已經研究了關於一些有用的方法如滯後()或在r-blogger.com換檔()的方法,但在這些實施例中的問題是,缺少的值將產生。
shift<-function(x,shift_by){
stopifnot(is.numeric(shift_by))
stopifnot(is.numeric(x))
if (length(shift_by)>1)
return(sapply(shift_by,shift, x=x))
out<-NULL
abs_shift_by=abs(shift_by)
if (shift_by > 0)
out<-c(tail(x,-abs_shift_by),rep(NA,abs_shift_by))
else if (shift_by < 0)
out<-c(rep(NA,abs_shift_by), head(x,-abs_shift_by))
else
out<-x
out
}
結果移位()函數:
x df_lead2 df_lag2
1 5 4 NA
2 6 5 NA
3 7 6 5
4 8 7 6
5 9 8 7
6 10 9 8
7 11 10 9
8 12 11 10
9 13 NA 11
10 14 NA 12
那麼,有沒有任何包或實現的功能,允許接收數據幀,並計算每個變量的量表示TN或T + N +
如果有人能幫助我,那會很好。謝謝!
根據此評論:https://stats.stackexchange.com/questions/3051/mean-of-a-sliding-window-in-r – timfaber
我不確定,如果這種方法是正確的。通過rollApply方法,可以將窗口滑動到左側或右側,但只能通過計算平均值。我的意思是,對於由數據組成的數據集,如A [201,0.1,10,100],我將使用均值函數,第二條記錄的滾動值將會非常高,對吧? – Daniel
我不確定你想要的結果是什麼,只是超前/滯後值或任何應用於超前/滯後值的函數?計算平均值總是依賴於異常值/極值,但如果需要,您可以通過多種方式處理這個問題 – timfaber