将矩阵转换为 xts 对象

Convert a matrix to an xts object

我是 R 新手,需要使用 PANICr 包中的函数 getnfac。而且这个函数似乎只接受一个 xts 对象作为它的第一个参数。但是,在阅读了一些资料后,我仍然不明白 xts 对象是什么。谁能告诉我如何将 matrix 转换为 xts 对象?

下面我使用return矩阵作为第一个参数。因此我只需要将 return 转换为 xts 对象。

getnfac(return,143,"BIC3")
Error in getnfac(return, 143, "BIC3") : 
  x must be an xts object so lags and differences are taken properly

xts 是一个可扩展的时间序列对象,本质上是一个添加了一些位的常规 ts 对象(或更准确地说是 zoo 对象)。
名称的 'extensible' 部分是指如何添加您自己选择的属性。

虽然 matrix 可以很容易地转换为多变量时间序列

m <- matrix(1:16, 4)
m.ts <- ts(m)
index(m.ts)

xts 要求其索引(描述每个样本采集时间的向量)采用日期或时间格式

library(xts)
m <- matrix(1:16, 4)
d <- as.Date(1:nrow(m))
m.xts <- xts(m, order.by=d)
index(m.xts)

如果您的数据是以均匀间隔采样的,那么像上面那样的虚拟索引可能就可以了。如果不是,则需要提供与采样时间相对应的向量。

在我看来,getnfac() 函数的第一个参数应该是包含数据的矩阵。

除了以上答案, 您可以使用 coredata() about xts 对象转换矩阵格式。