Skip to contents

Decompose() decomposes additive characters into a series of binary characters, which is mathematically equivalent when analysed under equal weights parsimony. (This equivalence is not exact under implied weights or under probabilistic tree inference methods.)

Usage

Decompose(dataset, indices)

Arguments

dataset

A phylogenetic data matrix of phangorn class phyDat, whose names correspond to the labels of any accompanying tree.

indices

Integer or logical vector specifying indices of characters that should be decomposed

Value

Decompose() returns a phyDat object in which the specified ordered characters have been decomposed into binary characters. The attribute originalIndex lists the index of the character in dataset to which each element corresponds.

Details

An ordered (additive) character can be rewritten as a mathematically equivalent hierarchy of binary neomorphic characters Farris1970TreeTools. Two reasons to prefer the latter approach are:

  • It makes explicit the evolutionary assumptions underlying an ordered character, whether the underlying ordering is linear, reticulate or branched Mabee1989TreeTools.

  • It avoids having to identify characters requiring special treatment to phylogenetic software, which requires the maintenance of an up-to-date log of which characters are treated as additive and which sequence their states occur in, a step that may be overlooked by re-users of the data.

Careful consideration is warranted when evaluating whether a group of related characteristics ought to be treated as ordered Wilkinson1992TreeTools. On the one hand, the 'principle of indifference' states that we should treat all transformations as equally probable (/ surprising / informative); ordered characters fail this test, as larger changes are treated as less probable than smaller ones. On the other hand, ordered characters allow more opportunities for homology of different character states, and might thus be defended under the auspices of Hennig’s Auxiliary Principle Wilkinson1992TreeTools.

For a case study of how ordering phylogenetic characters can affect phylogenetic outcomes in practice, see Brady2024;textualTreeTools.

References

See also

Other phylogenetic matrix conversion functions: MatrixToPhyDat(), StringToPhyDat()

Examples

data("Lobo")

# Identify character 11 as additive
# Character 11 will be replaced with two characters
# The present codings 0, 1 and 2 will be replaced with 00, 10, and 11.
decomposed <- Decompose(Lobo.phy, 11)

NumberOfChars <- function(x) sum(attr(x, "weight"))
NumberOfChars(Lobo.phy)   # 115 characters in original
#> [1] 115
NumberOfChars(decomposed) # 116 characters in decomposed
#> [1] 116