まずは蝋の翼から。

学んだことを書きながら確認・整理するためのメモブログ。こういうことなのかな?といったことをふわっと書いたりしていますが、理解が浅いゆえに的はずれなことも多々あると思うのでツッコミ歓迎

R

Tidyevalでの関数型プログラミング俺俺メモ

プログラミングをするときにはDRYの法則と言われるように、同じような処理は関数で書いて使い回す方がメンテ効率や可読性が上がる。 特に、データサイエンス的な場合はコードの使い捨てがしやすいので煩雑になるので特に意識した方が良い。 zerebom.hatenabl…

正規表現で文字列からほしい部分を抽出する

Rでstr_match_all(string, pattern)でstringに対してマッチしたpattern文字列を抽出する。 pattern部分は()を入れることでpattern中の一部分だけを取ることができる。 listの1要素目がマッチした部分の全体、2要素目以降が括弧でマッチさせた抽出される。 _a…

BUSINESS DATA SCIENCE 6章 Controls

BUSINESS DATA SCIENCEの続き。 データなどは作者のgitにある。 Business Data Science: Combining Machine Learning and Economics to Optimize, Automate, and Accelerate Business Decisions作者:Taddy, Matt発売日: 2019/08/21メディア: ハードカバー 最…

mutate_atで引数付き関数を使う

やりたいこと mutateでは、関数を以下のように適用を適用することができる。 library(tidyverse) iris %>% group_by(Species) %>% mutate(Sepal.Length_lag2 = lag(Sepal.Length,2)) # Sepal.Length Sepal.Width Petal.Length Petal.Width Species Sepal.Len…

モデルに対して値の推定結果を作成する

やりたいこと モデルを作成して、そのモデルをある値に適用したときの推定結果を作成したい。 今回は モデルの学習データの推定値 任意の値をモデルに適用したときの推定値 の2パターンについて書く。 共通処理 今回、モデルはdiamondsに対して線形モデルlog…

purrrを使って、関数の引数を変えて適用したDFを結合していく

やりたいこと 関数の引数を変えて適用したDFを結合したい。 以下のように、指定した列colに対してunder_value以下となるdfを抽出して、そのunder_valueをfiltered_values列に追加する関数filtered_under_valueで考える。なお、見た目上わかりやすいためhead…

ggplotで他の変数を基準に並び替える

数値で並び替える場合 以下のようなグラフで考える。 library(tidyverse) data(diamonds) # データ作成 df = diamonds %>% group_by(clarity, cut) %>% summarise(n = n()) %>% ungroup() # わかりやすいものだけ抽出 df_filtered = df %>% filter(clarity %…

map2を使ってサブサンプルに分けた各データに対して複数モデルを適用する

表題通り、サブサンプルに分けた各データに対して複数モデルを適用したい。 より具体的に書くと、以下のdropoutさんの記事では 複数のモデルを当てはめる場合 diamondデータに対して、3モデルを適用 サブサンプルに分けて分析する場合 diamondデータをclarit…

ggplotのfacet日本語テキストを折り返す

これはなにか ggplotのfacet内の文字を任意の文字数で折り返し(改行)をしたい。 どういうことかというと、下記のようにirisベースでテキトーにSpeciesを日本語化して文字数を増やしたもので考える。 library(dplyr) iris2 = iris %>% mutate(Species_jp = ca…

ggchartsを試す

ggchartsとは Rのggplot2のラッパーで、aes + geom_xxxの形式ではなく、pythonのseabornやplotly_expressみたいにグラフ関数を用いて表現をすることができる。ラッパーなので、通常の書き方を組み合わせることができるので、ggplot2の機能が追加されただけと…

assertrでRの中間データをチェックする

データを加工するときに、未加工と最終加工結果は値がおかしくないかチェックすることがわりかしあると思うが、最終結果に至る途中段階をチェックすることは手間がかかる。 そのようなとき、assertrではRのパイプラインの途中に入れることで、その段階におい…

Python, RでDBに接続するときのパスワードをコードに直打ちしない

Python, RともにDBに接続するときにパスワード情報をソースに直打ちすると、gitなどにアップするときに色々とヤバいので直打ちしない方法をメモ。 json設定ファイルから 以下のようなpassword管理用のjsonファイルを作る。 { "redshift": { "id": "myID", "p…

lemonパッケージでggplotをいい感じに見せる

ggplotをきれいに見せるパッケージlemonを動かしたので紹介。 基本的に公式ベース github.com facetしたときの軸目盛りの明示 以下のようなデータがあるとする。 library(tidyeval) g = mtcars %>% # ggplot(aes(wt, mpg)) + ggplot(aes(wt, mpg, color = fa…

効果検証入門 5章回帰不連続デザイン 俺俺メモ

効果検証入門を買った。因果推論系はあまりちゃんと手を動かしていないので、気になったところのみ自分なりにまとめる。 効果検証入門〜正しい比較のための因果推論/計量経済学の基礎作者:安井 翔太発売日: 2020/01/18メディア: 単行本(ソフトカバー) gith…

効果検証入門 4章DID(とCausal impact) 俺俺メモ

効果検証入門を買った。因果推論系はあまりちゃんと手を動かしていないので、気になったところのみ自分なりにまとめる。 効果検証入門〜正しい比較のための因果推論/計量経済学の基礎作者:安井 翔太発売日: 2020/01/18メディア: 単行本(ソフトカバー) gith…

効果検証入門 3章傾向スコア 俺俺メモ

効果検証入門を買った。因果推論系はあまりちゃんと手を動かしていないので、気になったところのみ自分なりにまとめる。 効果検証入門〜正しい比較のための因果推論/計量経済学の基礎作者:安井 翔太発売日: 2020/01/18メディア: 単行本(ソフトカバー) gith…

効果検証入門 1,2章 俺俺メモ

効果検証入門を買った。因果推論系はあまりちゃんと手を動かしていないので、気になったところのみ自分なりにまとめる。 効果検証入門〜正しい比較のための因果推論/計量経済学の基礎作者:安井 翔太発売日: 2020/01/18メディア: 単行本(ソフトカバー) gith…

Rのrowwriseでmap関数を使わずに行ごと関数適応をおこなう

今まではsapplyやpurrr::mapを用いて行ごとの処理をおこなっていたが、rowwiseを用いて同様の処理を簡潔におこなえるようになった模様。 dplyr.tidyverse.org いったん、簡単な例として、集約関数で試す。 なお、2020/04/12時点ではdplyrの開発版から可能。 …

acrossを用いて、Rで列ごとに別の集約関数をまとめて適応させる

dplyr1.0.0から追加されるacrossで条件に当てはまる列に対して個別に集約関数の適用ができるようになった。 今までもsummarise_atでもできたがこの場合は1条件にしか適用できなかったが、acrossでは複数条件での適用が可能。 例 summarise_atではSepalで始ま…

{{ }}を用いると、普段のdplyrの書き方を関数内でもほぼできるようになった模様

dplyrではNSEなどの関係で、関数内で普段通りのdplyr的な書き方はできなくて色々とややこしかったのが、rlang 0.4.0からは{{ }}を使って直感的な書き方ができるようになったらしい。 www.tidyverse.org www.r-bloggers.com 関数を使わないでコピペを繰り返す…

ggplotの軸の桁表示を制御する

ggplotで、桁数が大きいと自動でe+n表示へと変わる。 自分で分析する場合はいいが、この表示に慣れていない人に見せる際にわかりづらいので制御する。 まずはデフォルトでの表示。デフォルトでは107以降が存在する場合e+nの表示になる。 library(tidyverse) …

ggplotのでいちいちbreaks+seqを使わずに目盛りの刻み幅を指定する

ggplotではX軸の目盛り幅を指定するときはscale_x_continuousに対してbreaksオプションに対してseqを用いて刻み幅nでX軸に値を表示します。 ただし、seqでの指定だと breaks = seq(xmin, xmax, n)といったようにxの表示最大値と最小値を意識して使わないとい…

Rで任意の範囲でヒストグラムを作りたい

問題 ggplotではgeom_histgramを用いるとヒストグラムを作成できる。また、オプションとしてbinwidthを指定するとビン幅を決めることができる。 library(tidyverse) data <- c( -1, 1, 11, 27, 31) data %>% tibble() %>% ggplot(aes(x = .)) + geom_histogr…

Rの並び替えをfactorのlevelsで制御する

概要 問題 Rで列の並び順を固定したい 解決方法 factorを用いてfactor型に変換し、その際にlevelを指定する。 実践 データを読み込む library(tidyverse) library(tidylog) df_iris = iris %>% tibble() %>% select(species=Species, sepal_length=Sepal.Len…

Rで縦持ち・横持ち化する

Rでは、今まで縦持ち化するときにはtidyr::gather、横持ち化するときはtidyr::spreadを使っていたがオプションが毎回よくわからずドキュメントを読んでいたが、それはみんな同じことを思ってたみたいでdplyr1.0以降では再設計されてtidyr::gather→tidyr::piv…

BUSINESS DATA SCIENCE 4章 Classification② 多値分類

BUSINESS DATA SCIENCEの続き。 データなどは作者のgitにある。 Business Data Science: Combining Machine Learning and Economics to Optimize, Automate, and Accelerate Business Decisions作者:Taddy, Matt発売日: 2019/08/21メディア: ハードカバー 最…

BUSINESS DATA SCIENCE 4章 Classification① k-NNとlasso回帰での分類

BUSINESS DATA SCIENCEの続き。 データなどは作者のgitにある。 Business Data Science: Combining Machine Learning and Economics to Optimize, Automate, and Accelerate Business Decisions作者:Taddy, Matt発売日: 2019/08/21メディア: ハードカバー 最…

BUSINESS DATA SCIENCE 3章 Regularization④ Lassoに対する定量的な信頼性

BUSINESS DATA SCIENCEの続き。 データなどは作者のgitにある。 Business Data Science: Combining Machine Learning and Economics to Optimize, Automate, and Accelerate Business Decisions作者:Taddy, Matt発売日: 2019/08/21メディア: ハードカバー 最…

BUSINESS DATA SCIENCE 3章 Regularization③ 情報量基準を用いた評価(CI)

BUSINESS DATA SCIENCEの続き。 データなどは作者のgitにある。 Business Data Science: Combining Machine Learning and Economics to Optimize, Automate, and Accelerate Business Decisions作者:Taddy, Matt発売日: 2019/08/21メディア: ハードカバー 最…

BUSINESS DATA SCIENCE 3章 Regularization② ペナルティを用いた変数選択

BUSINESS DATA SCIENCEの続き。 データなどは作者のgitにある。 Business Data Science: Combining Machine Learning and Economics to Optimize, Automate, and Accelerate Business Decisions作者:Taddy, Matt発売日: 2019/08/21メディア: ハードカバー 最…