stata mlogit margins margins,dydx(*) 预测(outcome()) 导出到 LaTeX 表

stata mlogit margins margins,dydx(*) 预测(outcome()) 导出到 LaTeX 表

我正在 STATA 中估计多项逻辑回归模型

mlogit Y X1 X2 X3 X4 X5

然后使用循环得到边际效应

est store m
forval i = 0/5 {
est res m
margins, dydx(*) predict(outcome(`i')) post
est store m`i'
}
estout m0 m1 m2 m3 m4 m5

我希望每次使用 estadd 命令将这些结果与 mlogit 相应结果的系数一起添加,然后将它们存储并使用 esttab 将它们导出到 tex 中。

我通常会写(导出.tex 表)

<fit model>
estadd margins, dydx(*)
estout, cells("b margins_b" "se(par) margins_se(par)")
est store A

esttabA using table1.tex replace f star(* 0.10 **0.05 ***0.001)
cells("b(fmt(3)star) margins_b(star)" "se fmt(3)par)")
stats(N r2_p chi2 p pr, fmt(0 3)

但这只适用于边际,dydx(*) atmeans,但这些不会因不同的结果而改变,我每次都想得到系数,然后是边际效应

Outcome1   Coeff     Marginal Effect

Variable1  coeff11   margeff11  
Variable2  coeff12   margeff12  
Variable3  coeff13   margeff13  

Outcome2   Coeff     Marginal Effect  
Variable1  coeff21   margeff21  
Variable2  coeff22   margeff22  
Variable3  coeff23   margeff23

有人能帮助我做到这一点吗?

答案1

这更像是 Stata 或 estout 问题,而不是 LaTeX 问题。在 mlogit 之后有一节关于边际效应的内容estout 网站,但老实说,我不太明白它在做什么,我怀疑它正在计算均值的边际效应,而不是你想要的平均边际效应。

无论如何,您都可以通过以下示例获得更多的灵活性。

// load example data and fit model - this is from the mlogit help file
webuse sysdsn1
mlogit insure age male nonwhite i.site, rrr
est store m

// estimate average marginal effects
forval i = 1/3 {
est res m
margins, dydx(*) predict(outcome(`i')) post
est store m`i'
}

// export results per outcome in one table
esttab m m1 using mlogit_frag.tex, booktabs fragment replace ///
    equations(Out1 = 1:1) keep(Out1:) drop(?b.*) eqlabels(none) nonumber noobs ///
    mlabel("Coeff." "Marg.Eff.", lhs("Outcome 1")) 
esttab m m2 using mlogit_frag.tex, booktabs fragment append ///
    equations(Out2 = 2:1) keep(Out2:) drop(?b.*) eqlabels(none) nonumber noobs ///
    mlabel("Coeff." "Marg.Eff.", lhs("\midrule Outcome 2")) 
esttab m m3 using mlogit_frag.tex, booktabs fragment append ///
    equations(Out3 = 3:1) keep(Out3:) drop(?b.*) eqlabels(none) nonumber ///
    mlabel("Coeff." "Marg.Eff.", lhs("\midrule Outcome 3")) 

我想估计部分已经很清楚了。

在该esttab部分中,我根据结果类别匹配模型方程(例如,equations(Out2 = 2:1)意味着“将提到的第一个模型的方程 2(即m)与第二个模型的第一个方程(即m2- 边际效应只有一个方程)相匹配,并调用此方程Out2(或其他))。我必须命名该方程,以便能够仅保留该模型方程m(并删除其他方程)。这就是keep(Out3:)所做的。

drop(?b.*)删除参考类别。其他选项应该从esttab/ estouthelp 文件中清楚了解。

之后,将表格插入主文档相对容易:

\documentclass{article}
\usepackage{threeparttablex} 
\usepackage{booktabs}
\def\sym#1{\ifmmode^{#1}\else\(^{#1}\)\fi} % define p-value symbols from estout
\begin{document}
\begin{table}
    \centering
    \caption{A nice table caption \label{tab:yourlabel}}
    \begin{threeparttable}
        \begin{tabular}{l*{2}{c}}
            \toprule
            \input{mlogit_frag.tex}
            \bottomrule
        \end{tabular}
        \begin{tablenotes}[para]
            \footnotesize
            \sym{*} \(p<0.05\), \sym{**} \(p<0.01\), \sym{***} \(p<0.001\) 

            Standard errors in parentheses.
        \end{tablenotes}
    \end{threeparttable}
\end{table}
\end{document}

threeparttablex使用表格注释不加宽表格下方包裹。查看包装文档了解详情。该[para]选项的解释见threeparttable文档

本质上,您只需要tabular环境中的一切(或等价物)、\def重要性星星的线,以及可能的booktabs

相关内容