esttab and estout tabulate the e()-returns
of a command, but not all commands return their results in e().
estpost is a tool make results from some of the most popular
of these non-"e-class" commands available for tabulation. It collects
results and posts them in an appropriate form in e().
The basic syntax of estpost is:
estpost command [ arguments ] [, options ]
See the help file for a list of supported commands.
For example, to post and then results from summarize
you could type:
. sysuse auto, clear (1978 Automobile Data) . estpost summarize price weight rep78 mpg | e(count) e(sum_w) e(mean) e(Var) e(sd) e(min) -------------+------------------------------------------------------------------ price | 74 74 6165.257 8699526 2949.496 3291 weight | 74 74 3019.459 604029.8 777.1936 1760 rep78 | 69 69 3.405797 .9799659 .9899323 1 mpg | 74 74 21.2973 33.47205 5.785503 12 | e(max) e(sum) -------------+---------------------- price | 15906 456229 weight | 4840 223440 rep78 | 5 235 mpg | 41 1576 . esttab, cells("count mean sd min max") noobs ----------------------------------------------------------------------------- (1) count mean sd min max ----------------------------------------------------------------------------- price 74 6165.257 2949.496 3291 15906 weight 74 3019.459 777.1936 1760 4840 rep78 69 3.405797 .9899323 1 5 mpg 74 21.2973 5.785503 12 41 -----------------------------------------------------------------------------Code
Example for estpost summarize:
. sysuse auto, clear (1978 Automobile Data) . estpost summarize price mpg rep78 foreign, listwise | e(count) e(sum_w) e(mean) e(Var) e(sd) e(min) -------------+------------------------------------------------------------------ price | 69 69 6146.043 8482308 2912.44 3291 mpg | 69 69 21.28986 34.41475 5.866408 12 rep78 | 69 69 3.405797 .9799659 .9899323 1 foreign | 69 69 .3043478 .2148338 .4635016 0 | e(max) e(sum) -------------+---------------------- price | 15906 424077 mpg | 41 1469 rep78 | 5 235 foreign | 1 21 . esttab, cells("mean sd min max") nomtitle nonumber ---------------------------------------------------------------- mean sd min max ---------------------------------------------------------------- price 6146.043 2912.44 3291 15906 mpg 21.28986 5.866408 12 41 rep78 3.405797 .9899323 1 5 foreign .3043478 .4635016 0 1 ---------------------------------------------------------------- N 69 ----------------------------------------------------------------Code
Summary statistics can also be posted by
estpost tabstat.
Use columns(variables) and columns(statistics) to determine
whether to display variables or statistics in the columns. The default is
columns(variables):
. sysuse auto, clear (1978 Automobile Data) . estpost tabstat price mpg rep78, listwise statistics(mean sd) Summary statistics: mean sd for variables: price mpg rep78 | e(price) e(mpg) e(rep78) -------------+--------------------------------- mean | 6146.043 21.28986 3.405797 sd | 2912.44 5.866408 .9899323 . esttab, cells("price mpg rep78") nomtitle nonumber --------------------------------------------------- price mpg rep78 --------------------------------------------------- mean 6146.043 21.28986 3.405797 sd 2912.44 5.866408 .9899323 --------------------------------------------------- N 69 ---------------------------------------------------Code
Type columns(statistics) to print statistics in columns:
. sysuse auto, clear (1978 Automobile Data) . estpost tabstat price mpg rep78, listwise statistics(mean sd) columns(statistics) Summary statistics: mean sd for variables: price mpg rep78 | e(mean) e(sd) -------------+---------------------- price | 6146.043 2912.44 mpg | 21.28986 5.866408 rep78 | 3.405797 .9899323 . esttab, cells("mean sd") nomtitle nonumber -------------------------------------- mean sd -------------------------------------- price 6146.043 2912.44 mpg 21.28986 5.866408 rep78 3.405797 .9899323 -------------------------------------- N 69 --------------------------------------Code
A table of summary statistics by subgroups can easily be produced using
estpost summarize
in connection with eststo and by:
. sysuse auto, clear (1978 Automobile Data) . by foreign: eststo: quietly estpost summarize price mpg rep78, listwise --------------------------------------------------------------------------------------- -> Domestic (est1 stored) --------------------------------------------------------------------------------------- -> Foreign (est2 stored) . esttab, cells("mean sd") label nodepvar ------------------------------------------------------------------------ (1) (2) Domestic Foreign mean sd mean sd ------------------------------------------------------------------------ Price 6179.25 3188.969 6070.143 2220.984 Mileage (mpg) 19.54167 4.753312 25.28571 6.309856 Repair Record 1978 3.020833 .837666 4.285714 .7171372 ------------------------------------------------------------------------ Observations 48 21 ------------------------------------------------------------------------ . eststo clearCode
Alternatively, you can also use
estpost tabstat
(see next example).
Use
estpost tabstat
with the by() option
to post summary statistics by subgroups:
. sysuse auto, clear (1978 Automobile Data) . estpost tabstat price mpg rep78, by(foreign) statistics(mean sd) /// > columns(statistics) listwise Summary statistics: mean sd for variables: price mpg rep78 by categories of: foreign foreign | e(mean) e(sd) -------------+---------------------- Domestic | price | 6179.25 3188.969 mpg | 19.54167 4.753312 rep78 | 3.020833 .837666 -------------+---------------------- Foreign | price | 6070.143 2220.984 mpg | 25.28571 6.309856 rep78 | 4.285714 .7171372 -------------+---------------------- Total | price | 6146.043 2912.44 mpg | 21.28986 5.866408 rep78 | 3.405797 .9899323 . esttab, main(mean) aux(sd) nostar unstack noobs nonote nomtitle nonumber --------------------------------------------------- Domestic Foreign Total --------------------------------------------------- price 6179.2 6070.1 6146.0 (3189.0) (2221.0) (2912.4) mpg 19.54 25.29 21.29 (4.753) (6.310) (5.866) rep78 3.021 4.286 3.406 (0.838) (0.717) (0.990) ---------------------------------------------------Code
If the labels of the categories are too long or contain unsuitable characters,
they are stored in macro e(labels). Type varlabels(`e(labels)')
or, depending on context, eqlabels(`e(labels)') to use
these labels:
. sysuse auto, clear (1978 Automobile Data) . estpost tabstat price in 1/15, by(make) Summary statistics: mean for variables: price by categories of: make make | e(mean) -------------+----------- 1 | 4099 2 | 4749 3 | 3799 4 | 4816 5 | 7827 6 | 5788 7 | 4453 8 | 5189 9 | 10372 10 | 4082 11 | 11385 12 | 14500 13 | 15906 14 | 3299 15 | 5705 -------------+----------- Total | 7064.6 category labels saved in macro e(labels) . esttab, cells(mean) noobs nomtitle nonumber varlabels(`e(labels)') varwidth(20) --------------------------------- mean --------------------------------- AMC Concord 4099 AMC Pacer 4749 AMC Spirit 3799 Buick Century 4816 Buick Electra 7827 Buick LeSabre 5788 Buick Opel 4453 Buick Regal 5189 Buick Riviera 10372 Buick Skylark 4082 Cad. Deville 11385 Cad. Eldorado 14500 Cad. Seville 15906 Chev. Chevette 3299 Chev. Impala 5705 Total 7064.6 --------------------------------- . lab def origin 0 "Car type: domestic" 1 "Car type: foreign", modify . estpost tabstat price weight, statistics(mean sd) by(foreign) Summary statistics: mean sd for variables: price weight by categories of: foreign foreign | e(price) e(weight) -------------+---------------------- 0 | mean | 6072.423 3317.115 sd | 3097.104 695.3637 -------------+---------------------- 1 | mean | 6384.682 2315.909 sd | 2621.915 433.0035 -------------+---------------------- Total | mean | 6165.257 3019.459 sd | 2949.496 777.1936 category labels saved in macro e(labels) . esttab, cells("price weight") noobs nomtitle nonumber /// > eqlabels(`e(labels)') varwidth(20) ---------------------------------------------- price weight ---------------------------------------------- Car type: domestic mean 6072.423 3317.115 sd 3097.104 695.3637 ---------------------------------------------- Car type: foreign mean 6384.682 2315.909 sd 2621.915 433.0035 ---------------------------------------------- Total mean 6165.257 3019.459 sd 2949.496 777.1936 ----------------------------------------------Code
Example for estpost ttest:
. sysuse auto, clear (1978 Automobile Data) . estpost ttest price mpg headroom trunk, by(foreign) | e(b) e(count) e(se) e(t) e(df_t) e(p_l) -------------+------------------------------------------------------------------ price | -312.2587 74 754.4488 -.4138899 72 .3400925 mpg | -4.945804 74 1.362162 -3.630848 72 .0002627 headroom | .5402098 74 .2070884 2.608596 72 .9944757 trunk | 3.340909 74 1.022208 3.268327 72 .99917 | e(p) e(p_u) e(N_1) e(mu_1) e(N_2) e(mu_2) -------------+------------------------------------------------------------------ price | .6801851 .6599075 52 6072.423 22 6384.682 mpg | .0005254 .9997373 52 19.82692 22 24.77273 headroom | .0110486 .0055243 52 3.153846 22 2.613636 trunk | .00166 .00083 52 14.75 22 11.40909 . esttab, wide nonumber mtitle("diff.") ----------------------------------------- diff. ----------------------------------------- price -312.3 (-0.41) mpg -4.946*** (-3.63) headroom 0.540* (2.61) trunk 3.341** (3.27) ----------------------------------------- N 74 ----------------------------------------- t statistics in parentheses * p<0.05, ** p<0.01, *** p<0.001Code
Example for estpost prtest:
. webuse cure2 . gen noise = uniform()>.5 . estpost prtest cure noise, by(sex) | e(b) e(count) e(se) e(se0) e(z) e(p_l) -------------+------------------------------------------------------------------ cure | -.0729167 109 .0933123 .0942404 -.7737309 .219545 noise | .0399306 109 .0968989 .097071 .411354 .6595935 | e(p) e(p_u) e(N_1) e(P_1) e(N_2) e(P_2) -------------+------------------------------------------------------------------ cure | .43909 .780455 64 .59375 45 .6666667 noise | .680813 .3404065 64 .484375 45 .4444444 . esttab, cell("b se0 z p") nomtitle nonumber ---------------------------------------------------------------- b se0 z p ---------------------------------------------------------------- cure -.0729167 .0942404 -.7737309 .43909 noise .0399306 .097071 .411354 .680813 ---------------------------------------------------------------- N 109 ----------------------------------------------------------------Code
Example for posting a one-way frequency table using
estpost tabulate:
. sysuse auto, clear (1978 Automobile Data) . estpost tabulate foreign foreign | e(b) e(pct) e(cumpct) -------------+--------------------------------- Domestic | 52 70.27027 70.27027 Foreign | 22 29.72973 100 -------------+--------------------------------- Total | 74 100 . esttab, cells("b(label(freq)) pct(fmt(2)) cumpct(fmt(2))") /// > varlabels(, blist(Total "{hline @width}{break}")) /// > nonumber nomtitle noobs --------------------------------------------------- freq pct cumpct --------------------------------------------------- Domestic 52 70.27 70.27 Foreign 22 29.73 100.00 --------------------------------------------------- Total 74 100.00 ---------------------------------------------------Code
If the value labels are too long or contain unsuitable characters,
they are stored in macro e(labels). Type varlabels(`e(labels)')
to use the labels in esttab or estout in this case:
. sysuse auto, clear (1978 Automobile Data) . lab def origin 0 "Car type: domestic" 1 "Car type: foreign", modify . estpost tabulate foreign foreign | e(b) e(pct) e(cumpct) -------------+--------------------------------- 0 | 52 70.27027 70.27027 1 | 22 29.72973 100 -------------+--------------------------------- Total | 74 100 row labels saved in macro e(labels) . esttab, cells("b(label(freq)) pct(fmt(2)) cumpct(fmt(2))") /// > varlabels(`e(labels)', blist(Total "{hline @width}{break}")) /// > varwidth(20) nonumber nomtitle noobs ----------------------------------------------------------- freq pct cumpct ----------------------------------------------------------- Car type: domestic 52 70.27 70.27 Car type: foreign 22 29.73 100.00 ----------------------------------------------------------- Total 74 100.00 -----------------------------------------------------------Code
estpost tabulate
stores the columns of a two-way table in separate equations.
Use the unstack option in esttab or estout to
print these equations beside one another:
. sysuse auto, clear (1978 Automobile Data) . estpost tabulate rep78 foreign foreign | rep78 | e(b) e(pct) e(colpct) e(rowpct) -------------+-------------------------------------------- Domestic | 1 | 2 2.898551 4.166667 100 2 | 8 11.5942 16.66667 100 3 | 27 39.13043 56.25 90 4 | 9 13.04348 18.75 50 5 | 2 2.898551 4.166667 18.18182 Total | 48 69.56522 100 69.56522 -------------+-------------------------------------------- Foreign | 1 | 0 0 0 0 2 | 0 0 0 0 3 | 3 4.347826 14.28571 10 4 | 9 13.04348 42.85714 50 5 | 9 13.04348 42.85714 81.81818 Total | 21 30.43478 100 30.43478 -------------+-------------------------------------------- Total | 1 | 2 2.898551 2.898551 100 2 | 8 11.5942 11.5942 100 3 | 30 43.47826 43.47826 100 4 | 18 26.08696 26.08696 100 5 | 11 15.94203 15.94203 100 Total | 69 100 100 100 . esttab, cell(colpct(fmt(2))) unstack noobs --------------------------------------------------- (1) Domestic Foreign Total colpct colpct colpct --------------------------------------------------- 1 4.17 0.00 2.90 2 16.67 0.00 11.59 3 56.25 14.29 43.48 4 18.75 42.86 26.09 5 4.17 42.86 15.94 Total 100.00 100.00 100.00 --------------------------------------------------- . esttab, cell(colpct(fmt(2)) b(fmt(g) par keep(Total))) /// > collabels(none) unstack noobs nonumber nomtitle /// > eqlabels(, lhs("Repair Rec.")) /// > varlabels(, blist(Total "{hline @width}{break}")) --------------------------------------------------- Repair Rec. Domestic Foreign Total --------------------------------------------------- 1 4.17 0.00 2.90 2 16.67 0.00 11.59 3 56.25 14.29 43.48 4 18.75 42.86 26.09 5 4.17 42.86 15.94 --------------------------------------------------- Total 100.00 100.00 100.00 (48) (21) (69) ---------------------------------------------------Code
If the value labels are too long or contain unsuitable characters,
they are stored in macros e(labels) (row labels) and e(eqlabels)
(column labels). Type varlabels(`e(labels)') and
eqlabels(`e(eqlabels)') to use these labels in esttab or estout:
. sysuse auto, clear (1978 Automobile Data) . lab def origin 0 "Type: domestic" 1 "Type: foreign", modify . lab def rep78 1 "Rep. rec. 1" 2 "Rep. rec. 2" 3 "Rep. rec. 3" /// > 4 "Rep. rec. 4" 5 "Rep. rec. 5" . lab val rep78 rep78 . estpost tabulate rep78 foreign foreign | rep78 | e(b) e(pct) e(colpct) e(rowpct) -------------+-------------------------------------------- 0 | 1 | 2 2.898551 4.166667 100 2 | 8 11.5942 16.66667 100 3 | 27 39.13043 56.25 90 4 | 9 13.04348 18.75 50 5 | 2 2.898551 4.166667 18.18182 Total | 48 69.56522 100 69.56522 -------------+-------------------------------------------- 1 | 1 | 0 0 0 0 2 | 0 0 0 0 3 | 3 4.347826 14.28571 10 4 | 9 13.04348 42.85714 50 5 | 9 13.04348 42.85714 81.81818 Total | 21 30.43478 100 30.43478 -------------+-------------------------------------------- Total | 1 | 2 2.898551 2.898551 100 2 | 8 11.5942 11.5942 100 3 | 30 43.47826 43.47826 100 4 | 18 26.08696 26.08696 100 5 | 11 15.94203 15.94203 100 Total | 69 100 100 100 row labels saved in macro e(labels) column labels saved in macro e(eqlabels) . esttab, cell(colpct(fmt(2))) unstack noobs modelwidth(15) /// > varlabels(`e(labels)') eqlabels(`e(eqlabels)') ------------------------------------------------------------ (1) Type: domestic Type: foreign Total colpct colpct colpct ------------------------------------------------------------ Rep. rec. 1 4.17 0.00 2.90 Rep. rec. 2 16.67 0.00 11.59 Rep. rec. 3 56.25 14.29 43.48 Rep. rec. 4 18.75 42.86 26.09 Rep. rec. 5 4.17 42.86 15.94 Total 100.00 100.00 100.00 ------------------------------------------------------------Code
Example for posting a one-way frequency table for complex survey data using
estpost svy: tabulate:
. webuse nhanes2b, clear . svyset psuid [pweight=finalwgt], strata(stratid) pweight: finalwgt VCE: linearized Single unit: missing Strata 1: stratid SU 1: psuid FPC 1: <zero> . estpost svy: tabulate race (running tabulate on estimation sample) Number of strata = 31 Number of obs = 10,351 Number of PSUs = 62 Population size = 117,157,513 Design df = 31 ---------------------- 1=white, | 2=black, | 3=other | proportion ----------+----------- White | .8792 Black | .0955 Other | .0253 | Total | 1 ---------------------- Key: proportion = cell proportion saved vectors: e(b) = cell proportions e(se) = standard errors of cell proportions e(lb) = lower 95% confidence bounds for cell proportions e(ub) = upper 95% confidence bounds for cell proportions e(deff) = deff for variances of cell proportions e(deft) = deft for variances of cell proportions e(cell) = cell proportions e(count) = weighted counts e(obs) = number of observations . esttab, cell("b(f(4)) se lb ub deft") ----------------------------------------------------------------------------- (1) Mean b se lb ub deft ----------------------------------------------------------------------------- White 0.8792 0.0167 0.8408 0.9093 5.2090 Black 0.0955 0.0127 0.0725 0.1249 4.4130 Other 0.0253 0.0105 0.0108 0.0585 6.8246 Total 1.0000 0.0000 ----------------------------------------------------------------------------- N 10351 -----------------------------------------------------------------------------Code
If the value labels are too long or contain unsuitable characters,
they are stored in macro e(labels). Type varlabels(`e(labels)')
in this case:
. label define race 1 "Race: White" 2 "Race: Black" 3 "Race: Other", modify . estpost svy: tabulate race (running tabulate on estimation sample) Number of strata = 31 Number of obs = 10,351 Number of PSUs = 62 Population size = 117,157,513 Design df = 31 ---------------------- 1=white, | 2=black, | 3=other | proportion ----------+----------- Race: Wh | .8792 Race: Bl | .0955 Race: Ot | .0253 | Total | 1 ---------------------- Key: proportion = cell proportion saved vectors: e(b) = cell proportions e(se) = standard errors of cell proportions e(lb) = lower 95% confidence bounds for cell proportions e(ub) = upper 95% confidence bounds for cell proportions e(deff) = deff for variances of cell proportions e(deft) = deft for variances of cell proportions e(cell) = cell proportions e(count) = weighted counts e(obs) = number of observations row labels saved in macro e(labels) . esttab, cell("b(f(4)) se lb ub deft") varlabels(`e(labels)') ----------------------------------------------------------------------------- (1) Mean b se lb ub deft ----------------------------------------------------------------------------- Race: White 0.8792 0.0167 0.8408 0.9093 5.2090 Race: Black 0.0955 0.0127 0.0725 0.1249 4.4130 Race: Other 0.0253 0.0105 0.0108 0.0585 6.8246 Total 1.0000 0.0000 ----------------------------------------------------------------------------- N 10351 -----------------------------------------------------------------------------Code
estpost svy: tabulate
stores the columns of a two-way table in separate equations.
Use the unstack option in esttab or estout to
print these equations beside one another:
. webuse nhanes2b, clear . svyset psuid [pweight=finalwgt], strata(stratid) pweight: finalwgt VCE: linearized Single unit: missing Strata 1: stratid SU 1: psuid FPC 1: <zero> . estpost svy: tabulate race diabetes, row percent (running tabulate on estimation sample) Number of strata = 31 Number of obs = 10,349 Number of PSUs = 62 Population size = 117,131,111 Design df = 31 ------------------------------- 1=white, | diabetes, 1=yes, 2=black, | 0=no 3=other | 0 1 Total ----------+-------------------- White | 96.8 3.195 100 Black | 94.1 5.903 100 Other | 97.97 2.034 100 | Total | 96.58 3.425 100 ------------------------------- Key: row percentage Pearson: Uncorrected chi2(2) = 21.3483 Design-based F(1.52, 47.26) = 15.0056 P = 0.0000 saved vectors: e(b) = row percentages e(se) = standard errors of row percentages e(lb) = lower 95% confidence bounds for row percentages e(ub) = upper 95% confidence bounds for row percentages e(deff) = deff for variances of row percentages e(deft) = deft for variances of row percentages e(cell) = cell percentages e(row) = row percentages e(col) = column percentages e(count) = weighted counts e(obs) = number of observations . esttab ., se nostar nostar unstack --------------------------------------------------- (1) Ratio 0 1 Total --------------------------------------------------- White 96.80 3.195 100 (0.197) (0.197) Black 94.10 5.903 100 (0.614) (0.614) Other 97.97 2.034 100 (0.764) (0.764) Total 96.58 3.425 100 (0.181) (0.181) --------------------------------------------------- N 10349 --------------------------------------------------- Standard errors in parenthesesCode
If the value labels are too long or contain unsuitable characters,
they are stored in macros e(labels) (row labels) and e(eqlabels)
(column labels). Type varlabels(`e(labels)') and
eqlabels(`e(eqlabels)') to use these labels in esttab or estout:
. label define race 1 "Race: White" 2 "Race: Black" 3 "Race: Other", modify . label define diabetes 0 "no diab." 1 "diabetes" . label values diabetes diabetes . estpost svy: tabulate race diabetes, row percent (running tabulate on estimation sample) Number of strata = 31 Number of obs = 10,349 Number of PSUs = 62 Population size = 117,131,111 Design df = 31 ---------------------------------------- 1=white, | 2=black, | diabetes, 1=yes, 0=no 3=other | no diab. diabetes Total ----------+----------------------------- Race: Wh | 96.8 3.195 100 Race: Bl | 94.1 5.903 100 Race: Ot | 97.97 2.034 100 | Total | 96.58 3.425 100 ---------------------------------------- Key: row percentage Pearson: Uncorrected chi2(2) = 21.3483 Design-based F(1.52, 47.26) = 15.0056 P = 0.0000 saved vectors: e(b) = row percentages e(se) = standard errors of row percentages e(lb) = lower 95% confidence bounds for row percentages e(ub) = upper 95% confidence bounds for row percentages e(deff) = deff for variances of row percentages e(deft) = deft for variances of row percentages e(cell) = cell percentages e(row) = row percentages e(col) = column percentages e(count) = weighted counts e(obs) = number of observations row labels saved in macro e(labels) column labels saved in macro e(eqlabels) . esttab ., se nostar nostar unstack varlabels(`e(labels)') eqlabels(`e(eqlabels)') --------------------------------------------------- (1) Ratio no diab. diabetes Total --------------------------------------------------- Race: White 96.80 3.195 100 (0.197) (0.197) Race: Black 94.10 5.903 100 (0.614) (0.614) Race: Other 97.97 2.034 100 (0.764) (0.764) Total 96.58 3.425 100 (0.181) (0.181) --------------------------------------------------- N 10349 --------------------------------------------------- Standard errors in parenthesesCode
By default,
estpost correlate
posts a vector of correlations between
the first specified variable and the remaining variables. Example:
. sysuse auto, clear (1978 Automobile Data) . estpost correlate price turn foreign rep78 price | e(b) e(rho) e(p) e(count) -------------+-------------------------------------------- turn | .3096174 .3096174 .0072662 74 foreign | .0487195 .0487195 .6801851 74 rep78 | .0065533 .0065533 .95738 69 . esttab, cell("rho p count") noobs --------------------------------------------------- (1) price rho p count --------------------------------------------------- turn .3096174 .0072662 74 foreign .0487195 .6801851 74 rep78 .0065533 .95738 69 ---------------------------------------------------Code
Alternatively, specify the matrix option to post a correlation matrix. The columns
of the matrix are stored in separate equations. Hence, use the unstack option
in esttab or estout to print the matrix:
. sysuse auto, clear (1978 Automobile Data) . estpost correlate price turn foreign rep78, matrix listwise | e(b) e(rho) e(p) e(count) -------------+-------------------------------------------- price | price | 1 1 69 turn | .3302013 .3302013 .0055897 69 foreign | -.0173639 -.0173639 .8873872 69 rep78 | .0065533 .0065533 .95738 69 turn | turn | 1 1 69 foreign | -.676836 -.676836 1.72e-10 69 rep78 | -.4961308 -.4961308 .0000146 69 foreign | foreign | 1 1 69 rep78 | .5922369 .5922369 8.31e-08 69 rep78 | rep78 | 1 1 69 . esttab, unstack not noobs compress -------------------------------------------------------------- (1) price turn foreign rep78 -------------------------------------------------------------- price 1 turn 0.330** 1 foreign -0.0174 -0.677*** 1 rep78 0.00655 -0.496*** 0.592*** 1 -------------------------------------------------------------- * p<0.05, ** p<0.01, *** p<0.001Code
Also see More on correlation coefficients under Mixed examples.
estpost ci
posts standard errors and confidence intervals for means,
proportions or counts. Example:
. sysuse auto, clear (1978 Automobile Data) . estpost ci price mpg rep78, listwise (confidence level is 95%) | e(b) e(count) e(se) e(lb) e(ub) -------------+------------------------------------------------------- price | 6146.043 69 350.6166 5446.399 6845.688 mpg | 21.28986 69 .7062326 19.88059 22.69912 rep78 | 3.405797 69 .1191738 3.167989 3.643605 . esttab, cells("b se lb ub") label ------------------------------------------------------------------------ (1) b se lb ub ------------------------------------------------------------------------ Price 6146.043 350.6166 5446.399 6845.688 Mileage (mpg) 21.28986 .7062326 19.88059 22.69912 Repair Record 1978 3.405797 .1191738 3.167989 3.643605 ------------------------------------------------------------------------ Observations 69 ------------------------------------------------------------------------Code
e(lb) and e(ub) contain the the lower and upper bounds of the
confidence intervals. The default confidence level is 95% or as set by
set level.
To post confidence intervals using another level, apply the level() option:
. sysuse auto, clear (1978 Automobile Data) . estpost ci price mpg rep78, listwise level(90) (confidence level is 90%) | e(b) e(count) e(se) e(lb) e(ub) -------------+------------------------------------------------------- price | 6146.043 69 350.6166 5561.365 6730.722 mpg | 21.28986 69 .7062326 20.11216 22.46755 rep78 | 3.405797 69 .1191738 3.207066 3.604528 . esttab, cells("b se lb ub") label scalars(level) ------------------------------------------------------------------------ (1) b se lb ub ------------------------------------------------------------------------ Price 6146.043 350.6166 5561.365 6730.722 Mileage (mpg) 21.28986 .7062326 20.11216 22.46755 Repair Record 1978 3.405797 .1191738 3.207066 3.604528 ------------------------------------------------------------------------ Observations 69 level 90 ------------------------------------------------------------------------Code
Example with confidence intervals for proportions:
. sysuse auto, clear (1978 Automobile Data) . eststo exact: estpost ci foreign, binomial exact (confidence level is 95%) | e(b) e(count) e(se) e(lb) e(ub) -------------+------------------------------------------------------- foreign | .2972973 74 .0531331 .196584 .4148353 . eststo agresti: estpost ci foreign, binomial agresti (confidence level is 95%) | e(b) e(count) e(se) e(lb) e(ub) -------------+------------------------------------------------------- foreign | .2972973 74 .0531331 .204807 .4097942 . esttab, cells(lb ub) mtitles -------------------------------------- (1) (2) exact agresti lb/ub lb/ub -------------------------------------- foreign .196584 .204807 .4148353 .4097942 -------------------------------------- N 74 74 -------------------------------------- . eststo clearCode
estpost stci
posts confidence intervals for means and percentiles
of survival time. The default is to use the median (50% percentile). Example:
. webuse page2 . estpost stci (confidence level is 95%) | e(count) e(p50) e(se) e(lb) e(ub) -------------+------------------------------------------------------- total | 40 232 2.562933 213 239 . esttab, cell("count p50 se lb ub") noobs compress ------------------------------------------------------------ (1) count p50 se lb ub ------------------------------------------------------------ total 40 232 2.562933 213 239 ------------------------------------------------------------Code
To compute the statistics by subgroups, apply the by() option:
. webuse page2 . estpost stci, by(group) (confidence level is 95%) | e(count) e(p50) e(se) e(lb) e(ub) -------------+------------------------------------------------------- 1 | 19 216 7.661029 190 234 2 | 21 233 3.081611 232 280 -------------+------------------------------------------------------- total | 40 232 2.562933 213 239 . esttab, cell("count p50 se lb ub") noobs compress /// > varlabels(, blist(total "{hline @width}{break}")) ------------------------------------------------------------ (1) count p50 se lb ub ------------------------------------------------------------ 1 19 216 7.661029 190 234 2 21 233 3.081611 232 280 ------------------------------------------------------------ total 40 232 2.562933 213 239 ------------------------------------------------------------Code
estpost margins
posts results from the margins
command. The following example illustrates how to plot logit coefficients
along with average marginal effects:
. sysuse auto, clear (1978 Automobile Data) . logit foreign turn weight mpg, nolog Logistic regression Number of obs = 74 LR chi2(3) = 43.00 Prob > chi2 = 0.0000 Log likelihood = -23.535653 Pseudo R2 = 0.4774 ------------------------------------------------------------------------------ foreign | Coef. Std. Err. z P>|z| [95% Conf. Interval] -------------+---------------------------------------------------------------- turn | -.3992939 .163453 -2.44 0.015 -.7196559 -.078932 weight | -.0023879 .0011789 -2.03 0.043 -.0046986 -.0000772 mpg | -.179312 .0937601 -1.91 0.056 -.3630785 .0044544 _cons | 24.85926 6.718204 3.70 0.000 11.69182 38.0267 ------------------------------------------------------------------------------ . eststo logodds . estpost margins, dydx(*) Average marginal effects Number of obs = 74 Model VCE : OIM Expression : Pr(foreign), predict() dy/dx w.r.t. : turn weight mpg ------------------------------------------------------------------------------ | Delta-method | dy/dx Std. Err. z P>|z| [95% Conf. Interval] -------------+---------------------------------------------------------------- turn | -.0397669 .0133138 -2.99 0.003 -.0658615 -.0136723 weight | -.0002378 .0001042 -2.28 0.022 -.000442 -.0000336 mpg | -.0178582 .0082449 -2.17 0.030 -.0340179 -.0016986 ------------------------------------------------------------------------------ . eststo AMEs . esttab logodds AMEs, mtitles -------------------------------------------- (1) (2) logodds AMEs -------------------------------------------- main turn -0.399* -0.0398** (-2.44) (-2.99) weight -0.00239* -0.000238* (-2.03) (-2.28) mpg -0.179 -0.0179* (-1.91) (-2.17) _cons 24.86*** (3.70) -------------------------------------------- N 74 74 -------------------------------------------- t statistics in parentheses * p<0.05, ** p<0.01, *** p<0.001Code
Note that in many cases estpost margins is not needed as you
can specify margins with the post option to store results
from margins in e():
. sysuse auto, clear (1978 Automobile Data) . logit foreign turn weight mpg, nolog Logistic regression Number of obs = 74 LR chi2(3) = 43.00 Prob > chi2 = 0.0000 Log likelihood = -23.535653 Pseudo R2 = 0.4774 ------------------------------------------------------------------------------ foreign | Coef. Std. Err. z P>|z| [95% Conf. Interval] -------------+---------------------------------------------------------------- turn | -.3992939 .163453 -2.44 0.015 -.7196559 -.078932 weight | -.0023879 .0011789 -2.03 0.043 -.0046986 -.0000772 mpg | -.179312 .0937601 -1.91 0.056 -.3630785 .0044544 _cons | 24.85926 6.718204 3.70 0.000 11.69182 38.0267 ------------------------------------------------------------------------------ . eststo logodds . margins, dydx(*) post Average marginal effects Number of obs = 74 Model VCE : OIM Expression : Pr(foreign), predict() dy/dx w.r.t. : turn weight mpg ------------------------------------------------------------------------------ | Delta-method | dy/dx Std. Err. z P>|z| [95% Conf. Interval] -------------+---------------------------------------------------------------- turn | -.0397669 .0133138 -2.99 0.003 -.0658615 -.0136723 weight | -.0002378 .0001042 -2.28 0.022 -.000442 -.0000336 mpg | -.0178582 .0082449 -2.17 0.030 -.0340179 -.0016986 ------------------------------------------------------------------------------ . eststo AMEs . esttab logodds AMEs, mtitles -------------------------------------------- (1) (2) logodds AMEs -------------------------------------------- main turn -0.399* -0.0398** (-2.44) (-2.99) weight -0.00239* -0.000238* (-2.03) (-2.28) mpg -0.179 -0.0179* (-1.91) (-2.17) _cons 24.86*** (3.70) -------------------------------------------- N 74 74 -------------------------------------------- t statistics in parentheses * p<0.05, ** p<0.01, *** p<0.001 . eststo clearCode
Furthermore, see estadd margins if you want
to add results from
margins to an existing
model without replacing the original coefficients.