如何解决如何将 ttest 结果添加到 esttab
我正在构建一个来自 ttest 的均值和 p 值表。我怎样才能在同一个 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 值。
解决方法
您需要的所有信息都在 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
-----------------------------------------------------------
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。