...并添加差异和t统计数据列。
我学会了如何通过分位数表来表示分位数以及如何添加一列/一行差异here(感谢@lejohn)。
现在,不是将每一行作为一个变量的一个分位数,我希望每一行都是一个不同的变量,每个单元格将是每个变量的平均值,这些变量适用于给定给定分位数的每列中的个体变量
我可以使用tabstat
轻松计算单元格条目,但我希望行中的变量和列中的分位数(tabstat
生成转置)。我还希望能够区分列(如我的第一个问题)并计算细胞差异的t统计量。
我觉得中间步骤是reshape
长数据有三列:id(这里是acc_d),变量名和变量值。但我无法弄清楚如何做到这一点,我可能会陷入R范式。
以下是我想要制作的类型表的示例
这里有一些代码,我曾经(不成功地)修补
* generate data
clear
set obs 2000
generate acc = rnormal()
generate r1 = rnormal()
generate sar1 = rnormal()
generate arbrisk = rnormal()
* generate quantiles for for a and b
xtile acc_d = acc, nquantiles(10)
* form table (at least my attempts)
* w/ tabstat (but transposed and can't manipulate columns)
tabstat acc r1 sar1 arbrisk, stat(mean) by(acc_d) nototal
* my attempts to reshape fail, but I would want something like to following to use tabulate
* acc_d variable value
* 1 acc 0.01
* 1 r1 1.03
* 1 sar1 -0.03
* 1 arbrisk 0.05
* 2 acc 1.01
* 2 r1 2.03
* 2 sar1 0.03
* 2 arbrisk 1.05
谢谢!
答案 0 :(得分:2)
在这里,我会有所不同。我首先要收集计算差异所需的信息和t统计量
foreach v of varlist acc r1 sar1 arbrisk {
summarize `v' if acc_d == 1
local m_`v'_1 = r(mean)
local var_`v'_1 = r(Var)
local n_`v'_1 = r(N)
summarize `v' if acc_d == 10
local m_`v'_10 = r(mean)
local var_`v'_10 = r(Var)
local n_`v'_10 = r(N)
}
然后我将通过折叠和转置数据来继续
collapse (mean) acc r1 sar1 arbrisk, by(acc_d)
xpose, clear varname
drop if _varname == "acc_d"
order _varname
forvalues n = 1 / 10 {
rename v`n' acc_d`n'
}
在最后一步中,我会添加差异和t统计量:
generate diff_d10_d1 = .
generate tstat_d10_d1 = .
foreach v in acc r1 sar1 arbrisk {
replace diff = `m_`v'_10' - `m_`v'_1' if _varname == "`v'"
replace tstat = (`m_`v'_10' - `m_`v'_1') / sqrt((`var_`v'_10'/`n_`v'_10') + (`var_`v'_1'/`n_`v'_1')) if _varname == "`v'"
}
最后打印结果:
list, abb(12) noobs
希望这有帮助。
答案 1 :(得分:0)
这是一个创建两个表的笨重的解决方案。
* generate data
clear
set obs 2000
generate acc = rnormal()
generate r1 = rnormal()
generate sar1 = rnormal()
generate arbrisk = rnormal()
* generate quantiles
xtile acc_d = acc, nquantiles(10)
* aggregate
collapse (mean) acc r1 sar1 arbrisk, by(date_y acc_d) cw
* relabel variables after collapse
label variable acc "Acc"
label variable r1 "R1"
label variable sar1 "SAR1"
label variable arbrisk "ArbRisk"
* main part of table
eststo clear
estpost tabstat acc r1 sar1 arbrisk if tin(1975, 2000) ///
, stat(mean) by(acc_d) columns(statistics) listwise nototal
esttab using tab_1a.tex ///
, booktabs replace main(mean) nonumbers noobs ///
label unstack nogaps not nomtitles nostar ///
eqlabels(, prefix("Acc "))
* add difference t-test
estpost ttest acc r1 sar1 if acc_d == 1 | acc_d == 10, by(acc_d)
esttab using tab_1a_ttest.tex, booktabs replace nonumbers noobs ///
label mtitles("Acc 1-Acc10") wide ///
varlabels(acc Acc r1 R1 sar1 SAR1)