【发布时间】:2017-10-09 02:35:00
【问题描述】:
我试图弄清楚如何在 R 中解决这个问题。我想在时间序列数据上使用不同的机器学习回归模型,这属于监督学习领域。在这种情况下,我需要一个函数/包,它允许我向前走 n 步和向后走 n 步,就像滑动窗口函数一样。该表显示了输入 (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 研究了一些有用的方法,例如 lag() 或 shift() 方法,但在这些示例中,问题是会产生缺失值。
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
}
shift() 函数的结果:
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
那么是否有任何包或实现的功能,允许接收数据帧并为每个变量计算指示 t-n 或 t+n 的量?
如果有人可以帮助我,那就太好了。谢谢!
【问题讨论】:
标签: r dataframe time-series forecasting