我正在使用R学习时间序列分析,并且在学习时遇到了这两个函数。我确实了解到这两者的输出都是由周期频率定义的周期性数据,唯一可见的区别是to.period()中的OHLC输出选项。
要使用这些功能中的特定功能时,是否要使用OHLC?
答案 0 :(得分:1)
to.period
和所有to.minutes,to.week,to.quarterly确实是用于OHLC数据的。
如果您使用函数to.period
,则它将从时段的第一天开始,时段的最后一天的结束以及指定时段的最高/最低价格开始。这些功能与quantmod / tidyquant / quantstrat软件包一起很好地工作。参见代码示例1。
如果提供to.period非OHLC数据,但是给出一个带有1个数据列的时间序列,则仍会返回某种OHLC。参见代码示例2。
现在period.apply
更有趣。在这里,您可以提供自己的功能以应用于数据。如果要将功能汇总到不同时间段,尤其是与端点结合使用时,这在时间序列数据中可能是一项功能强大的功能。索引主要由端点指定,因为有了端点,您就可以创建到达更高时间级别(从一天到一周/等等)的索引。参见代码示例3和4。
请记住,如果您有多于1列的数据,请记住将矩阵函数与period.apply一起使用,因为xts基本上是矩阵和索引。参见代码示例5。
有关this data.camp course的更多信息。
library(xts)
data(sample_matrix)
zoo.data <- zoo(rnorm(31)+10,as.Date(13514:13744,origin="1970-01-01"))
# code example 1
to.quarterly(sample_matrix)
sample_matrix.Open sample_matrix.High sample_matrix.Low sample_matrix.Close
2007 Q1 50.03978 51.32342 48.23648 48.97490
2007 Q2 48.94407 50.33781 47.09144 47.76719
# same as to.quarterly
to.period(sample_matrix, period = "quarters")
sample_matrix.Open sample_matrix.High sample_matrix.Low sample_matrix.Close
2007 Q1 50.03978 51.32342 48.23648 48.97490
2007 Q2 48.94407 50.33781 47.09144 47.76719
# code example 2
to.period(zoo.data, period = "quarters")
zoo.data.Open zoo.data.High zoo.data.Low zoo.data.Close
2007-03-31 9.039875 11.31391 7.451139 10.35057
2007-06-30 10.834614 11.31391 7.451139 11.28427
2007-08-19 11.004465 11.31391 7.451139 11.30360
# code example 3 using base standard deviation in the chosen period
period.apply(zoo.data, endpoints(zoo.data, on = "quarters"), sd)
2007-03-31 2007-06-30 2007-08-19
1.026825 1.052786 1.071758
# self defined function of summing x + x for the period
period.apply(zoo.data, endpoints(zoo.data, on = "quarters"), function(x) sum(x + x) )
2007-03-31 2007-06-30 2007-08-19
1798.7240 1812.4736 993.5729
# code example 5
period.apply(sample_matrix, endpoints(sample_matrix, on = "quarters"), colMeans)
Open High Low Close
2007-03-31 50.15493 50.24838 50.05231 50.14677
2007-06-30 48.47278 48.56691 48.36606 48.45318