reshape - 在 Stata 中生成行中变量和列中给定变量的分位数的均值表

标签 reshape stata

...并添加差异和 t 统计量列。

我学会了如何通过分位数均值表制作分位数以及如何添加差异的列/行 here (感谢@lejohn)。

现在,我希望每一行都是一个不同的变量,并且每个单元格将是落入给定分位数的每一列中的个体的每个变量的平均值,而不是将每一行作为一个变量的一个分位数变量。

我可以使用 tabstat 轻松计算单元格条目,但我想要行中的变量和列中的分位数(tabstat 生成转置)。我还希望能够区分列(如我的第一个问题)并计算单元格差异的 t 统计量。

我觉得中间步骤是 reshape 为包含三列的长数据:id(此处为acc_d)、变量名称和变量值。但我不知道如何做到这一点,并且我可能陷入 R 范式中。

这是我想要制作的类型表的示例

enter image description here

这是我一直在(不成功)修改的一些代码

* 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

谢谢!

最佳答案

在这里我会采取一些不同的方式。我首先会收集计算差异和 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

希望这有帮助。

关于reshape - 在 Stata 中生成行中变量和列中给定变量的分位数的均值表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7855481/

相关文章:

stata - 在Stata中产生年度观察之间的百分比变化?

以间隔格式 reshape 宽数据集

statistics - 在 Stata 中采用条件均值

grouping - 选择每组的最低值

python - Pandas reshape /转换数据框

postgresql - 在面板数据上按组、时间和日期创建条件变量

sum - Stata:按特定日期范围生成总和/总计并将其保存为新变量

deep-learning - caffe reshape /上采样全连接层

python - numpy 二维数组的 block 均值

r - 长而宽的数据——何时使用什么?