まずは蝋の翼から。

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

ggpointdensityでgeom_pointの重なっている部分をヒートマップで表現する

表題通り。基本的にはドキュメントレベルしかしてないのでただのメモ。 github.com ggpointdensityの特徴 散布図を作図するgeom_poin()では点が重なっている場合どれくらい重なっているかわからなかった。 対応策として、geom_density2d()や、geom_bin2d()が…

DIDと傾向スコアを用いた手法の使い分け

なにを書くか 岩波DS vol.3(因果推論)のp.91で傾向スコアを用いて「スマホアプリ利用時間」に対する「CM接触効果」を調べるようなデータについて。本文中では、傾向スコア(Propensity Score)を用いて平均CM接触効果(ATE)を測っているが、これはCM施策前後の…

facet_gridで1軸に複数要素を指定する

めちゃくちゃしょうもない小ネタですが、以下のようにfacet_gridで軸列を指定するときに+を使うと複数指定が可能になる模様。 facet_grid(. ~ c(color, cut))とかで複数要素指定できるんかなー → できないやんけ!と思ってたら。。。。 library(tidyverse) d…

ggforce::facet_matrixを用いてfacet_grid(c(A,B,C) ~ c(D,E))的な表現を実現する

以下のツイートを見かけたので試してみた記事。 ggforce::facet_matrix 凄いわ.tidyr::gather をスキップできる…….ggplot(iris) + geom_boxplot(aes(Species, .panel_y)) + ggforce::facet_matrix( rows = vars(everything(), -Species), cols = vars(Spec…

媒介分析で因果効果の内訳を考える

因果媒介分析とは 概要 因果効果の内訳を考えるための手法として、因果媒介分析(Causal Mediation Analysis)というものがある。 これによって、A→Yという因果関係(Whether:AはYに効果があるのか?)だけでなく、AによってM1, M2, ...という事象が起きた結果Y…

ランダムフォレストについて改めて要点をまとめる

概要 ランダムフォレストは何が理解の要点なのかを中心として自分用に改めてまとめる。 各見出しで参考にしたリンクを都度記載しているので数式などはそちらを見てください。 まず、ランダムフォレストについて一言で説明すると、「決定木モデルに対してアン…

どうやって学習をしていくか。何を学習すればいいか。

怪文書シリーズ第3弾。学びについて最近考えていることをつらつらと。頭整理用のメモなのでよみづらいです。 どうやって学習するか 最近、弊社は採用の強化をおこなっていて先輩の強いDSの人が採用面接によく駆り出されている。 面接の際に先輩は「xxx(面接…

成長するためには手癖でやらないためのシステムが必要

前回に引き続き怪文書ポエム。 記事に書いたが、最近手癖で行動してしまっている。 knknkn.hatenablog.com 手癖、つまり慣れたやり方は楽。しかし成長の観点で言えば、同じことをなんとなくやっているだけなので成長は皆無は言いすぎかもしれないが非常に緩…

データ分析プロジェクトを主体的にこなすためには

ただの雑記怪文書です。 近況と問題意識 最近、分析プロジェクトの全フローを担当するようになった。 前期では表面上は「先輩データサイエンティストと共におこなっていた」ことになっているが、実質的には「先輩データサイエンティストの考えたモデルに沿っ…

2019年3Q OKR

2019年2Q振り返りを踏まえて、3QのOKR作成。 knknkn.hatenablog.com OKRについては以下にざっくりまとめてる。 knknkn.hatenablog.com Objective 「独立したDSに!」 まぁ前期OKRとほぼ同じだがちょっと意図変えた。 下流はまぁそれなりにできるようになった…

2019年2Q振り返り

今期やったこと 仕事 階層ベイズ シミュレーション ログ解析(Rでくそめんどい集計して傾向見る) 簡単な集計多数 自学 使った技術と、それをベースに横展開した技術を学んだ ブログでちゃんとアウトプットをした(6月は案件炎上したから1ヶ月くらい書けなか…

資源の最適な配分を、ディリクレ分布を用いたシミュレーションから求める

やりたいこと なにかしらの資源をどう分配したら効用を最大化できるか、ということを解析ではなくシミュレーションによって求める。 例題 今回、例として「総予算上限10万円分で各時間帯にCMを打つ。そのとき、3回以上CMに接触した人数が多いCM投下パターン…

Stanのmodelブロックの意味

Stanを書くとき、モデル式を書いてそれをコードに落とし込むという流れで書いている。感覚的にコードを書いているのだが、冷静に振り返ると何故ここにこれを書くのか?ということがわからなくなってきたのでメモ。 というか、前の記事みたいにエラーが出た際…

状態空間モデルをstanでやりたかった② パネルデータに対する状態空間モデル(階層ベイズ)

前回では以下のようなModelを考えた。 tが閉店日の場合、 それ以外の場合、 knknkn.hatenablog.com だが、結果としてsamplingがおこなわなかった。そのため、今回もプロットは無しで理屈のみ。。。 前回のモデルと今回のモデルの差 前回のモデルは「ある1店…

状態空間モデルをstanでやりたかった①

注)本記事は途中で詰まったので結局モデル立てただけで結果は出てません。 状態空間モデルの勉強をしたものの、手を動かしていないので練習。 データ kaggleのrossmann-storeコンペ。 Rossmann Store Sales | Kaggle カラム名の意味とかはここにまとまって…

ベイズ推定において、ある変数間を縛りたい場合に置く仮定

表題通り、ある変数間を縛りたい場合に置く仮定について。 例えば、Z = B / Aのとき、AとBを個々にベイズ推定してZを求めるとする。 このとき、AにBがある程度連動する、つまり相関する場合は多変量正規分布を用いて取れる値を縛ると良い。 逆にいえば、A, B…

状態空間モデルで何を状態方程式とし、何を観測方程式とするか

疑問 割と色々な書籍、例えばアヒル本で 観測値Y[t]を要素の和に分解するのが定石 (p.235) とあるが、場合によるのでは?てかそもそも状態方程式/観測方程式どっちに何書くかの切り分けってなんだ?という疑問が湧いた。 StanとRでベイズ統計モデリング (Won…

Rでメモリを解放したい

デカイオブジェクトを何個も作る場合、メモリが足りなくなる。それゆえに、使わなくなったら削除してメモリを空けたい。 ただ、Rではどうやらメモリを食っているオブジェクトを削除するだけではメモリが空かないみたい(Rに限った話なのかは不明)。 以下は現…

brmsを使ってみる

brmsというStanのラッパーパッケージで遊ぶ。 概要 例えば、rstanを使う場合はStanコードを別ファイルの.stanに記述してそれを呼び出す形でbayes推定をおこなう。一方、brmsを用いるとStanコードをわざわざ書かなくてもbrmsパッケージの関数を用いればbayes…

StanのMCMC結果&パラメータ結果を可視化する② tidybayes

Stanの結果を可視化する。 今回は tidybayesについて。 前回はbayesplot shinystanパッケージだった。 knknkn.hatenablog.com tidybayesでパラメータのサンプリング結果を可視化する 今回は以下の記事と公式を参考にします。 tidybayesパッケージで推定結果…

StanのMCMC結果&パラメータ結果を可視化する① bayesplotとShinyStan

背景 最近rstan経由でStanを使ってる。rstanを用いた結果(収束診断とか事後確率分布とか)はそのままのデータでは可視化をするのが面倒。 可視化するのに便利なパッケージはないか調べてみると、ggmcmc とか bayesplot とか shinystan とか tidybayes とか色…

tidyverseとNSE

tidyverse系で変数を使いたいときめんどくさいなぁという話。 はじめに要点をざっくりまとめると、tidyverse系でdplyrでdata$列名ではなく列名と直接書けるのはNSE表現になっているので、そういう場所はNSEに合わせた書き方しようね。変数はSEなのでそのまま…

機械学習による予測確率は真の確率とは異なる

以下の記事では傾向スコアをロジスティク回帰で求めてその傾向スコアをもとにATEなどを求めた。 knknkn.hatenablog.com 機械学習で出した確率は、予測確率が0.5未満ならラベル0、0.5以上ならラベル1にする、といったような分類器として使う場合は(おおむね…

傾向スコアによるマッチングを試す

傾向スコアによるマッチングを試す。内容は岩波DS3を、コードは以下を参考。 統計的因果推論(2): 傾向スコア(Propensity Score)の初歩をRで実践してみる - 渋谷駅前で働くデータサイエンティストのブログ 岩波データサイエンス Vol.3発売日: 2016/06/10メデ…

差分の差分法(DID)を試す

差分の差分法(DID)の勉強のために以下の記事を参考にする。 https://fisproject.jp/2016/05/difference-in-differences-using-r/ 使用するデータは 、A-Gまでの7ヶ国についてy, y_bin, x1, x2, x3, opinion を1990年から10年間に渡り記録したパネルデータと…

各モデルで使われる変数重要度についてまとめる

はじめに 機械学習タスクにおいて、ブラックボックス性を減らし解釈性を上げるためにどの特徴量がどれくらい効いたかを示す必要性が増えている。また、特徴量選択やフィーチャーエンジニアリングの際にも参考になる。そのため、機械学習タスクをやるにあたっ…

SHAP valueを使ってみる

SHAP valueを実際に試してみる。コードは以下の記事のものを拝借。 Shapを用いた機械学習モデルの解釈説明 - Qiita なお、データはkaggleのHouse Pricingコンペデータをテキトーに加工して作っている。SalePrice(対数化済)を目的変数として、簡易化のため変…

複数のモデルを管理する

purrrとbroomの使い方をマスターするために。以下の記事をトレースする。 内容自体は引用元記事の方がちゃんとしているのでそちらを読んでもらいたい。本記事は、読むにあたって理解が薄い人(=自分)用の補足メモを書きながらのトレースとなる。そのため、本…

themeを作ってggplotの出力コードをコピペで何回も繰り返さない

はじめに ggplotを使っていて、結構何回も同じこと書いていることが多いなーと感じたので改めて省略できる部分を省略することを考える。 そもそもプログラマーのための原則として、DRY原則というものもある。 DRY原則 | プログラマが知るべき97のこと また、…

glue::glue()による動的なファイル名/クエリの生成

Rのglue::glue()を使うと、{}で囲った変数名に応じた変数で補完した文字列が生成される。 library(glue) for (i in 1:3){ print(glue('hoge{i}')) } # => # hoge1 # hoge2 # hoge3 glueを利用して、動的にファイルを作成する。以下では、irisをspecies毎に分…