4.1 時系列オブジェクトの生成と処理
4.1.1 時系列オブジェクトを生成する, ts(), as.ts(), is.ts()
自然な時間単位 年,月,週,一時間等 観測開始時間
start
観測終了時間
end
周波数
frequency
.単位時間内の観測時間の数.月別データなら,自然な時間単位「年」に対する周波数は
12
サンプリング比率
deltat
.自然な時間単位に対するサンプリング間隔を表す比率.月別データなら,自然な時間単位「年」に対する
deltat
は1/12
.周波数とサン プリング比率どちらか一方を与えれば良い周期
cycle
.各データの観測時間情報を表す自然な時間単位とその中での周波数を表す対.例えば年と月
(1993,5)
,年と第2
四半期(2002,Qtr2)
,月と日(12,13)
, 週と曜日(43,Fri)
等注意:時系列データに固有の特徴として,系統的にデータ値が欠損することがある.例え ば,株価等の経済時系列は,土日・祭日はデータが本来無い.
注意:
R
における多変量時系列は,観測値がベクトルの時系列ではなく,時間情報が同一 の複数の一変量時系列の集まりである.class
結果のクラス名.もしNULL
ならクラス名は与えられない.既定値は単一の時 系列に対しては"ts"
,多変量時系列に対しては"mts"
と"ts"
names
多変量系列中の個々の系列に与えられる名前の文字ベクトル.既定値はdata
の列名か,さもなければ
Series 1, Series 2,. . .
とされるx
任意のR
オブジェクト幾つかの引き数には,省略時既定値が指定されている.
R
の関数の名前付き引数名の省 略規則から,この場合順に最低da, s, e, f, de, t, c, n
だけで良い.as.is()
は引き数のオブジェクトを時系列オブジェクトに強制変換し,is.ts()
は引き数のオブジェクトが時系列オブジェクトかどうか判定する.
ts()
はクラス"ts" (
そし て追加の属性を持つ)
の時系列オブジェクトを作る.これらはベクトルか行列で,等間隔 の時刻で観測されたデータを表す.行列の場合,各列は単一の(
一次元)
時系列を含むと される.時系列は少なくとも一つの観測値を含まなければならない.観測値は必ずしも数 値である必要は無いが,非数値の時系列に対するサポートは極めて限られている.クラス
"ts"
は幾つかのメソッドを持つ.例えば,加減乗除の算術演算は(
可能である 限り)
時間軸を合わせて行われる.鈎括弧演算子による部分時系列の抽出ができる(
例え ば,EuStockMarkets[, "DAX"])
.しかしながら,第一(
もしくは唯一の)
次元に関する 部分抽出は,行列に対する部分抽出と同様,行列かベクトルを返す.引き数frequency
の値は,系列が各単位時間区間中の整数個の時刻で観測される場合に使用される.例え ば,自然な単位時間が一週間の時,データが日別に観測されるならfrequency=7
,自然 な単位時間が一年間の時,データが月別に観測されるならfrequency=12
,とする.値4
と12
は,例えば(
オブジェクト内容のコンソール出力)
では,それぞれ 四半期,月別系列と仮定される.もしオブジェクトが時系列属性
tsp
を持てば,関数as.ts()
はそれらを,時系列の始 点,終点そして周波数とみなす.関数is.ts()
は時系列オブジェクトへの強制変換関数 である.> ts(1:10, freq=4, start=c(1959, 2)) # 1959年の第2四半期から始まる時系列
Qtr1 Qtr2 Qtr3 Qtr4 # 年度名と四半期名が自動的に付く
1959 1 2 3
1960 4 5 6 7
1961 8 9 10
> ts(1:15, freq=12, start=c(1959, 2)) # 年と月 Jan Feb Mar Apr May Jun Jul Aug Sep Oct Nov Dec
1959 1 2 3 4 5 6 7 8 9 10 11
1960 12 13 14 15
> ts(1:15, freq=31, start=c(5, 19)) # 月と曜日 Time Series:
Start = c(5, 19) End = c(6, 2) Frequency = 31
[1] 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
> ts(1:15, freq=7, start=c(5, 19)) # 週と曜日 Time Series:
Start = c(7, 5) End = c(9, 5) Frequency = 7
[1] 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
> print(ts(1:10, freq=7, start=c(12,2)), calendar=TRUE) # 時系列の出力
p1 p2 p3 p4 p5 p6 p7 # print.ts()が使われる
12 1 2 3 4 5 6
13 7 8 9 10
# 正規乱数の累積和からなる時系列(1954年7月から始まる)
gnp <- ts(cumsum(1 + round(rnorm(100), 2)), start = c(1954, 7), freq = 12)
plot(gnp) # plot()による時系列gnopのプロット.plot.ts()が使われる
# 多変量時系列(引数名の省略記法に注意)
> z <- ts(matrix(rnorm(300), 100, 3), s=c(1961,1), f=12)
> attributes(z)
$dim # 行列次元属性
[1] 100 3
$dimnames # 行名属性(この場合無い)
$dimnames[[1]]
NULL
$dimnames[[2]] # 列名属性(自動的に付加されている)
[1] "Series 1" "Series 2" "Series 3"
$tsp # "tsp"属性
[1] 1961.00 1969.25 12.00
$class # クラスは"ts"(時系列で)
[1] "mts" "ts" # かつ"mts"(多変量)
> z # zの内容(3つの時系列からなる)
Series 1 Series 2 Series 3 Jan 1961 0.31182310 -1.13148093 -0.29498438 Feb 1961 1.29541452 -1.36851379 0.29349392 Mar 1961 -0.20436604 0.14915958 0.57753954
(途中省略)
Apr 1969 -0.73845864 -0.34393409 0.32143158
> plot(z) # Series1,2,3毎に別個にプロット
> plot(z, plot.type="single", lty=1:3) # 線種を変えて同時にプロット
# フェイズのプロット.組込み時系列データnhtempを使用
> class(nhtemp) # nhtempのクラスは"ts"
[1] "ts"
> is.ts(nhtemp) # nhtempは確かに時系列オブジェクト
[1] TRUE
# 引き続く2年分の気温の対の散布図(以下の図を参照)
> plot(nhtemp, lag(nhtemp, 1), cex = .8, col="blue", main = "Lag plot of New Haven temperatures")
48 49 50 51 52 53 54
48495051525354
Lag plot of New Haven temperatures
nhtemp
lag(nhtemp, 1)
1
2 3
4
5 6
7
8 9
10
11 12 13
14 15
16 17 18
19
20
21
22 23
24 25
26
27
28 29
30 31 32
33 34
35 36 37
38 39
40 41
42 43
44 45
46 47
48 49
50 51
52 53 54
55
56 5857
59
時系列のラグプロット
横軸は元の値,縦軸は一つ後の値