这是一个基本问题,但我尝试搜索,但无法得到答案。
我有超过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
- 将其转换为每个公司的个人时间序列。
很高兴接受任何其他建议!
答案 0 :(得分:4)
没有黑白答案:两种对象类型都有不同用途的优势(虽然我几乎总是使用data.table
代替data.frame
来提问,因为你获得了更多的功能)。我个人在研究中可以互换使用,但通常以xts
格式保留原始基础数据(在xts
个对象中打勾或OHLC条数据)。
两种对象类型都很快,计算密集型代码用C语言编写。
如果时间序列的尺寸(长度或宽度)不大,您可以轻松地在安全级别来回传输(例如data.table("index" = index(xtsobj), coredata(xtsobj)
),然后根据需要合并data.tables
将证券组合成横截面类型的建模。对于我使用
xts
个对象必须使用相同类型的所有列(numeric
或character
是常见类型),如果您将分类变量与数字数据混合,则可能是一个限制(您可以将分类变量映射到数值以解决此问题,但这是额外的工作,并且在建模数据时可能会降低清晰度。)
xts
合并时间序列数据(merge
),特别是在不同的时间频率下,非常简单。它在TTR
和quantmod
中构建移动窗口技术指标也非常有效。您还可以使用quantmod
(chart_Series
和add_TA
)和xts
绘图工具(请参阅?plot.xts
)来显示开箱即用的烛台/ OHLC条数据。 xts
将滴答数据汇总到OHLC条形数据中,并使用to.period
等有用函数非常直接地更改条形数据系列的频率(例如,从5分钟到1小时,或到每日条形), period.apply
和endpoints
(使用C代码可以快速完成)。
如果您打算在预测模型(例如安全性,情感类别)中使用许多分类变量构建预测模型(许多线性回归或更复杂的模型),您不希望将其映射到数字,它可能最好与data.table
合作。 R中的许多预测模型(以及像聚类这样的无监督方法)要求数据采用data.frame
格式,在这种情况下,如果您的最终目标是以data.table/data.frame
格式存储/保存/加载数据可能更有意义预测建模。 VAR
/ var
R包中的urca
个模型也使用data.frame
格式。虽然注意到许多预测模型(通过caret
等)要求数据采用数字matrix
格式,您可以使用xts
轻松从coredata(xtsobj)
对象中提取数据data.frame
数据到matrix
格式通常也很简单。)
如果您的数据集非常大(每个安全性在内存中为大n
保留n
GB的价格数据,并且您希望按组重复聚合(例如,计算的平均值/ sd为按月和符号或月份和扇区返回,您可能会发现data.table更自然地使用),您可能会发现data.table
更高效,它旨在处理内存/ RAM中的大量数据并且比xts
操作更容易复制。