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でcsvを読み込む際のエラー

csvを読み込もうとしたときに、 long invalid varname error in line 1 of file r(198); などと表示されて読み込めないことがあった。筆者の場合は、全てのファイルを閉じたうえで、 Update all を実行することでなぜかエラーがなくなった。

STATAで列の順番を変える (order/move)

STATAのデータセットの列の順番を変えるには以下の2通りがある: order 特定の列をデータセットの一番左側に移動させる。 order var1 var2 var3 とすることで、order の後ろで指定された列 (varlist, ここでは var1~var3) を、その指定した順番で、データ…

STATAで上から次のobservationが出てくるまで同じ値または文字列を入力する(fill fown)。

STATAでネ申を読み込んだとき、上から順に情報が入っていることで、階層が識別されていることがある。例えば以下の例である。 A B 千葉県 浦安市 市川市 船橋市 長野県 長野市 ... この時、データを扱う身としてはA列に次の県が出るまでの全てのobservation…

STATAで特定の文字列が含まれているかを識別する。

変数の中に特定の文字列が含まれているかを識別する方法。例えば、ある変数の列の中に、県と市が混ざっているような場合に、どれが県のobservationと対応しているかを知りたい場合などが考えられる。 つまり、 (列: A) 千葉県 浦安市 市川市 千葉市 市原市 …

STATAで変数名を取得する (ds) 。

STATAで変数名を取得するために ds というコマンドが使える。 特定の型の変数を取得して、その変数に対してある作業を行いたいという場合に利用可能である。 例えば、A, B, C という列で構成されるデータを扱っている時、 ds は A B C と、列名を返す。 ds …

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

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

STATAで全ての変数名をlocalとして指定する。

localを用いて変数の組を指定することでミスを防ぎ作業効率を上げることができる。ここでは全ての変数を指定することを考える。var1 - var100のように指定することも考えられるが、それでは変数の順番が変わったり、追加されたりしたときに都度都度修正する…

STATAでcollapseしても変数の名前をキープする。

異なるobservation間で足し算をしたり、duplicateに対処するためにcollapseが有用である。しかし、例えば collapse (sum) population, by(prefecture) を実行すると、その後の変数prefectureのラベルは(sum) prefectureなどとなってしまい、もともとprefectu…

STATAでlocal変数の共通部分を抜き出す。

localは、複数の変数を指定するとき、また、何かの結果を一時保存するのに非常に有用である。その組み合わせ技として、local変数同士から新たなlocal変数を定義したいことがあった(例は一番下)。ここでは、二つのlocalの組から共通の変数を新しいlocalとして…

STATAで変数や文字列の組でループを回す。

STTAで文字列や変数のループを回すときに使うコード。localを用いて変数の組を作り、それぞれのグループの何番目かを指定することでループを作る。 例えば、ANCOVAで複数の回帰分析をループで回したいとき、outcomeとbaselineでのoutcomeの組を指定したい。 …

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で複数の変数をまとめて指定する。

STATAで複数の変数を同時に指定したいときがある。例えば、所得が分類ごとに分かれているときに、それらをすべて足し合わせて総所得を計算するとき(変数を足し合わせるコマンドはここではegen rowtotalを用いる)などだ。以下では二つの方法を紹介する。 変数…

STATAでlocal変数から特定の変数を落とす

STATAlocalを用いて変数の組を管理すると何度も入力しなくてよいし、途中で少し違うモデルを回すのが非常に楽になる。 しかしいちいち細かく定義していては全部手で入力しているのとあまり変わらないので、一度定義したものを少し変形して使うことでより綺麗…

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

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

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

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

Stataで複数のグラフを一つのグラフにくっつけるときにlegendを一つにする方法。

複数のグラフを一つにまとめるとき使われるのが、graph combine ...のコマンドである。 しかし、すべてのグラフが同じlegendの時、グラフごとにlegendが表示されてしまうと目障りである。複数の同じlegendを持つグラフに対して、一つのlegendを表示させるこ…

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

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

Stataでestout/esttabの際にlocal statsが表示されない。

回帰分析などの結果をきれいに出力するコマンドであるesttabであるが、表の下のほうに固定効果(FE)の有無や説明変数の有無など複数の情報を入れようとすると、うまく表示されないエラーがあった(他の人はうまくいっているようなので理由不明)。esttab やesta…

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でバランステーブルを作る。

RCTなどで、グループ間(e.g., トリートメントとコントロールグループ)で、Covariatesがうまくバランスしているか(t値/F値が統計的に異なっていないか)を調べるときに使うコマンド。$covariates は事前に準備したcovariates(e.g., 家父長の年齢 / 学歴 / 家父…

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

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