假设我有这样的模型:
webuse nlswork
poisson hours i.union##c.tenure, robust
margins union, dydx(tenure)
margins rb1.union, dydx(tenure)
我想使用Ben Jann的-estout-将两个AME叠加在AME的差异之上。不幸的是,您需要发布estout的边距结果,这会干扰第二个边距命令。
有什么方法吗?
在Statalist forum交叉发布一段时间没有答案。
答案 0 :(得分:3)
我从未使用过--estout-,但也许这会给你一个开始。
webuse nlswork
poisson hours i.union##c.tenure, robust
estimates store m0
margins union, dydx(tenure) post
estimates store m1
estimates restore m0
margins rb1.union, dydx(tenure) post
estimates store m2
为什么会这样:margins
需要访问此示例中原始命令poisson
的结果。由于margins
本身不会留下估算结果,如果您在没有margins
的情况下运行post
,原始结果仍然可用,并且您可以连续执行多个margins
命令而不会出现问题。但是,如果将post
选项添加到第一个margins
命令,则新发布的结果将替换内存中的结果。在这种情况下,第二个margins
会抱怨
边距不能与自己发布的结果一起使用
因此,解决方案是将第二个margins
与原始估算结果一起呈现,正是estimates restore
的设计目标。
r(table)
包含margins
的所有结果,并且列名为。这是Roberto的堆叠解决方案的一个版本,它利用了这些属性:
use nlswork, clear,
poisson hours i.union##c.tenure, robust
margins union, dydx(tenure)
matrix list r(table)
matrix m1 = r(table)
matrix m11 = m1["b".."se", 1...]'
matrix m12 = m1["ll".."ul",1...]'
matrix first = m11,m12
margins rb1.union, dydx(tenure)
matrix m2 = r(table)
matrix m21 = m2["b".."se", 1...]'
matrix m22 = m2["ll".."ul",1...]'
matrix second = m21,m22
matrix rownames second = tenure:diff
matrix RESULTS = first \ second
estout matrix(RESULTS)
答案 1 :(得分:3)
estout
需要矩阵,所以也许你可以试试:
webuse nlswork, clear
poisson hours i.union##c.tenure, robust
margins union, dydx(tenure)
matrix first = r(b)
matrix list first
margins rb1.union, dydx(tenure)
matrix second = r(b)
matrix list second
*-----
matrix b = first[1,1] , first[1,2] \ second[1,1] , .
estout matrix(b)
当然,你需要对结果进行润色。
有一个thread on Statalist from 2007,其中Ben Jann(estout
的作者)澄清单独estout
无法将多个存储结果堆叠到一列中。他的解决方案涉及program
合并操作矩阵和列/行名称的结果。
对于您提供的示例,类似以下内容:
webuse nlswork, clear
poisson hours i.union##c.tenure, robust
// first margin
margins union, dydx(tenure)
matrix first = r(b)
// second margin
margins rb1.union, dydx(tenure)
matrix second = r(b)
matrix rownames second = tenure:diff
// put together
matrix c = first' \ second
estout matrix(c)
(线程有点旧,所以我不确定estout
目前是否已经更新过。)