まずは蝋の翼から。

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

2019-01-01から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毎に分…

lfe::felmで固定効果モデルを試す

固定効果モデル(Fixed Effect)を考える。 固定効果モデルとは 固定効果モデルとは、ざっくり書くと、パネルデータに対するOLSの際にパネルデータ内の個人毎に異なる「個人差」のような部分を除去してOLS推定ができるようになるモデル。 固定効果モデルイメー…

発表用資料とBIダッシュボードでのグラフデザインの差異

最近仕事で対外的な発表をすることがあり、パワポで資料作成をしていたのだが、社内レビューで図の見せ方に対しての指摘が結構多かった。 なんでこんな指摘が多いのかなーと思いながら考えていたのですが、 BIダッシュボードに乗せるグラフの作り方 をしてい…

The Third Wave Data Scientist

The Third Wave Data Scientistという記事を読んだのでテキトーに要約(意訳)。 The Third Wave Data Scientist - Towards Data Science The Third Wave First Waveでは、実データを主とした非ビッグデータ(2010年代以前)、Second Waveはビッグデータによ…

2019年2Q OKR

1Q振り返りを踏まえると、Objectiveのために手は動かすがKRに沿ってない。ちゃんとKRに沿って計画的に、良い経路で学ぶ必要がある。 knknkn.hatenablog.com Objective 「ある程度自立したDSになる」 意図としては、モデルたてるときに他のDSと一緒に考えてい…

2019年1Q振り返り

1Qはじめに立てた目標を達成できたか。 knknkn.hatenablog.com Objective 「データサイエンティストとして、恥ずかしくない仕事がおこなえる下地を作る」、具体的には以下のような状態。 「データ抽出外の、ちゃんとしたサイエンスをおこなう」 「その際に、…

Beta分布のパラメータ

いつも以上に、自分用の備忘録的な書き方になります。 Beta分布はパラメータA,Bを持ち、Beta(A,B)として関数形が変わる。 では、パラメータA, Bの事前分布はどう求めたらいいだろうか? 1つはテキトーに無情報分布として置く方法。もう1つはある程度想定され…

tsの週次データについてと、ついでにtsibbleについて

Rのtsクラスの振る舞いがよくわからなかったのでメモ。ついでにtibble形式のtsであるtsibbleについても。 基本 tsクラスは時系列(Time Series)情報をindexとして持ったデータ型。 時系列ってなんやねんと思うが、要するに「ある単位においてどういう粒度が…

列名を正規表現で一括置換する

やりたいこと Rのデータフレームで列名を一括置換したい。 ピンポイントで指定する場合は以下の記事のようにすればいいが列名が多いときは面倒。 Rのデータフレームで、列名指定で列名の一部を変更する方法 - Rプログラミングの小ネタ 例えば、この記事のよ…

列名の末尾にまとめて文字列をくっつける

やりたいこと 表題通り。 個人的に使った事例(のイメージ)としては、例えば店舗データとして、「売上、店舗規模、従業員数」があるとする。 これらのデータをもとに店舗の売上モデルを作成するときに、近隣店舗の情報もモデルに入れる場合、各列名の末尾に…

forecastのtrain/test期間の結果をggplot2で描画できるようにする

やりたいこと ARIMAなどをする際に予測をするためにforecast関数を用いる。 その際、forecast関数によって作成されたオブジェクトはautoplot関数でそのまま描画できる。 キレイでリッチなグラフ描画をおこないたいので、ggplotを使って描画をしたい。 問題点…

ARIMAXで複数のモデルを一気に試す

ARIMAXモデルにおいて、X(外部要因)に何を入れるか考える際にいちいち1つ1つ試していくのは手間がかかる。そのため、loop処理で一気に計算をおこない結果を比較したい。 データ テキトーに以下のデータで考える。 > df # A tibble: 7 x 5 date value x1 x2_1…

R(Python)のjoin条件で等号以外を使う

目的 下記のようなデータにおいて、Aのstart_dateからend_dateの期間でBをJOINしたい。 A = tibble(id = c(1,2,3), start_date = c('2018-01-01','2018-02-01','2018-03-01'), end_date = c('2018-01-02','2018-02-03','2018-03-01')) B = tibble(date = seq…

Rでloopを使って動的な名前の列を追加していきたい

目的 Rにおいて、各loop毎に異なった名前の列名を追加していきたい。 問題 変数名として解釈される前に新規列名として解釈がされる。 iris2 = iris for (n in 1:3) { column_name = paste('column',n, sep = "") iris2 = iris2 %>% mutate(column_name = n) …

Rでloopを使って動的な名前の変数を作成したい

目的 Rにおいて、loop処理内で各loop毎に異なった変数を作成したい。 問題 pasteで各loop毎に文字列を作成して、その文字を変数名にしようとした。 for (n in 1:3) { v_name <- paste('v', n, sep = '') #変数名作成(v1,v2,v3) v_name <- n #作成した変数名(…