Summarizes (multiple) fitted linear models (coefficients, std. beta values etc.)
as HTML table, or saves them as file. The fitted models may have different predictors,
e.g. when comparing different stepwise fitted models.
This function also supports panel models fitted with the `plm`

-function
from the plm-package and generalized least squares models fitted with
the `gls`

-function from the nlme-package.

sjt.lm(..., pred.labels = NULL, depvar.labels = NULL, remove.estimates = NULL, group.pred = TRUE, p.numeric = TRUE, emph.p = FALSE, p.zero = FALSE, p.kr = TRUE, robust = FALSE, separate.ci.col = TRUE, newline.ci = TRUE, show.est = TRUE, show.std = NULL, show.ci = TRUE, show.se = FALSE, show.header = FALSE, show.col.header = TRUE, show.r2 = TRUE, show.icc = FALSE, show.re.var = FALSE, show.fstat = FALSE, show.aic = FALSE, show.aicc = FALSE, show.dev = FALSE, string.pred = "Predictors", string.dv = "Dependent Variables", string.interc = "(Intercept)", string.obs = "Observations", string.est = "B", string.std = "std. Beta", string.ci = "CI", string.se = "std. Error", string.p = "p", ci.hyphen = " – ", minus.sign = "-", digits.est = 2, digits.std = 2, digits.p = 3, digits.ci = 2, digits.se = 2, digits.summary = 3, cell.spacing = 0.2, cell.gpr.indent = 0.6, sep.column = TRUE, CSS = NULL, encoding = NULL, file = NULL, use.viewer = TRUE, no.output = FALSE, remove.spaces = TRUE)

... | One or more fitted linear (mixed) models. |
---|---|

pred.labels | Character vector with labels of predictor variables.
If not |

depvar.labels | Character vector with labels of dependent variables of all fitted models. See 'Examples'. |

remove.estimates | Numeric vector with indices (order equals to row index of |

group.pred | Logical, if |

p.numeric | Logical, if |

emph.p | Logical, if |

p.zero | logical, if |

p.kr | logical, if |

robust | Logical, if |

separate.ci.col | Logical, if |

newline.ci | Logical, if |

show.est | Logical, if |

show.std | Indicates whether standardized beta-coefficients should also printed, and if yes, which type of standardization is done. See 'Details'. |

show.ci | Logical, if |

show.se | Logical, if |

show.header | Logical, if |

show.col.header | Logical, if |

show.r2 | Logical, if |

show.icc | Logical, if |

show.re.var | Logical, if |

show.fstat | Logical, if |

show.aic | Logical, if |

show.aicc | Logical, if |

show.dev | Logical, if |

string.pred | Character vector,used as headline for the predictor column.
Default is |

string.dv | Character vector, used as headline for the
dependent variable columns. Default is |

string.interc | Character vector, used as headline for the Intercept row.
Default is |

string.obs | character vector, used in the summary row for the count of observation
(cases). Default is |

string.est | Character vector, used for the column heading of estimates. |

string.std | Character vector, used for the column heading of standardized beta coefficients. Default is |

string.ci | Character vector, used for the column heading of confidence interval values. Default is |

string.se | Character vector, used for the column heading of standard error values. Default is |

string.p | Character vector, used for the column heading of p values. Default is |

ci.hyphen | Character vector, indicating the hyphen for confidence interval range. May be an HTML entity. See 'Examples'. |

minus.sign | string, indicating the minus sign for negative numbers. May be an HTML entity. See 'Examples'. |

digits.est | Amount of decimals for estimates |

digits.std | Amount of decimals for standardized beta |

digits.p | Amount of decimals for p-values |

digits.ci | Amount of decimals for confidence intervals |

digits.se | Amount of decimals for standard error |

digits.summary | Amount of decimals for values in model summary |

cell.spacing | Numeric, inner padding of table cells. By default, this value is 0.2 (unit is cm), which is
suitable for viewing the table. Decrease this value (0.05 to 0.1) if you want to import the table
into Office documents. This is a convenient argument for the |

cell.gpr.indent | Indent for table rows with grouped factor predictors. Only applies
if |

sep.column | Logical, if |

CSS | A |

encoding | String, indicating the charset encoding used for variable and
value labels. Default is |

file | Destination file, if the output should be saved as file.
If |

use.viewer | Logical, if |

no.output | Logical, if |

remove.spaces | Logical, if |

Invisibly returns

the web page style sheet (

`page.style`

),the web page content (

`page.content`

),the complete html-output (

`page.complete`

) andthe html-table with inline-css for use with knitr (

`knitr`

)

for further use.

Concerning the `show.std`

argument, `show.std = "std"`

will print normal standardized estimates. For `show.std = "std2"`

,
however, standardization of estimates follows
Gelman's (2008)
suggestion, rescaling the estimates by dividing them by two standard
deviations instead of just one. Resulting coefficients are then
directly comparable for untransformed binary predictors. This type
of standardization uses the `standardize`

-function
from the arm-package.
For backward compatibility reasons, `show.std`

also may be
a logical value; if `TRUE`

, normal standardized estimates are
printed (same effect as `show.std = "std"`

). Use
`show.std = NULL`

(default) or `show.std = FALSE`

,
if standardized estimats should not be printed.

Furthermore, see 'Details' in `sjt.frq`

.

See 'Note' in `sjt.frq`

.

# NOT RUN { # Now fit the models. Note that both models share the same predictors # and only differ in their dependent variable. See examples of stepwise # models below at the end. library(sjmisc) data(efc) # fit first model fit1 <- lm(barthtot ~ c160age + c12hour + c161sex + c172code, data = efc) # fit second model fit2 <- lm(neg_c_7 ~ c160age + c12hour + c161sex + c172code, data = efc) # create and open HTML-table in RStudio Viewer Pane or web browser # note that we don't need to specify labels for the predictors, # because these are automatically read sjt.lm(fit1, fit2) # create and open HTML-table in RStudio Viewer Pane or web browser # in the following examples, we set labels via argument sjt.lm(fit1, fit2, depvar.labels = c("Barthel-Index", "Negative Impact"), pred.labels = c("Carer's Age", "Hours of Care", "Carer's Sex", "Educational Status")) # use vector names as labels sjt.lm(fit1, fit2, pred.labels = "") # show HTML-table, indicating p-values as asterisks sjt.lm(fit1, fit2, show.std = TRUE, p.numeric = FALSE) # create and open HTML-table in RStudio Viewer Pane or web browser, # integrate CI in estimate column sjt.lm(fit1, fit2, separate.ci.col = FALSE) # show HTML-table, indicating p-values as numbers # and printing CI in a separate column sjt.lm(fit1, fit2, show.std = TRUE) # show HTML-table, indicating p-values as stars # and integrate CI in estimate column sjt.lm(fit1, fit2, show.std = TRUE, ci.hyphen = " to ", minus.sign = "−", p.numeric = FALSE, separate.ci.col = FALSE) # ---------------------------------- # connecting two html-tables # ---------------------------------- # fit two more models fit3 <- lm(tot_sc_e ~ c160age + c12hour + c161sex + c172code, data=efc) fit4 <- lm(e42dep ~ c160age + c12hour + c161sex + c172code, data=efc) # create and save first HTML-table part1 <- sjt.lm(fit1, fit2) # create and save second HTML-table part2 <- sjt.lm(fit3, fit4) # browse temporary file htmlFile <- tempfile(fileext=".html") write(sprintf("<html><head>%s</head><body>%s<p></p>%s</body></html>", part1$page.style, part1$page.content, part2$page.content), file = htmlFile) viewer <- getOption("viewer") if (!is.null(viewer)) viewer(htmlFile) else utils::browseURL(htmlFile) # ---------------------------------- # User defined style sheet # ---------------------------------- sjt.lm(fit1, fit2, CSS = list(css.table = "border: 2px solid;", css.tdata = "border: 1px solid;", css.depvarhead = "color:#003399;")) # ---------------------------------- # automatic grouping of predictors # ---------------------------------- library(sjmisc) data(efc) # make education categorical efc$c172code <- to_factor(efc$c172code) # fit first model again (with c172code as factor) fit1 <- lm(barthtot ~ c160age + c12hour + c172code + c161sex, data=efc) # fit second model again (with c172code as factor) fit2 <- lm(neg_c_7 ~ c160age + c12hour + c172code + c161sex, data=efc) # plot models, but group by predictors sjt.lm(fit1, fit2, group.pred = TRUE) # ---------------------------------------- # compare models with different predictors # ---------------------------------------- library(sjmisc) data(efc) # make education categorical efc$c172code <- to_factor(efc$c172code) # make education categorical efc$e42dep <- to_factor(efc$e42dep) # fit first model fit1 <- lm(neg_c_7 ~ c160age + c172code + c161sex, data = efc) # fit second model fit2 <- lm(neg_c_7 ~ c160age + c172code + c161sex + c12hour, data = efc) # fit second model fit3 <- lm(neg_c_7 ~ c160age + c172code + e42dep + tot_sc_e, data = efc) sjt.lm(fit1, fit2, fit3) # ---------------------------------------- # compare models with different predictors # and grouping # ---------------------------------------- # make cope-index categorical efc$c82cop1 <- to_factor(efc$c82cop1) # fit another model fit4 <- lm(neg_c_7 ~ c160age + c172code + e42dep + tot_sc_e + c82cop1, data = efc) sjt.lm(fit1, fit2, fit4, fit3) # show standardized beta only sjt.lm(fit1, fit2, fit4, fit3, show.est = FALSE, show.std = TRUE, show.aic = TRUE, show.fstat = TRUE) # ----------------------------------------------------------- # color insanity. just to show that each column has an own # CSS-tag, so - depending on the stats and values you show - # you can define column spaces / margins, border etc. to # visually separate your models in the table # ----------------------------------------------------------- sjt.lm(fit1, fit2, fit4, fit3, show.std = TRUE, show.aic = TRUE, show.fstat = TRUE, show.se = TRUE, CSS = list(css.modelcolumn1 = 'color:blue;', css.modelcolumn2 = 'color:red;', css.modelcolumn3 = 'color:green;', css.modelcolumn4 = 'color:#ffff00;', css.modelcolumn5 = 'color:#777777;', css.modelcolumn6 = 'color:#3399cc;', css.modelcolumn7 = 'color:#cc9933;')) sjt.lm(fit1, fit2, fit4, fit3, show.est = FALSE, show.std = TRUE, p.numeric = FALSE, group.pred = FALSE, CSS = list(css.modelcolumn4 = 'border-left:1px solid black;', css.modelcolumn5 = 'padding-right:50px;')) # }