在 Stata 中重命名矩阵的一个特定列

Rename one particular column of a matrix in Stata

我正在研究 modyfinyg,重命名和安排估计结果以在 Stata 中最终发布。到目前为止我所拥有的是:

sysuse auto, clear

* interaction model
gen int_mpg_mpg = mpg*mpg // generate interaction manually 
qui regress price weight mpg int_mpg_mpg foreign 
mat b=e(b) // store estimation results in matrix b 
matrix list b // see the problem, colum 3 "int_mpg_mpg"
    
b[1,5]
         weight          mpg  int_mpg_mpg      foreign        _cons
y1    3.0379251   -298.14637    5.8617627    3420.2156   -527.04589


* rename interaction with additional package erepost 
local coln "b:weight b:mpg b:c.mpg#c.mpg b:foreign b:_cons"
mat colnames b= `coln'
capt prog drop replace_b
program replace_b, eclass
erepost b= b, rename
end
replace_b
eststo my_model 

esttab my_model, label

这给出了交互项的一个很好的版本:

------------------------------------
                              (1)   
                            Price   
------------------------------------
b                                   
Weight (lbs.)               3.038***
                           (3.84)   

Mileage (mpg)              -298.1   
                          (-0.82)   

Mileage (mpg) # Mi~)        5.862   
                           (0.90)   

Car type                   3420.2***
                           (4.62)   

Constant                   -527.0   
                          (-0.08)   
------------------------------------
Observations                   74   
------------------------------------

但想象一下我有更多的模型和变量。然后在这个本地 coln

中列出所有变量、所有交互等变得非常不方便
local coln "b:weight b:mpg b:c.mpg#c.mpg b:foreign b:_cons"
mat colnames b= `coln'

我试图只修复估计矩阵中的特定列名称:

local colfix "b:c.mpg#c.mpg"
mat colnames b[1,3]= `colfix'

如何在 Stata 中访问矩阵的特定列?

您想要的新名称似乎与现有名称相同。

我不知道更改单个列名称的方法,但这可能会有所帮助:

. matrix foo = J(3, 4, 42)

. matrix colname foo = frog toad DRAGON griffin

. mat li foo

foo[3,4]
       frog     toad   DRAGON  griffin
r1       42       42       42       42
r2       42       42       42       42
r3       42       42       42       42

. local colnames : colnames foo

. local colnames : subinstr local colnames "DRAGON" "newt", all

. matrix colname foo = `colnames'

. matrix li foo

foo[3,4]
       frog     toad     newt  griffin
r1       42       42       42       42
r2       42       42       42       42
r3       42       42       42       42

将它变成一个子例程是一个适度的练习。更重要的是 estout 套件中是否有办法做到这一点,我从未使用过的美妙命令。