
LaTeX에서 OLS 회귀를 생성할 때 몇 가지 문제가 있습니다. 여러분 중 일부가 저를 도와주셨으면 좋겠습니다. 세 가지 질문이 있습니다.
1) "Growth 91-92"와 "Growth92-93"을 공백으로 만드는 방법을 보면 "Growth" 카테고리의 일부임을 알 수 있습니다. 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
이 목적으로 호출되는 매크로를 만들었습니다. 다른 이름으로 자유롭게 이름을 바꿔보세요.5개의 데이터 열이 대략 동일한 너비로 표시되도록 하려면 모델 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}