Как добавить результаты ttest в esttab

#stata

#stata

Вопрос:

Я создаю таблицу средних и p-значений из ttest. Как я могу получить все это в одной esttab таблице? Вот MWE:

Получите образец, сохраните его как временный файл, создайте локальный с переменными, которые мы рассмотрим, создайте локальный, длина которого равна длине первого локального:

 sysuse auto2, clear
*create two groups: 0 and 1
gen group = _n<37
tempfile a
save `a'

local vars "price headroom trunk weight"
local vars_n: word count `vars'

ssc install estout
eststo clear
 

Вычислите средние значения группы 0 (столбец 1) и группы 2 (столбец 2):

 *group 0 means
use `a', clear
keep if group==0
eststo: estpost sum `vars'

*group 1 means
use `a', clear
keep if group==1
eststo: estpost sum `vars'
 

Проведите t-тесты для каждой переменной (есть ли более простой способ сделать это?):

 *t-test
*create blank matrix
matrix pval = J(`vars_n',1,.) 
use `a', clear
forvalues i=1/`vars_n' {
    local var `: word `i' of `vars''
    ttest `var', by(group)
    *add the two-sided p-value to matrix
    matrix pval[`i',1]=r(p)
}
 

Этот предыдущий блок кода сохраняет p-значения (столбец 3) в матрицу.

Используется esttab для вывода результатов:

 esttab, cells(mean(fmt(2))) collabels(none) nodepvars nonumber replace label

esttab matrix(pval, fmt(2 0))
 

Моя проблема в том, что мне нужно, чтобы значения p совпадали esttab со средними значениями, но в настоящее время они у меня есть в матрице. Как я могу использовать что-то вроде eststo: estpost , чтобы получить их, чтобы я мог использовать esttab (в отличие от esttab matrix )? Или есть лучший способ сделать все это? Моя цель — запустить esttab, cells(mean(fmt(2))) collabels(none) nodepvars nonumber replace label и создать таблицу, в которой первые два столбца будут средними, а третий столбец — p-значениями.

Комментарии:

1. Пожалуйста, дайте мне знать, если мой ответ достаточно хорош для ваших целей. Есть способы сделать то, что вы намеревались, но они требуют гораздо больше работы, поэтому я хочу сначала посмотреть, достаточно ли простое решение.

2. Спасибо. У меня есть другие столбцы в моем реальном приложении, но тот факт, что estpost может создавать оценки непосредственно с помощью ttest (в отличие от необходимости индивидуально помещать их в матрицу), может заставить ваш подход работать даже с другими столбцами. Я рассмотрю это подробнее на следующей неделе.

Ответ №1:

Вся необходимая информация есть estpost ttest , поэтому простым решением будет следующее:

 sysuse auto2, clear
gen group = _n<37
local vars price headroom trunk weight
estpost ttest `vars', by(group)
esttab ., cells("mu_1 mu_2 p") nonumber label


-----------------------------------------------------------
                                                           
                             mu_1         mu_2            p
-----------------------------------------------------------
Price                    5847.526     6500.639     .3445597
Headroom (in.)           2.828947     3.166667     .0861206
Trunk space (.. ft.)     12.39474     15.19444     .0041618
Weight (lbs.)            2654.474     3404.722     .0000115
-----------------------------------------------------------
Observations                   74                          
-----------------------------------------------------------