如何将ttest结果添加到esttab
How to add ttest results to esttab
我正在从 ttest 构造一个 table 的均值和 p 值。我怎样才能在同一个 esttab
table 中获得所有这些?这是一个 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
并让它创建一个 table,前两列是均值,第三列是 p 值。
您需要的所有信息都在 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
-----------------------------------------------------------
我正在从 ttest 构造一个 table 的均值和 p 值。我怎样才能在同一个 esttab
table 中获得所有这些?这是一个 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
并让它创建一个 table,前两列是均值,第三列是 p 值。
您需要的所有信息都在 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
-----------------------------------------------------------