1

自 2008 年以来,我有一个 Euro Stoxx 50 指数的每日 OHLC 数据集,如下所示:

              Open    High     Low   Close Volume Adjusted
2008-01-02 4393.53 4411.59 4330.73 4339.23      0  4339.23
2008-01-03 4335.91 4344.36 4312.34 4333.42      0  4333.42
2008-01-04 4331.25 4343.46 4253.69 4270.53      0  4270.53
2008-01-07 4268.43 4294.45 4257.22 4283.37      0  4283.37
2008-01-08 4292.40 4330.56 4292.40 4295.23      0  4295.23
2008-01-09 4285.34 4285.34 4246.92 4258.32      0  4258.32

我已经使用这个TTR包计算了几个技术规则。因此,我得到了一个更大的数据集:

               RSI2     RSI3     RSI4     RSI5    RSI10    RSI20     SMA5    SMA20    SMA60     EMA5    EMA20    EMA60      atr      SMI
2009-01-07 97.964071 92.62210 87.21605 82.40040 66.95642 55.19221 19720.64 18655.29 17758.68 2556.777 2556.777 2556.777 82.06602 27.52145
2009-01-08 43.766573 58.62387 62.97794 64.03382 60.23197 52.99739 19756.44 18666.60 17754.07 2566.499 2566.499 2566.499 80.33416 29.12141
2009-01-09 27.182247 44.97072 52.29336 55.50633 56.74068 51.80171 19776.92 18674.31 17750.34 2523.372 2523.372 2523.372 78.65886 29.37878
2009-01-12 13.371347 30.46561 39.97055 45.24210 52.16207 50.17764 19788.02 18683.05 17748.76 2524.466 2524.466 2524.466 78.58966 28.17871
2009-01-13  6.141462 19.52298 29.30404 35.68593 47.25383 48.32987 19772.25 18693.01 17749.35 2488.165 2488.165 2488.165 76.08326 25.34705
2009-01-14  2.712386 11.97834 20.69541 27.26891 42.10718 46.23469 19747.87 18694.16 17742.88 2449.353 2449.353 2449.353 75.42231 20.65686

我想知道每个工作季度最重要的技术规则是什么。我决定使用已在randomForest包中编码的随机森林 RI 算法,计算 Breiman 重要性度量(感谢该importance函数)并选择具有大于季度样本平均值的可变重要性度量的技术规则. 最终,我想得到整个周期的技术规则的缩减数据集,用于计算统计等。

考虑到重要技术规则的数量可能随时间变化,包含最重要技术规则的阵列的尺寸从四分之一到另一个都不相同。因此,我不能将所有值都放在一个对象中。

有没有一种方便的方法来存储我所有的季度数据集?

谢谢。

4

1 回答 1

1

使用数据框或 xts 对象。它们都可以很好地处理不同数量的列。在您的情况下,由于您的所有数据列都是数字类型,您可以使用 xts 对象。

您在标题中说“滚动”。您的意思是要分析 90 天的重叠期吗?例如 2008-01-02 到 2008-04-02,然后是 2008-01-03 到 2008-04-03,等等?如果可以的话rollapply(data,width=90,FUN)可以使用。如果你想处理宿舍,一次一个,quarters <- split(data,'quarters')然后(因为这会给你一个 xts 对象列表)lapply(quarters,FUN)

我认为您使用单一数据结构的问题是 SMA5 从 2008 年 1 月 8 日开始可用,但 SMA200 直到年底才可用;这意味着在前三个季度中,SMA200 列将只包含 NA?这可以。在将数据传递给 RandomForest 之前保留 NA 并处理它们。

在 FUN 中,您将像这样删除包含 NA 的列(其中xq一个 xts 对象仅包含四分之一的数据):

xq = xq[,!apply(is.na(x),2,any)]

更新:重新阅读您的问题和后续问题后,我认为以上回答了您没有的问题!我认为问题在于您的 TTR 表中有 NA,而 RandomForest 不喜欢它们。

回想起来,我认为您的实际问题是“随机森林从每个季度的分析中为我提供了不同数量的良好指标,我该如何处理?” 答案是一个参差不齐的数据结构,一个列表。每季度一个列表条目。列表条目本身可以是任何东西,甚至是 xts 对象,但在这种情况下,指标名称的简单字符向量似乎是完美的。这在Zach对您的其他问题的回答中得到了很好的体现。

于 2012-09-25T23:49:19.107 回答