首页 > 解决方案 > 如何在矩阵中获取回归输出的变量标签

问题描述

在 Stata 中,假设我有这些数据:

sysuse auto2, clear
gen name = substr(make, 1,3)
encode name, gen(name2) 

我运行这个回归,重要的是使用i.

reg price i.name2 trunk weight turn

输出采用以下形式:

------------------------------------------------------------------------------
       price |      Coef.   Std. Err.      t    P>|t|     [95% Conf. Interval]
-------------+----------------------------------------------------------------
       name2 |
        Aud  |   4853.048   1254.083     3.87   0.000     2331.545    7374.551
        BMW  |   5742.124   1560.161     3.68   0.001     2605.211    8879.037
        Bui  |   1351.065    946.733     1.43   0.160    -552.4696    3254.599
        Cad  |   7740.865   1168.332     6.63   0.000     5391.776    10089.95
        Che  |   62.35577   946.1153     0.07   0.948    -1839.937    1964.648
....

然后我去估计结果:

matrix list e(b)

产生:

e(b)[1,27]
            1b.          2.          3.          4.          5.          6.          7.
         name2       name2       name2       name2       name2       name2       name2
y1           0   4853.0482   5742.1237   1351.0647   7740.8653   62.355771   2676.3971

             8.          9.         10.         11.         12.         13.         14.
         name2       name2       name2       name2       name2       name2       name2
y1    943.4266   1964.8242   1776.4058   2711.4324   6386.7936 
....

我的问题是如何name2在回归运行后从变量中检索变量标签?我想要的是初始输出中显示的内容:Aud, BMW,Bui等。我不想要e(b)矩阵中存储的内容:1b. name2, 2. name2,3. name2等。有没有办法获得我想要存储的内容e(b)或存储在其他地方其他估计结果?可以estout/esttab吗?我想将结果存储在矩阵中。

标签: variableslabelnaming-conventionsstata

解决方案


您可以将 e(b) 存储在矩阵中,使用levelsof命令获取变量的名称并重命名列名。

sysuse auto2, clear
gen name = substr(make, 1,3)
encode name, gen(name2) 

reg price i.name2 trunk weight turn
mat A = e(b)

levelsof name, local(names)
local colnames "`names' trunk weight turn _cons"
matrix colnames A = `colnames'
matrix list A

推荐阅读