【问题标题】:Data structure for time-series analysis in R [closed]R中时间序列分析的数据结构[关闭]
【发布时间】:2017-02-24 13:27:07
【问题描述】:

这是一个基本问题,但我尝试搜索并没有得到答案。

我有超过 1 万条时间序列记录,涉及 420 家不同的公司。对于每家公司,我都有一个时间戳(月/年)和一些变量。时间序列的长度不同。

在这个阶段,所有记录都在一个 dataframe 中,看起来像这样

Date         Code   Var1    Var2    Var3    Var3
01/01/2010   AAA                
01/02/2010   AAA                
01/03/2010   AAA                
01/01/2010   BBB                
01/02/2010   BBB                
01/03/2010   BBB                
01/04/2010   BBB                
01/01/2010   CCC                
01/02/2010   CCC                
01/03/2010   CCC                

稍后我需要进行互相关、时间序列聚类并构建向量自回归模型。

问题:

处理此类数据的准则是什么: - 按原样使用dataframe - 将其转换为每个公司的单独时间序列。

很高兴接受任何其他建议!

【问题讨论】:

    标签: r dataframe time-series xts cross-correlation


    【解决方案1】:

    没有非黑即白的答案:两种对象类型在不同的目的上都有各自的优势(尽管在问你的问题时我几乎总是使用data.table 而不是data.frame,因为你可以获得更多的功能。)。我个人在研究中可以互换使用两者,但通常以xts 格式保留原始原始基础数据(xts 对象中的刻度线或 OHLC 条形数据)。

    两种对象类型都很快,计算密集型代码是用 C 编写的。

    如果您的时间序列的维度(长度或宽度)不大,您可以在安全级别轻松地来回传输(例如data.table("index" = index(xtsobj), coredata(xtsobj)),然后合并data.tables,如果您希望合并证券为横截面类型的建模。对于我使用的时间序列,我通常会在两种对象类型之间来回切换

    xts 对象必须使用相同类型的所有列(numericcharacter 是常见类型),如果您将分类变量与数值数据混合使用,这可能是一个限制(您可以映射分类变量到数值来解决这个问题,但这是额外的工作,并且在建模数据时会降低清晰度)。

    xts 使得合并时间序列数据(与merge),特别是在不同的时间频率在一起,非常简单。它也非常适合在TTRquantmod 中构建移动窗口技术指标。您还可以使用quantmodchart_Seriesadd_TA)和xts 绘图工具(请参阅?plot.xts)来可视化开箱即用的烛台/OHLC 柱数据。 xts 使用 to.periodperiod.applyendpoints(使用 C 代码可以快速完成)。

    如果您要构建预测模型(许多线性回归,或更复杂的模型),并且您的预测模型中包含许多您不想映射到数字的类别变量(例如安全部门、情绪类别),则可能最好与data.table 合作。 R 中的许多预测模型(以及聚类等无监督方法)要求数据采用 data.frame 格式,在这种情况下,如果您的最终目标是预测建模,则以 data.table/data.frame 格式存储/保存/加载数据可能更有意义。 var/urca R 包中的VAR 模型也使用data.frame 格式。尽管注意到许多预测模型(通过caret 等)要求数据为数字matrix 格式,您可以使用coredata(xtsobj)xts 对象中轻松提取(将data.frame 数据转换为matrix格式通常也很简单)。

    如果您的数据集非常大(每个证券在内存中保存 n GBs 的价格数据,对于较大的 n),并且您希望按组进行重复聚合(例如,按月计算的平均收益/标准差和符号或月份和扇区,您可能会发现 data.table 使用起来更自然),您可能会发现 data.table 效率更高,它旨在处理内存/RAM中的大量数据,并且往往会做更少复制比xts 操作。

    【讨论】:

      猜你喜欢
      • 2023-04-07
      • 2012-09-25
      • 1970-01-01
      • 2017-05-02
      • 2017-02-22
      • 2013-09-08
      • 2019-07-15
      • 2016-08-12
      • 1970-01-01
      相关资源
      最近更新 更多