visStatistics - Automated Selection and Visualisation of Statistical Hypothesis
Tests
Automated test selection, visualised. 'visStatistics'
automatically selects and visualises statistical hypothesis
tests comparing two vectors, based on their class,
distribution, and sample size. Visual outputs, including box
plots, bar charts, regression lines with confidence bands,
mosaic plots, residual plots, and Q-Q plots, are annotated with
relevant test statistics, assumption checks, and post-hoc
analyses where applicable. The algorithmic workflow shifts
attention from ad-hoc test selection to visual diagnostic
assessment and statistical interpretation. It is particularly
suited for server-side R applications, where end users interact
solely through a web interface to select data groups and
receive a complete visual statistical analysis automatically.
The same automation makes it useful in time-constrained
contexts such as statistical consulting, where it reduces
effort spent on test selection and leaves more room for
interpretation. The implemented tests cover the most
frequently applied inferential methods in biomedical research
(Hayat et al. (2017) <doi:10.1371/journal.pone.0179032>). The
test selection algorithm proceeds as follows: Input vectors of
class numeric or integer are considered numerical; those of
class factor are considered categorical; those of class ordered
are considered ordinal. Assumptions of residual normality and
homogeneity of variances are considered met if the
corresponding test yields a p-value greater than the
significance level alpha = 1 - conf.level. (1) When the
response is numerical and the predictor is categorical, a test
comparing central tendencies is selected. If every group
contains more than 50 observations, the sampling distribution
of the group means is assumed approximately normal by the
central limit theorem (Lumley et al. (2002)
<doi:10.1146/annurev.publhealth.23.100901.140546>); otherwise,
residual normality is assessed using shapiro.test() applied to
the standardised residuals of lm(). If normality is not met,
wilcox.test() is used when the predictor has two levels and
kruskal.test() followed by pairwise.wilcox.test() otherwise. If
normality is met, levene.test() assesses variance homogeneity.
For two-level predictors, Student's t.test(var.equal = TRUE) is
applied if variances are homogeneous and Welch's t.test()
otherwise. For predictors with more than two levels, aov()
followed by TukeyHSD() is applied if variances are homogeneous,
and oneway.test() followed by games.howell() otherwise. (2)
When both vectors are numerical, lm() is fitted by default
(correlation = FALSE). If correlation = TRUE, Spearman rank
correlation is performed. (3) When the response is ordinal, it
is converted to numeric ranks and the non-parametric path from
(1) is followed (Wilcoxon or Kruskal-Wallis). When both
variables are ordinal and correlation = TRUE, Kendall's tau_b
is used instead. (4) When both vectors are categorical,
Cochran's rule (Cochran (1954) <doi:10.2307/3001666>) is
applied to test independence either by chisq.test() or
fisher.test().