web-dev-qa-db-ja.com

tsを使用した毎日の時系列..開始と終了を指定する方法

土曜日に始まり水曜日に終わる毎日の時系列があります。それに明確な毎週の期間があります。 Rのベクトルaに格納されているので、時系列オブジェクトに変換してみます-

ts(a,frequency=7)

これは私に与える-

Time Series:
Start = c(1, 1) 
End = c(13, 5) 

(1,1)と(13,5)はどういう意味ですか?そして、このシナリオで開始と終了を指定するための最良の方法は何ですか。インターネット上のすべての例は、毎日ではなく、毎年のデータを扱っています。

11
Rohit Pandey

ドキュメント(?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パラメーターの最初の数字は頻度に応じた期間の番号であり、2番目の数字はその期間の最初のインシデントです(すべてのシリーズが1月または日曜日に始まるわけではないため)。

3-開始点を指定しない場合、ts関数は、最初の期間の開始から開始していると想定します(したがって、この例では(1,1)

ここで、この時系列をより意味のあるものにするために、1年の週数(通常は1年に約52週あります)と最初の観測の日数(例:1 =日曜日)を計算できる可能性があります、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週の土曜日でした。

23
David Arenburg