我创建了一个包含300个时间序列的列表。
现在,我想为每个时间序列创建一个培训样本(通过最近3周),以构建预测模型。 因此,我想使用窗口函数对时间序列进行子集化,以跳过最近3周,如下所示。
# Creating training data
train_ts<-lapply(ts_list, function(x){
window(x,start=c(start_year,start_month),end=c(.....,.....))
}
)
但问题是每个时间序列的结束日期是不同的。
所以为了帮助我实现这个目的,是否有一个R函数可以返回ts对象的起始值和结束值?
我在这个网站上搜索无法找到解决方案。 感谢
答案 0 :(得分:3)
要获取ts
对象的开始和结束日期,请使用函数start
和end
。
set.seed(42)
# ts object starting in Jan. 2013 and ending in Dec. 2013
x <- ts(rnorm(12), start = c(2013, 1), end = c(2013, 12), frequency = 12)
start(x)
# [1] 2013 1
end(x)
# [1] 2013 12
答案 1 :(得分:2)
这是一个假设每周数据的简单示例:
x <- ts(rnorm(200), frequency=52)
endx <- end(x)
window(x, end=c(endx[1],endx[2]-3))
当然,一年中实际上并没有52周,但这可能是大多数分析都可以忽略的并发症。