library(dplyr)
library(tidyr)
library(magrittr)
library(ggvis)

1.4時系列データの前処理

現実に取得するデータに可逆な変換を施して,分析上’都合のいい’ 形に変換する処理.

ロジット変換

比率や確率,0と1に漸近線を持つ時系列データは下記の変換で歪みを 除去できる. \[ z_n = \log \left( \frac{y_n}{1-y_n} \right) \] これをロジット変換という.

* 失業率
* 離職率

などなど

失業率データ

y <- read.table('shitsugyo.txt', header=T, sep='\t')

y <- y/100
y %>%
  ggvis(~1:nrow(y),~shitsugyo) %>%
  layer_paths()

ロジット変換を行うと0,1付近の歪みを取り除くことができる

logit <- function(y){
  return(log(y/(1-y)))
}
y %>%
  logit %>%
  ggvis(~1:nrow(y),~shitsugyo) %>%
  layer_paths()

対数変換

比率が変化する系列データは対数をとると差の系列に変換できる. 0に漸近するようなデータも変換するかもしれない.

* 物の価格
* 生物の個体数

などなど

EuStockMarkets

data(EuStockMarkets)
head(EuStockMarkets)
##          DAX    SMI    CAC   FTSE
## [1,] 1628.75 1678.1 1772.8 2443.6
## [2,] 1613.63 1688.5 1750.5 2460.2
## [3,] 1606.51 1678.6 1718.0 2448.2
## [4,] 1621.04 1684.1 1708.1 2470.4
## [5,] 1618.16 1686.6 1723.1 2484.7
## [6,] 1610.61 1671.6 1714.3 2466.8
EuStockMarkets %>%
  as.data.frame %>%
  select(DAX) %>%
  mutate(x = 1:length(DAX)) -> df

df %>%
  ggvis(~x, ~DAX) %>%
  layer_paths() %>%
  layer_smooths(stroke:='red')

対数変換すると

df %>%
  mutate(DAX=log(DAX)) %>%
  ggvis(~x, ~DAX) %>%
  layer_paths() %>%
  layer_smooths(stroke:='red')

差分をとる

傾きを除去することができる.後の章出てくる定常性と関係がある.

df <- df %>%
  mutate(logDAX=log(DAX)) %>%
  mutate(difflogDAX=c(0,diff(logDAX)))

df %>%
  ggvis() %>%
  layer_paths(~x,~difflogDAX)

前年同期比

前年同期比を取ることで周期成分が除去できる.

data(UKgas)
UKgas %>%
  as.data.frame %>%
  ggvis(~1:length(UKgas), ~x) %>%
  layer_paths()

y <- c()
for(i in 5:length(UKgas)){
  y <- c(y,UKgas[i]/UKgas[i-4])
}

y %>%
  data.frame(x=1:length(y)) %>%
  ggvis(~x, ~y) %>%
  layer_paths() %>%
  layer_smooths(stroke := 'red')

ということで今回は前処理の部分を一部抜粋でお送りしました.