Development Micro-econometrics Study Group: Code Notes

日本語で経済学分析に有用なコードの備忘録を作成しています。We provide explanations of useful codes in Japanese for data cleaning, analysis, visualization like memorandum. Our software focuses on STATA, R, Python.

初級

STATAで特定の変数名をシステマティックに一気に変える。

STATAは変数名が長いとinvalid nameとなってしまう。しかし、全ての変数名をひとつづつ変えるのは手間だしミスしてしまうかもしれない。いいデータなら似たような単語に似たような変数名がついているので、そのパターンを用いて同時に省略することを考える。…

Stataのegen sum()とgen sum()

変数を作成・加工する際に使用するsum()関数は、egenかgen(またはreplace)かによって、出力が異なる。 例えば、 以下のようなデータを考える。 id var1 a 1 b 2 c 3 この時、egenとgenそれぞれでvar1変数をsum()すると、 egen var1_sum_egen = sum(var1) g…

Stataでデータセット結合:あなたが探しているのは「merge m:m」?それとも「joinby」?

二つのデータセットを、ある変数をkeyとして横方向で結合したい場合、多いと思います。 このkeyがそれぞれのデータセットでunique(被りがない)なら、普段通り、merge 1:1を使えば問題ありません。 また、一方のデータセットはkeyとなる変数がuniqueになっ…

Stataで重複する観測値を残す(duplicates keep)。

Stataで重複する観測値がある場合にduplicatesコマンドを用いることができる。例えば、duplicates drop variable, forceとすれば、重複するvariableを落とすことができる。 しかし、重複する観測値だけを残すというオプションは筆者の探す限り見つからなかっ…

Stataでデータから行列(matrix)を取り出す。

データの中から行列を取り出すことができるコマンドはmkmatである。(筆者はDelta methodでstandard errorを計算するときに必要な操作であった。) 例えば、変数が(var1 var2)のように二つありそれぞれの観測数がKであるとする。それらを2*Kの行列として取り出…

Stataで文字列の空白を削除する。

元のデータがエクセルなどで手入力されていたりすると、一つのセルの中で変な空白が入ってしまっていることがある。これが数字の情報だったりすると文字列として読み込まれてしまうので、整理する必要がある。そういったときに便利なのがsubinstrコマンドで…

Stataでエラーを無視してスクリプトを進めさせる。

Stataでエラーがでたときに、時によっては無視して進めてほしい場合がある。エラーが出るといったんコードが止まってしまうので、エラーがあった場合もそれを無視して進めさせたいときに使うのがcap (captureでも可)コマンドである。 ex 1) 複数人でコード共…

Stataで数字列から部分的な情報を取り出す方法。

データのセル内に特定のルールで数字列が並んでいるときに、その一部を取り出す方法。例えば、以下のようなデータがあるとする。 市町村ID(6桁) = 都道府県ID(2桁) + 市町村番号 (4桁) 291045 = 29 + 1045 この時、都道府県IDだけのデータを取り出すには、 g…

Stataでグラフを別ウインドウで表示させない

Stataでグラフを描く際、デフォルトでは別ウインドウでグラフが表示される。 しかし、大量のグラフなどを出力したい時など、毎回別ウインドウで表示させる必要がない場合もある。 このような時に、グラフを描くコードを回しながらもグラフ自体は別ウインドウ…

Stataで特定のルールに従ったセル内の情報を分割する。

一つのセルの中に特定のルールで、いくつかの数値情報などが含まれているときに使うコード。例えば、IDなどが一つのセルの中に入ってしまっている状況が考えられる。3291049004 / 4343046133のような情報が列に入っている。/が分割ルールになっている。その…

Stataで複数の変数を一気に足し合わせる

複数の変数、特にデータ上で連続している変数を足し合わせるのに楽なコード。 "-"は左の変数から右の変数までの全ての変数を…の意味。 egen sum_x = rowtotal(x1 - x100) ここでは例えば、種類別に分かれている所得データ(e.g. 農業所得: Income_agricultur…