
У меня возникли некоторые проблемы при создании регрессии OLS в LaTeX, и я очень надеюсь, что кто-то из вас сможет мне помочь. У меня есть три вопроса:
1) Как сделать "Рост 91-92" и "Рост92-93" с пробелом, чтобы было видно, что это часть категории "Рост". 2) Как сделать все столбцы моделей (1-5) одинаковой длины? 3) Как сделать первый столбец намного больше столбцов моделей?
Я хотел бы создать таблицу, которая будет выглядеть следующим образом:
Моя преамбула выглядит так:
\documentclass[a4paper,12pt,oneside]{article}
\usepackage[english]{babel}
\usepackage{tikz}
\usepackage{pgf}
\usetikzlibrary{shapes,arrows,positioning,calc,threeparttable}
\usepackage{tabu}
\usepackage{hyperref}
\usepackage{longtable}
\usepackage{array}
\usepackage{multirow,tabularx,booktabs}
\begin{document}
\begin{table}[H]
\begin{threeparttable}
\renewcommand\arraystretch{1.0}
\medskip
\renewcommand\tabcolsep{1pt}
\begin{tabular*}{\textwidth}{ @{} p{2.4cm}
@{\extracolsep{\fill}}
*{10}{S[table-format=2.6]} @{}}
\toprule
& {Model I} & {Model II} & {Model III} & {Model IV} & {Model V} \\
\emph{Afh.\ var.}
& {All partys} & {All partys} & {Social Democrat} & {Liberal} & {Conservative} \\
\midrule
\emph{Uafh.\ var.} \\
Nationalpol. effects &
\multicolumn{1}{c}{0,11\sym{***}} &
\multicolumn{1}{c}{0,22\sym{*}} &
\multicolumn{1}{c}{0,33\sym{***}} &
\multicolumn{1}{c}{0,44\sym{*}} &
\multicolumn{1}{c}{0,55\sym{***}} & \\
&
\multicolumn{1}{c}{(0,11)} &
\multicolumn{1}{c}{(0,22)} &
\multicolumn{1}{c}{(0,33)} &
\multicolumn{1}{c}{(0,44)} &
\multicolumn{1}{c}{(0,55)} & \\
Economic growth &
\multicolumn{1}{c}{0,11} &
\multicolumn{1}{c}{0,22} &
\multicolumn{1}{c}{0,33\sym{***}} &
\multicolumn{1}{c}{0,44} &
\multicolumn{1}{c}{0,55\sym{**}} & \\
&
\multicolumn{1}{c}{(0,11)} &
\multicolumn{1}{c}{(0,22)} &
\multicolumn{1}{c}{(0,33)} &
\multicolumn{1}{c}{(0,44)} &
\multicolumn{1}{c}{(0,55)} & \\
\cmidrule{1-1}
Adjusted R\textsuperscript{2} &
\multicolumn{1}{c}{0,11} &
\multicolumn{1}{c}{0,22} &
\multicolumn{1}{c}{0,33} &
\multicolumn{1}{c}{0,44} &
\multicolumn{1}{c}{0,55} & \\
N &
\multicolumn{1}{c}{111} &
\multicolumn{1}{c}{222} &
\multicolumn{1}{c}{333} &
\multicolumn{1}{c}{444} &
\multicolumn{1}{c}{555} & \\
\bottomrule
\end{tabular*}
\end{threeparttable}
\end{table}
решение1
Предлагаю вам внести несколько изменений в ваш код.
Самое главное, не заключайте каждую числовую ячейку в
\multicolumn{1}{c}{...}
обертку. Это не только не нужно делать, это контрпродуктивно: обертки переопределяют предполагаемые эффекты форматирования базового типа столбца, который вы выбрали, и в результате вы не получаете никакого предполагаемого форматирования.Похоже, вы используете
siunitx
пакет в основном (исключительно?) для егоS
типа столбца таблицы, вероятно, чтобы добиться выравнивания чисел на их десятичных маркерах. Если это впечатление верно, я рекомендую вам на самом деле использовать другой тип столбца:D
, предоставляемый пакетомdcolumn
. СD
типом столбца требуется меньше накладных расходов для работы со скобками и символами, которые встречаются в числовых столбцах.Чтобы избежать разрыва между коэффициентом регрессии и линиями стандартной ошибки, вы можете поместить имена регрессоров (в первом столбце) в небольшую обертку, которая скроет тот факт, что имена регрессоров занимают две строки от окружающей
tabular
среды типа -. В коде ниже я создал макрос, вызванный\narrowtab
для этой цели; не стесняйтесь переименовывать его во что-нибудь другое.Чтобы все пять столбцов данных выглядели примерно одинаковой ширины, по-видимому, необходимо сократить обозначения моделей III и V.
Боюсь, я не смог ответить на ваш первый вопрос, поскольку в вашем примере кода этот вопрос не упоминается.
\documentclass[a4paper,12pt,oneside]{article}
\usepackage{threeparttable,dcolumn,caption,amsmath,array,booktabs}
\newcommand{\sym}[1]{{}^{#1}} % correct?
\newcommand\mc[1]{\multicolumn{1}{@{}c@{}}{#1}} % handy shortcut macro
\newcommand\narrowtab[2]{% %% macro to hide depth of its argument from outer tabular
\ensuremath{\smash{\begin{tabular}[t]{@{}>{\raggedright\arraybackslash}p{#1}@{}}%
#2 \end{tabular}}}}
\begin{document}
\begin{table}
\caption{Regression results}
\begin{threeparttable}
%\renewcommand\tabcolsep{1pt}
\begin{tabular*}{\textwidth}{@{} p{1in} @{\extracolsep{\fill}} *{5}{D{,}{,}{2.4}} @{}}
\toprule
& \mc{Model I} & \mc{Model II} & \mc{Model III} & \mc{Model IV} & \mc{Model V} \\
\emph{Afh.\ var.}
& \mc{All partys} & \mc{All partys} & \mc{Soc.\ Dem.} & \mc{Liberal} & \mc{Cons.} \\
\midrule
\emph{Uafh.\ var.} \\
\narrowtab{1in}{Nationalpol.\ effects} &
0,11\sym{***} & 0,22\sym{*} & 0,33\sym{***} & 0,44\sym{*} & 0,55\sym{***} \\
& (0,11) & (0,22) & (0,33) & (0,44) & (0,55) \\
\addlinespace
\narrowtab{1in}{Economic growth} &
0,11 & 0,22 & 0,33\sym{***} & 0,44 & 0,55\sym{**}\\
& (0,11) & (0,22) & (0,33) & (0,44) & (0,55) \\
\cmidrule{1-1}
Adjusted R\textsuperscript{2} &
0,11 & 0,22 & 0,33 & 0,44 & 0,55 \\
N & \mc{111} & \mc{222} & \mc{333} & \mc{444} & \mc{555} \\
\bottomrule
\end{tabular*}
\end{threeparttable}
\end{table}
\end{document}