使用python将statsmodel表转换为latex style.png

2024-04-29 05:21:04 发布

您现在位置:Python中文网/ 问答频道 /正文

我想我很快就能解决很多statsmodel用户过去遇到的问题了。然而,我不存在的乳胶经验使我的进步慢了很多D

让我们直接切入问题: 在下文中,我将使用来自https://www.statsmodels.org/stable/regression.html的示例数据集

因此,输出为以下回归表: OLS Regression Results

我已经尝试了几个包将输出转换为latex style.png。最有希望的方法似乎是使用sympy.printing.preview.preview函数:

在:

from sympy.printing.preview import preview

preamble = "\\documentclass[12pt]{article}\n" \
           "\\usepackage{booktabs,amsmath,amsfonts}\\begin{document}"

preview(res.summary().as_latex(), output='png', filename='output.png', preamble=preamble)

输出: Latex style .png 1

如您所见,回归的第二个和第三个表以及表下的警告与第一个表不一致

为了解决这个问题,我尝试使用Tablerx软件包,如下所示:

preamble = "\\documentclass[12pt]{article}\n" \
           "\\usepackage{booktabs,amsmath,amsfonts, tabularx}\\begin{document}"

preview(res.summary().as_latex().replace("\\begin{tabular}", "\\begin{tabularx}
{\\textwidth}").replace("\\end{tabular}", "\\end{tabularx}"), output='png', filename='output.png', preamble=preamble)

输出: Latex style .png 2

表2和表3的水平线与表1的水平线对齐,但是表的输入和警告没有对齐

有人知道如何从这里继续吗?如何使用python将latex样式的原始输出表保存为.png

提前谢谢你们

Edit1:

由于res.summary().as_latex()输出了文章末尾显示的代码,我已设法或多或少地手动将表与以下内容对齐:

preview(res.summary().as_latex().replace("\\begin{tabular}", "\\begin{tabularx}{20cm}").replace("\\end{tabular}", "\\end{tabularx}").replace("{lclc}", "{>{\hsize=.3\hsize}X >{\hsize=.2\hsize}X >{\hsize=.3\hsize}X >{\hsize=.2\hsize}X}").replace("{lcccccc}", "{XXXXXX p{3.6cm}}"), output='png', filename='output.png', preamble=preamble)

new Output looks like that条。这不应该也不可能是最终解决方案,因此,如果有人知道一种更动态(非手动)的方法来实现这一点,我想扩展这个问题

三个表中的完整乳胶代码:

\begin{center}
\begin{tabular}{lclc}
\toprule
\textbf{Dep. Variable:}    &        y         & \textbf{  R-squared:         } &     0.416   \\
\textbf{Model:}            &       OLS        & \textbf{  Adj. R-squared:    } &     0.353   \\
\textbf{Method:}           &  Least Squares   & \textbf{  F-statistic:       } &     6.646   \\
\textbf{Date:}             & Thu, 04 Feb 2021 & \textbf{  Prob (F-statistic):} &  0.00157    \\
\textbf{Time:}             &     18:38:15     & \textbf{  Log-Likelihood:    } &   -12.978   \\
\textbf{No. Observations:} &          32      & \textbf{  AIC:               } &     33.96   \\
\textbf{Df Residuals:}     &          28      & \textbf{  BIC:               } &     39.82   \\
\textbf{Df Model:}         &           3      & \textbf{                     } &             \\
\bottomrule
\end{tabular}
\begin{tabular}{lcccccc}
               & \textbf{coef} & \textbf{std err} & \textbf{t} & \textbf{P$> |$t$|$} & \textbf{[0.025} & \textbf{0.975]}  \\
\midrule
\textbf{x1}    &       0.4639  &        0.162     &     2.864  &         0.008        &        0.132    &        0.796     \\
\textbf{x2}    &       0.0105  &        0.019     &     0.539  &         0.594        &       -0.029    &        0.050     \\
\textbf{x3}    &       0.3786  &        0.139     &     2.720  &         0.011        &        0.093    &        0.664     \\
\textbf{const} &      -1.4980  &        0.524     &    -2.859  &         0.008        &       -2.571    &       -0.425     \\
\bottomrule
\end{tabular}
\begin{tabular}{lclc}
\textbf{Omnibus:}       &  0.176 & \textbf{  Durbin-Watson:     } &    2.346  \\
\textbf{Prob(Omnibus):} &  0.916 & \textbf{  Jarque-Bera (JB):  } &    0.167  \\
\textbf{Skew:}          &  0.141 & \textbf{  Prob(JB):          } &    0.920  \\
\textbf{Kurtosis:}      &  2.786 & \textbf{  Cond. No.          } &     176.  \\
\bottomrule
\end{tabular}
%\caption{OLS Regression Results}
\end{center}

Notes: \newline
 [1] Standard Errors assume that the covariance matrix of the errors is correctly specified.

Tags: outputpngasressummarypreviewreplacelatex