gpt4 book ai didi

r - 带有 ts 的每日时间序列 .. 如何指定开始和结束

转载 作者:行者123 更新时间:2023-12-04 01:37:57 24 4
gpt4 key购买 nike

关闭。这个问题需要details or clarity .它目前不接受答案。












想改善这个问题吗?通过 editing this post 添加详细信息并澄清问题.

7年前关闭。




Improve this question




我有一个从星期六开始到星期三结束的每日时间序列。有一个明确的每周时间段。它存储在 R 中的向量 a 中。因此,我尝试将其转换为时间序列对象 -

ts(a,frequency=7)

这给了我 -
Time Series:
Start = c(1, 1)
End = c(13, 5)

(1,1) 和 (13,5) 是什么意思?在这种情况下指定开始和结束的最佳方法是什么。互联网上的所有示例都处理年度数据,而不是每日数据。

最佳答案

让我们来探索如何ts使用文档 ( ?ts ) 使用不同的频率

假设这是您的数据

dat <- data.frame(myts = sample(10, 24, replace = T),
Date = seq(as.Date("2008-10-11"), as.Date("2008-10-11") + 23, by = 1))

# myts Date
# 1 6 2008-10-11
# 2 9 2008-10-12
# 3 6 2008-10-13
# 4 9 2008-10-14
# 5 8 2008-10-15
# 6 6 2008-10-16
# 7 1 2008-10-17
# 8 9 2008-10-18
# 9 3 2008-10-19
# 10 5 2008-10-20
# 11 7 2008-10-21
# 12 4 2008-10-22
# 13 2 2008-10-23
# 14 9 2008-10-24
# 15 5 2008-10-25
# 16 9 2008-10-26
# 17 7 2008-10-27
# 18 8 2008-10-28
# 19 7 2008-10-29
# 20 2 2008-10-30
# 21 6 2008-10-31
# 22 6 2008-11-01
# 23 8 2008-11-02
# 24 1 2008-11-03

让我们比较相同数据和某个任意起点的不同频率的输出
print(ts(dat$myts, frequency = 7, start = c(1950, 3)), calendar = T)
# p1 p2 p3 p4 p5 p6 p7
# 1950 6 9 6 9 8
# 1951 6 1 9 3 5 7 4
# 1952 2 9 5 9 7 8 7
# 1953 2 6 6 8 1
print(ts(dat$myts, frequency = 12, start = c(1950, 3)), calendar = T)
# Jan Feb Mar Apr May Jun Jul Aug Sep Oct Nov Dec
# 1950 6 9 6 9 8 6 1 9 3 5
# 1951 7 4 2 9 5 9 7 8 7 2 6 6
# 1952 8 1
print(ts(dat$myts, frequency = 4, start = c(1950, 3)), calendar = T)
# Qtr1 Qtr2 Qtr3 Qtr4
# 1950 6 9
# 1951 6 9 8 6
# 1952 1 9 3 5
# 1953 7 4 2 9
# 1954 5 9 7 8
# 1955 7 2 6 6
# 1956 8 1
print(ts(dat$myts, frequency = 7), calendar = T)
# p1 p2 p3 p4 p5 p6 p7
# 1 6 9 6 9 8 6 1
# 2 9 3 5 7 4 2 9
# 3 5 9 7 8 7 2 6
# 4 6 8 1

我们可以从输出中学到 3 件事

1- ts熟悉 12 和 4 频率并将它们标识为月和季度,而它以不那么直接的方式打印 7 频率。

2- start 中的第一个数字参数是取决于频率的周期数,而第二个数字是该周期中的第一个事件(因为并非所有系列都从一月或周日开始)。

3- 当您没有指定起点时, ts函数假定您从第一个周期的开头开始(因此在您的示例中为 (1,1))

现在,为了使这个时间序列对您更有意义,您可以潜在地计算一年中的周数(因为我们通常一年有大约 52 周)和您第一次观察的天数(例如:1 = Sunday , 2 = 星期一等)并将它们解析为 start参数(见 ?strftime)
startW <- as.numeric(strftime(head(dat$Date, 1), format = "%W"))
startD <- as.numeric(strftime(head(dat$Date, 1) + 1, format =" %w"))
print(ts(dat$myts, frequency = 7, start = c(startW, startD)), calendar = T)
# p1 p2 p3 p4 p5 p6 p7
#39 6
#40 9 6 9 8 6 1 9
#41 3 5 7 4 2 9 5
#42 9 7 8 7 2 6 6
#43 8 1

这意味着我们的第一次观察(发生在 2008-10-11)是 2008 年第 39 周的星期六

关于r - 带有 ts 的每日时间序列 .. 如何指定开始和结束,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23604432/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com