Vertical table lines are discontinuous with booktabs

I don't think the answer "Don't use vertical rules" is very constructive when the question is about making vertical lines look nice. So here is a solution if you only want to modify the width of horizontal lines and if you are willing to not use booktabs:

\documentclass{article}
\usepackage{array}

\begin{document}

\begin{table} [h!]
\centering
\begin{tabular}{|l|c|c|c|c|}
\hline
Parameters  & \multicolumn{2}{c}{Model 1} & \multicolumn{2}{c}{Model 2}\\ 
    \noalign{\hrule height 1.5pt}

&  Coefficient & 95\% CI
&   Coefficient & 95\% CI \\ 
    \noalign{\hrule height 1.5pt}

   $\beta_{concern_2}$  &   $0.190^{\ast}$ & (0.113, 0.268) & 0.171 & (0.100, 0.241)\\
   $\beta_{concern_3}$   &  0.117 &  (0.043, 0.191)  & 0.117 & (0.050, 0.183)\\ 
    $\beta_{concern_4}$ & 0.210  &  (0.139, 0.281)  & 0.190 & (0.127, 0.253)\\ 
     $\beta_{concern_5}$ & 0.204 & (0.135, 0.273)   & 0.111 & ( 0.049, 0.173)\\  
    $\beta_{breath_2}$  &  0.157 & (0.07,8 0.236) & 0.208 & (0.136, 0.280) \\
     $\beta_{breath_3}$ & 0.115 & (0.041, 0.189) & 0.100 & (0.034, 0.166) \\
    $\beta_{breath_4}$ & 0.236 &  (0.160, 0.311) & 0.301 & ( 0.234, 0.368)\\  
    $\beta_{breath_5}$ & 0.092 & (0.020, 0.163) & 0.079 & (0.015, 0.144) \\
   $\beta_{weath_2}$  &   0.164 & ( 0.092, 0.236) & 0.137 & (0.071, 0.203) \\
    $\beta_{weath_3}$  & 0.160 &  (0.089, 0.231) & 0.199 & (0.135, 0.263) \\
   $\beta_{weath_4}$ &  0.141 & (0.067, 0.215) & 0.133 & (0.066, 0.199) \\
    $\beta_{weath_5}$ & 0.176 & (0.103, 0.249) &  0.257 & (0.191, 0.323)\\ 
    $\beta_{sleep_2}$  & 0.111 & (0.036, 0.187) & 0.135 & (0.068 0.203)  \\ 
    $\beta_{sleep_3}$  & 0.110 & (0.036 0.184) & 0.176 &  0.110 0.242 \\   
    $\beta_{sleep_4}$  &  0.131 & (0.056 0.205 & 0.162 & 0.095 0.229 \\  
    $\beta_{sleep_5}$  & 0.011 & (-0.064, 0.086) & 0.034 & (-0.033, 0.101) \\ 
    $\beta_{act_2}$ &  0.135 & (0.060, 0.209) & 0.033 & (-0.033, 0.100) \\
    $\beta_{act_3}  $ &0.195 & (0.121, 0.269) & 0.203 & ( 0.137, 0.268)\\  
    $\beta_{act_4}  $ & 0.214 & ( 0.139, 0.290) & 0.254 & (0.186 0.321) \\ 
    $\beta_{act_5}  $ & 0.224 & (0.154, 0.294) & 0.158 & (0.095, 0.221) \\

\hline
    & *statistically significant at 5\% level \\
\hline
\end{tabular}
\caption{Regression Coefficients of model 1 and model 2 }
\label{beta}
\end{table}

\end{document}

\midrule , \toprule , and \bottomrule are replaced by \noalign{\hrule height 1.5pt} with the width that you want.

You can also set the width of vertical lines by using !{\vrule width 2pt} instead of | in the tabular parameters.

I understand that this solution is not optimal, but it can do the trick and I hope it would help.


That's by design: the author of booktabs hates vertical rules in tables and I fully agree with him. You could act on spacing parameters, namely

  • \abovetopsep (0pt by default), used above a \toprule
  • \belowbottomsep (0pt by default), used below a \bottomrule
  • \aboverulesep (0.4ex by default), used above a \midrule, \cmidrule or \bottomrule
  • \belowrulesep (0.65ex by default), used below a \midrule, \cmidrule or \toprule

They are all rigid length (no plus or minus specifications are allowed and they wouldn't make sense anyway).

By (locally) setting these parameters to zero, the vertical rules will match, but it would simpler not to use booktabs commands at all: the heavier \toprule and \bottomrule would be completely out of place.

Don't use vertical rules and the appearance of your table will improve immediately.

\documentclass{article}
\usepackage{amsmath}
\usepackage{booktabs}
\usepackage{array}
\newcolumntype{L}{>{$}l<{$}}
\newcolumntype{C}{>{$}c<{$}}
\newcolumntype{R}{>{$}r<{$}}
\newcommand{\nm}[1]{\textnormal{#1}}

\begin{document}

\begin{table} [h!]
\centering
\begin{tabular}{LCRCR}
\toprule
\multicolumn{1}{l}{Parameters} &
\multicolumn{2}{c}{Model 1}    &
\multicolumn{2}{c}{Model 2}    \\ 
\cmidrule(lr){2-3}
\cmidrule(lr){4-5}

&
\multicolumn{1}{c}{Coefficient} &
\multicolumn{1}{c}{95\% CI}     &
\multicolumn{1}{c}{Coefficient} &
\multicolumn{1}{c}{95\% CI}     \\
\midrule

\beta_{\nm{concern}_2} & 0.190\makebox[0pt][l]{$^{\ast}$} 
                               & ( 0.113, 0.268) & 0.171 & ( 0.100, 0.241) \\
\beta_{\nm{concern}_3} & 0.117 & ( 0.043, 0.191) & 0.117 & ( 0.050, 0.183) \\
\beta_{\nm{concern}_4} & 0.210 & ( 0.139, 0.281) & 0.190 & ( 0.127, 0.253) \\
\beta_{\nm{concern}_5} & 0.204 & ( 0.135, 0.273) & 0.111 & ( 0.049, 0.173) \\  
\beta_{\nm{breath}_2}  & 0.157 & ( 0.078, 0.236) & 0.208 & ( 0.136, 0.280) \\
\beta_{\nm{breath}_3}  & 0.115 & ( 0.041, 0.189) & 0.100 & ( 0.034, 0.166) \\
\beta_{\nm{breath}_4}  & 0.236 & ( 0.160, 0.311) & 0.301 & ( 0.234, 0.368) \\
\beta_{\nm{breath}_5}  & 0.092 & ( 0.020, 0.163) & 0.079 & ( 0.015, 0.144) \\
\beta_{\nm{weath}_2}   & 0.164 & ( 0.092, 0.236) & 0.137 & ( 0.071, 0.203) \\
\beta_{\nm{weath}_3}   & 0.160 & ( 0.089, 0.231) & 0.199 & ( 0.135, 0.263) \\
\beta_{\nm{weath}_4}   & 0.141 & ( 0.067, 0.215) & 0.133 & ( 0.066, 0.199) \\
\beta_{\nm{weath}_5}   & 0.176 & ( 0.103, 0.249) & 0.257 & ( 0.191, 0.323) \\
\beta_{\nm{sleep}_2}   & 0.111 & ( 0.036, 0.187) & 0.135 & ( 0.068, 0.203) \\ 
\beta_{\nm{sleep}_3}   & 0.110 & ( 0.036, 0.184) & 0.176 & ( 0.110, 0.242) \\   
\beta_{\nm{sleep}_4}   & 0.131 & ( 0.056, 0.205) & 0.162 & ( 0.095, 0.229) \\  
\beta_{\nm{sleep}_5}   & 0.011 & (-0.064, 0.086) & 0.034 & (-0.033, 0.101) \\ 
\beta_{\nm{act}_2}     & 0.135 & ( 0.060, 0.209) & 0.033 & (-0.033, 0.100) \\
\beta_{\nm{act}_3}     & 0.195 & ( 0.121, 0.269) & 0.203 & ( 0.137, 0.268) \\  
\beta_{\nm{act}_4}     & 0.214 & ( 0.139, 0.290) & 0.254 & ( 0.186, 0.321) \\ 
\beta_{\nm{act}_5}     & 0.224 & ( 0.154, 0.294) & 0.158 & ( 0.095, 0.221) \\
\midrule[\heavyrulewidth]
\multicolumn{5}{l}{\footnotesize$^*$ statistically significant at 5\% level} \\
\bottomrule
\end{tabular}
\caption{Regression Coefficients of model 1 and model 2}\label{beta}
\end{table}



\end{document}

I've made some notable changes.

  1. The subscripts are upright, being words

  2. The alignment is improved by using features of the table itself; for instance, the third and fifth column are right aligned because of the minus signs only in the first coordinate; it wouldn't be so if the minus sign appeared also in the second coordinate or the headers had been wider.

  3. With \cmidrule it's easier to show how the headers group the columns.

  4. A trick is used for avoiding the * to take up space.

  5. An array trick is used for setting all columns in math mode, ensuring that the minus signs are printed as such.

  6. \centering is used instead of the center environment (that adds vertical space).

enter image description here

If you need to change "95% CI" to "95% Bayesian Interval", the best is to split the long phrase into two lines: modify the block

\multicolumn{1}{c}{Coefficient} &
\multicolumn{1}{c}{95\% CI}     &
\multicolumn{1}{c}{Coefficient} &
\multicolumn{1}{c}{95\% CI}     \\
\midrule

into

\multicolumn{1}{c}{Coefficient} & \multicolumn{1}{c}{95\% Bayesian} &
\multicolumn{1}{c}{Coefficient} & \multicolumn{1}{c}{95\% Bayesian} \\
                                & Interval                          &
                                & Interval                          \\
\midrule

As @Puck says in his answer, and as Brandon Kuczenski comments, the responses here are not constructive, neither the question is answered.

The way to use vertical lines with booktabs (despite it is discouraged), is to reduce the space above and below the midrule:

 \aboverulesep=0ex
 \belowrulesep=0ex

This will cramp your tables a little bit, so, to return to a regular table line height, you should stretch your array with:

\renewcommand{\arraystretch}{SF}

Where SF is the stretch factor (use SF>1.0).

Just in case, you should add those lines in the preamble.

Hope this does answer your question.