今週も特にありません

進捗どうですか?

ggplot2 軸表記を変更する

ggplot2で可視化したグラフを資料等で貼り付ける時に、様々な人のことを考えて軸の表記を変えたいという場合がある。 見やすさやさしさ以外は本質的には変わらないが、変更の仕方をたまに調べていることがあるためメモ。 利用ユーザ数が大変多い2つのウェブ…

等幅の棒グラフを描画する ggplot2::position_dodge2

ggplot2で可視化した時に棒グラフの幅が変わって、変な見た目になってしまうことにたまに出会す。それを position_dodge2 で調整するメモ。 2つのウェブサイトがあり、ある期間に訪れた頻度ごとのユーザ数が記録されたようなデータがあるとする。 > library…

住所を都道府県と市区町村に分割するSQL

HiveQLにおける処理を想定したメモ。 住所が書かれたカラムがあり、それを都道府県単位、市区町村単位でまとめ上げて集計などしたい場合がある。 都道府県は問題ないが、市区町村の中には、"市"、"町"、"村"が含まれる自治体名があるために単純に分割するこ…

dplyr グループごとに指数化

グループごとにある時点における数値をもとにした指数化を行いたい。 何らかの売上データが時系列であるとする。 > library(tidyverse) > library(lubridate) > > sales_tbl <- tibble( + sales_date = rep(seq(ymd("2020-05-01"), ymd("2020-05-31"), by = …

Spark 集約関数 collect_list, collect_set

配列に集約する操作であるので、aggの中で関数を適用することになる。 scala> val df = Seq( ("p00001", "food", 200), ("p00002", "food", 500), ("p00003", "food", 800), ("p00004", "food", 500), ("p00005", "food", 700), ("p00006", "book", 900), ("…

日次データの欠損を埋める tidyr::complete

tidyr::completeに関するメモ。 日次データが欠損している(ある日に一件も事象が観測されていない)場合のデータに出会すことがよくある。 > library(tidyverse) > > stopcovid19_tbl_tmp <- read_csv("https://stopcovid19.metro.tokyo.lg.jp/data/130001_…

Spark ランク関数 rank, dense_rank, percent_rank

Sparkのランク関数メモ。商品IDとその商品カテゴリ、売り上げのようなデータがあったとする。 scala> val df = Seq( ("p00001", "food", 200), ("p00002", "food", 500), ("p00003", "food", 800), ("p00004", "food", 500), ("p00005", "food", 700), ("p00…

highcharterで日本地図へのマッピング

都道府県名や都道府県コードなどの地理的情報、そして、それらのユーザ数や売上げなどのデータがあり、その濃淡を日本地図へマッピングして可視化したいという場合がある。ggplot2でやってしまえるところではあるが、highcharterパッケージを利用すれば意外…

tidymodelsでロジスティック回帰 parsnip::logistic_reg

書き慣れたglmのみで分析を回してしまっていることが多いため、tidymodelsを用いることで、このようなtidyな感じに分析できるということを一通り確認したメモ。 ここでは、kernlabのspamデータを用いて、スパムメールかそうではないかをロジスティック回帰pa…

tidy時系列データに対してのVARモデル fable

これからのRにおいてVARモデルで予測したい場合には、varsよりもfableを使えば良さそうというもの。 データ VARモデルについて詳しく解説してくださっているものと同じCanadaデータを用いることにします。 tjo.hatenablog.com logics-of-blue.com > library(…

クラスに依存せずに時系列データを扱えるtsbox

R-bloggersで見つけたあまり注目されなそうなパッケージを拾ってみます。時系列解析系のパッケージはなんでも一度は入れてみる派です。 www.r-bloggers.com Rでは時系列データを扱うためのクラスが乱立しています。 伝統的なものとしてはtsやzoo、その後一時…

lubridate::ymdでAll formats failed to parseに遭遇

珍しいケースに遭遇したので、ちょっと調べたことをメモします。 日付列にほんの一部だけが日付のような文字列が入っていて、その他ほとんどがNAが入っている数十万レコードのデータを渡されました。文字列型ではなく、 日付型として扱おうと、lubridate::ym…

「Rによるディープラーニング」のための情報まとめ

オライリーの「RとKerasによるディープラーニング」も出版され、Rユーザでもディープラーニングに手を出してみようという人が増えている気がします。これは、Rユーザにとってのディープラーニング関連情報のありかをまとめたものになります。 あらためて、RS…

tidy時系列データに対する差分計算

以下の記事の通りで、差分計算することが多い方はすでにdplyr::lagを使っていると思います。ここでは、差分計算と変化率、対数収益率を計算する場合についてと、最近少し調べていたtsibbleの中に含まれる関数に関するメモになります。 notchained.hatenablog…

tidy時系列データにおける相関計算 corrr

時系列データに対して相関を出す場面で、毎回どういう変換するんだっけを調べている気がするためメモします。 corrrパッケージでどのようなことができるのかについては、kazutanさんのページが大変参考になります。 kazutan.github.io データ 店舗ごとの何ら…

lubridate::floor_dateで任意の曜日スタートで切り下げ

タイトル通りのメモ。 library(tidyverse) library(lubridate) set.seed(12345) order_tbl <- tibble( order_date = seq(ymd("2019-03-01"), ymd("2019-03-31"), by = "1 day"), order_num = rpois(31, 5) ) 日曜日と月曜日スタートする場合を追加します。 >…

lubridate::rollbackの使い所

日次データが存在して、その日次データとそれを月ごとにまとめ上げた月次データの可視化を行いたい場合があります。 library(tidyverse) library(lubridate) set.seed(12345) order_tbl <- tibble( order_date = seq(ymd("2018-01-01"), ymd("2018-12-31"), …

Rでモデルの評価指標を計算する Metrics

機械学習モデルの分類精度を評価したり、時系列モデルのn期先の予測精度を評価したりする際に、地味に評価指標の計算式をネットで調べて自前でRの関数として実装したりしていました。 しかし、(実際にはよく調べていなかっただけですが、)すでに基本的な指…

rvestでUser Agentを偽装する

「偽装する」というと感じが悪いですが、いつも使っているChromeやSafariなどのブラウザで表示される同じ状態をスクレイプしたかったということで、rvestでのユーザーエージェントの変更の仕方を調べたメモ。 github.com 結論としては、rvest::html_session(…

ggplot2で値の正負によって、色分けする

データの値の正負によって色分けをしたい場合があります。この場合、mutateでTRUE/FALSEの判定をした新しいカラムを追加して可視化するということをよくしていましたが、データが大変多い場合などには、可視化の色分けのためだけにカラムを追加するというこ…

lubridateのweekとisoweekの違い

日次データを週次データとして売り上げなどをまとめて集計したいということはよくあります。今まで特に何も気にすることなく、lubridateのisoweekを使って週番号を付けて集計していましたが、年を跨いだ場合にどのような週番号が付くのかを確認したのでメモ…

RでFashion MNISTメモ シンプルなCNN

RでFashion MNISTの続き。前回の全結合モデルでは、正解率9割届かずという結果でした。今回は畳み込みニューラルネットを用いることで、それらの正解率が向上するか確認します。 keras.rstudio.com データ準備 前回同様、まずは畳み込みニューラルネットで読…

RでFashion MNISTメモ シンプルな多層NN

RでFashion MNISTの続き。前回はデータの可視化で留まっていたので、今回はチュートリアルに載っている基本的な全結合モデルでいろいろと比較を行ったメモ。 keras.rstudio.com データ準備 はじめに、array形式からNNに入力できるようなmatrix形式に変換した…

RでFashion MNISTメモ データの可視化

今更ながら、RStudioのkerasパッケージのチュートリアルを読んでいたら、Fashion MNISTデータセットをRからでも簡単に取って来れるようだったので、チュートリアルの実践とこのようなデータのggplot2でのデータ可視化方法を含めてメモ。 keras.rstudio.com …

tibbleのオプション設定

表示数の変更 tibble(tbl_df)型のデータを表示すると、デフォルトでは先頭の10行が表示されます。 加えて、最大表示数は20行に設定されています。 library(tidyverse) class(diamonds) #> [1] "tbl_df" "tbl" "data.frame" diamonds #> # A tibble: 53,940…

tidy時系列データにおける予測 fasster

時系列データもTidydataとして扱う流れが加速しているようです。 xtsなどで頑張っていた時代からアップデートしていきます。 時系列データをTidy化するtsibbleパッケージに関連して、モデリングに対応するfassterパッケージも絶賛開発されています。 今回はf…

tidyquantでビットコインの取引データを取得する

2017年は何かと仮想通貨の価格が高騰(or 暴落)が騒がれた一年でした。 仮想通貨が法定通貨と同様に決済手段や金融商品の一つとして定着するようになった際には、今以上に様々な分析が行われると思います。 その前に、tidyverseな世界観でのデータ取得から…

tidyquantを使った分析メモ ポートフォリオのリターン

tidyquantを使った分析メモの続き。前回までに個別銘柄のリターンについて計算したので、ポートフォリオのリターンについて出してみます。 PerformanceAnalytics::Returns.portfolioのラッパー関数であるtq_portfolioを使えば、tidyなデータを入力として簡単…

tidyquantを使った分析メモ 期待リターンとボラティリティ

tidyquantを使った分析メモの続き。今回は対数リターンの計算とその可視化までをやってみます。 github.com masaqol.hatenablog.com 対数リターンの計算 TOPIX100構成銘柄の株価データを取得したい場合、銘柄コードを用意して、tidyquantのtq_getを使うこと…

tidyquantを使った分析メモ データの取得と可視化

R-bloggersでも度々登場して気になっていたtidyquantを使った分析メモになります。 github.com 基本的な使い方は、Vignettesが充実しています。 また、日本語での資料としてはtidyquantの使い方があります。 また、Exploratoryと組み合わせて分析した記事も…