繁体   English   中英

R:如何在现有的 R 时间序列类中创建具有多个时间尺度的时间序列对象?

[英]R: How can I create a time series object with multiple time scales in an existing R time series class?

我希望在现有的 R 时间序列类型之一中创建一个时间序列对象,其中观察值用两种时间标记:序数时间,连续整数的索引大于、小于或等于观察之前,之后,或与另一个同时; 和基本时间,由标准日期(天,至少对于初学者而言)组成。

我的实际数据来自三个子日周期,每个周期都可以有多个(数字,非计数)观察或零观察。 我的订单指数是我衡量时间的主要指标,它将同一时期的观察结果视为同一时间,并删除没有发生任何事件的时期。 我还想要日期,因为我想测试日历效果。

这是一个玩具数据集:

set.seed(1)
dates. <- seq(as.Date("2020-03-03"), by = "day", length.out=8)[c(1, 1, 2, 3, 3, 3, 4, 4, 4, 8, 8, 8, 8)]
index. <- c(1, 2, 3, 4, 4, 5, 6, 7, 8, 9, 9, 9, 10)
dat. <- rnorm(13)  
tib_ts <- tibble(dates., index., dat.)
tib_ts
# A tibble: 13 x 3
   dates.     index.   dat.
   <date>      <dbl>  <dbl>
 1 2020-03-03      1 -0.626
 2 2020-03-03      2  0.184
 3 2020-03-04      3 -0.836
 4 2020-03-05      4  1.60 
 5 2020-03-05      4  0.330
 6 2020-03-05      5 -0.820
 7 2020-03-06      6  0.487
 8 2020-03-06      7  0.738
 9 2020-03-06      8  0.576
10 2020-03-10      9 -0.305
11 2020-03-10      9  1.51 
12 2020-03-10      9  0.390
13 2020-03-10     10 -0.621

我试图弄清楚如何使用 zoo、xts 和 tsibble 来做到这一点,但遇到了两个问题。 首先,虽然每个观察都有自己的日期和索引值,但日期和索引值都可以与在无法区分的时间(在那个时间尺度)发生的多个观察相关联。 第二个是我想在有时一个时间度量上使用通常的时间工具数组,有时在另一个时间度量上使用,并且还没有找到在度量之间来回切换的方法。

但是,我确信一个实现必须已经存在于现有的类或包中,因为相同或相似的时间结构存在常见问题。 以美元价值的大伤亡损失为例,按小时、天或月汇总。 在任何聚合规模下,都会有没有损失的时期和有多个损失的时期。 与每日最高和最低值类似,无论是温度还是股票价格。 你知道它们在昨天的高点和低点之后和明天之前,但你知道哪个先到,或者它们是相隔两分钟还是 20 小时。 股票价格数据通常将周一视为周五后的第二天,因为在此期间没有交易发生。 等等。

假设值是values ,数字是ix ,日期是d 然后将数字分配给d的名称并使用它创建一个动物园对象:

library(zoo)

values <- 1:4

ix <- c(0, 3, 4, 6)
d <- as.Date("2000-01-01") + ix
names(d) <- ix

z <- zoo(values, d)
time(z)
##            0            3            4            6 
## "2000-01-01" "2000-01-04" "2000-01-05" "2000-01-07" 

在这个例子中,任意两个数字之间的差异和对​​应日期之间的差异是相同的,但这不是必需的。 这些数字可能与日期无关。

如果数字确实与日期有上述关系,那么另一种可能性是只使用日期,然后在需要时使用它来导出数字:

zz <- zoo(values, unname(d))
as.numeric(time(zz) - time(zz)[1]) # derive numbers from dates
## [1] 0 3 4 6

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM