Создать таблицу с переменными средствами и различиями, используя esttab - PullRequest
0 голосов
/ 12 января 2019

Я хочу создать таблицу в Stata, которая содержит средние значения, различия и t-значения для 4 разных групп.

В частности, скажем, у вас есть 2x2 план исследования, и вы хотите отобразить среднее и стандартное отклонение переменной результата и добавить еще один столбец, в котором проверяется разница между лечением 1, и еще один ряд, содержащий разницу и т. -значение по всему лечению два.

У меня есть следующий код:

clear
sysuse auto
gen large_trunk = (trunk > 14)
gen price_large_trunk = price if large_trunk == 1
gen price_small_trunk = price if large_trunk == 0

eststo price_domestic: qui estpost sum price_large_trunk price_small_trunk if foreign == 0
eststo price_foreign: qui estpost sum price_large_trunk price_small_trunk if foreign == 1
eststo diff: qui estpost ttest price_large_trunk price_small_trunk, by(foreign)
eststo diff2: qui estpost ttest price if foreign == 0, by(large_trunk)
eststo diff3: qui estpost ttest price if foreign == 1, by(large_trunk)

esttab price_domestic price_foreign diff diff2 diff3, ///
cells("mean(pattern(1 1 0) fmt(2)) b(star pattern(0 0 1) fmt(2))" "sd(pattern(1 1 0) par)  t(pattern(0 0 1) par)") ///
mtitle("Domestic" "Foreign" "Difference") ///
nonumbers  noobs ///
coeflabels(price "Difference") ///
notes 

Вывод:

----------------------------------------------------------------------------------------------------------------
                 Domestic      Foreign   Difference           diff2                        diff3                
                  mean/sd      mean/sd          b/t         mean/sd          b/t         mean/sd          b/t   
----------------------------------------------------------------------------------------------------------------
price_larg~k      6900.13      6186.00       714.13                                                             
                (3164.76)    (2186.93)       (0.48)                                                             
price_smal~k      4850.57      6443.12     -1592.55                                                             
                (2608.98)    (2794.83)      (-1.81)                                                             
Difference                                                              -2049.56*                      257.12   
                                                                         (-2.45)                       (0.19)   
----------------------------------------------------------------------------------------------------------------

Как видите, это таблица 7x3. В идеале я хотел бы, чтобы элементы в последнем ряду были в столбцах один и два, а все столбцы после третьего столбца были бы отброшены.

В связанной заметке мне также интересно, могу ли я подавить сводную статистику в заголовке таблицы (я имею в виду mean/sd и b/t под названиями процедур).

1 Ответ

0 голосов
/ 12 января 2019

Вам необходимо изменить свой код следующим образом:

sysuse auto, clear
est clear
gen large_trunk = (trunk > 14)
gen price_large_trunk = price if large_trunk == 1
gen price_small_trunk = price if large_trunk == 0

qui estpost sum price_large_trunk price_small_trunk if foreign == 0
qui ttest price if foreign == 0, by(large_trunk)
estadd local diff2  `= round(r(mu_1) - r(mu_2), .01)'
estadd local tdiff2 (`= round(`r(t)', .01)')
eststo price_domestic

qui estpost sum price_large_trunk price_small_trunk if foreign == 1
qui ttest price if foreign == 1, by(large_trunk)
estadd local diff2 `= round(r(mu_1) - r(mu_2), .01)'
estadd local tdiff2 (`= round(`r(t)', .01)')
eststo price_foreign

eststo diff1: qui estpost ttest price_large_trunk price_small_trunk, by(foreign)

esttab price_domestic price_foreign diff1, ///
stats(diff2 tdiff2, label("Difference" " ") ) ///
cells("mean(pattern(1 1 0) fmt(2)) b(star pattern(0 0 1) fmt(2))" "sd(pattern(1 1 0) par)  t(pattern(0 0 1) par)") ///
mtitle("Domestic" "Foreign" "Difference") collabels(none) ///
nonumbers  noobs ///
coeflabels(price "Difference") ///
notes 

Результат:

------------------------------------------------------
                 Domestic      Foreign   Difference   
------------------------------------------------------
price_larg~k      6900.13      6186.00       714.13   
                (3164.76)    (2186.93)       (0.48)   
price_smal~k      4850.57      6443.12     -1592.55   
                (2608.98)    (2794.83)      (-1.81)   
------------------------------------------------------
Difference       -2049.56       257.12                
                  (-2.45)        (.19)                
------------------------------------------------------

Или, возможно:

esttab price_domestic price_foreign diff1, ///
stats(diff2 tdiff2, label("Difference" " ") ) ///
cells("mean(pattern(1 1 0) fmt(2)) b(star pattern(0 0 1) fmt(2))" "sd(pattern(1 1 0) par)  t(pattern(0 0 1) par)") ///
mtitle("Domestic" "Foreign" "Difference") collabels(none) ///
nonumbers  noobs ///
coeflabels(price "Difference") ///
notes gaps prefoot(" ")

------------------------------------------------------
                 Domestic      Foreign   Difference   
------------------------------------------------------
price_larg~k      6900.13      6186.00       714.13   
                (3164.76)    (2186.93)       (0.48)   

price_smal~k      4850.57      6443.12     -1592.55   
                (2608.98)    (2794.83)      (-1.81)   

Difference       -2049.56       257.12                
                  (-2.45)        (.19)                
------------------------------------------------------

Или даже:

esttab price_domestic price_foreign diff1, ///
stats(diff2 tdiff2, label("Difference" " ") ) ///
cells("mean(pattern(1 1 0) fmt(2)) b(star pattern(0 0 1) fmt(2))" "sd(pattern(1 1 0) par)  t(pattern(0 0 1) par)") ///
mtitle("Domestic" "Foreign" "Difference") collabels(none) ///
nonumbers  noobs ///
coeflabels(price "Difference") ///
notes gaps plain 

                 Domestic      Foreign   Difference   

price_larg~k      6900.13      6186.00       714.13   
                (3164.76)    (2186.93)       (0.48)   

price_smal~k      4850.57      6443.12     -1592.55   
                (2608.98)    (2794.83)      (-1.81)   

Difference       -2049.56       257.12                
                  (-2.45)        (.19)                
...