fdr = 0.2 (was 0.1). The stricter 0.1 default
was conservative on real trees and interacted awkwardly with
minCladeSize; at 0.2 the number of designated
clusters decreases monotonically as minCladeSize grows, and
more genuine structure is recovered while the whole-tree error rate
remains controlled.fdr = 0.2).trestruct() now calibrates the split threshold to a
target false discovery rate by default
(fdr = 0.1). At each scan the algorithm splits at the most
extreme eligible candidate clade only if it clears a multiple-testing
correction over the eligible candidates in that scan. The
fdr is a property of the whole tree: under
the global null of a single unstructured coalescent, the probability of
designating any structure equals fdr; when real structure
is present, fdr bounds the expected fraction of spurious
splits among all splits. The analytic calibration requires no simulation
and is deterministic. Supplying an explicit level (without
fdr) selects the previous subjective-threshold behaviour,
and level = NULL selects the CH index. Arguments were
reordered (fdr, level, minCladeSize, ...) and
minCladeSize now defaults to 10.
The multiple-testing correction is selectable with
split: 'bonferroni' (the default) or
'bh', a Benjamini-Hochberg step-up that is less
conservative and retains more power on large trees with abundant
moderate structure, while still controlling the false discovery
rate.
The returned TreeStructure object now carries a
global-null test in $global.test (the
root-scan max|z|, the number of candidates, and a Bonferroni p-value for
the presence of any structure at all), reported by
print().
In fdr mode a heterochronous-sampling
diagnostic is computed ($hetero) and printed. On
serially sampled trees the coalescent statistic carries a small positive
bias that can modestly inflate the realized FDR; this is reported as a
caveat and discussed in the vignette. fdr composes with the
existing
nodeSupportValues/nodeSupportThreshold
node-support filtering.
The coalescent rank-sum null is characterized by exact analytic
moments by default (method = 'analytic') — a fast,
deterministic alternative to Monte-Carlo simulation
(method = 'sim', the previous behaviour).
trestruct() and treestructure.test() both gain
the method argument.
Fixed an error in the exact (Ei = 3) rank-sum transition used for monophyletic/monophyletic contrasts.
Added a testthat test suite covering the FDR
calibration, the global-null test, the heterochronous diagnostic, and
composition with node support.
Vignettes updated to lead with the FDR calibration and document the precise meaning of the FDR, to show the isochronous FWER validation, and to present node support and the CH index as complementary ways of refining clusters.