Табулируйте комбинированную матрицу коэффициентов / t-статистики и экспорта в LaTeX - PullRequest
0 голосов
/ 06 декабря 2018

У меня много регрессий (по одному в год, через пятнадцать лет) для четырех переменных результата.

Я создал две 15x4 матрицы: одну с коэффициентами и одну с t-статистикой.Теперь я застрял в том, что хочу классифицировать их классическим способом, в каждой строке есть коэффициенты для каждой модели и под ними соответствующая t-статистика в скобках.

Я могу табулировать одну матрицу, но даже используя estadd Я не смог получить указанный результат.

Это мой код:

*creates matrix of all results row(year) column(outcome)
matrix OLS_years = r_Mall, r_hotMall, r_totMall, r_irpMall
matrix list OLS_years
matrix TSTATS = ex_Tall, hot_Tall, tot_Tall, irp_Tall
matrix list TSTATS 

Использование Внесенная сообществом команда estout создает только таблицу с коэффициентами:

    estout matrix(OLS_years), ///
     cells(OLS_years TSTATS(par)) ///
     stats(N, fmt(0) labels ("No. of Obs." )) ///
     starlevels(* 0.1 ** 0.05 *** 0.001) ///
     varwidth(20) ///
     modelwidth(12) ///
     delimiter(&) ///
     end(\\) ///
     prehead(`"\begin{tabular}{l*{4}{c}}"' `"\toprule"') ///
     posthead("\midrule") ///
     prefoot("\midrule") ///
     postfoot(`"\bottomrule"' `"\multicolumn{@span}{l}{\footnotesize t-statistics in parentheses}\\"' `"\multicolumn{@span}{l}{\footnotesize *** p{$<$}0.01; ** p{$<$}0.05; * p{$<$}0.10.}\\"' `"\end{tabular}"') ///
     varlabels(_cons Constant, end("" \addlinespace) nolast) ///
     eqlabels(, begin("\midrule" "") nofirst) ///
     substitute(_ \_ "\_cons " \_cons) ///
     interaction(" $\times$ ") ///
     notype ///
     level(95) ///
     style(esttab)

Кто-нибудь может помочь?

Ответы [ 2 ]

0 голосов
/ 07 декабря 2018

Моя задача состояла в том, чтобы применить метод, описанный @Pearly Spencer, к более сложным настройкам, где мне пришлось складывать регрессионные оценки из 4 различных спецификаций и 15 лет в одну готовую к вводу таблицу латекса.Я решил это, используя -esttab- с опцией -noisily-, что очень удобно, потому что показывает команды estout, стоящие за ним (esttab - это оболочка для estout).Таким образом, мне удалось персонализировать три части стола (верх, середина, низ), чтобы я мог красиво сложить их.Я публикую код в общем виде, где y1, y2, y3, y4 - разные переменные результата, а T - переменная лечения, для которой вы хотите увидеть влияние на y.

set more off

*-----------------FIRST YEAR I.E. TOP PART OF THE TABLE
eststo clear
    label var T "T 2002"

                qui reg Y1 T `x_prop' ///
                if year==2002 
                eststo y1_2002

                qui reg Y2 T `x_prop' ///
                if year==2002 
                eststo y2_2002

                qui reg Y3 T `x_prop' ///
                if year==2002 
                eststo y3_2002

                qui reg Y4 T `x_prop' ///
                if year==2002 
                eststo y4_2002

qui cap erase "C:\Users\...\tabz.tex"   // the replace option did not seem to work, so I used this way instead

estout using `"C:\Users\...\tabz.tex"' , ///
 cells(b(fmt(a3) star) t(fmt(2) par)) ///
 starlevels(* 0.1 ** 0.05 *** 0.001) ///
 varwidth(20) ///
 modelwidth(12) ///
 delimiter(&) ///
 end(\\) ///
 prehead("{\def\sym#1{\ifmmode^{#1}\else\(^{#1}\)\fi} \begin{tabular}{l*{4}{c}} \toprule  &\multicolumn{1}{c}{(5)}&\multicolumn{1}{c}{(6)}&\multicolumn{1}{c}{(7)}&\multicolumn{1}{c}{(8)}\\") ///
 posthead("\midrule") ///
 label ///
 varlabels(_cons Constant, end("" \addlinespace) nolast) ///
 mlabels(, depvar span prefix(\multicolumn{@span}{c}{) suffix(})) ///
 collabels(none) ///
 eqlabels(, begin("\midrule" "") nofirst) ///
 substitute(_ \_ "\_cons " \_cons) ///
 interaction(" $\times$ ") ///
 notype ///
 level(95) ///
 style(esttab) ///
 keep(T) 

 *-----------------OTHER YEARS I.E. MID PART OF THE TABLE
forval i=2003/2015 { 
eststo clear

    label var T "T `i'"
                qui reg Y1 T `x_prop' ///
                if year==`i'
                eststo y1_`i'

                qui reg Y2 T `x_prop' ///
                if year==`i'
                eststo y2_`i'

                qui reg Y3 T `x_prop' ///
                if year==`i'
                eststo y3_`i'

                qui reg Y4 T `x_prop' ///
                if year==`i'
                eststo y4_`i'

esttab using "C:\Users\...\tabz.tex\tabz.tex", keep(T) append f label nomtitle nonumber collabels(none) ///
starlevels(* 0.1 ** 0.05 *** 0.001) booktabs gaps noline ///
    notes addnotes("t-statistics in parentheses" "*** p{$<$}0.01; ** p{$<$}0.05; * p{$<$}0.10.") ///
    noobs
}

 *-----------------OTHER YEARS I.E. BOTTOM PART OF THE TABLE

eststo clear

    label var T "T 2016"
                qui reg Y1 T `x_prop' ///
                if year==2016 & violat_2016==0
                eststo y1_2016

                qui reg Y2 T `x_prop' ///
                if year==2016 & violat_2016==0
                eststo y2_2016

                qui reg Y3 T `x_prop' ///
                if year==2016 & violat_2016==0
                eststo y3_2016

                qui reg Y4 T `x_prop' ///
                if year==2016 & violat_2016==0
                eststo y4_2016

esttab using "C:\Users\...\tabz.tex", keep(T) append f label nomtitle nonumber collabels(none) ///
starlevels(* 0.1 ** 0.05 *** 0.001) booktabs gaps noline ///
    notes addnotes("t-statistics in parentheses" "*** p{$<$}0.01; ** p{$<$}0.05; * p{$<$}0.10.") ///
     prefoot("\midrule") ///
     postfoot("\bottomrule \multicolumn{5}{l}{\footnotesize t-statistics in parentheses}\\ \multicolumn{5}{l}{\footnotesize *** p{$<$}0.01; ** p{$<$}0.05; * p{$<$}0.10.}\\ \end{tabular}")

Я надеюсь, что это будет полезно для кого-то еще, так как это заняло у меня долгие долгие часы.

This was the result (bold text modified manually

0 голосов
/ 06 декабря 2018

Это , а не как estout используется для экспорта регрессий.

Создание матрицы в этом случае является не только ненужным, но и плохой практикой.Вместо этого вы должны запустить свои регрессии и сохранить результаты, используя команду estimates store post -valuation .

Вот как вы можете сделать это правильно, используя в качестве примера набор игрушек Stata auto.:

sysuse auto.dta, clear
estimates clear

regress price gear_ratio length
estimates store A

regress mpg i.foreign trunk turn
estimates store B

regress displacement headroom length weight
estimates store C

esttab A B C

------------------------------------------------------------
                      (1)             (2)             (3)   
                    price             mpg    displacement   
------------------------------------------------------------
gear_ratio         -162.4                                   
                  (-0.17)                                   

length              54.88**                        -0.601   
                   (2.78)                         (-0.88)   

0.foreign                               0                   
                                      (.)                   

1.foreign                          -1.168                   
                                  (-0.91)                   

trunk                              -0.312*                  
                                  (-2.32)                   

turn                               -0.840***                
                                  (-5.34)                   

headroom                                            7.146   
                                                   (1.07)   

weight                                              0.118***
                                                   (6.15)   

_cons             -3659.7           59.26***       -68.23   
                  (-0.60)         (10.25)         (-0.92)   
------------------------------------------------------------
N                      74              74              74   
------------------------------------------------------------
t statistics in parentheses
* p<0.05, ** p<0.01, *** p<0.001

Или в LaTeX:

esttab A B C using table.tex

type table.tex

{
\def\sym#1{\ifmmode^{#1}\else\(^{#1}\)\fi}
\begin{tabular}{l*{3}{c}}
\hline\hline
            &\multicolumn{1}{c}{(1)}&\multicolumn{1}{c}{(2)}&\multicolumn{1}{c}{(3)}\\
            &\multicolumn{1}{c}{price}&\multicolumn{1}{c}{mpg}&\multicolumn{1}{c}{displacement}\\
\hline
gear\_ratio  &      -162.4         &                     &                     \\
            &     (-0.17)         &                     &                     \\
[1em]
length      &       54.88\sym{**} &                     &      -0.601         \\
            &      (2.78)         &                     &     (-0.88)         \\
[1em]
0.foreign   &                     &           0         &                     \\
            &                     &         (.)         &                     \\
[1em]
1.foreign   &                     &      -1.168         &                     \\
            &                     &     (-0.91)         &                     \\
[1em]
trunk       &                     &      -0.312\sym{*}  &                     \\
            &                     &     (-2.32)         &                     \\
[1em]
turn        &                     &      -0.840\sym{***}&                     \\
            &                     &     (-5.34)         &                     \\
[1em]
headroom    &                     &                     &       7.146         \\
            &                     &                     &      (1.07)         \\
[1em]
weight      &                     &                     &       0.118\sym{***}\\
            &                     &                     &      (6.15)         \\
[1em]
\_cons      &     -3659.7         &       59.26\sym{***}&      -68.23         \\
            &     (-0.60)         &     (10.25)         &     (-0.92)         \\
\hline
\(N\)       &          74         &          74         &          74         \\
\hline\hline
\multicolumn{4}{l}{\footnotesize \textit{t} statistics in parentheses}\\
\multicolumn{4}{l}{\footnotesize \sym{*} \(p<0.05\), \sym{**} \(p<0.01\), \sym{***} \(p<0.001\)}\\
\end{tabular}
}
...