【问题标题】:Lag values for supervised learning in sequence / time-series序列/时间序列中监督学习的滞后值
【发布时间】: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


    【解决方案1】:

    你也许可以使用 rollapply(动物园):

    rollapply(iris$Sepal.Length, width = 3, by = 2, FUN = mean, align = "left")
    

    您可以指定是否要计算值,具体取决于是否有后续值 (https://rdrr.io/cran/rowr/man/rollApply.html)

    【讨论】:

    • 我不确定这种方法是否正确。使用 rollApply 方法,可以将窗口向左或向右滑动,但只能通过计算平均值。我的意思是,对于由诸如 A[201, 0.1, 10, 100] 之类的数据组成的数据集,我会使用 mean 函数,第二条记录的滚动值会非常高,对吧?
    • 我不确定您想要的结果是什么,只是领先/滞后值或应用于领先/滞后值的任何函数?计算平均值始终取决于异常值/极值,但如果需要,您可以通过多种方式处理此问题
    • 嗯,我的目标之一是对我的时间序列数据执行随机森林回归,就像一个监督学习问题。我还可以预测测试数据集的值。另一个目标是最重要的目标,例如使用这个模型来预测提前 1 天。因为现在只能根据给定的数据进行预测,而无需向前看。是的,当然有几种方法可以处理异常值,我还考虑过归一化以减少这些极值的间隔。
    • 嗯听起来相当复杂,RF 模型可以对您指定的特征范围内的数据进行建模,而不是在训练集中估计的所选范围之外的数据。也许检查这个帖子:stats.stackexchange.com/questions/175908/…
    猜你喜欢
    • 2018-08-11
    • 2017-12-29
    • 2014-04-20
    • 2019-09-19
    • 2013-03-24
    • 2021-10-17
    • 2019-09-14
    • 2017-06-27
    • 2019-01-22
    相关资源
    最近更新 更多