essttabで解決
StataでDemographic Tableをコマンド一つで作成する方法については以前取り上げた。
今回は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上に以下のような結果が表示される。
格納結果を確認するのは
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 | 標準誤差 |
t | t検定量 |
p | p値 |
ci | 95\(\%\)信頼区間 |
ci_l | 95\(\%\)信頼区間下限 |
ci_u | 95\(\%\)信頼区間上限 |
例えば、
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))
これは組み合わせることもできて、例えば
esttab, cells("b p" se)
とすると、b(点推定値)の横にp(p値)が来て、bの下にse(標準誤差)が表示される。
さらに、個々の統計量に対して、小数点の指定(fmt(n))や括弧で囲むかどうか(par)も指定可能である。
esttab, cells("b(sta fmt(2)) ci(par fmt(2))")
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
関連リンク
ヘルプが一番役に立つ。
コメント