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でグラフを描く際、デフォルトでは別ウインドウでグラフが表示される。 しかし、大量のグラフなどを出力したい時など、毎回別ウインドウで表示させる必要がない場合もある。 このような時に、グラフを描くコードを回しながらもグラフ自体は別ウインドウで表示させない方法が2つある:

  1. set graph off と先に宣言する
  2. graph ~~ という場合、オプションで nodraw をつける

どちらもグラフを描くコードを走らせながらもグラフ自体はStata上で表示させないが、2では graph export ~~ 等でグラフを特定の形式のファイルに出力できない(2はsaveは可能。 1はexportも可能)。
また1は、set graph on を宣言すると再びグラフを別ウインドウで表示してくれるため、特定の部分だけグラフを表示させないことも可能:

set graph off
histgram ~~~
graph export ~~~
set graph on

graph twoway scatter ~~~

とすると、histrogram~~~ により作成されるヒストグラムは別ウインドウで表示されないまま graph export で出力でき、その後の graph twoway scatter ~~ はグラフ自体も表示される。

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

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

split ID, p(" / ")   

というコードを書くと、""の中のところでセルを分割し、新しく変数が作成される。この場合ID1ID2が新たな変数として作成され、それぞれのIDが含まれる。

Stataでバランステーブルを作る。

RCTなどで、グループ間(e.g., トリートメントとコントロールグループ)で、Covariatesがうまくバランスしているか(t値/F値が統計的に異なっていないか)を調べるときに使うコマンド。$covariates は事前に準備したcovariates(e.g., 家父長の年齢 / 学歴 / 家父長の性別など)、Treatment_Status はトリートメントグループなら1、コントロールグループなら0をとるダミー変数、villageクラスターとなる単位、$outputs\balance_tabletex形式で保存先のフォルダと保存したい名前、を表しているとする。ftestのオプションでf検定も同時に可能。

iebaltab $covariates, ///
        grpvar (Treatment_status) ///
        vce (cluster village) ///
        savetex ("$outputs\balanceAcc") ///
        replace onerow ftest rowvarlabel

参考: IE analytics: introducing ietoolkit

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


複数の変数、特にデータ上で連続している変数を足し合わせるのに楽なコード。 "-"は左の変数から右の変数までの全ての変数を…の意味。

    egen sum_x = rowtotal(x1 - x100)

ここでは例えば、種類別に分かれている所得データ(e.g. 農業所得: Income_agriculture, 賃金所得: Income_wage)を全て足して、合計の所得データを作る例。

    egen TotalIncome=rowtotal(Income_agriculture-Income_wage)