【问题标题】:Twoway estpost tabstat-esttab: retain variable labelsTwoway estpost tabstat-esttab:保留变量标签
【发布时间】:2023-04-02 16:16:01
【问题描述】:

我想按原产地描述汽车的特征,并将结果检索为乳胶表:

sysuse auto 
estpost tabstat price trunk, by(foreign) statistics(mean sd) columns(statistics) listwise nototal 
esttab using test.txt, main(mean) aux(sd)

在 estpost 之后,我已经感觉到标签丢失了:它正确显示了值标签“国内”和“外国”,但只是将变量列为“价格”和“主干”而不是“价格”和“后备箱空间”。

我在网上看到过这个问题,但没有一个令人满意的解决方案。有人建议fsum,但这并没有真正允许乳胶,也没有交叉制表(x 按y 类别表示)。 我该如何解决这个问题?

我将接受的答案自动化如下:

local varlabels
foreach var in price trunk {
        local varlabels `"`varlabels' `var' "`:variable label `var''""'       
}

【问题讨论】:

    标签: stata


    【解决方案1】:

    varlabels 选项允许您添加自定义标签。在estpost 命令之后,估计的名称如下所示:

    . mat l e(mean)
    
    e(mean)[1,4]
           Domestic:  Domestic:   Foreign:   Foreign:
              price      trunk      price      trunk
    mean  6072.4231      14.75  6384.6818  11.409091
    

    您可以通过添加一些代码将这些名称替换为变量标签:

    sysuse auto 
    estpost tabstat price trunk, by(foreign) statistics(mean sd) columns(statistics) listwise nototal 
    
    foreach name in `:colfullnames e(mean)' {
        foreach var in price trunk {
            if strpos("`name'", "`var'") > 0 {
                local varlabels `"`varlabels' `name' "`:variable label `var''""'
            }
        }
    }
    
    di `"`varlabels'"'
    esttab, main(mean) aux(sd) varlabels(`varlabels')
    

    结果:

    . di `"`varlabels'"'
     Domestic:price "Price" Domestic:trunk "Trunk space (cu. ft.)" Foreign:price "Price" Foreign:trunk "Trunk space (cu. ft.)"
    
    . esttab, main(mean) aux(sd) varlabels(`varlabels')
    
    ----------------------------
                          (1)   
                                
    ----------------------------
    Domestic                    
    Price              6072.4   
                     (3097.1)   
    Trunk.. ft.)        14.75   
                      (4.306)   
    ----------------------------
    Foreign                     
    Price              6384.7   
                     (2621.9)   
    Trunk.. ft.)        11.41   
                      (3.217)   
    ----------------------------
    N                      74   
    ----------------------------
    mean coefficients; sd in parentheses
    * p<0.05, ** p<0.01, *** p<0.001
    

    将选项unstack添加到esttab时,国内和国外用作列名,系数的名称只有价格和主干,所以你可以这样做:

    esttab, main(mean) aux(sd) unstack varlabels(price "`:variable label price'" trunk "`:variable label trunk'")
    

    【讨论】:

    • 这看起来很棒。不幸的是,当我回到我的实际代码(我不太喜欢汽车)时,我意识到当我将“unstack”作为选项添加到 esttab 时代码停止工作:标签又消失了?很抱歉不得不再次询问,但是虽然这个答案教会了我很多关于如何设置电子标签列表的知识,但我不知道为什么堆叠的标签不再起作用..
    • 太棒了!也许您想包括我在我的问题中包含的更新答案的自动化。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多