[Stata][estout]Stataで結果のTableをコマンドひとつで作成する方法

green trees near white and gray mountain under blue sky stata
Photo by Caryn on Pexels.com

essttabで解決

StataでDemographic Tableをコマンド一つで作成する方法については以前取り上げた。

StataでコマンドひとつでTable 1を作成できる。

今回はResultのTableをコマンドひとつで作成できるestoutについて取り上げる。スイスベルン大学の社会学の教授であるBenn Jannが作成したもの。

インストール

いつもの。インターネット接続環境で。

ssc install estout, replace

esttabについて

ResultのTableを作成するには、estoutのwrapperであるesttabを用いる。ここではTutorialに習い、Stataのデフォルトデータセットである。auto.dtaを用いる。

sysuse auto, clear

このデータでまずは回帰分析を行う。結果が出力されないように、quietlyを使っている。

eststo: quietly regress price weight mpg
*(est1 stored)

次に変数を追加したもの。

eststo: quietly regress price weight mpg foreign
*(est2 stored)

こうすることで結果がest1, est2として格納される。

esttab

とすることでStata上に以下のような結果が表示される。

Stata上のアウトプット。

格納結果を確認するのは

eststo dir

になる。格納された結果をクリアするときは

eststo clear

とする。ちなみに、これはStataにデフォルトで付属しているestimates storeを用いてもできる。

sysuse auto, clear
reg price weight mpg
est store model1
reg price weight mpg foreign
est store model2
esttab model1 model2

標準誤差やp値の表示

esttabはデフォルトで、点推定値とt統計量を表示し、テーブルフッターにオブザベーションの数を表示するようになっている。t統計量を標準誤差などで置き換えて、調整済み\(R^2\)乗を追加するには、以下のようにする。

esttab, se ar2

また、オプションとして”p”を用いることでp値を、”ci”を用いることで95\(\%\)信頼区間を表示できる。ただし、以下のように両方を用いる事はできない。

esttab, p ci
*これはエラーになる。

“scalars()”オプショで、\(R^2\)やF統計量、あるいはシュワルツの情報量基準なども記載可能。

esttab, p scalars(F df_m df_r)
様々なオプションについてはリンク先を参照。

ラベルとタイトル、脚注

ここらへんからが実用的な利用方法になる。まず、ラベルとタイトルなどを定義する。

esttab, label title(This is a regression table.) nonumbers mtitles("Model A" "Model B") addnote("Source: auto.dta")
だんだん見た目が美しくなっていく。

“label”オプションで変数に付与したラベル名を用いることができる。

結果の圧縮表示

これは結果を見た方がわかりやすい。

syuse auto, clear
eststo: reg price weight
eststo: reg price weight mpg
eststo: reg price weight mpg foreign
eststo: reg price weight mpg foreign displacement
esttab, compress
結果をスッキリとまとめてくれる。

結果を整える。

様々なオプションを以下に掲載する。以下は、cellsオプションの指定値である。

オプション説明
b点推定値
se標準誤差
tt検定量
pp値
ci95\(\%\)信頼区間
ci_l95\(\%\)信頼区間下限
ci_u95\(\%\)信頼区間上限
cellsオプションの一覧。

例えば、

sysuse auto, clear
esatsto: quietly regress price weight mpg
eststo: quietly regress price weight mpg foreign
esttab, cells(b se)

とすると点推定値の下に標準誤差が掲載される。

点推定値の下に標準誤差が表示される。

結果を下ではなく横に表示したいときは、cellsオプションの中をクオテーションか括弧で囲む。

sysuse auto, clear
esatsto: quietly regress price weight mpg
eststo: quietly regress price weight mpg foreign
esttab, cells("b ci")
esttab, cells((b ci))
95\(\%\)信頼区間の横への表示。

これは組み合わせることもできて、例えば

esttab, cells("b p" se)

とすると、b(点推定値)の横にp(p値)が来て、bの下にse(標準誤差)が表示される。

このようなアレンジも可能。

さらに、個々の統計量に対して、小数点の指定(fmt(n))や括弧で囲むかどうか(par)も指定可能である。

esttab, cells("b(sta fmt(2)) ci(par fmt(2))")
なんか論文にあるTableっぽくなってきた。

fmt()の中で小数点第何位までかを指定する。parで括弧のありなしを指定する。

有意水準を表す星は、デフォルトでは\(p<0.05\)で*、\(p < 0.01\)で**、\(p < 0.001\)で***となっているが変更可能である。

切片を落とす

esttab, cells("b(sta fmt(2)) ci(par fmt(2))") drop(_cons)

で良い。

解析がロジスティック回帰分析のとき

オプションでeformとすると良い。

esttab, eform

エクセルへの出力

以下で行う。

esttab using /Path/example.csv

ここで”plain”オプションを用いると、結果の有意差を示す星マークや、括弧なしで出力してくれる。なお、Latex形式で出力することも可能。この場合、”style”を用いる。

estout, style(tex)

MIしたとき

Multiple Imputationを行ったときは、以下のようにすると良い。

*Crude
quietly mi estimate, post: xtreg outcome exposure
eststo
*Model 1
quietly mi estimate, post: xtreg outcome exposure covariate1 covariate2
eststo
*Model 2
quietly mi estimate, post: xtreg outcome exposure covariate1 covariate2 covariate3 covariate4
eststo

“post”オプションを行うのがポイントである。

一番有用と考えられる形式

esttab using "/Path/example.csv", b(2) ci(2) par wide drop(_cons) \\\
label title(Table X) mtitles("Model 1" "Model 2") addnote("Souce: .dta") noobs nobase plain replace

関連リンク

ヘルプが一番役に立つ。

Multiple Imputation 多重代入法について

コメント

タイトルとURLをコピーしました