滞后时间序列数据
Lagging time series data
我一直在寻找构建用于预测的神经网络模型。我正在尝试让我的数据采用图像中显示的格式,以便模型可以根据之前的值(2 天前、1 天前、今天)进行预测。这些值将在第二天针对下一次预测进行调整,例如如图所示,第一次输入的 1 天前在第二次输入中变为 2 天前。我正在使用滞后函数来滞后时间序列的数据,并使用矩阵来设置这种格式的数据,但我很困惑并且为此苦苦挣扎了一段时间。如何使用滞后函数滞后图像中显示的数据?
我当前的代码:
data <-
structure(
list(
`USD/EUR` = c(
1.373,
1.386,
1.3768,
1.3718,
1.3774,
1.3672,
1.3872,
1.3932,
1.3911,
1.3838,
1.4171,
1.4164,
1.3947,
1.3675,
1.3801,
1.3744,
1.3759,
1.3743,
1.3787,
1.3595,
1.3599,
1.3624,
1.3523,
1.3506,
1.3521
)
),
row.names = c(NA,-25L),
class = c("tbl_df",
"tbl", "data.frame")
)
#Lag the data
lagData <- c(lag(data$`USD/EUR`,k = 1))
lagData
#store data into matrix to feed to neural net
matrixForm <- matrix(lagData, nrow = 25, ncol = 4, byrow = TRUE)
matrixForm
1) 使用嵌入。没有使用包。
embed(data[[1]], 4)[, 4:1]
给出这个矩阵:
[,1] [,2] [,3] [,4]
[1,] 1.3730 1.3860 1.3768 1.3718
[2,] 1.3860 1.3768 1.3718 1.3774
[3,] 1.3768 1.3718 1.3774 1.3672
[4,] 1.3718 1.3774 1.3672 1.3872
...snip...
2)另一种可能是崩溃包中的flag(快滞后):
na_omit(flag(data[[1]], 3:0))
给予:
L3 L2 L1 --
[1,] 1.3730 1.3860 1.3768 1.3718
[2,] 1.3860 1.3768 1.3718 1.3774
[3,] 1.3768 1.3718 1.3774 1.3672
[4,] 1.3718 1.3774 1.3672 1.3872
...snip...
3) zoo 以类似于 flag 的方式支持多个滞后,除了它使用与 R 中相同的方向。确保 dplyr 是 not 已加载,因为它会覆盖延迟。
library(zoo)
na.omit(lag(zoo(data[[1]]), -3:0))
给这个动物园对象:
lag-3 lag-2 lag-1 lag0
4 1.3730 1.3860 1.3768 1.3718
5 1.3860 1.3768 1.3718 1.3774
6 1.3768 1.3718 1.3774 1.3672
7 1.3718 1.3774 1.3672 1.3872
...snip...
我一直在寻找构建用于预测的神经网络模型。我正在尝试让我的数据采用图像中显示的格式,以便模型可以根据之前的值(2 天前、1 天前、今天)进行预测。这些值将在第二天针对下一次预测进行调整,例如如图所示,第一次输入的 1 天前在第二次输入中变为 2 天前。我正在使用滞后函数来滞后时间序列的数据,并使用矩阵来设置这种格式的数据,但我很困惑并且为此苦苦挣扎了一段时间。如何使用滞后函数滞后图像中显示的数据?
我当前的代码:
data <-
structure(
list(
`USD/EUR` = c(
1.373,
1.386,
1.3768,
1.3718,
1.3774,
1.3672,
1.3872,
1.3932,
1.3911,
1.3838,
1.4171,
1.4164,
1.3947,
1.3675,
1.3801,
1.3744,
1.3759,
1.3743,
1.3787,
1.3595,
1.3599,
1.3624,
1.3523,
1.3506,
1.3521
)
),
row.names = c(NA,-25L),
class = c("tbl_df",
"tbl", "data.frame")
)
#Lag the data
lagData <- c(lag(data$`USD/EUR`,k = 1))
lagData
#store data into matrix to feed to neural net
matrixForm <- matrix(lagData, nrow = 25, ncol = 4, byrow = TRUE)
matrixForm
1) 使用嵌入。没有使用包。
embed(data[[1]], 4)[, 4:1]
给出这个矩阵:
[,1] [,2] [,3] [,4]
[1,] 1.3730 1.3860 1.3768 1.3718
[2,] 1.3860 1.3768 1.3718 1.3774
[3,] 1.3768 1.3718 1.3774 1.3672
[4,] 1.3718 1.3774 1.3672 1.3872
...snip...
2)另一种可能是崩溃包中的flag(快滞后):
na_omit(flag(data[[1]], 3:0))
给予:
L3 L2 L1 --
[1,] 1.3730 1.3860 1.3768 1.3718
[2,] 1.3860 1.3768 1.3718 1.3774
[3,] 1.3768 1.3718 1.3774 1.3672
[4,] 1.3718 1.3774 1.3672 1.3872
...snip...
3) zoo 以类似于 flag 的方式支持多个滞后,除了它使用与 R 中相同的方向。确保 dplyr 是 not 已加载,因为它会覆盖延迟。
library(zoo)
na.omit(lag(zoo(data[[1]]), -3:0))
给这个动物园对象:
lag-3 lag-2 lag-1 lag0
4 1.3730 1.3860 1.3768 1.3718
5 1.3860 1.3768 1.3718 1.3774
6 1.3768 1.3718 1.3774 1.3672
7 1.3718 1.3774 1.3672 1.3872
...snip...