表題通り。基本的にはドキュメントレベルしかしてないのでただのメモ。 github.com ggpointdensityの特徴 散布図を作図するgeom_poin()では点が重なっている場合どれくらい重なっているかわからなかった。 対応策として、geom_density2d()や、geom_bin2d()が…
なにを書くか 岩波DS vol.3(因果推論)のp.91で傾向スコアを用いて「スマホアプリ利用時間」に対する「CM接触効果」を調べるようなデータについて。本文中では、傾向スコア(Propensity Score)を用いて平均CM接触効果(ATE)を測っているが、これはCM施策前後の…
めちゃくちゃしょうもない小ネタですが、以下のようにfacet_gridで軸列を指定するときに+を使うと複数指定が可能になる模様。 facet_grid(. ~ c(color, cut))とかで複数要素指定できるんかなー → できないやんけ!と思ってたら。。。。 library(tidyverse) d…
以下のツイートを見かけたので試してみた記事。 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年2Q振り返りを踏まえて、3QのOKR作成。 knknkn.hatenablog.com OKRについては以下にざっくりまとめてる。 knknkn.hatenablog.com Objective 「独立したDSに!」 まぁ前期OKRとほぼ同じだがちょっと意図変えた。 下流はまぁそれなりにできるようになった…
今期やったこと 仕事 階層ベイズ シミュレーション ログ解析(Rでくそめんどい集計して傾向見る) 簡単な集計多数 自学 使った技術と、それをベースに横展開した技術を学んだ ブログでちゃんとアウトプットをした(6月は案件炎上したから1ヶ月くらい書けなか…
やりたいこと なにかしらの資源をどう分配したら効用を最大化できるか、ということを解析ではなくシミュレーションによって求める。 例題 今回、例として「総予算上限10万円分で各時間帯にCMを打つ。そのとき、3回以上CMに接触した人数が多いCM投下パターン…
Stanを書くとき、モデル式を書いてそれをコードに落とし込むという流れで書いている。感覚的にコードを書いているのだが、冷静に振り返ると何故ここにこれを書くのか?ということがわからなくなってきたのでメモ。 というか、前の記事みたいにエラーが出た際…
前回では以下のようなModelを考えた。 tが閉店日の場合、 それ以外の場合、 knknkn.hatenablog.com だが、結果としてsamplingがおこなわなかった。そのため、今回もプロットは無しで理屈のみ。。。 前回のモデルと今回のモデルの差 前回のモデルは「ある1店…
注)本記事は途中で詰まったので結局モデル立てただけで結果は出てません。 状態空間モデルの勉強をしたものの、手を動かしていないので練習。 データ 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に限った話なのかは不明)。 以下は現…
brmsというStanのラッパーパッケージで遊ぶ。 概要 例えば、rstanを使う場合はStanコードを別ファイルの.stanに記述してそれを呼び出す形でbayes推定をおこなう。一方、brmsを用いるとStanコードをわざわざ書かなくてもbrmsパッケージの関数を用いればbayes…
Stanの結果を可視化する。 今回は tidybayesについて。 前回はbayesplot shinystanパッケージだった。 knknkn.hatenablog.com tidybayesでパラメータのサンプリング結果を可視化する 今回は以下の記事と公式を参考にします。 tidybayesパッケージで推定結果…
背景 最近rstan経由でStanを使ってる。rstanを用いた結果(収束診断とか事後確率分布とか)はそのままのデータでは可視化をするのが面倒。 可視化するのに便利なパッケージはないか調べてみると、ggmcmc とか bayesplot とか shinystan とか tidybayes とか色…
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)の勉強のために以下の記事を参考にする。 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を用いた機械学習モデルの解釈説明 - Qiita なお、データはkaggleのHouse Pricingコンペデータをテキトーに加工して作っている。SalePrice(対数化済)を目的変数として、簡易化のため変…
purrrとbroomの使い方をマスターするために。以下の記事をトレースする。 内容自体は引用元記事の方がちゃんとしているのでそちらを読んでもらいたい。本記事は、読むにあたって理解が薄い人(=自分)用の補足メモを書きながらのトレースとなる。そのため、本…
はじめに ggplotを使っていて、結構何回も同じこと書いていることが多いなーと感じたので改めて省略できる部分を省略することを考える。 そもそもプログラマーのための原則として、DRY原則というものもある。 DRY原則 | プログラマが知るべき97のこと また、…
Rのglue::glue()を使うと、{}で囲った変数名に応じた変数で補完した文字列が生成される。 library(glue) for (i in 1:3){ print(glue('hoge{i}')) } # => # hoge1 # hoge2 # hoge3 glueを利用して、動的にファイルを作成する。以下では、irisをspecies毎に分…