昨天看了连玉君老师写的一篇Stata与LaTeX结合的文章,正好最近在学习LaTeX,整理了一下相关代码。Stata是Stata 16,LaTeX是TeX Live 2021。[Stata code]为在Stata里运行的代码,[LaTeX code]为在LaTeX里运行的代码。(TeX Live 2021需要安装的小伙伴也可以私信我哈)
- 下载sjlatex.sty文件
[Stata code]
// 输入代码
findit sjlatex
// 点击第3个链接
// 点击"click here to install",下载文件
// 找到路径C:\ado\plus\s,查看sjlatex.ado文件位置
// 安装sjlatex.sty
sjlatex install using C:\ado\plus\s\sjlatex
// 安装完毕
// 将文件夹C:\ado\plus\s\sjlatex下的sjlatex文件夹复制到LaTeX安装文件F:\LaTeX\texlive\2021\texmf-dist\tex\latex下(导入stata.sty),这个目录存放了LaTeX的.tex文件,这里我用了自己的路径,小伙伴们可以找一下相应的路径
// win+R输入cmd,在cmd中输入texhash更新texlive宏包(载入stata.sty),防止之后usepackage{stata}时发生报错
// 如果没有texhash更新宏包也可以直接用路径进行导入,如下面注释行里的F:/LaTex/texlive/2021/texmf-dist/tex/latex/sjlatex/stata
// 更新宏包完毕,可以开始运行了
- 复现Stata帮助文件
[LaTeX code]
\documentclass{article}
% \usepackage{F:/LaTex/texlive/2021/texmf-dist/tex/latex/sjlatex/stata}
\usepackage{stata}
\begin{document}
\begin{stsyntax}
\dunderbar{reg}ress {\it depvar}
\optindepvars\
\optif\
\optin\
\optweight\
\optional{,
\underbar{noc}onstant
\underbar{h}ascons tsscons vce({\it vcetype\/}) \underbar{l}evel(\num)
\underbar{b}eta
\underbar{ef}orm(\ststring)
\underbar{nohe}ader plus
\dunderbar{dep}name(\varname) mse1}
\end{stsyntax}
\end{document}
// 结果如下
- 复现Stata命令代码
[LaTeX code]
\documentclass{article}
\usepackage{stata}
\begin{document}
\begin{stlog}
sysuse auto, clear
sum price
list price if foreign == 1
reg price mpg weight length
\end{stlog}
\end{document}
// 结果如下
- 复现Stata储存结果文本
[LaTeX code]
\documentclass{article}
\usepackage{stata}
\begin{document}
\begin{stresults}
\stresultsgroup{Scalars} \\
\stcmd{e(N)} & number of observations & \stcmd{e(F)} & $\scriptstyle F$ statistic\\
\stcmd{e(mss)} & model sum of squares & \stcmd{e(rmse)} & root mean squared error \\
\stcmd{e(df\_m)}& model degrees of freedom& \stcmd{e(ll\_r)}& log likelihood \\
\end{stresults}
\end{document}
// 结果如下
- 复现Stata [list] 命令结果
[Stata code]
/*Install package listtex*/
ssc install listtex
/*Use listtex code*/
sysuse auto, clear
#delimit;
listtex make price mpg foreign in 1/6 using listex1, type rstyle(tabular) head("\begin{tabular}{rrrr}"
"\textit{Make}&\textit{Price}&\textit{Mpg}&\textit{Foreign}\\") foot("\end{tabular}");
#delimit cr
// 上述命令运行之后会在Stata结果窗口生成如下LaTeX代码
// 将生成的LaTeX代码粘贴至"begin{document}"与"end{document}"之间进行运行即可
[LaTeX code]
\documentclass{article}
\usepackage{stata}
\begin{document}
\begin{tabular}{rrrr}
\textit{Make}&\textit{Price}&\textit{Mpg}&\textit{Foreign}\\
AMC Concord&4,099&22&Domestic\\
AMC Pacer&4,749&17&Domestic\\
AMC Spirit&3,799&22&Domestic\\
Buick Century&4,816&20&Domestic\\
Buick Electra&7,827&15&Domestic\\
Buick LeSabre&5,788&18&Domestic\\
\end{tabular}
\end{document}
// 结果如下
- 复现Stata结果窗口原始结果
// 用sysuse auto,clear导入auto.dta数据,将Stata结果窗口的原始回归结果导出
[Stata code]
sjlog using output1, replace
sysuse auto, clear
regress mpg weight length
sjlog close, replace nolog
// 生成output1.log.tex文件,注意Stata生成的output1.log.tex文件的路径应当与texlive当前工作路径一致,不一致时要按output1.log.tex文件当前所在路径进行导入
[LaTeX code]
\documentclass{article}
\usepackage{stata}
\begin{document}
\begin{stlog}
\input{output1.log.tex}\nullskip
\end{stlog}
\end{document}
// 结果如下
- 输出相关系数表
[Stata code]
// 生成corrtex1.tex
/*Install package corrtex*/
ssc install corrtex
/*Use corrtex code*/
corrtex price mpg weight length gear_ratio, file(corrtex1) ///
title(\texttt{corrtex}) key(tab:corrtex1) sig replace
[LaTeX code]
// 调用corrtex1.tex
\documentclass{article}
\begin{document}
\input{corrtex1.tex}
\end{document}
// 结果如下
- 输出回归结果表
// 生成esttab1.tex
[Stata code]
*esttab1.tex
qui gen mpg2 = mpg^2
qui reg price mpg length weight
est store model1
qui reg price mpg mpg2 length weight
est store model2
qui reg price mpg mpg2 length weight foreign
est store model3
esttab model1 model2 model3 using esttab1.tex, replace
// 调用esttab1.tex
[LaTeX code]
\documentclass{article}
\usepackage{amsmath, stata}
\begin{document}
\input{esttab1.tex}
\end{document}
// 结果如下
// 生成esttab2.tex
[Stata code]
*esttab2.tex
#delimit;
esttab model* using esttab2.tex, replace
title("\stcmd{OLS Regression Output}"\label{tab:esttab2})
mtitle("Model A" "Model B" "Model C") b(%6.3f) t(%6.3f)
star(* 0.1 ** 0.05 *** 0.01) ar2 coeflabels(mpg2 "mpg$^2$" _cons Constant);
#delimit cr
// 调用esttab2.tex
[LaTeX code]
\documentclass{article}
\usepackage{amsmath, stata}
\begin{document}
\input{esttab2.tex}
\end{document}
// 结果如下