【问题标题】:1D matrix data to 2D matrix data (Time series)一维矩阵数据到二维矩阵数据(时间序列)
【发布时间】:2024-01-23 00:13:02
【问题描述】:

我有这些货币兑换数据,我正在尝试将数据格式化为矩阵,以便我可以将此矩阵输入神经网络以预测第二天的兑换。为此,它需要知道以下值: 2 天前,1 天前,今天,预计在这个一维矩阵中。我正在尝试将此一维矩阵更改为可以正确显示数据的二维矩阵。我在下面创建了一个图表,说明我如何尝试格式化这些数据,但我不太明白如何做到这一点,我是 R 编程的新手。我发现 lag() 函数可用于在数据中创建此“滞后”并用于时间序列问题,但除了以这种格式格式化此数据之外,我不确定如何使用它

数据格式:(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")
  )

【问题讨论】:

  • 发布时请将您的数据缩减到最小大小,同时保留足够的数据来说明问题。
  • 当然!我将编辑帖子

标签: r matrix neural-network time-series


【解决方案1】:

在最后的注释中使用data2 并假设它是按时间升序排列的,我们使用flag(快速滞后)来滞后它并使用na_omit 省略具有任何NA 的行,即前两行和最后一行。它们有 NA,因为在系列开始之前或系列结束之后不能有数据。

library(collapse)

na_omit(flag(data2, 2:-1))

给予:

# A tibble: 3 x 4
  `L2.USD/EUR` `L1.USD/EUR` `USD/EUR` `F1.USD/EUR`
         <dbl>        <dbl>     <dbl>        <dbl>
1         1.37         1.39      1.38         1.37
2         1.39         1.38      1.37         1.38
3         1.38         1.37      1.38         1.37

注意

# input
data2 <- head(data)

data2 看起来像这样:

> data
# A tibble: 6 x 1
  `USD/EUR`
      <dbl>
1      1.37
2      1.39
3      1.38
4      1.37
5      1.38
6      1.37

【讨论】:

  • 感谢您的回复!数据从 2011 年到 2013 年,所以不倒退:D。您显示的输出,第一行中的前两个元素丢失了吗?第一行应该有 2 天前的数据、1 天前的数据、今天的数据,然后是预期的输出。无论如何你可以像这样格式化它吗?我尝试在图表中显示它,如果不清楚,请见谅。