diff --git a/DESCRIPTION b/DESCRIPTION
index 31569b1..e8780ed 100644
--- a/DESCRIPTION
+++ b/DESCRIPTION
@@ -1,7 +1,7 @@
Type: Package
Package: SummaryTables
Title: Publication-Ready Summary Tables for Jamovi
-Version: 1.2.1
+Version: 1.3.0
Authors@R:
person("Nour Edin", "Darwish", , "nouredindarwish@gmail.com", role = c("aut", "cre"),
comment = c(ORCID = "0009-0009-5527-4539"))
@@ -32,6 +32,7 @@ Imports:
cards (>= 0.7.1),
cardx (>= 0.3.1),
cli,
+ datawizard,
dplyr,
effectsize,
flextable,
@@ -50,7 +51,7 @@ Remotes:
insightsengineering/cards@v0.7.1,
insightsengineering/cardx@v0.3.1,
ddsjoberg/gtsummary@952b665
+Config/roxygen2/version: 8.0.0
Encoding: UTF-8
LazyData: true
Roxygen: list(markdown = TRUE)
-RoxygenNote: 7.3.3
diff --git a/NEWS.md b/NEWS.md
index bc28173..9944330 100644
--- a/NEWS.md
+++ b/NEWS.md
@@ -1,3 +1,10 @@
+## SummaryTables 1.3.0
+
+* Added Standardized Coefficients for Linear Regression analyses (both Univariable and Multivariable).
+* Added a rounding option for 16 decimal places across all analyses.
+* Enhanced UI labels.
+* General bug-fixes and improvements.
+
## SummaryTables 1.2.1
* Fixed an issue that caused an error when customizing the number of decimal places in the Continuous Table.
diff --git a/R/regression.R b/R/regression.R
index 6faad59..37c94c8 100644
--- a/R/regression.R
+++ b/R/regression.R
@@ -37,7 +37,7 @@ validateFactorPolynomials <- function(data, terms) {
#' @param terms modelTerms list from self$options$modelTerms
#' @return A formula object
buildFormula <- function(y, terms) {
- as.formula(
+ stats::as.formula(
paste(
y,
"~",
@@ -128,6 +128,54 @@ buildMultiRegTable <- function(model, options, b64Map) {
}
+# lmStd ---------------------------------------------------------------------
+
+#' Fit standard linear regression model on standardized variables
+#'
+#' @param formula Model formula
+#' @param data Data frame
+#' @param ... Extra arguments passed to lm
+#' @return An lm model object fitted on standardized complete cases
+lmStd <- function(formula, data, ...) {
+ # Goal: produce the same standardized coefficients (betas) as
+ # parameters::standardize_parameters(method = "refit").
+ #
+ # How standardize_parameters(method = "refit") works internally:
+ # 1. Extracts the model frame via insight::get_data(model, source = "mf"),
+ # which is the data AFTER listwise deletion — rows with NA in ANY
+ # variable used by the model (numeric OR factor) are already gone.
+
+ # 2. Standardizes that complete-case data with datawizard::standardize()
+ # (factors are left untouched by default since force = FALSE).
+ # 3. Refits the model on the standardized complete-case data.
+ #
+ # Previously we used:
+ # datawizard::standardize(data, select = select_vars, remove_na = "selected")
+ # This had a bug: with force = FALSE (default), datawizard internally
+ # excludes factor columns from the "selected" set, so remove_na = "selected"
+ # only checked numeric columns for NAs. Rows with NA in a factor (but not
+ # in any numeric column) were KEPT, meaning mean/SD was computed from MORE
+ # rows than lm() actually uses (lm() does its own listwise deletion).
+ # This produced different standardized coefficients than
+ # parameters::standardize_parameters(method = "refit").
+ #
+ # We also cannot use remove_na = "all" on the full data frame, because
+ # "all" checks EVERY column — including ones not in the formula. NAs in
+ # unrelated columns would incorrectly drop rows.
+ #
+ # Fix: subset to formula columns first (data[select_vars]), then use
+ # remove_na = "all". This performs listwise deletion on exactly the
+ # variables the model uses, matching what lm() and
+ # parameters::standardize_parameters(method = "refit") do.
+ select_vars <- all.vars(formula)
+ data <- datawizard::standardize(
+ data[select_vars],
+ remove_na = "all"
+ )
+ stats::lm(formula, data = data, ...)
+}
+
+
# buildUniRegTable ----------------------------------------------------------
#' Build a univariable tbl_uvregression table
diff --git a/R/survival.R b/R/survival.R
index 64e1e41..d9dac0a 100644
--- a/R/survival.R
+++ b/R/survival.R
@@ -78,7 +78,7 @@ buildSurvfitList <- function(data, elapsedB64, eventB64, strataB64, confInt) {
survLHS <- sprintf("survival::Surv(%s, %s)", elapsedB64, eventB64)
# Overall
- overallF <- reformulate("1", response = survLHS)
+ overallF <- stats::reformulate("1", response = survLHS)
fits <- list(
rlang::inject(survival::survfit(
!!overallF,
@@ -89,7 +89,7 @@ buildSurvfitList <- function(data, elapsedB64, eventB64, strataB64, confInt) {
# One fit per stratifying variable (each analyzed independently)
for (s in strataB64) {
- stratumF <- reformulate(s, response = survLHS)
+ stratumF <- stats::reformulate(s, response = survLHS)
fits <- c(
fits,
list(
diff --git a/R/tblcontinuous.h.R b/R/tblcontinuous.h.R
index 0874a8b..98f4305 100644
--- a/R/tblcontinuous.h.R
+++ b/R/tblcontinuous.h.R
@@ -199,7 +199,8 @@ tblContinuousOptions <- if (requireNamespace("jmvcore", quietly=TRUE)) R6::R6Cla
"2",
"3",
"4",
- "5"),
+ "5",
+ "16"),
default="auto")
private$..addPvalue <- jmvcore::OptionBool$new(
"addPvalue",
diff --git a/R/tblcross.h.R b/R/tblcross.h.R
index cb7544e..7d4c70f 100644
--- a/R/tblcross.h.R
+++ b/R/tblcross.h.R
@@ -88,7 +88,8 @@ tblCrossOptions <- if (requireNamespace("jmvcore", quietly=TRUE)) R6::R6Class(
"2",
"3",
"4",
- "5"),
+ "5",
+ "16"),
default="auto")
private$..margin <- jmvcore::OptionList$new(
"margin",
diff --git a/R/tbllikert.h.R b/R/tbllikert.h.R
index 0f36907..8f6cf5a 100644
--- a/R/tbllikert.h.R
+++ b/R/tbllikert.h.R
@@ -81,7 +81,8 @@ tblLikertOptions <- if (requireNamespace("jmvcore", quietly=TRUE)) R6::R6Class(
"2",
"3",
"4",
- "5"),
+ "5",
+ "16"),
default="auto")
private$..levelOrder <- jmvcore::OptionList$new(
"levelOrder",
diff --git a/R/tblregcox.h.R b/R/tblregcox.h.R
index 69ccfbf..9844036 100644
--- a/R/tblregcox.h.R
+++ b/R/tblregcox.h.R
@@ -114,7 +114,8 @@ tblRegCoxOptions <- if (requireNamespace("jmvcore", quietly=TRUE)) R6::R6Class(
"2",
"3",
"4",
- "5"),
+ "5",
+ "16"),
default="auto")
private$..confInt <- jmvcore::OptionBool$new(
"confInt",
diff --git a/R/tblreglinear.b.R b/R/tblreglinear.b.R
index b909b89..1fcc9c7 100644
--- a/R/tblreglinear.b.R
+++ b/R/tblreglinear.b.R
@@ -67,7 +67,42 @@ tblRegLinearClass <- R6::R6Class(
# Formula and model ---------------------------------------------------
termsB64 <- lapply(terms, jmvcore::toB64)
formula <- buildFormula(depB64, termsB64)
- model <- runSafe(lm(formula, data = data), collector)
+
+ if (self$options$standardize) {
+ # Goal: produce the same standardized coefficients (betas) as
+ # parameters::standardize_parameters(method = "refit").
+ #
+ # How standardize_parameters(method = "refit") works internally:
+ # 1. Extracts the model frame (data AFTER listwise deletion —
+ # rows with NA in ANY variable, numeric OR factor, are gone).
+ # 2. Standardizes that complete-case data with
+ # datawizard::standardize() (factors untouched, force = FALSE).
+ # 3. Refits the model on the standardized complete-case data.
+ #
+ # Previously we used:
+ # standardize(data, select = ..., remove_na = "selected")
+ # Bug: with force = FALSE (default), datawizard excludes factors
+ # from the internal "selected" set, so remove_na = "selected" only
+ # checked numeric columns for NAs. Rows with NA in a factor (but
+ # not in any numeric) were KEPT, meaning mean/SD was computed from
+ # MORE rows than lm() actually uses — producing wrong betas.
+ #
+ # We also cannot use remove_na = "all" on the full data frame,
+ # because "all" checks EVERY column — including ones not in the
+ # formula. NAs in unrelated columns would incorrectly drop rows.
+ #
+ # Fix: subset to formula columns first (data[select_vars]), then
+ # use remove_na = "all". This performs listwise deletion on exactly
+ # the variables the model uses, matching what lm() and
+ # parameters::standardize_parameters(method = "refit") do.
+ select_vars <- all.vars(formula)
+ data <- datawizard::standardize(
+ data[select_vars],
+ remove_na = "all"
+ )
+ }
+
+ model <- runSafe(stats::lm(formula, data = data), collector)
# Regression table ----------------------------------------------------
table <- runSafe(
@@ -75,6 +110,15 @@ tblRegLinearClass <- R6::R6Class(
collector
)
+ # Change header -------------------------------------------------------
+ coefHeader <- if (self$options$standardize) {
+ "**Standardized Coefficient**"
+ } else {
+ "**Coefficient**"
+ }
+ table <- table |>
+ gtsummary::modify_header(estimate = coefHeader)
+
# Pipeline ------------------------------------------------------------
table <- pipeAddGlobalP(
table,
diff --git a/R/tblreglinear.h.R b/R/tblreglinear.h.R
index e69f5f1..ef32e1e 100644
--- a/R/tblreglinear.h.R
+++ b/R/tblreglinear.h.R
@@ -12,6 +12,7 @@ tblRegLinearOptions <- if (requireNamespace("jmvcore", quietly=TRUE)) R6::R6Clas
manualRun = FALSE,
run = FALSE,
modelTerms = NULL,
+ standardize = FALSE,
digitsCoef = "auto",
confInt = TRUE,
confLevel = 95,
@@ -83,6 +84,10 @@ tblRegLinearOptions <- if (requireNamespace("jmvcore", quietly=TRUE)) R6::R6Clas
private$..modelTerms <- jmvcore::OptionTerms$new(
"modelTerms",
modelTerms)
+ private$..standardize <- jmvcore::OptionBool$new(
+ "standardize",
+ standardize,
+ default=FALSE)
private$..digitsCoef <- jmvcore::OptionList$new(
"digitsCoef",
digitsCoef,
@@ -93,7 +98,8 @@ tblRegLinearOptions <- if (requireNamespace("jmvcore", quietly=TRUE)) R6::R6Clas
"2",
"3",
"4",
- "5"),
+ "5",
+ "16"),
default="auto")
private$..confInt <- jmvcore::OptionBool$new(
"confInt",
@@ -275,6 +281,7 @@ tblRegLinearOptions <- if (requireNamespace("jmvcore", quietly=TRUE)) R6::R6Clas
self$.addOption(private$..manualRun)
self$.addOption(private$..run)
self$.addOption(private$..modelTerms)
+ self$.addOption(private$..standardize)
self$.addOption(private$..digitsCoef)
self$.addOption(private$..confInt)
self$.addOption(private$..confLevel)
@@ -315,6 +322,7 @@ tblRegLinearOptions <- if (requireNamespace("jmvcore", quietly=TRUE)) R6::R6Clas
manualRun = function() private$..manualRun$value,
run = function() private$..run$value,
modelTerms = function() private$..modelTerms$value,
+ standardize = function() private$..standardize$value,
digitsCoef = function() private$..digitsCoef$value,
confInt = function() private$..confInt$value,
confLevel = function() private$..confLevel$value,
@@ -354,6 +362,7 @@ tblRegLinearOptions <- if (requireNamespace("jmvcore", quietly=TRUE)) R6::R6Clas
..manualRun = NA,
..run = NA,
..modelTerms = NA,
+ ..standardize = NA,
..digitsCoef = NA,
..confInt = NA,
..confLevel = NA,
@@ -445,6 +454,7 @@ tblRegLinearBase <- if (requireNamespace("jmvcore", quietly=TRUE)) R6::R6Class(
#' @param manualRun .
#' @param run .
#' @param modelTerms .
+#' @param standardize .
#' @param digitsCoef .
#' @param confInt .
#' @param confLevel .
@@ -498,6 +508,7 @@ tblRegLinear <- function(
manualRun = FALSE,
run = FALSE,
modelTerms,
+ standardize = FALSE,
digitsCoef = "auto",
confInt = TRUE,
confLevel = 95,
@@ -554,6 +565,7 @@ tblRegLinear <- function(
manualRun = manualRun,
run = run,
modelTerms = modelTerms,
+ standardize = standardize,
digitsCoef = digitsCoef,
confInt = confInt,
confLevel = confLevel,
diff --git a/R/tblreglogistic.h.R b/R/tblreglogistic.h.R
index ffad326..7763f2d 100644
--- a/R/tblreglogistic.h.R
+++ b/R/tblreglogistic.h.R
@@ -100,7 +100,8 @@ tblRegLogisticOptions <- if (requireNamespace("jmvcore", quietly=TRUE)) R6::R6Cl
"2",
"3",
"4",
- "5"),
+ "5",
+ "16"),
default="auto")
private$..confInt <- jmvcore::OptionBool$new(
"confInt",
diff --git a/R/tblsummary.h.R b/R/tblsummary.h.R
index e1ad8c2..be1adba 100644
--- a/R/tblsummary.h.R
+++ b/R/tblsummary.h.R
@@ -278,7 +278,8 @@ tblSummaryOptions <- if (requireNamespace("jmvcore", quietly=TRUE)) R6::R6Class(
"2",
"3",
"4",
- "5"),
+ "5",
+ "16"),
default="auto")
private$..statCatDefault <- jmvcore::OptionList$new(
"statCatDefault",
@@ -317,7 +318,8 @@ tblSummaryOptions <- if (requireNamespace("jmvcore", quietly=TRUE)) R6::R6Class(
"2",
"3",
"4",
- "5"),
+ "5",
+ "16"),
default="auto")
private$..percent <- jmvcore::OptionList$new(
"percent",
@@ -407,7 +409,8 @@ tblSummaryOptions <- if (requireNamespace("jmvcore", quietly=TRUE)) R6::R6Class(
"2",
"3",
"4",
- "5"),
+ "5",
+ "16"),
default="auto")
private$..diffDichotDefault <- jmvcore::OptionList$new(
"diffDichotDefault",
@@ -444,7 +447,8 @@ tblSummaryOptions <- if (requireNamespace("jmvcore", quietly=TRUE)) R6::R6Class(
"2",
"3",
"4",
- "5"),
+ "5",
+ "16"),
default="auto")
private$..diffDigitsCat <- jmvcore::OptionList$new(
"diffDigitsCat",
@@ -456,7 +460,8 @@ tblSummaryOptions <- if (requireNamespace("jmvcore", quietly=TRUE)) R6::R6Class(
"2",
"3",
"4",
- "5"),
+ "5",
+ "16"),
default="auto")
private$..addPvalue <- jmvcore::OptionBool$new(
"addPvalue",
@@ -623,7 +628,8 @@ tblSummaryOptions <- if (requireNamespace("jmvcore", quietly=TRUE)) R6::R6Class(
"2",
"3",
"4",
- "5"),
+ "5",
+ "16"),
default="auto")
private$..ciCatDefault <- jmvcore::OptionList$new(
"ciCatDefault",
@@ -670,7 +676,8 @@ tblSummaryOptions <- if (requireNamespace("jmvcore", quietly=TRUE)) R6::R6Class(
"2",
"3",
"4",
- "5"),
+ "5",
+ "16"),
default="auto")
private$..path <- jmvcore::OptionString$new(
"path",
diff --git a/R/tblsurvfit.h.R b/R/tblsurvfit.h.R
index 0bc3bb2..df264a8 100644
--- a/R/tblsurvfit.h.R
+++ b/R/tblsurvfit.h.R
@@ -113,7 +113,8 @@ tblSurvfitOptions <- if (requireNamespace("jmvcore", quietly=TRUE)) R6::R6Class(
"2",
"3",
"4",
- "5"),
+ "5",
+ "16"),
default="auto")
private$..confLevel <- jmvcore::OptionNumber$new(
"confLevel",
diff --git a/R/tbluniregcox.h.R b/R/tbluniregcox.h.R
index 7afaf28..664bdca 100644
--- a/R/tbluniregcox.h.R
+++ b/R/tbluniregcox.h.R
@@ -117,7 +117,8 @@ tblUniRegCoxOptions <- if (requireNamespace("jmvcore", quietly=TRUE)) R6::R6Clas
"2",
"3",
"4",
- "5"),
+ "5",
+ "16"),
default="auto")
private$..confInt <- jmvcore::OptionBool$new(
"confInt",
diff --git a/R/tblunireglinear.b.R b/R/tblunireglinear.b.R
index e31698f..9935e1e 100644
--- a/R/tblunireglinear.b.R
+++ b/R/tblunireglinear.b.R
@@ -58,17 +58,27 @@ tblUniRegLinearClass <- R6::R6Class(
depB64 <- jmvcore::toB64(dep)
# Regression table ----------------------------------------------------
+ method <- if (self$options$standardize) lmStd else stats::lm
table <- runSafe(
buildUniRegTable(
data = data,
y = depB64,
include = jmvcore::toB64(self$options$varOrder),
- method = lm,
+ method = method,
options = self$options
),
collector
)
+ # Change header -------------------------------------------------------
+ coefHeader <- if (self$options$standardize) {
+ "**Standardized Coefficient**"
+ } else {
+ "**Coefficient**"
+ }
+ table <- table |>
+ gtsummary::modify_header(estimate = coefHeader)
+
# Pipeline ------------------------------------------------------------
table <- pipeAddGlobalP(
table,
diff --git a/R/tblunireglinear.h.R b/R/tblunireglinear.h.R
index 019267b..77b3570 100644
--- a/R/tblunireglinear.h.R
+++ b/R/tblunireglinear.h.R
@@ -12,6 +12,7 @@ tblUniRegLinearOptions <- if (requireNamespace("jmvcore", quietly=TRUE)) R6::R6C
varOrder = list(),
manualRun = FALSE,
run = FALSE,
+ standardize = FALSE,
digitsCoef = "auto",
confInt = TRUE,
confLevel = 95,
@@ -85,6 +86,10 @@ tblUniRegLinearOptions <- if (requireNamespace("jmvcore", quietly=TRUE)) R6::R6C
private$..run <- jmvcore::OptionAction$new(
"run",
run)
+ private$..standardize <- jmvcore::OptionBool$new(
+ "standardize",
+ standardize,
+ default=FALSE)
private$..digitsCoef <- jmvcore::OptionList$new(
"digitsCoef",
digitsCoef,
@@ -95,7 +100,8 @@ tblUniRegLinearOptions <- if (requireNamespace("jmvcore", quietly=TRUE)) R6::R6C
"2",
"3",
"4",
- "5"),
+ "5",
+ "16"),
default="auto")
private$..confInt <- jmvcore::OptionBool$new(
"confInt",
@@ -261,6 +267,7 @@ tblUniRegLinearOptions <- if (requireNamespace("jmvcore", quietly=TRUE)) R6::R6C
self$.addOption(private$..varOrder)
self$.addOption(private$..manualRun)
self$.addOption(private$..run)
+ self$.addOption(private$..standardize)
self$.addOption(private$..digitsCoef)
self$.addOption(private$..confInt)
self$.addOption(private$..confLevel)
@@ -298,6 +305,7 @@ tblUniRegLinearOptions <- if (requireNamespace("jmvcore", quietly=TRUE)) R6::R6C
varOrder = function() private$..varOrder$value,
manualRun = function() private$..manualRun$value,
run = function() private$..run$value,
+ standardize = function() private$..standardize$value,
digitsCoef = function() private$..digitsCoef$value,
confInt = function() private$..confInt$value,
confLevel = function() private$..confLevel$value,
@@ -334,6 +342,7 @@ tblUniRegLinearOptions <- if (requireNamespace("jmvcore", quietly=TRUE)) R6::R6C
..varOrder = NA,
..manualRun = NA,
..run = NA,
+ ..standardize = NA,
..digitsCoef = NA,
..confInt = NA,
..confLevel = NA,
@@ -422,6 +431,7 @@ tblUniRegLinearBase <- if (requireNamespace("jmvcore", quietly=TRUE)) R6::R6Clas
#' @param varOrder .
#' @param manualRun .
#' @param run .
+#' @param standardize .
#' @param digitsCoef .
#' @param confInt .
#' @param confLevel .
@@ -472,6 +482,7 @@ tblUniRegLinear <- function(
varOrder = list(),
manualRun = FALSE,
run = FALSE,
+ standardize = FALSE,
digitsCoef = "auto",
confInt = TRUE,
confLevel = 95,
@@ -524,6 +535,7 @@ tblUniRegLinear <- function(
varOrder = varOrder,
manualRun = manualRun,
run = run,
+ standardize = standardize,
digitsCoef = digitsCoef,
confInt = confInt,
confLevel = confLevel,
diff --git a/R/tblunireglogistic.h.R b/R/tblunireglogistic.h.R
index cfed7b3..14a4816 100644
--- a/R/tblunireglogistic.h.R
+++ b/R/tblunireglogistic.h.R
@@ -102,7 +102,8 @@ tblUniRegLogisticOptions <- if (requireNamespace("jmvcore", quietly=TRUE)) R6::R
"2",
"3",
"4",
- "5"),
+ "5",
+ "16"),
default="auto")
private$..confInt <- jmvcore::OptionBool$new(
"confInt",
diff --git a/docs/assets/standardized-coefficients.png b/docs/assets/standardized-coefficients.png
new file mode 100644
index 0000000..a5f4147
Binary files /dev/null and b/docs/assets/standardized-coefficients.png differ
diff --git a/docs/assets/stats-digits.png b/docs/assets/stats-digits.png
index 077c911..014ea9c 100644
Binary files a/docs/assets/stats-digits.png and b/docs/assets/stats-digits.png differ
diff --git a/docs/user-guide.md b/docs/user-guide.md
index 572992e..3c539c7 100644
--- a/docs/user-guide.md
+++ b/docs/user-guide.md
@@ -67,7 +67,7 @@ You can independently set the rounding rules for various elements in your tables
* **Auto (Default):** Typically uses adaptive decimal places, though certain themes may affect this behavior.
-* **Fixed (0 to 5):** Uses a fixed number of decimal places.
+* **Fixed (0-5, 16):** Uses a fixed number of decimal places.
#### P-Values
@@ -124,11 +124,11 @@ If you want specific tests for specific variables, you can manually select a dif
When you select the **SMD** option as your **Difference** method, the values are calculated using the [`smd` R package](https://bsaul.github.io/smd/index.html).
- { loading=lazy width="500" }
+ { loading=lazy width="500" }
!!! failure "Multiple P-Value Columns Error"
- If you select a **Difference** method that generates a p-value and you also check **Add p-value** under the general **P-value** section, an error will occur. The table cannot display multiple p-value columns simultaneously.
+ If you select a **Difference** method that generates a p-value and you also check **P-value** under the general **P-value** section, an error will occur. The table cannot display multiple p-value columns simultaneously.
{ loading=lazy width="500" }
@@ -141,12 +141,23 @@ It is important to understand the fundamental difference in how the **Univariabl
* **Univariable Regression:** Fits *one separate model per predictor*. If you add 5 variables across the **Covariates** and **Factors** lists, the module will fit 5 distinct simple regression models (each predicting the dependent variable using just that one predictor) and combine the results into a single table.
* **Multivariable Regression:** Fits *one single model containing all predictors*. If you add 5 variables across the **Covariates** and **Factors** lists, the module will fit a single model where all 5 variables are included simultaneously, adjusting for each other.
+### Regression Tables: Standardized Coefficients
+
+For linear regression models, SummaryTables allows you to report standardized coefficients.
+
+
+ { loading=lazy width="500" }
+
+
+!!! info "Difference from SPSS"
+ If you are coming from SPSS, your results might look different because SPSS standardizes all variables, whereas we do not standardize **Factors**. We only standardize continuous variables (including **Covariates** and the **Dependent Variable**). This approach—which is also used by jamovi's default linear regression and GAMLj—is comparable to the "refit" method in the [`parameters` R package](https://easystats.github.io/parameters/reference/standardize_parameters.html#details).
+
### Survival and Cox Regression: Event Variable Coding
When using the **Survival Table** or **Cox Regression** analyses, the **Event variable** must be coded correctly:
- { loading=lazy width="500" }
+ { loading=lazy width="500" }
* **If continuous:** You can use either `0` and `1` (0 = censored, 1 = event) OR `1` and `2` (1 = censored, 2 = event). Any other numeric values will cause an error.
diff --git a/jamovi/0000.yaml b/jamovi/0000.yaml
index f015ed6..b70fbfb 100644
--- a/jamovi/0000.yaml
+++ b/jamovi/0000.yaml
@@ -1,12 +1,12 @@
---
title: Publication-Ready Summary Tables
name: SummaryTables
-version: 1.2.1
+version: 1.3.0
jms: '1.0'
authors:
- Nour Edin Darwish
maintainer: Nour Edin Darwish
-date: '2026-05-17'
+date: '2026-05-23'
type: R
description: >-
A comprehensive module for creating publication-ready summary and regression
diff --git a/jamovi/tblcontinuous.a.yaml b/jamovi/tblcontinuous.a.yaml
index b53d0e6..b1ec2b6 100644
--- a/jamovi/tblcontinuous.a.yaml
+++ b/jamovi/tblcontinuous.a.yaml
@@ -44,7 +44,7 @@ options:
type: Action
- name: addOverall
- title: Add overall column (requires Grouping Variable)
+ title: Overall column (requires Grouping Variable)
type: Bool
default: false
@@ -222,10 +222,12 @@ options:
name: "4"
- title: "5"
name: "5"
+ - title: "16"
+ name: "16"
default: auto
- name: addPvalue
- title: Add p-value
+ title: P-value
type: Bool
default: false
@@ -305,7 +307,7 @@ options:
default: 0.05
- name: addQ
- title: Add q-value (requires p-value)
+ title: Q-value (requires p-value)
type: Bool
default: false
diff --git a/jamovi/tblcross.a.yaml b/jamovi/tblcross.a.yaml
index 9824816..d88891b 100644
--- a/jamovi/tblcross.a.yaml
+++ b/jamovi/tblcross.a.yaml
@@ -77,10 +77,12 @@ options:
name: "4"
- title: "5"
name: "5"
+ - title: "16"
+ name: "16"
default: auto
- name: margin
- title: Show
+ title: Totals
type: List
options:
- title: Row & Column
@@ -195,7 +197,7 @@ options:
default: false
- name: addPvalue
- title: Add p-value
+ title: P-value
type: Bool
default: false
@@ -240,7 +242,7 @@ options:
default: 0.05
- name: sourceNote
- title: Show p-value as source note
+ title: P-value as source note
type: Bool
default: false
diff --git a/jamovi/tbllikert.a.yaml b/jamovi/tbllikert.a.yaml
index e1b8b63..4ebfb39 100644
--- a/jamovi/tbllikert.a.yaml
+++ b/jamovi/tbllikert.a.yaml
@@ -77,6 +77,8 @@ options:
name: "4"
- title: "5"
name: "5"
+ - title: "16"
+ name: "16"
default: auto
- name: levelOrder
@@ -90,7 +92,7 @@ options:
default: asFirst
- name: addN
- title: Add N column
+ title: N column
type: Bool
default: false
@@ -100,7 +102,7 @@ options:
default: false
- name: addNFootnote
- title: Show footnote
+ title: Footnote
type: Bool
default: true
diff --git a/jamovi/tblregcox.a.yaml b/jamovi/tblregcox.a.yaml
index 5e61ee4..6ef95b6 100644
--- a/jamovi/tblregcox.a.yaml
+++ b/jamovi/tblregcox.a.yaml
@@ -64,7 +64,7 @@ options:
type: Terms
- name: exponentiate
- title: Hazard ratio (exponentiate coefficients)
+ title: Hazard ratio (exponentiated coefficient)
type: Bool
default: true
@@ -86,15 +86,17 @@ options:
name: "4"
- title: "5"
name: "5"
+ - title: "16"
+ name: "16"
default: auto
- name: confInt
- title: Show confidence interval
+ title: Confidence interval
type: Bool
default: true
- name: confLevel
- title: Confidence level
+ title: Level
type: Number
min: 50
max: 99.9
@@ -106,12 +108,12 @@ options:
default: false
- name: addRefRowEstimate
- title: Show reference value
+ title: Reference level coefficient
type: Bool
default: false
- name: addN
- title: Add N column
+ title: N column
type: Bool
default: false
@@ -128,7 +130,7 @@ options:
default: label
- name: addNEvent
- title: Add event N column
+ title: Event N column
type: Bool
default: false
@@ -203,17 +205,17 @@ options:
default: false
- name: starsShowCi
- title: Show confidence interval
+ title: Confidence interval
type: Bool
default: false
- name: starsShowP
- title: Show p-value
+ title: P-value
type: Bool
default: false
- name: starsShowSe
- title: Show standard error
+ title: Standard error
type: Bool
default: true
@@ -297,7 +299,7 @@ options:
default: false
- name: addQ
- title: Add q-value
+ title: Q-value
type: Bool
default: false
diff --git a/jamovi/tblreglinear.a.yaml b/jamovi/tblreglinear.a.yaml
index f53b0b2..78e65e0 100644
--- a/jamovi/tblreglinear.a.yaml
+++ b/jamovi/tblreglinear.a.yaml
@@ -48,6 +48,11 @@ options:
title: Model Terms
type: Terms
+ - name: standardize
+ title: Standardized coefficient
+ type: Bool
+ default: false
+
- name: digitsCoef
title: Decimal places (coefficient & CI)
type: List
@@ -66,15 +71,17 @@ options:
name: "4"
- title: "5"
name: "5"
+ - title: "16"
+ name: "16"
default: auto
- name: confInt
- title: Show confidence interval
+ title: Confidence interval
type: Bool
default: true
- name: confLevel
- title: Confidence level
+ title: Level
type: Number
min: 50
max: 99.9
@@ -86,17 +93,17 @@ options:
default: false
- name: intercept
- title: Show intercept
+ title: Intercept row
type: Bool
default: false
- name: addRefRowEstimate
- title: Show reference value
+ title: Reference level coefficient
type: Bool
default: false
- name: addN
- title: Add N column
+ title: N column
type: Bool
default: false
@@ -171,17 +178,17 @@ options:
default: false
- name: starsShowCi
- title: Show confidence interval
+ title: Confidence interval
type: Bool
default: false
- name: starsShowP
- title: Show p-value
+ title: P-value
type: Bool
default: false
- name: starsShowSe
- title: Show standard error
+ title: Standard error
type: Bool
default: true
@@ -265,7 +272,7 @@ options:
default: false
- name: addQ
- title: Add q-value
+ title: Q-value
type: Bool
default: false
diff --git a/jamovi/tblreglinear.u.yaml b/jamovi/tblreglinear.u.yaml
index 06366fa..a6a1243 100644
--- a/jamovi/tblreglinear.u.yaml
+++ b/jamovi/tblreglinear.u.yaml
@@ -71,6 +71,8 @@ children:
- type: Label
label: General
children:
+ - type: CheckBox
+ name: standardize
- type: ComboBox
name: digitsCoef
- type: CheckBox
diff --git a/jamovi/tblreglogistic.a.yaml b/jamovi/tblreglogistic.a.yaml
index f19b241..debe961 100644
--- a/jamovi/tblreglogistic.a.yaml
+++ b/jamovi/tblreglogistic.a.yaml
@@ -50,7 +50,7 @@ options:
type: Terms
- name: exponentiate
- title: Odds ratio (exponentiate coefficients)
+ title: Odds ratio (exponentiated coefficient)
type: Bool
default: true
@@ -72,15 +72,17 @@ options:
name: "4"
- title: "5"
name: "5"
+ - title: "16"
+ name: "16"
default: auto
- name: confInt
- title: Show confidence interval
+ title: Confidence interval
type: Bool
default: true
- name: confLevel
- title: Confidence level
+ title: Level
type: Number
min: 50
max: 99.9
@@ -92,17 +94,17 @@ options:
default: false
- name: intercept
- title: Show intercept
+ title: Intercept row
type: Bool
default: false
- name: addRefRowEstimate
- title: Show reference value
+ title: Reference level coefficient
type: Bool
default: false
- name: addN
- title: Add N column
+ title: N column
type: Bool
default: false
@@ -119,7 +121,7 @@ options:
default: label
- name: addNEvent
- title: Add event N column
+ title: Event N column
type: Bool
default: false
@@ -194,17 +196,17 @@ options:
default: false
- name: starsShowCi
- title: Show confidence interval
+ title: Confidence interval
type: Bool
default: false
- name: starsShowP
- title: Show p-value
+ title: P-value
type: Bool
default: false
- name: starsShowSe
- title: Show standard error
+ title: Standard error
type: Bool
default: true
@@ -288,7 +290,7 @@ options:
default: false
- name: addQ
- title: Add q-value
+ title: Q-value
type: Bool
default: false
diff --git a/jamovi/tblsummary.a.yaml b/jamovi/tblsummary.a.yaml
index 77932b7..837a06f 100644
--- a/jamovi/tblsummary.a.yaml
+++ b/jamovi/tblsummary.a.yaml
@@ -52,7 +52,7 @@ options:
type: Action
- name: addN
- title: Add N column
+ title: N column
type: Bool
default: false
@@ -62,12 +62,12 @@ options:
default: false
- name: addNFootnote
- title: Show footnote
+ title: Footnote
type: Bool
default: true
- name: addOverall
- title: Add overall column (requires Grouping Variable)
+ title: Overall column (requires Grouping Variable)
type: Bool
default: false
@@ -278,6 +278,8 @@ options:
name: "4"
- title: "5"
name: "5"
+ - title: "16"
+ name: "16"
default: auto
- name: statCatDefault
@@ -332,6 +334,8 @@ options:
name: "4"
- title: "5"
name: "5"
+ - title: "16"
+ name: "16"
default: auto
- name: percent
@@ -347,7 +351,7 @@ options:
default: column
- name: addDifference
- title: Add difference (requires Grouping Variable with exactly 2 levels)
+ title: Difference (requires Grouping Variable with exactly 2 levels)
type: Bool
default: false
@@ -457,6 +461,8 @@ options:
name: "4"
- title: "5"
name: "5"
+ - title: "16"
+ name: "16"
default: auto
- name: diffDichotDefault
@@ -506,6 +512,8 @@ options:
name: "4"
- title: "5"
name: "5"
+ - title: "16"
+ name: "16"
default: auto
- name: diffDigitsCat
@@ -526,10 +534,12 @@ options:
name: "4"
- title: "5"
name: "5"
+ - title: "16"
+ name: "16"
default: auto
- name: addPvalue
- title: Add p-value (requires Grouping Variable)
+ title: P-value (requires Grouping Variable)
type: Bool
default: false
@@ -649,7 +659,7 @@ options:
default: useDefault
- name: addQ
- title: Add q-value (requires p-value)
+ title: Q-value (requires p-value)
type: Bool
default: false
@@ -686,7 +696,7 @@ options:
default: 0.05
- name: addCi
- title: Add confidence interval
+ title: Confidence interval
type: Bool
default: false
@@ -698,7 +708,7 @@ options:
default: 95
- name: ciMerge
- title: Merge with statistic column
+ title: Merge CI with statistic column
type: Bool
default: false
@@ -750,6 +760,8 @@ options:
name: "4"
- title: "5"
name: "5"
+ - title: "16"
+ name: "16"
default: auto
- name: ciCatDefault
@@ -820,6 +832,8 @@ options:
name: "4"
- title: "5"
name: "5"
+ - title: "16"
+ name: "16"
default: auto
- name: path
diff --git a/jamovi/tblsurvfit.a.yaml b/jamovi/tblsurvfit.a.yaml
index d66a80d..252810f 100644
--- a/jamovi/tblsurvfit.a.yaml
+++ b/jamovi/tblsurvfit.a.yaml
@@ -99,6 +99,8 @@ options:
name: "4"
- title: "5"
name: "5"
+ - title: "16"
+ name: "16"
default: auto
- name: confLevel
@@ -109,17 +111,17 @@ options:
default: 95
- name: addN
- title: Add N column
+ title: N column
type: Bool
default: false
- name: addNEvent
- title: Add event N column
+ title: Event N column
type: Bool
default: false
- name: addPvalue
- title: Add p-value (requires Stratifying Variables)
+ title: P-value (requires Stratifying Variables)
type: Bool
default: false
@@ -191,7 +193,7 @@ options:
default: 0.05
- name: addQ
- title: Add q-value (requires p-value)
+ title: Q-value (requires p-value)
type: Bool
default: false
diff --git a/jamovi/tbluniregcox.a.yaml b/jamovi/tbluniregcox.a.yaml
index 89bf4d3..9a3bb3f 100644
--- a/jamovi/tbluniregcox.a.yaml
+++ b/jamovi/tbluniregcox.a.yaml
@@ -68,7 +68,7 @@ options:
type: Action
- name: exponentiate
- title: Hazard ratio (exponentiate coefficients)
+ title: Hazard ratio (exponentiated coefficient)
type: Bool
default: true
@@ -90,15 +90,17 @@ options:
name: "4"
- title: "5"
name: "5"
+ - title: "16"
+ name: "16"
default: auto
- name: confInt
- title: Show confidence interval
+ title: Confidence interval
type: Bool
default: true
- name: confLevel
- title: Confidence level
+ title: Level
type: Number
min: 50
max: 99.9
@@ -110,12 +112,12 @@ options:
default: false
- name: addRefRowEstimate
- title: Show reference value
+ title: Reference level coefficient
type: Bool
default: false
- name: addN
- title: Add N column
+ title: N column
type: Bool
default: true
@@ -132,7 +134,7 @@ options:
default: label
- name: addNEvent
- title: Add event N column
+ title: Event N column
type: Bool
default: false
@@ -190,17 +192,17 @@ options:
default: false
- name: starsShowCi
- title: Show confidence interval
+ title: Confidence interval
type: Bool
default: false
- name: starsShowP
- title: Show p-value
+ title: P-value
type: Bool
default: false
- name: starsShowSe
- title: Show standard error
+ title: Standard error
type: Bool
default: true
@@ -284,7 +286,7 @@ options:
default: false
- name: addQ
- title: Add q-value
+ title: Q-value
type: Bool
default: false
diff --git a/jamovi/tblunireglinear.a.yaml b/jamovi/tblunireglinear.a.yaml
index 90b6471..262a508 100644
--- a/jamovi/tblunireglinear.a.yaml
+++ b/jamovi/tblunireglinear.a.yaml
@@ -52,6 +52,11 @@ options:
title: Run
type: Action
+ - name: standardize
+ title: Standardized coefficient
+ type: Bool
+ default: false
+
- name: digitsCoef
title: Decimal places (coefficient & CI)
type: List
@@ -70,15 +75,17 @@ options:
name: "4"
- title: "5"
name: "5"
+ - title: "16"
+ name: "16"
default: auto
- name: confInt
- title: Show confidence interval
+ title: Confidence interval
type: Bool
default: true
- name: confLevel
- title: Confidence level
+ title: Level
type: Number
min: 50
max: 99.9
@@ -90,12 +97,12 @@ options:
default: false
- name: addRefRowEstimate
- title: Show reference value
+ title: Reference level coefficient
type: Bool
default: false
- name: addN
- title: Add N column
+ title: N column
type: Bool
default: true
@@ -153,17 +160,17 @@ options:
default: false
- name: starsShowCi
- title: Show confidence interval
+ title: Confidence interval
type: Bool
default: false
- name: starsShowP
- title: Show p-value
+ title: P-value
type: Bool
default: false
- name: starsShowSe
- title: Show standard error
+ title: Standard error
type: Bool
default: true
@@ -247,7 +254,7 @@ options:
default: false
- name: addQ
- title: Add q-value
+ title: Q-value
type: Bool
default: false
diff --git a/jamovi/tblunireglinear.u.yaml b/jamovi/tblunireglinear.u.yaml
index 4ab4192..dc54374 100644
--- a/jamovi/tblunireglinear.u.yaml
+++ b/jamovi/tblunireglinear.u.yaml
@@ -48,6 +48,8 @@ children:
- type: Label
label: General
children:
+ - type: CheckBox
+ name: standardize
- type: ComboBox
name: digitsCoef
- type: CheckBox
diff --git a/jamovi/tblunireglogistic.a.yaml b/jamovi/tblunireglogistic.a.yaml
index dc61241..3c80fe5 100644
--- a/jamovi/tblunireglogistic.a.yaml
+++ b/jamovi/tblunireglogistic.a.yaml
@@ -54,7 +54,7 @@ options:
type: Action
- name: exponentiate
- title: Odds ratio (exponentiate coefficients)
+ title: Odds ratio (exponentiated coefficient)
type: Bool
default: true
@@ -76,15 +76,17 @@ options:
name: "4"
- title: "5"
name: "5"
+ - title: "16"
+ name: "16"
default: auto
- name: confInt
- title: Show confidence interval
+ title: Confidence interval
type: Bool
default: true
- name: confLevel
- title: Confidence level
+ title: Level
type: Number
min: 50
max: 99.9
@@ -96,12 +98,12 @@ options:
default: false
- name: addRefRowEstimate
- title: Show reference value
+ title: Reference level coefficient
type: Bool
default: false
- name: addN
- title: Add N column
+ title: N column
type: Bool
default: true
@@ -118,7 +120,7 @@ options:
default: label
- name: addNEvent
- title: Add event N column
+ title: Event N column
type: Bool
default: false
@@ -176,17 +178,17 @@ options:
default: false
- name: starsShowCi
- title: Show confidence interval
+ title: Confidence interval
type: Bool
default: false
- name: starsShowP
- title: Show p-value
+ title: P-value
type: Bool
default: false
- name: starsShowSe
- title: Show standard error
+ title: Standard error
type: Bool
default: true
@@ -270,7 +272,7 @@ options:
default: false
- name: addQ
- title: Add q-value
+ title: Q-value
type: Bool
default: false