【问题标题】:filling the holes in a time series data填补时间序列数据中的漏洞
【发布时间】:2015-01-08 15:10:05
【问题描述】:

所以我试图用 R 中的股票和指数建立一个因子模型。我总共有 30 只股票和 16 个指数。它们都是从“2013-1-1”到“2014-12-31”的时间序列。至少我所有的股票都是。我所有的索引都在这里和那里缺少一些条目。例如,我所有股票的数据长度为 522,但一个指数的长度为 250、一个 300、另一个 400 等。但它们都从“2013-1-1”开始,到“2014-12-”结束31"。因为我的指数数据有漏洞,所以我无法检查相关性并用它们建立线性模型。我基本什么都做不了。所以我需要填补这些漏洞。我正在考虑用他们的平均数来填补这些漏洞。但我不知道该怎么做。当然,我对其他想法持开放态度。你能帮助我吗?这对我来说是一个重要的学期项目,所以有很多事情要做......

【问题讨论】:

  • 您好,欢迎来到 Stack Overflow。此类与编程无关的问题最好在另一个 Stack Exchange 站点上提供,例如 Cross Validated,该站点用于统计。我感觉他们会推荐归类。
  • 我认为这是关于编程的。不是吗?我基本上是在尝试在不更改现有日期的情况下填补时间序列中的漏洞。
  • 根据问题的措辞方式,您似乎在寻求一般的方法学建议,这会更好地来自统计社区,而不是编程建议。如果您正在寻找编程建议,请提供您正在使用的语言以及您尝试过的示例。
  • 您是否尝试使用特定语言进行操作?你已经尝试过什么?
  • 哦,我的错。我当然想在 R 中做到这一点。在我看来,我有 2 个选择:修剪股票数据,考虑到我所有的指数在不同的条目中都有漏洞,这几乎是不可能的,或者填充指数数据中的漏洞。我想我可以用它的意思来填充它,但我不知道该怎么做。

标签: time correlation finance series stock


【解决方案1】:

根据您的 cmets 进行编辑(并修正我犯的错误):

这是基本的数据管理,令我惊讶的是,您需要在不知道如何merge() 以及如何创建数据帧的情况下处理时间序列数据。

创建一些假的日期和值数据,日期中有漏洞:

    dFA <- data.frame(seq.Date(as.Date("2014-01-01"), as.Date("2014-02-28"), 3))
    names(dFA) <- "date"
    dFA$vals <- rnorm(nrow(dFA), 25, 5)

创建从 dFA 中的 min 值到 dFA 中的 max 值的日期数据框

    dFB <- as.data.frame(seq.Date(as.Date(min(dFA$date, na.rm = T), format = "%Y-%m-%d"), 
                                  as.Date(max(dFA$date, na.rm = T), format = "%Y-%m-%d"), 
                                  1))

    names(dFB) <- "date"

将两个数据框合并在一起

    tmp <- merge(dFB, dFA, by = "date", all = T)

tmp$vals 中的NA 值更改为您想要的任何值

    tmp$vals[is.na(tmp$vals)] <- mean(dFA$vals)
    head(tmp)
            date     vals
    1 2014-01-01 18.48131
    2 2014-01-02 24.16256
    3 2014-01-03 24.16256
    4 2014-01-04 28.78855
    5 2014-01-05 24.16256
    6 2014-01-06 24.16256

以下原创评论

填空的最简单方法是使用merge()

创建一个新的数据框,其中一个向量作为一系列日期,跨越原始数据框的范围,另一个向量使用您要填充的任何内容(零,意味着,任何)。然后就merge()两人一起:

    merge(dFB, dFA, by = [the column with the date values], all = TRUE)

【讨论】:

  • 如果我听起来像个愚蠢的人,请原谅我,但我是新手。我如何获得我的股票数据具有的确切时间序列?因为我的股票数据包含所有的日子、月份和年份。我必须从我的时间序列中提取它还是可以构建一个新的?
  • 我迷路了。我拥有的股票数据中没有周末。我刚刚意识到它们不是时间序列的形式。我是从雅虎财经进口的。他们只有时间信息。就这样。假设我有一个向量,其中包含 2013 年 1 月 1 日至 2014 年 12 月 31 日之间股票的收盘价,不包括周末。让我们假设它被称为 x。我有一个向量,其中包含从 2013 年 1 月 1 日到 2014 年 12 月 31 日的索引数据,但它周围都有差距。让我们称之为y。 x 的长度为 522,y 的长度为 350。
  • 我希望索引向量的形式可以计算它与股票等的相关性。我知道我在这里问的太多了,你甚至不必写你之前做的解释但如果你能向我解释我该怎么做,我真的很感激。请假设您在解释时正在与白痴交谈(当然,如果您愿意这样做的话)
  • 我上面给出的答案写得很简单,这样您就可以轻松地“填补”日期向量中的空白。您将空白值更新为什么取决于您。至于将您的数据转换为时间序列,请参阅ts()。我对为你做你的学期项目不感兴趣,但如果你只需要相关性,请查看cor()
  • 但在您的示例中,您使用每周 7 天的直接向上序列。我需要摆脱周末。有没有捷径可以做到这一点?
猜你喜欢
  • 1970-01-01
  • 2011-11-04
  • 2010-12-15
  • 2020-03-19
  • 2020-05-31
  • 1970-01-01
  • 2016-12-30
  • 2021-11-11
  • 1970-01-01
相关资源
最近更新 更多