R のインストール
  http://cran.ism.ac.jp (統計数理研究所のミラーサイト)

本講義関連時系列解析用のRパッケージ

TSSS(Time Series analysis with State Space model)パッケージ
  http://jasp.ism.ac.jp/ism/TSSS/ 

TIMSACパッケージ
  http://jasp.ism.ac.jp/ism/timsac/ 

TTR パッケージ
options(repos="http://cran.ism.ac.jp")
install.packages("TTR")
library(TTR)

----------------------------------------------------------
####################
# データの読み込み #
####################

# 船舶のデータ
hakusan <- as.ts(read.csv("hakusan_new.csv"))
hakusan1 <- hakusan[,1]   # 方向角速度データ

# 太陽黒点数データ
sunspot <- as.ts(read.csv("sunspot_new.csv"))

# 東京の日最高気温データ
maxtemp <- as.ts(read.csv("maxtemp.csv"))

# アメリカの食品産業に従事する労働者人口
blsfood <- as.ts(read.csv("blsfood_new.csv"))

# 工業製品の卸売り高
whard <- as.ts(read.csv("whard_new.csv"))

# 地震データ(東西方向)
mye1f <- as.ts(read.csv("mye1f_new.csv"))

# 日経225データ
nikkei225 <- as.ts(read.csv("nikkei225_new2.csv",header=TRUE))

# 東京降雨データ(2年間の降雨日数)
rainfall <- as.ts(read.csv("rainfall_new.csv",header=TRUE))
rainfall2 <- rainfall[,4]/2  # 2年間の平均

# 榛原地下水位データ
haibara <- as.ts(read.csv("haibara_new.csv"))



#########################
### データのプロット ###
#########################
par(mar=c(2,2,1,1)+0.1) # 余白を小さくする
plot(hakusan1)
plot(sunspot)
plot(maxtemp,ylim=c(0,35))
plot(blsfood)
plot(whard)
plot(mye1f)
plot(nikkei225)
plot(lynx)
plot(haibara[,c(2,4)])   #榛原データの地下水位,気圧
plot(hakusan[,c(3,4,7)]) #船舶データの横揺れ,縦揺れ,舵角
plot(rainfall2,type="h") #2年間の降水割合


##############################
### WHARDデータの対数変換 ###
##############################
plot(whard)
plot(log(whard))  # log(whard)のプロット


################################
### 日経225データの対数差分 ###
################################
plot(diff(log(nikkei225)))
# または
y <- log(nikkei225)
z <- diff(y)
plot(z)


##############################
### WHARDデータの季節階差 ###
##############################
# 季節階差
y<-log(whard)
z<-rep(NA,n)
n <- length(whard)
period <- 12
z[1:n] <- NA
for(i in period+1:n){
z[i] <- y[i]-y[i-period]
}
plot(as.ts(z))

# 前期比
plot(whard/lag(whard))

# 前年同期比
plot(whard/lag(whard,k=-12))


################################
### 移動平均と移動メディアン ###
################################

# 移動平均フィルタ(TTRパッケージの関数 SMA)
plot(maxtemp,ylim=c(0,40))
x <- SMA(maxtemp,17)
lines(x,col=2,lwd=1)

# k=5,17,29の移動平均
plot(SMA(maxtemp,5),ylim=c(0,40))
plot(SMA(maxtemp,17),ylim=c(0,40))
plot(SMA(maxtemp,29),ylim=c(0,40))

# 移動平均フィルタ(自作版)

plot(maxtemp,ylim=c(0,40))
y <- maxtemp
ndata <- length(maxtemp)
y[1:ndata] <- NA
kfilter <- 17
n0 <- kfilter+1
n1 <- ndata-kfilter
for(i in n0:n1){
i0 <- i-kfilter
i1 <- i+kfilter
y[i] <- mean(maxtemp[i0:i1])
}
lines(y,col=2,ylim=c(0,40))

#
# 移動メディアンフィルタ
#
plot(maxtemp,ylim=c(0,40))
y <- maxtemp
ndata <- length(maxtemp)
y[1:ndata] <- NA
kfilter <- 17
n0 <- kfilter+1
n1 <- ndata-kfilter
for(i in n0:n1){
i0 <- i-kfilter
i1 <- i+kfilter
y[i] <- median(maxtemp[i0:i1])
}
lines(y,col=3,ylim=c(0,40),lwd=2)

#
# 移動平均・移動メディアン比較用テストデータ(ノイズなし・異常値あり)の生成
#
z<-rep(0,100)
z[51:100]<-1
z[24]<-1
z[75]<-2
z<-as.ts(z)
plot(z)
# 移動平均
y <- z
ndata <- length(z)
y[1:ndata] <- NA
kfilter <- 3
n0 <- kfilter+1
n1 <- ndata-kfilter
for(i in n0:n1){
 i0 <- i-kfilter
 i1 <- i+kfilter
 y[i] <- mean(z[i0:i1])
}
lines(y,col=2,ylim=c(0,2),lwd=2)

# 移動メディアン
y <- z
ndata <- length(z)
y[1:ndata] <- NA
kfilter <- 3
n0 <- kfilter+1
n1 <- ndata-kfilter
for(i in n0:n1){
i0 <- i-kfilter
i1 <- i+kfilter
y[i] <- median(z[i0:i1])
}
lines(y,col=3,ylim=c(0,2),lwd=2)


#
# 移動平均・移動メディアン比較用テストデータの生成
#
x <- rep(0,400)
 x[101:200] <- 1
 x[201:300] <- -1
 y <- x + rnorm(400, mean=0, sd=0.5)
ng_test <-as.ts(y)
plot(ng_test)


#########################################
# 地下水位データの表示(異常値・欠測値)#
#########################################
# 榛原 地下水位データ
haibara <- as.ts(read.csv("haibara_new.csv"))
haibara_water <- haibara[,2]
plot(haibara_water,type="h")

# 一部分の詳細表示
plot(haibara_water[211:280],type="h",ylim=c(6.35,6.38))