• 検索結果がありません。

時系列関連の作図関数

ドキュメント内 ためになった他の人のサイト script of (ページ 137-142)

総称的プロット関数

plot()

は以下のように,時系列オブジェクトに関する多くのメ ソッド関数を持つ.通常これらは総称的関数

plot()

に隠されており,特に特殊な指定を 必要としない限り,ユーザーが個別に使う必要は無い.したがって,ここでは個別の紹介 はしないことにする.

> methods(plot)

[1] plot.HoltWinters* plot.POSIXct plot.POSIXlt [4] plot.TukeyHSD plot.acf* plot.data.frame [7] plot.decomposed.ts* plot.default plot.dendrogram*

[10] plot.density plot.factor plot.formula [13] plot.function plot.hclust* plot.histogram

[16] plot.isoreg* plot.lm plot.mlm

[19] plot.ppr* plot.prcomp* plot.princomp*

[22] plot.profile.nls* plot.spec plot.spec.coherency [25] plot.spec.phase plot.spec1* plot.stl*

[28] plot.table plot.ts plot.tskernel*

Non-visible functions are asterisked

4.9.1 時系列のラグプロット lag.plot()

時系列をそのラグ版に対してプロットする.自己相関が低い場合でも,「自己従属性を」

を可視化するのに役立つ.

書式:

lag.plot(x, lags = 1, layout = NULL, set.lags = 1:lags, main = NULL, asp = 1,

font.main=par("font.main"), cex.main=par("cex.main"), diag = TRUE, diag.col="gray", type="p", oma =NULL, ask = NULL, do.lines = n <= 150, labels = do.lines, ...)

引数:

x

(

)

変量時系列

lags

必要とするラグプロットの数.引数

set.lags

を参照

layout

多重プロットのレイアウト.典型的には

par()

mfrow

引数.既定では全

てのプロットが一枚に収まる正方形レイアウト

(

関数

n2mfrow()

を利用

)

set.lags

正整数のベクトルで,使われるラグの集まりの指定を可能にする.既定値

1:lags

main

各図表のトップに置かれる主ヘッダータイトルの文字列

asp

縦横比

( plot.default()

を見よ

)

font.main,cex.main

タイトルに対する属性

( par()

を見よ

) diag

論理値.対角線

x=y

を引くか?

diag.col

対角線を引く場合のその色指定

type

使われるプロットの種類.意味に付いては

plot.ts()

を参照

oma

周辺余白

( par()

を参照

)

ask

論理値.もし真なら,新しい画面を始める前に問い合わせがある

do.lines

論理値で,線を引くかどうかを指定する

labels

論理値で,ラベルを描くかどうかを指定する

... plot.ts()

に対する追加引数

これは

S

版よりもより柔軟で,異なった既定動作を持つ.内部的な一貫性から

head =

の代わりに

main =

を使う.実際の作業を行う

plot.ts()

関数も参考にしよう.

# New Havenの平均気温データnhtempを使用(以下の図を参照)

> lag.plot(nhtemp, 8, diag.col = "forest green")

> lag.plot(nhtemp, 5, main="Average Temperatures in New Haven")

# 複数画面の場合は切替える前に問い合わせをする(以下の図を参照)

> lag.plot(nhtemp, 6, layout = c(2,1), asp = NA,

main = "New Haven Temperatures", col.main = "blue")

# 四半期毎の歳入時系列(4変量時系列)freenyを使用(以下の図を参照)

> lag.plot(freeny.x, lag = 3) # 多変量時系列(しかし非定常)

# 太陽黒点数データsunspotsを使用.長いので線を引かない(以下の図を参照)

> lag.plot(sunspots,set=1:4,pch=".",col="gold") # 原データ

> lag.plot(sqrt(sunspots),set=1:4,pch=".",col="gold") # 平方根を取る

# 対数を取る(0データがあるので1を加えておく)

> lag.plot(log(sunspots+1), set = 1:4, pch = ".", col = "gold")

lag 1

lag quarterly revenue

12345 6 78 9

101112 13 1415

16 17 181920212223

242526 272829

3031 32 33

3536343738 8.8 9.0 9.2 9.4 9.6 9.8

8.89.09.29.49.69.8

lag 2

lag quarterly revenue

1234 5 6 789

10111213 1415

1617 18192021

2223 242526

27 28293031

32 33 34353637

lag 3

lag quarterly revenue

12345 6 78 9

10111213 1415

1617 18192021

2223 242526

272829 3031 32 33 343536 8.8 9.0 9.2 9.4 9.6 9.8

lag 1

price index

21 3 4 5 9678 1110 121314 1615 17 1918 2120 22 23 2524 2627 2928 30 31 3332 34 35 36 37

38 4.34.44.54.64.7

lag 2

price index

21 3 4 5 867 109 11 1312 1514 1716 1918 2120 22 23 2524 2726 2928 30 31 3233 34 35 36 37

lag 3

price index

21 34 5 76 8 10119 1312 1514 1716 1918 2120 22 23 2425 2726 2928 30 31 3332 34 35 36

4.34.44.54.64.7

lag 1

income level

123 4567

8 9 101112

13 14 151617

181920 21222324252627282930313233

34 35 36 3738

5.96.06.16.2

lag 2

income level

123 4567

8 9 101112

13 14 151617

181920 212223242526272829

3031323334 35 3637

lag 3

income level

1 234567 8 9 101112

13 14 15 1617 181920

212223242526272829303132 33 34 35 36

lag 1

market potential

123456 78 910

1112 1314

1516171819 202122

23 2425 26

2728 2930

3132333435 363738

13.0013.0513.1013.15

lag 2

market potential

123456 78

910 1112

1314 1516171819

202122 2324 2526

2728 2930

31323335343637

12.9513.0013.0513.10 13.15

lag 3

market potential

123456 78

910 1112

1314 1516171819

20212223242526 2728

2930 313233

343536

13.0013.0513.1013.15

lag 1

sunspots050100150200250

0 50 100 150 200 250

lag 2

sunspots

lag 3

sunspots

lag 4

sunspots 050100150200250

0 50 100 150 200 250

ラグプロット.四半期毎の歳入データ(左,4系列毎にラグ3まで).太陽黒点数データ (右,原データ,ラグ4まで).

lag 1

sqrt(sunspots)

051015

0 5 10 15

lag 2

sqrt(sunspots)

lag 3

sqrt(sunspots)

lag 4

sqrt(sunspots) 051015

0 5 10 15

lag 1

log(sunspots + 1)0123456

0 1 2 3 4 5

lag 2

log(sunspots + 1)

lag 3

log(sunspots + 1)

lag 4

log(sunspots + 1) 0123456

0 1 2 3 4 5

ラグプロット.太陽黒点数データ(左,平方根変換,ラグ4まで).太陽黒点数データ(右,

対数変換,ラグ4まで)

4.9.2 時系列の季節成分等をプロットする monthplot()

時系列の季節成分

(

または,他の副系列

)

をプロットする.各季節

(

もしくは他のカテゴ リ

)

毎に時系列がプロットされる.現在の作図デバイスにプロットが行われるが,返り値 は無い.

書式:

monthplot(x, labels=NULL, times, phase, base, choice, ...)

引数:

x

時系列,または関連するオブジェクト

labels

各「季節」に対するラベル

times

各観測値に対する時間

phase

各「季節」に対する指示

base

副系列の参考線に対して使われる関数

choice stl

または

StructTS

オブジェクトのどの副系列か?

...

作図パラメータ

この関数は時系列から副系列を取り出し,それを一つの画面にプロットする.

ts(),

stl()

そして

StructTS()

用のメソッドは内部に記録された周波数,開始,終了時間を

スケールと季節を設定するために使う.既定のメソッドは,観測値が

12

個毎のグループ になっていると仮定するが,これは変更可能である.

labels

が与えられないが,

phase

が与えられていると,

labels

の既定値は

phase

中 のユニークな値となる.もし双方が与えられると,

phase

値は

labels

配列中の添字と 仮定される.つまり,それらは

1

から

length(labels)

の範囲中にあるべきである.

# 炭酸ガス濃度データco2を使用.対数値系列のstl()関数による分解

> fit <- stl(log(co2), s.window = 20, t.window = 20)

> par(mfrow = c(2,2)) # 画面を2x2分割

# 原データ,季節,傾向,残差系列を月別にプロット

> monthplot(co2, ylab = "data", cex.axis = 0.8)

> monthplot(fit, choice = "seasonal", cex.axis = 0.8)

> monthplot(fit, choice = "trend", cex.axis = 0.8)

> monthplot(fit, choice = "remainder", type = "h", cex.axis = 0.8)

> (quarter <- (cycle(co2) - 1) %/% 3) # 12ヵ月を四半期毎にラベル付け Jan Feb Mar Apr May Jun Jul Aug Sep Oct Nov Dec

1959 0 0 0 1 1 1 2 2 2 3 3 3

1960 0 0 0 1 1 1 2 2 2 3 3 3

(以下省略)

> monthplot(co2, phase = quarter) # 四半期毎にプロット

data

JFMA MJ JA SOND

320330340350360 seasonal

J FMAM JJ AS OND

−0.010−0.0050.0000.005

trend

JFMA MJ JA SOND

5.755.805.855.90 remainder

J FMAM JJ AS OND

−0.002−0.0010.0000.0010.002 co2

0 1 2 3

320330340350360

炭酸ガス濃度の対数値系列の副系列のプロッ ト.原データ(左上),季節系列(右上),傾向 系列(左下),残差系列(右下).四半期毎の系 列.横線は副系列の平均値位置を示す

原データ(左上),季節系列(右上),傾向系列 (左下),残差系列(右下).四半期毎の系列.

横線は副系列の平均値位置を示す

4.9.3 複数の時系列を一つの画面にプロット ts.plot()

複数の時系列を一つの画面にプロットする.

plot.ts()

とは異なり,各系列は異なっ た時間情報を持っても良いが,周波数は同じでなければならない.一つの時系列に対して も使えるが

plot()

の使用が簡単で好ましい.

書式:

ts.plot(..., gpars = list())

引数:

...

一つ以上の一変量時系列,もしくは多変量時系列

gpars

プロット関数に渡される名前付きの作図パラメータ.普通使われるものを直接

...

に置くことができる

# 英国の呼吸器疾患死亡者数UKLungDeathsを使用(以下の図を参照)

> ts.plot(ldeaths, mdeaths, fdeaths, # 両性,男性,女性死亡者数を同時プロット gpars=list(xlab="year", ylab="deaths", lty=c(1:3)))

year

deaths

1974 1975 1976 1977 1978 1979 1980

5001000150020002500300035004000

英国の呼吸器疾患死亡者数 上から,両性,男性,女性死亡者数

ドキュメント内 ためになった他の人のサイト script of (ページ 137-142)