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 and
distribution. 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. In the default setting (group_test = NULL),
residual normality is assessed at every group size 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
dunn.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. Setting group_test to "welch" or
"rank" bypasses these assumption tests and fixes the analysis
to Welch-type or to rank-based tests, respectively. (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().