embedの使い方(自分の使うところだけ)

embedの使い方(自分用のメモ)

 

Rにはembedという関数があり、ベクトル・時系列を指定期間ずらす作業に使える。言葉で聞くとなんだかわからないと思うので、たとえば以下のような時系列データがあったとする。

f:id:koiti_yano:20200306161855p:plain

デモ用データ

使い方は以下のとおり


    demoTs <- ts(seq(1:8), start=c(2019,1), freq=4)
    embed(demoTs, dimension=2)

出力結果は以下のとおり:

f:id:koiti_yano:20200306162503p:plain

出力結果

 

「こんな関数、何に使うんだよ?」と思うかもしれない。

 

たとえば自分で自己回帰モデル(ARやVAR)の関数を書くときに使える。まあ、ARやVARのパッケージはすでにいろいろと充実しているので、自分で書く必要があるかと言われたら、そんな機会はあまりないような気もするが、ときによっては便利な関数である。

成長率の計算(改訂版)

以下の記事の続編:

成長率の計算 - ハリ・セルダンになりたくて(はてダから移行中)

 

少し改訂版を作ったので記録のために以下に(前期比・前年同期比も計算できるように)。


growthRate <- function(tsData, lagLen=1, percent=FALSE)
{
  numSize <- length(tsData)
  seque <- seq(1:(numSize-lagLen))
  if(isTRUE(percent)){
    tsGrowth <- (diff(tsData, lag=lagLen)/tsData[seque]) * 100
  } else {
    tsGrowth <- (diff(tsData, lag=lagLen)/tsData[seque]) 
  }
  return(tsGrowth)
}
    

Rでダミー変数を作る(fastDummies)

そもそもlm()(とglm())には「data.frameの列がfactorである場合、自動的にダミー変数を作って、回帰してくれる」という機能がある(manにきちんと書かれてないので知らない人が多いかも)。

stats.idre.ucla.edu

が、lmやglmの「自動でダミー変数を作る機能」だと思うようなダミー変数にならない場合もあるので、パッケージでダミー変数を作ることを考える。

 

いくつかパッケージがあるが、それなりに使いやすいパッケージとしてfastDummiesがあるため、その中のdummy_cols()を使ってダミー変数を作る方法を以下に記す。

  


require(fastDummies)
require(tidyverse)
when <- data.frame(time = c("afternoon", "night", "afternoon", "morning", "morning", "morning", "morning", "afternoon", "afternoon"), day = c("Mon", "Mon", "Mon", "Wed", "Wed", "Fri", "Sat", "Sat", "Fri"))
when[3, "day"] <- NA
when %>% head()
dummy_cols(when)
    

# 自分用のメモ:現時のバージョンのfastDummiesではNAはNAのままで各列に入力される(以前は違ったようだが)。

 

参考(4つのパッケージの比較)

fuminorikawami.hatenablog.com

 

openxlsxの使い方(自分が使うところだけ)

require(openxlsx)

 

tmpdat<- read.xlsx("./data.xlsx", sheet = 2, startRow = 9, detectDates=TRUE)
head(tmpdat)

 

wb <- createWorkbook()
addWorksheet(wb, 'Sheet1')
addWorksheet(wb, 'Sheet2')
writeData(wb, sheet = 'Sheet1', x = lm.res1, withFilter=F)
writeData(wb, sheet = 'Sheet2', x = lm.res2, withFilter=F)
saveWorkbook(wb, "lm.res.xlsx", overwrite = T)

 

CRAN - Package openxlsx

成長率の計算

以下に改訂版の既述あり。

成長率の計算(改訂版) - ハリ・セルダンになりたくて(はてダから移行中)

 

Rを使って成長率(%表示)を計算する方法についての備忘録。

前提:tsDataをベクトルもしくはtsオブジェクトとする。 

その1:対数差分

    diff(log(tsData))*100

メリット:成長率の近似であるが、プログラムが簡単

デメリット:tsDataの要素が正である必要がある(たとえばGDPならOK、在庫変動は[負になることがあるため]ダメ)

 

その2:定義通りに成長率を計算する

一行で書くと:

numSize <- length(tsData); tsGrowth <- (diff(tsData)/tsData[-numSize]) * 100

関数にするなら以下:

growthRate <- function(tsData)
{
    numSize <- length(tsData)
    tsGrowth <- (diff(tsData)/tsData[-numSize]) * 100

    return(tsGrowth)
}

使い方はこんな感じ。

source("growthRate.R")
tmpTs <- seq(1,10,by=0.3)
growthRate(tmpTs)

 

RでX-13ARIMA-SEATSを使う(2019年6月版)

自分用の覚書
CRANにあるx13binaryが使えるようになったので、自分でX-13ARIMA-SEATSをコンパイルする必要がなくなり、MacとWinの違いもなくなりました。

 

[インストール]GNU Rで二つのパッケージをインストール

  1. install.packages("seasonal"); install.packages("x13binary")

[GNU Rのパッケージseasonalからx13asを実行する]

  1. パッケージの読み込み
    library(x13binary); library(seasonal)
  2. checkX13()を実行して、"Congratulations! 'seasonal' should work fine!"と表示されれば問題なし
  3. m <- seas(AirPassengers)
  4. plot(m)
  5. 季節調整済み系列(s11)の取り出し
    m$series$s11
  6. プロットの一例
  • plot(AirPassengers) #元のデータ
  • lines(m$series$s11, col="red") #季節調整値
  • lines(m$series$s12, col="blue") #トレンド

seasonalの使い方についてvignettesを参照されたい

https://cran.ism.ac.jp/web/packages/seasonal/vignettes/seas.pdf

 

[注意すべき点]

  1. X-13ARIMA-SEATSから季節調整済み系列はs11となった模様(X-12-ARIMAのd11。プログラムする人はお気をつけ下さい)
    http://www.census.gov/ts/x13as/docX13ASHTML.pdf
[s10等のまとめ]

s10: 季節成分(seasonal component

s11: 季節調整値(seasonal adjustment component

s12:トレンド成分(trend component

s13:不規則成分(irregular component

詳しくは以下のTable 7.13を参照

https://www.census.gov/ts/x13as/docX13AS.pdf

[Predefined regression variables]

外れ値やレベルシフトの調整にはregression.variablesを使う。使い方は以下のTable 7.28を参照

https://www.census.gov/ts/x13as/docX13AS.pdf

 

 

 

GNU R (Windows10)にR Interface to 'Keras'をインストールする

GNU R (実際の作業はRstudio)でKerasをインストールしたときの覚書。基本的には(1)Anacondaインストール、(2)Anacondaでtensorflowインストール、(3)R上でdevtoolsインストール、(4)devtoolsでkerasインストール、(5)Windows上でRtoolsインストールと言う手順になる。

 

[Anacondaとtensorflowのインストール]

最初にAnaconda(Python 3.*)をインストールし、Anaconda Navigatorを起動してtensorflowをインストールする。以下のURLを参照。

miyabi-lab.space

 

[keras: R Interface to 'Keras'のインストール]

Rstudioでの導入は以下の通り。

  1. Rstudioを管理者として実行する
  2. install.packages('devtools')(devtoolsをインストールする)
  3. コンソールに devtools::install_github("rstudio/keras") と入力
  4. インストール中に"Please download and install Rtools *.*"とRtoolsをインストールするように言われるので、指定されたバージョンのRtoolsをインストールする

[R Interface to 'Keras']

R Interface to 'Keras'の使い方は以下のURL等を参照。

cran.ism.ac.jp