This document collects call patterns and
options for each public function. All formulas follow
response ~ A + B (+ C ...) with a numeric
response and factor predictors.
srh.kway.full()
Purpose: one-call pipeline for rank-based ANOVA,
descriptive statistics, post hocs, and simple effects.
Syntax:
srh.kway.full(y ~ A + B (+ C ...), data, max_levels = 30, type = 2, scope = c("within", "global"))
srh.kway()type = 2:
srh.effsize()type = 3: srh.kway()srh.kway()anovasummaryposthoc_cellsposthoc_simplemeta"[not applicable]" when a component does not apply
(e.g., simple effects for a one-factor design),"[failed] ..." when a sub-step fails but the overall
pipeline continues.Example:
res <- srh.kway.full(liking ~ gender + condition + age_cat, data = mimicry)
names(res)
res$anova[1:3]
head(res$summary)
names(res$posthoc_cells)
names(res$posthoc_simple)
res$meta
Notes:
max_levels levels.type must be either 2 or
3.scope controls Bonferroni adjustment in
posthoc_simple; the default is "within", which
is passed down to srh.simple.posthocs() and
srh.simple.posthoc().type is accepted for interface
consistency, but it has no practical effect on the result.type = 2 keeps the SRH-style
pipeline via srh.effsize(), whereas type = 3
routes the analysis through srh.kway() to follow the logic
of Type III sums of squares.srh.kway() using the requested type.res$meta$warnings.write.srh.kway.full.tsv()
Purpose: export the srh.kway.full()
result into a single TSV file for fast formatting.
Syntax:
write.srh.kway.full.tsv(obj, file = "srh_kway_full.tsv", sep = "\t", na = "", dec = ".")
dec = "." or "," controls the decimal
mark.dec = "," also affects numbers embedded
in strings.META section exports n,
levels, scope, design diagnostics, warnings,
and the original call when available.Example:
f <- file.path(tempdir(), "result.tsv")
write.srh.kway.full.tsv(res, file = f, dec = ",")
file.exists(f)
srh.kway()
Purpose: general k-way SRH-style ANOVA on ranks,
tie-corrected p-values, and rank-based effect sizes.
Syntax:
srh.kway(y ~ A + B (+ C ...), data, clamp0 = TRUE, force_factors = TRUE, type = 2, ...)
Effect, Df, Sum Sq,
H, Hadj (tie correction),
p.chisq, k, n,
eta2H, eps2H.eta2H and eps2H are computed from
unadjusted H (classical SRH practice).force_factors = TRUE coerces predictors to factor
(recommended).type controls sums of squares. Default
type = 2 (Type II SS). Set type = 3 for Type
III SS (internally uses sum-to-zero contrasts; no global options are
changed).Example:
k3 <- srh.kway(liking ~ gender + condition + age_cat, data = mimicry)
k3
One-factor check (KW-like):
k1 <- srh.kway(liking ~ condition, data = mimicry)
k1
Two-factor Type III SS:
k2_ss3 <- srh.kway(liking ~ gender + condition, data = mimicry, type = 3)
k2_ss3
srh.effsize()
Purpose: 2-factor SRH table with effect sizes from
H.
Syntax:
srh.effsize(y ~ A + B, data, clamp0 = TRUE, ...)
clamp0 = TRUE clamps small negatives to 0 for effect
sizes.srh.kway.full(..., type = 2).Example:
e2 <- srh.effsize(liking ~ gender + condition, data = mimicry)
e2
nonpar.datatable()
Purpose: compact descriptive tables (APA-style),
with global mean ranks, medians, quartiles, and
IQR.
Syntax:
nonpar.datatable(y ~ A + B (+ C ...), data, force_factors = TRUE)
Example:
dt <- nonpar.datatable(liking ~ gender + condition, data = mimicry)
head(dt)
srh.posthoc()
Purpose: Dunn-Bonferroni pairwise comparison
matrix for one specified effect.
Syntax:
srh.posthoc(y ~ A (+ B + ...), data, method = "bonferroni", digits = 3, triangular = c("lower","upper","full"), numeric = FALSE, force_factors = TRUE, sep = ".")
FSA::dunnTest().Z,
P.unadj, P.adj.triangular = "lower" (default) shows only the lower
triangle; diagonal and upper triangle are masked.numeric = FALSE returns pretty-printed character
tables; set TRUE to get numeric tables.Example:
ph <- srh.posthoc(liking ~ condition, data = mimicry)
srh.posthocs()
Purpose: Dunn-Bonferroni pairwise matrices
for all effects (main effects and interactions).
Syntax:
srh.posthocs(y ~ A + B (+ C ...), data, ...)
srh.posthoc() over: A,
B, C, A:B, A:C,
B:C, A:B:C, …"A", "B",
"A:B", etc.; each value is a P.adj
matrix.Example:
phs <- srh.posthocs(liking ~ gender + condition + age_cat, data = mimicry)
names(phs)
phs[["gender:condition"]][1:5, 1:5]
srh.simple.posthoc()
Purpose: Simple-effects post hocs
(pairwise comparisons within levels of conditioning
factors).
Syntax:
srh.simple.posthoc(y ~ A + B (+ C ...), data, compare = NULL, scope = c("within","global"), digits = 3)
compare selects the target factor for pairwise
comparisons (default: the first RHS factor)."within" (default): Bonferroni within each
by-table (SPSS-like),"global": one Bonferroni correction across
all tests from all by-tables combined.BY),
Comparison, Z, P.unadj,
P.adj, m.tests, adj.note. An
"adjustment" attribute describes the correction.Example:
simp <- srh.simple.posthoc(
liking ~ gender + condition + age_cat,
data = mimicry,
compare = "gender",
scope = "within"
)
head(simp)
srh.simple.posthocs()
Purpose: enumerate all simple-effect
configurations for a given design.
Syntax:
srh.simple.posthocs(y ~ A + B (+ C ...), data, scope = c("within", "global"))
BY, runs
srh.simple.posthoc(..., compare = target, scope = scope).scope = "within", which applies Bonferroni
adjustment within each simple-effects table.scope = "global" to apply one Bonferroni adjustment
across all pairwise tests within each simple-effects table.COMPARE(gender) | BY(condition x age_cat).Example:
sps <- srh.simple.posthocs(liking ~ gender + condition + age_cat, data = mimicry)
head(names(sps), 6)
Global-adjustment variant:
sps_g <- srh.simple.posthocs(
liking ~ gender + condition + age_cat,
data = mimicry,
scope = "global"
)
head(names(sps_g), 6)
as_jamovi_srh_full()
Purpose: normalize srh.kway.full()
output into a stable Jamovi-ready list structure.
Syntax:
as_jamovi_srh_full(x, show_diagnostics = TRUE, show_intercept = FALSE, keep_empty = FALSE, posthoc_cells_view = c("long", "matrix"), plan_diagnostics = NULL)
"long" or "matrix" view for post
hoc cell comparisons.Example:
res <- srh.kway.full(liking ~ gender + condition, data = mimicry)
jam <- as_jamovi_srh_full(res)
names(jam)
normality.datatable()
Purpose: Shapiro-Wilk normality tests for the raw
response within each subgroup for all factor combinations.
Syntax:
normality.datatable(y ~ A + B (+ C ...), data, force_factors = TRUE)
Effect, factor columns, count,
W, p.shapiro (fixed-format to 4 decimals, no
scientific notation), and OK/NOT OK
(p < 0.05 => NOT OK).Example:
normality.datatable(liking ~ gender + condition + age_cat, data = mimicry)
residuals.normality.datatable()
Purpose: Shapiro-Wilk tests on global residuals from
a classical ANOVA fitted to the selected factors; one test per
model.
Syntax:
residuals.normality.datatable(y ~ A + B (+ C ...), data, force_factors = TRUE)
Effect (A,
B, A:B, …), with count,
W, p.shapiro (4 decimals),
OK/NOT OK.Example:
residuals.normality.datatable(liking ~ gender + condition + age_cat, data = mimicry)
residuals.cellwise.normality.datatable()
Purpose: Shapiro-Wilk tests of residuals from a
classical ANOVA model, tested separately within each cell.
Syntax:
residuals.cellwise.normality.datatable(y ~ A + B (+ C ...), data, force_factors = TRUE)
Effects, with
count, W, p.shapiro (4 decimals),
OK/NOT OK.Example:
residuals.cellwise.normality.datatable(liking ~ gender + condition + age_cat, data = mimicry)
balance.chisq.datatable()
Purpose: count-balance diagnostics across design
factors.
Syntax:
balance.chisq.datatable(y ~ A + B (+ C ...), data, force_factors = TRUE)
Effect, n, ChiSq (4
decimals), df, p.chisq (4 decimals),
OK/NOT OK (p < 0.05 => NOT OK).Example:
balance.chisq.datatable(liking ~ gender + condition + age_cat, data = mimicry)
levene.plan.datatable()
Purpose: Levene/Brown-Forsythe test for homogeneity
of variances across full-plan cells (highest-order interaction of RHS
factors).
Syntax:
levene.plan.datatable(y ~ A + B (+ C ...), data, center = "median", force_factors = TRUE)
F, df.num, df.den,
p (4 decimals), and OK/NOT OK
(p < 0.05 => NOT OK).Examples:
levene.plan.datatable(liking ~ gender + condition + age_cat, data = mimicry)
levene.plan.datatable(liking ~ gender + condition, data = mimicry, center = "mean")
plan.diagnostics()
Purpose: orchestrates all diagnostics in one
call.
Syntax:
plan.diagnostics(y ~ A + B (+ C ...), data, force_factors = TRUE)
Returned list:
$summary: percent_ok, ok_count, total, overall, plus per-type percentages:
percent_ok_normality_raw, percent_ok_residuals_cellwise, percent_ok_balance_chisq, percent_ok_levene_full_plan.
$results: normality_raw, residuals_cellwise_normality, levene_full_plan, balance_chisq.
Examples:
diag_out <- plan.diagnostics(liking ~ gender + condition + age_cat, data = mimicry)
diag_out$results$normality_raw
diag_out$results$residuals_cellwise_normality
diag_out$results$levene_full_plan
diag_out$results$balance_chisq
diag_out$summary
Formula tips and pitfalls
A:B or A*B.
Use A + B (+ C ...); the package computes all necessary
interaction structures internally.1..k.Example:
mimicry$gender <- factor(mimicry$gender)
mimicry$condition <- factor(mimicry$condition)
Performance and reproducibility
type.C:0u34e45b057346-reference.R