填补时间序列数据中的漏洞

时间:2015-01-08 15:10:06

标签: time correlation finance series stock

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

1 个答案:

答案 0 :(得分:1)

根据您的意见编辑(并修正我犯的错误):

这是基本的数据管理,我很惊讶您需要使用时间序列数据而不知道如何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)

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

    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)