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 (1978 Automobile Data) . estpost summarize price weight rep78 mpg | e(count) e(sum_w) e(mean) e(Var) e(sd) -------------+------------------------------------------------------- price | 74 74 6165.257 8699526 2949.496 weight | 74 74 3019.459 604029.8 777.1936 rep78 | 69 69 3.405797 .9799659 .9899323 mpg | 74 74 21.2973 33.47205 5.785503 | e(min) e(max) e(sum) -------------+--------------------------------- price | 3291 15906 456229 weight | 1760 4840 223440 rep78 | 1 5 235 mpg | 12 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 -----------------------------------------------------------------------------
Example for estpost summarize:
. sysuse auto (1978 Automobile Data) . estpost summarize price mpg rep78 foreign, listwise | e(count) e(sum_w) e(mean) e(Var) e(sd) -------------+------------------------------------------------------- price | 69 69 6146.043 8482308 2912.44 mpg | 69 69 21.28986 34.41475 5.866408 rep78 | 69 69 3.405797 .9799659 .9899323 foreign | 69 69 .3043478 .2148338 .4635016 | e(min) e(max) e(sum) -------------+--------------------------------- price | 3291 15906 424077 mpg | 12 41 1469 rep78 | 1 5 235 foreign | 0 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 ----------------------------------------------------------------
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 (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 ---------------------------------------------------
Type columns(statistics) to print statistics in columns:
. sysuse auto (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 --------------------------------------
A table of summary statistics by subgroups can easily be produced using estpost summarize in connection with eststo and by:
. sysuse auto (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 clear
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 (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) ---------------------------------------------------
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 (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) -------------+---------------------- 1 | mean | 6072.423 3317.115 sd | 3097.104 695.3637 -------------+---------------------- 2 | 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 ----------------------------------------------
Example for estpost ttest:
. sysuse auto (1978 Automobile Data) . estpost ttest price mpg headroom trunk, by(foreign) | e(b) e(count) e(se) e(t) e(df_t) -------------+------------------------------------------------------- price | -312.2587 74 754.4488 -.4138899 72 mpg | -4.945804 74 1.362162 -3.630848 72 headroom | .5402098 74 .2070884 2.608596 72 trunk | 3.340909 74 1.022208 3.268327 72 | e(p_l) e(p) e(p_u) e(N_1) e(mu_1) -------------+------------------------------------------------------- price | .3400925 .6801851 .6599075 52 6072.423 mpg | .0002627 .0005254 .9997373 52 19.82692 headroom | .9944757 .0110486 .0055243 52 3.153846 trunk | .99917 .00166 .00083 52 14.75 | e(N_2) e(mu_2) -------------+---------------------- price | 22 6384.682 mpg | 22 24.77273 headroom | 22 2.613636 trunk | 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.001
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) -------------+------------------------------------------------------- cure | -.0729167 109 .0933123 .0942404 -.7737309 noise | .0621528 109 .0965586 .0969397 .6411491 | e(p_l) e(p) e(p_u) e(N_1) e(P_1) -------------+------------------------------------------------------- cure | .219545 .43909 .780455 64 .59375 noise | .7392871 .5214258 .2607129 64 .484375 | e(N_2) e(P_2) -------------+---------------------- cure | 45 .6666667 noise | 45 .4222222 . esttab, cell("b se0 z p") nomtitle nonumber ---------------------------------------------------------------- b se0 z p ---------------------------------------------------------------- cure -.0729167 .0942404 -.7737309 .43909 noise .0621528 .0969397 .6411491 .5214258 ---------------------------------------------------------------- N 109 ----------------------------------------------------------------
Example for posting a one-way frequency table using estpost tabulate:
. sysuse auto (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 ---------------------------------------------------
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 (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 -----------------------------------------------------------
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 (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) ---------------------------------------------------
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 (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 ------------------------------------------------------------
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 -----------------------------------------------------------------------------
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 -----------------------------------------------------------------------------
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 parentheses
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 parentheses
By default, estpost correlate posts a vector of correlations between the first specified variable and the remaining variables. Example:
. sysuse auto (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 ---------------------------------------------------
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 (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.001
(Also see "More on correlation coefficients" under "Advanced Examples".)
estpost ci posts standard errors and confidence intervals for means, proportions or counts. Example:
. sysuse auto (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 ------------------------------------------------------------------------
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 (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 ------------------------------------------------------------------------
Example with confidence intervals for proportions:
. sysuse auto (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 clear
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 ------------------------------------------------------------
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 ------------------------------------------------------------
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 .1634497 -2.44 0.015 -.7196494 -.0789384 weight | -.0023879 .0011789 -2.03 0.043 -.0046985 -.0000773 mpg | -.179312 .0937591 -1.91 0.056 -.3630766 .0044525 _cons | 24.85926 6.718033 3.70 0.000 11.69216 38.02636 ------------------------------------------------------------------------------ . eststo logodds . estpost margins, dydx(*) Warning: cannot perform check for estimable functions. 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 .0133136 -2.99 0.003 -.0658612 -.0136726 weight | -.0002378 .0001042 -2.28 0.022 -.000442 -.0000336 mpg | -.0178582 .0082448 -2.17 0.030 -.0340177 -.0016988 ------------------------------------------------------------------------------ . eststo AMEs . esttab logodds AMEs, mtitles -------------------------------------------- (1) (2) logodds AMEs -------------------------------------------- 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
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 .1634497 -2.44 0.015 -.7196494 -.0789384 weight | -.0023879 .0011789 -2.03 0.043 -.0046985 -.0000773 mpg | -.179312 .0937591 -1.91 0.056 -.3630766 .0044525 _cons | 24.85926 6.718033 3.70 0.000 11.69216 38.02636 ------------------------------------------------------------------------------ . eststo logodds . margins, dydx(*) post Warning: cannot perform check for estimable functions. 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 .0133136 -2.99 0.003 -.0658612 -.0136726 weight | -.0002378 .0001042 -2.28 0.022 -.000442 -.0000336 mpg | -.0178582 .0082448 -2.17 0.030 -.0340177 -.0016988 ------------------------------------------------------------------------------ . eststo AMEs . esttab logodds AMEs, mtitles -------------------------------------------- (1) (2) logodds AMEs -------------------------------------------- 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
Furthermore, see estadd margins if you want to add results from margins to an existing model without replacing the original coefficients.