首页 文章

在Stata中制作非回归估计表

提问于
浏览
1

我正在对社会经济的 Health 不平等进行分解分析,并且通常遵循世界银行的程序来降低代码 . 这是我的代码的相关部分 .

foreach x of global X {
qui {
    sca b_`x' = _b[`x']
    corr rank `x' [aw=newweight], c
    sca cov_`x' = r(cov_12)
    sum `x' [aw=newweight]
    sca elas_`x' = (b_`x'*r(mean))/avg
    sca CI_`x' = 2*cov_`x'/r(mean)
    sca con_`x' = elas_`x'*CI_`x'
    sca prcnt_`x' = con_`x'/c
    }
di "`x' elasticity:", elas_`x'
di "`x' concentration index:", CI_`x'
di "`x' contribution:", con_`x'
di "`x' percentage contribution:", prcnt_`x'
}

现在,我想要的是这些最终的四个估计能够显示在X中的所有变量x,类似于四个回归表以及它们的系数 . 我正在努力找到如何正确"save"这些估计并在 esttabtabouttable 等中调用它们 . 我只是显示原始回归系数 .

2 回答

  • 1

    我会用 nlcom, post 来处理这个问题,它可以产生适当的 e(b)e(V) 矩阵,估计格式化命令如 estout 可以接收 . 有点像

    gen rank_n = rank / _N
    gen rank_sq = rank_n * rank_n
    foreach x of global X {
        gen cross_rank_`x' = rank_n * `x'
        gen `x'_sq = `x' * `x'
    
        svy : mean `x' `x'_sq rank_n rank_sq cross_rank_`x'
    
        nlcom ///
           (corr: (_b[cross_rank_`x']-_b[`x']*_b[rank_n]) ///
              /sqrt( (_b[`x'_sq]-_b[`x']*_b[`x'])*(_b[rank_sq]-_b[rank_n]*_b[rank_n]) ) ///
           (concentration: 2*(_b[cross_rank_`x']-_b[`x']*_b[rank_n]) / _b[`x'] )
    
        estout /*the way you like it*/
    }
    

    因为,正如我在评论中所指出的,我无法分辨 _b[x] 的来源,我不知道如何将其包装到 meannlcom 中 .

    另请注意,the use of globals是Stata最重要的事情......至少根据对SO的投票:) .

  • 3
    foreach x of global X {
        qui {
            sca b_`x' = _b[`x']
            corr rank `x' [aw=newweight], c
            sca cov_`x' = r(cov_12)
            sum `x' [aw=newweight], meanonly
            sca elas_`x' = (b_`x'*r(mean))/avg
            sca CI_`x' = 2*cov_`x'/r(mean)
            sca con_`x' = elas_`x'*CI_`x'
            sca prcnt_`x' = con_`x'/c
        }
        di "`x' elasticity:", elas_`x'
        di "`x' concentration index:", CI_`x'
        di "`x' contribution:", con_`x'
        di "`x' percentage contribution:", prcnt_`x'
        matrix results = nullmat(results) \ ///
                         ( elas_`x', CI_`x', con_`x', prcnt_`x')
    }
    matrix rownames results = $X
    matrix colnames results = elasticity concentration_index ///
                              contribution percentage_contribution
    

    现在您可以将矩阵 results 提供给您可能希望使用的Stata中的任何输出程序 .

相关问题