2

我正在使用 Stata 中的社区贡献命令coefplot

我有大量估计系数,我想将它们绘制在同一张图上。

因此,我想减少系数之间的间距。

考虑以下使用 Stata 的auto玩具数据集的玩具示例:

quietly sysuse auto, clear
quietly regress price mpg trunk length turn
coefplot, drop(_cons) xline(0)

在此处输入图像描述

如何减少Mileage (mpg)和之间的间距Trunk space (cu. ft.)

4

1 回答 1

1

由于 Stata 图形系统的工作方式,图形周围的一些空白是不可避免的限制。话虽如此,解决此问题的另一种方法(不修改图形的纵横比)是增加y-axis.

例如:

forvalues i = 1 / 4 {
    coefplot, drop(_cons) xline(0) yscale(range(-`i' `=6+`i''))                                                 
}

在此处输入图像描述

一种不同但相关的方法是完全关闭y标签并使用标记标签:

forvalues i = 1 / 4 {
    coefplot, drop(_cons) ///
              xline(0) ///
              yscale(range(-`i' `=6+`i''))  ///
              yscale(off) ///
              mlabels(mpg = 12 "Mileage" ///
                      trunk = 12 "Trunk space (cu. ft.)" ///
                      length = 12 "Length (in.)" ///
                      turn = 12 "Turn Circle (ft.)")
}

在此处输入图像描述

在这两种方法中,可以通过调整子选项中指定的值来设置开始和结束位置(即标签上方和下方的空间量)range()

请注意,可以使用选项关闭网格线grid(none)

此外,通过组合at(matrix())选项 和yscale(range())one 可以允许系数距离的不等减少:

matrix A = (0.2,0.21,0.22,0.225,0.255)

coefplot, drop(_cons) ///
          xline(0) ///
          yscale(range(0.18 0.26)) ///
          yscale(off) ///
          mlabels(mpg = 12 "Mileage" ///
                  trunk = 12 "Trunk space (cu. ft.)" ///
                  length = 12 "Length (in.)" ///
                  turn = 12 "Turn Circle (ft.)") ///
          at(matrix(A)) ///
          horizontal

在此处输入图像描述

于 2019-06-13T10:07:32.077 回答