Node support efficacy in Congreve & Lamsdell matrices"

This page depicts the analytical results of all 100 matrices generated by Congreve & Lamsdell [-@Congreve2016] using a ternary plotting approach [@Smith2019], with quartets and partitions used as distance metrics.

The most highly resolved tree is progressively reduced by collapsing nodes with a support value below an increasing threshold.

library("Ternary")
library("CongreveLamsdell2016")

data('clBremPartitions', 'clBremQuartets', 'clMkvPartitions', 'clMkvQuartets',
     'clBootFreqPartitions', 'clBootFreqQuartets', 
     'clBootGcPartitions', 'clBootGcQuartets',
     'clJackFreqPartitions', 'clJackFreqQuartets',
     'clJackGcPartitions', 'clJackGcQuartets', 
     'clCI')
PCH_MK <- 1   # circle
PCH_EQ <- 61  #'='
PCH_XX <- 18 # 183 #'.' is invalid in some locales
PCH_IW <- 2   #triup
PCH_IC <- 17  #triupfilled
TREE <- 2

COL <- c(
  'mk' = paste0(cbPalette8[4],  '99'),
  'eq' = paste0(cbPalette8[8],  '99'),
  'k1' = paste0(cbPalette8[6],  '42'),
  'k2' = paste0(cbPalette8[6],  '42'),
  'k3' = paste0(cbPalette8[6],  '42'),
  'k5' = paste0(cbPalette8[6],  '42'),
  'kX' = paste0(cbPalette8[6],  '99'),
  'kC' = paste0(cbPalette8[2],  '99'))

PCH <- c(
  brem = 2,
  bootG = 0,
  bootF = 5,
  jackG = 3,
  jackF = 4,
  mk = 1

)

MARGINS <- c(2.8, 0.3, 0.3, 0.3)
ROWS <- c(2, 3)

TernaryQuarts <- function(TREE=TREE, an='eq', zoom=1, padding=0.1) {

  clInitializeTernaryQuarts(zoom=zoom, padding=padding)

  clPlotQuartets(pch=PCH['brem'] , cex=2, clBremQuartets[an], TREE)
  clPlotQuartets(pch=PCH['bootF'], cex=2, clBootFreqQuartets[an], TREE)
  clPlotQuartets(pch=PCH['bootG'], cex=2, clBootGcQuartets[an], TREE)
  clPlotQuartets(pch=PCH['jackF'], cex=2, clJackFreqQuartets[an], TREE)
  clPlotQuartets(pch=PCH['jackG'], cex=2, clJackGcQuartets[an], TREE)

  clPlotQuartets(pch=PCH['mk'], clMkvQuartets, TREE, cex=2, col=COL['mk'])

  # Return:
  invisible()
}

TernaryAllQuarts <- function(an='eq', zoom=1, padding=0.1) {

  clInitializeTernaryQuarts(zoom=zoom, padding=padding)

  clPlotTheseAverageQuartets(pch=PCH['brem'] , cex=2, col=COL[an],
                             clBremQuartets[[an]])
  clPlotTheseAverageQuartets(pch=PCH['bootF'], cex=2, col=COL[an],
                             clBootFreqQuartets[[an]])
  clPlotTheseAverageQuartets(pch=PCH['bootG'], cex=2, col=COL[an],
                             clBootGcQuartets[[an]])
  clPlotTheseAverageQuartets(pch=PCH['jackF'], cex=2, col=COL[an],
                             clJackFreqQuartets[[an]])
  clPlotTheseAverageQuartets(pch=PCH['jackG'], cex=2, col=COL[an],
                             clJackGcQuartets[[an]])

  clPlotTheseAverageQuartets(pch=PCH['mk'], clMkvQuartets, cex=2, col=COL['mk'])

  # Return:
  invisible()
}


TernaryParts<-function(TREE=TREE, an='eq') {

  clInitializeTernarySplits()
  title(main="\nPartitions", cex.main=0.8)

  HorizontalGrid(19)

  clPlotSplits(pch=PCH['brem'] , cex=2, col=COL[an], clBremPartitions[[an]], TREE)
  clPlotSplits(pch=PCH['bootF'], cex=2, col=COL[an], clBootGcPartitions[[an]], TREE)
  clPlotSplits(pch=PCH['bootG'], cex=2, col=COL[an], clBootFreqPartitions[[an]], TREE)
  clPlotSplits(pch=PCH['jackF'], cex=2, col=COL[an], clJackGcPartitions[[an]], TREE)
  clPlotSplits(pch=PCH['jackG'], cex=2, col=COL[an], clJackFreqPartitions[[an]], TREE)

  clPlotSplits(pch=PCH['mk'], cex=2, clMkvPartitions, TREE, col=COL['mk'])

  # Return:
  invisible()
}

TernaryAllParts<-function(an='eq') {

  clInitializeTernarySplits()
  title(main="\nPartitions", cex.main=0.8)

  HorizontalGrid(19)

  clPlotTheseAverageSplits(pch=PCH['brem'] , col=COL[an], cex=2,
                           clBremPartitions[[an]])
  clPlotTheseAverageSplits(pch=PCH['bootF'], col=COL[an], cex=2,
                           clBootGcPartitions[[an]])
  clPlotTheseAverageSplits(pch=PCH['bootG'], col=COL[an], cex=2,
                           clBootFreqPartitions[[an]])
  clPlotTheseAverageSplits(pch=PCH['jackF'], col=COL[an], cex=2,
                           clJackGcPartitions[[an]])
  clPlotTheseAverageSplits(pch=PCH['jackG'], col=COL[an], cex=2,
                           clJackFreqPartitions[[an]])

  clPlotTheseAverageSplits(pch=PCH['mk'], cex=2, clMkvPartitions, col=COL['mk'])

  # Return:
  invisible()
}

AddLegend <- function(pos='bottomright', an='eq') {
  legend(pos, cex=0.8, bty='n',
         lty=1,
         pch=PCH[c('mk', 'brem', 'bootF', 'bootG', 'jackF', 'jackG')], pt.cex=1.2,
         col=c(COL['mk'], rep(COL[an], 5)),
         legend=c('Markov', 'Bremer', 'BootFreq', 'Boot GC', 'Jack Freq', 'Jack GC')
   )
}

CompareNodeSupports <- function (i) { 
  x <- Sys.setlocale("LC_ALL", "C") # allows PCH=183

  TernaryQuarts(TREE=i, an='eq')
  title(main=paste0("\nQuartets"), cex.main=0.8)
  arrows(sqrt(3/4) * 0.5, 0.5, sqrt(3/4) * 0.8, 0.5, length=0.1)
  text  (sqrt(3/4) * 0.65, 0.5, pos=3, 'Decreasing resolution', cex=0.8)

  arrows(sqrt(3/4) * 0.98, 0.40, sqrt(3/4) * 0.98, 0.20, length=0.1)
  text  (sqrt(3/4) * 1.01, 0.30, pos=3, 'Increasing divergence', cex=0.8, srt=270)

  TernaryQuarts(TREE=i, an='eq', zoom=3, padding=0.01)
  title(main=paste0("\nDataset ", i, ": CI=",round(clCI[i], 2), ". Equal weights"), cex.main=1.2)

  TernaryParts(TREE=i, an='eq')

  arrows(sqrt(3/4) * 0.98, 0.40, sqrt(3/4) * 0.98, 0.20, length=0.1)
  text  (sqrt(3/4) * 1.01, 0.30, pos=3, 'Increasing RF distance', cex=0.8, srt=270)

  AddLegend(an='eq')

  TernaryQuarts(TREE=i, an='k3')
  title(main=paste0("\nQuartets"), cex.main=0.8)
  arrows(sqrt(3/4) * 0.5, 0.5, sqrt(3/4) * 0.8, 0.5, length=0.1)
  text  (sqrt(3/4) * 0.65, 0.5, pos=3, 'Decreasing resolution', cex=0.8)

  arrows(sqrt(3/4) * 0.98, 0.40, sqrt(3/4) * 0.98, 0.20, length=0.1)
  text  (sqrt(3/4) * 1.01, 0.30, pos=3, 'Increasing divergence', cex=0.8, srt=270)

  TernaryQuarts(TREE=i, an='k3', zoom=3, padding=0.01)
  title(main="\nImplied weights (k = 3)", cex.main=1.2)
  TernaryParts(TREE=i, an='k3')

  arrows(sqrt(3/4) * 0.98, 0.40, sqrt(3/4) * 0.98, 0.20, length=0.1)
  text  (sqrt(3/4) * 1.01, 0.30, pos=3, 'Increasing RF distance', cex=0.8, srt=270)

  AddLegend(an='k3')
}

Summary

```{R Averages, echo=FALSE, fig.width=9, fig.height=6} par(mfrow=c(2, ROWS[2]), mar=MARGINS) TernaryAllQuarts(an='eq') title(main=paste0("\nQuartets"), cex.main=0.8) arrows(sqrt(3/4) * 0.5, 0.5, sqrt(3/4) * 0.8, 0.5, length=0.1) text (sqrt(3/4) * 0.65, 0.5, pos=3, 'Decreasing resolution', cex=0.8)

arrows(sqrt(3/4) * 0.98, 0.40, sqrt(3/4) * 0.98, 0.20, length=0.1) text (sqrt(3/4) * 1.01, 0.30, pos=3, 'Increasing divergence', cex=0.8, srt=270)

TernaryAllQuarts(an='eq', zoom=3, padding=0.01) title(main="\nAll datasets (averaged). Equal weights.", cex.main=1.2)

TernaryAllParts(an='eq')

arrows(sqrt(3/4) * 0.98, 0.40, sqrt(3/4) * 0.98, 0.20, length=0.1) text (sqrt(3/4) * 1.01, 0.30, pos=3, 'Increasing RF distance', cex=0.8, srt=270)

AddLegend(an='eq')

TernaryAllQuarts(an='k3') title(main=paste0("\nQuartets"), cex.main=0.8) arrows(sqrt(3/4) * 0.5, 0.5, sqrt(3/4) * 0.8, 0.5, length=0.1) text (sqrt(3/4) * 0.65, 0.5, pos=3, 'Decreasing resolution', cex=0.8)

arrows(sqrt(3/4) * 0.98, 0.40, sqrt(3/4) * 0.98, 0.20, length=0.1) text (sqrt(3/4) * 1.01, 0.30, pos=3, 'Increasing divergence', cex=0.8, srt=270)

TernaryAllQuarts(an='k3', zoom=3, padding=0.01)

title(main="\nImplied weights (k = 3)", cex.main=1.2) TernaryAllParts(an='k3')

arrows(sqrt(3/4) * 0.98, 0.40, sqrt(3/4) * 0.98, 0.20, length=0.1) text (sqrt(3/4) * 1.01, 0.30, pos=3, 'Increasing RF distance', cex=0.8, srt=270)

AddLegend(an='k3')

Though the Bootstrap GC metric systematically produces the lowest normalized tree
distances (SD/MaxI), it is not significantly better than other methods.
The following table reports P values that fail to reject the null hypothesis
that the specified node support metric is equally good at ascribing incorrect
nodes the lowest support values.

```{R compare-best, results='asis', echo=FALSE}
if (requireNamespace('Quartet', quietly = TRUE)) {
  TreeBests <- function (dataset) vapply(dataset, function (item) 
    apply(apply(item, 1, function (x)
      Quartet::QuartetDivergence(t(x))), 1, max), double(dim(dataset[[1]])[3]))

  treeBests <- vapply(list(clBootGcQuartets, clBootFreqQuartets,
                           clJackGcQuartets, clJackFreqQuartets, clBremQuartets),
                      TreeBests, 
                      matrix(0, nrow=dim(clBootGcQuartets[[1]])[3],
                             ncol=length(clBootGcQuartets))
                      )



  tests <- apply(treeBests, 2, function (slice)
    apply(slice, 2, function (column) t.test(column, slice[, 1])$p.value))

  rownames(tests) <- c( 'Bootstrap GC', 'Bootstrap Freq',
                        'Jackknife GC', 'Jackknife Freq', 'Bremer')
  knitr::kable(tests)
} else {
  message("Package 'Quartet' is not available; cannot display table.")
}

Trees 1--10

```{R, echo=FALSE, fig.width=9, fig.height=6} par(mfrow=ROWS, mar=MARGINS); x <- CompareNodeSupports(1)

```{R, echo=FALSE, fig.width=9, fig.height=6}
par(mfrow=ROWS, mar=MARGINS); x <- CompareNodeSupports(2)

```{R, echo=FALSE, fig.width=9, fig.height=6} par(mfrow=ROWS, mar=MARGINS); x <- CompareNodeSupports(3)

```{R, echo=FALSE, fig.width=9, fig.height=6}
par(mfrow=ROWS, mar=MARGINS); x <- CompareNodeSupports(4)

```{R, echo=FALSE, fig.width=9, fig.height=6} par(mfrow=ROWS, mar=MARGINS); x <- CompareNodeSupports(5)

```{R, echo=FALSE, fig.width=9, fig.height=6}
par(mfrow=ROWS, mar=MARGINS); x <- CompareNodeSupports(6)

```{R, echo=FALSE, fig.width=9, fig.height=6} par(mfrow=ROWS, mar=MARGINS); x <- CompareNodeSupports(7)

```{R, echo=FALSE, fig.width=9, fig.height=6}
par(mfrow=ROWS, mar=MARGINS); x <- CompareNodeSupports(8)

```{R, echo=FALSE, fig.width=9, fig.height=6} par(mfrow=ROWS, mar=MARGINS); x <- CompareNodeSupports(9)

```{R, echo=FALSE, fig.width=9, fig.height=6}
par(mfrow=ROWS, mar=MARGINS); x <- CompareNodeSupports(10)

Trees 11--20

```{R, echo=FALSE, fig.width=9, fig.height=6} par(mfrow=ROWS, mar=MARGINS); x <- CompareNodeSupports(11)

```{R, echo=FALSE, fig.width=9, fig.height=6}
par(mfrow=ROWS, mar=MARGINS); x <- CompareNodeSupports(12)

```{R, echo=FALSE, fig.width=9, fig.height=6} par(mfrow=ROWS, mar=MARGINS); x <- CompareNodeSupports(13)

```{R, echo=FALSE, fig.width=9, fig.height=6}
par(mfrow=ROWS, mar=MARGINS); x <- CompareNodeSupports(14)

```{R, echo=FALSE, fig.width=9, fig.height=6} par(mfrow=ROWS, mar=MARGINS); x <- CompareNodeSupports(15)

```{R, echo=FALSE, fig.width=9, fig.height=6}
par(mfrow=ROWS, mar=MARGINS); x <- CompareNodeSupports(16)

```{R, echo=FALSE, fig.width=9, fig.height=6} par(mfrow=ROWS, mar=MARGINS); x <- CompareNodeSupports(17)

```{R, echo=FALSE, fig.width=9, fig.height=6}
par(mfrow=ROWS, mar=MARGINS); x <- CompareNodeSupports(18)

```{R, echo=FALSE, fig.width=9, fig.height=6} par(mfrow=ROWS, mar=MARGINS); x <- CompareNodeSupports(19)

```{R, echo=FALSE, fig.width=9, fig.height=6}
par(mfrow=ROWS, mar=MARGINS); x <- CompareNodeSupports(20)

Trees 21--30

```{R, echo=FALSE, fig.width=9, fig.height=6} par(mfrow=ROWS, mar=MARGINS); x <- CompareNodeSupports(21)

```{R, echo=FALSE, fig.width=9, fig.height=6}
par(mfrow=ROWS, mar=MARGINS); x <- CompareNodeSupports(22)

```{R, echo=FALSE, fig.width=9, fig.height=6} par(mfrow=ROWS, mar=MARGINS); x <- CompareNodeSupports(23)

```{R, echo=FALSE, fig.width=9, fig.height=6}
par(mfrow=ROWS, mar=MARGINS); x <- CompareNodeSupports(24)

```{R, echo=FALSE, fig.width=9, fig.height=6} par(mfrow=ROWS, mar=MARGINS); x <- CompareNodeSupports(25)

```{R, echo=FALSE, fig.width=9, fig.height=6}
par(mfrow=ROWS, mar=MARGINS); x <- CompareNodeSupports(26)

```{R, echo=FALSE, fig.width=9, fig.height=6} par(mfrow=ROWS, mar=MARGINS); x <- CompareNodeSupports(27)

```{R, echo=FALSE, fig.width=9, fig.height=6}
par(mfrow=ROWS, mar=MARGINS); x <- CompareNodeSupports(28)

```{R, echo=FALSE, fig.width=9, fig.height=6} par(mfrow=ROWS, mar=MARGINS); x <- CompareNodeSupports(29)

```{R, echo=FALSE, fig.width=9, fig.height=6}
par(mfrow=ROWS, mar=MARGINS); x <- CompareNodeSupports(30)

Trees 31--40

```{R, echo=FALSE, fig.width=9, fig.height=6} par(mfrow=ROWS, mar=MARGINS); x <- CompareNodeSupports(31)

```{R, echo=FALSE, fig.width=9, fig.height=6}
par(mfrow=ROWS, mar=MARGINS); x <- CompareNodeSupports(32)

```{R, echo=FALSE, fig.width=9, fig.height=6} par(mfrow=ROWS, mar=MARGINS); x <- CompareNodeSupports(33)

```{R, echo=FALSE, fig.width=9, fig.height=6}
par(mfrow=ROWS, mar=MARGINS); x <- CompareNodeSupports(34)

```{R, echo=FALSE, fig.width=9, fig.height=6} par(mfrow=ROWS, mar=MARGINS); x <- CompareNodeSupports(35)

```{R, echo=FALSE, fig.width=9, fig.height=6}
par(mfrow=ROWS, mar=MARGINS); x <- CompareNodeSupports(36)

```{R, echo=FALSE, fig.width=9, fig.height=6} par(mfrow=ROWS, mar=MARGINS); x <- CompareNodeSupports(37)

```{R, echo=FALSE, fig.width=9, fig.height=6}
par(mfrow=ROWS, mar=MARGINS); x <- CompareNodeSupports(38)

```{R, echo=FALSE, fig.width=9, fig.height=6} par(mfrow=ROWS, mar=MARGINS); x <- CompareNodeSupports(39)

```{R, echo=FALSE, fig.width=9, fig.height=6}
par(mfrow=ROWS, mar=MARGINS); x <- CompareNodeSupports(40)

Trees 41--50

```{R, echo=FALSE, fig.width=9, fig.height=6} par(mfrow=ROWS, mar=MARGINS); x <- CompareNodeSupports(41)

```{R, echo=FALSE, fig.width=9, fig.height=6}
par(mfrow=ROWS, mar=MARGINS); x <- CompareNodeSupports(42)

```{R, echo=FALSE, fig.width=9, fig.height=6} par(mfrow=ROWS, mar=MARGINS); x <- CompareNodeSupports(43)

```{R, echo=FALSE, fig.width=9, fig.height=6}
par(mfrow=ROWS, mar=MARGINS); x <- CompareNodeSupports(44)

```{R, echo=FALSE, fig.width=9, fig.height=6} par(mfrow=ROWS, mar=MARGINS); x <- CompareNodeSupports(45)

```{R, echo=FALSE, fig.width=9, fig.height=6}
par(mfrow=ROWS, mar=MARGINS); x <- CompareNodeSupports(46)

```{R, echo=FALSE, fig.width=9, fig.height=6} par(mfrow=ROWS, mar=MARGINS); x <- CompareNodeSupports(47)

```{R, echo=FALSE, fig.width=9, fig.height=6}
par(mfrow=ROWS, mar=MARGINS); x <- CompareNodeSupports(48)

```{R, echo=FALSE, fig.width=9, fig.height=6} par(mfrow=ROWS, mar=MARGINS); x <- CompareNodeSupports(49)

```{R, echo=FALSE, fig.width=9, fig.height=6}
par(mfrow=ROWS, mar=MARGINS); x <- CompareNodeSupports(50)

Trees 51--60

```{R, echo=FALSE, fig.width=9, fig.height=6} par(mfrow=ROWS, mar=MARGINS); x <- CompareNodeSupports(51)

```{R, echo=FALSE, fig.width=9, fig.height=6}
par(mfrow=ROWS, mar=MARGINS); x <- CompareNodeSupports(52)

```{R, echo=FALSE, fig.width=9, fig.height=6} par(mfrow=ROWS, mar=MARGINS); x <- CompareNodeSupports(53)

```{R, echo=FALSE, fig.width=9, fig.height=6}
par(mfrow=ROWS, mar=MARGINS); x <- CompareNodeSupports(54)

```{R, echo=FALSE, fig.width=9, fig.height=6} par(mfrow=ROWS, mar=MARGINS); x <- CompareNodeSupports(55)

```{R, echo=FALSE, fig.width=9, fig.height=6}
par(mfrow=ROWS, mar=MARGINS); x <- CompareNodeSupports(56)

```{R, echo=FALSE, fig.width=9, fig.height=6} par(mfrow=ROWS, mar=MARGINS); x <- CompareNodeSupports(57)

```{R, echo=FALSE, fig.width=9, fig.height=6}
par(mfrow=ROWS, mar=MARGINS); x <- CompareNodeSupports(58)

```{R, echo=FALSE, fig.width=9, fig.height=6} par(mfrow=ROWS, mar=MARGINS); x <- CompareNodeSupports(59)

```{R, echo=FALSE, fig.width=9, fig.height=6}
par(mfrow=ROWS, mar=MARGINS); x <- CompareNodeSupports(60)

Trees 61--70

```{R, echo=FALSE, fig.width=9, fig.height=6} par(mfrow=ROWS, mar=MARGINS); x <- CompareNodeSupports(61)

```{R, echo=FALSE, fig.width=9, fig.height=6}
par(mfrow=ROWS, mar=MARGINS); x <- CompareNodeSupports(62)

```{R, echo=FALSE, fig.width=9, fig.height=6} par(mfrow=ROWS, mar=MARGINS); x <- CompareNodeSupports(63)

```{R, echo=FALSE, fig.width=9, fig.height=6}
par(mfrow=ROWS, mar=MARGINS); x <- CompareNodeSupports(64)

```{R, echo=FALSE, fig.width=9, fig.height=6} par(mfrow=ROWS, mar=MARGINS); x <- CompareNodeSupports(65)

```{R, echo=FALSE, fig.width=9, fig.height=6}
par(mfrow=ROWS, mar=MARGINS); x <- CompareNodeSupports(66)

```{R, echo=FALSE, fig.width=9, fig.height=6} par(mfrow=ROWS, mar=MARGINS); x <- CompareNodeSupports(67)

```{R, echo=FALSE, fig.width=9, fig.height=6}
par(mfrow=ROWS, mar=MARGINS); x <- CompareNodeSupports(68)

```{R, echo=FALSE, fig.width=9, fig.height=6} par(mfrow=ROWS, mar=MARGINS); x <- CompareNodeSupports(69)

```{R, echo=FALSE, fig.width=9, fig.height=6}
par(mfrow=ROWS, mar=MARGINS); x <- CompareNodeSupports(70)

Trees 71--80

```{R, echo=FALSE, fig.width=9, fig.height=6} par(mfrow=ROWS, mar=MARGINS); x <- CompareNodeSupports(71)

```{R, echo=FALSE, fig.width=9, fig.height=6}
par(mfrow=ROWS, mar=MARGINS); x <- CompareNodeSupports(72)

```{R, echo=FALSE, fig.width=9, fig.height=6} par(mfrow=ROWS, mar=MARGINS); x <- CompareNodeSupports(73)

```{R, echo=FALSE, fig.width=9, fig.height=6}
par(mfrow=ROWS, mar=MARGINS); x <- CompareNodeSupports(74)

```{R, echo=FALSE, fig.width=9, fig.height=6} par(mfrow=ROWS, mar=MARGINS); x <- CompareNodeSupports(75)

```{R, echo=FALSE, fig.width=9, fig.height=6}
par(mfrow=ROWS, mar=MARGINS); x <- CompareNodeSupports(76)

```{R, echo=FALSE, fig.width=9, fig.height=6} par(mfrow=ROWS, mar=MARGINS); x <- CompareNodeSupports(77)

```{R, echo=FALSE, fig.width=9, fig.height=6}
par(mfrow=ROWS, mar=MARGINS); x <- CompareNodeSupports(78)

```{R, echo=FALSE, fig.width=9, fig.height=6} par(mfrow=ROWS, mar=MARGINS); x <- CompareNodeSupports(79)

```{R, echo=FALSE, fig.width=9, fig.height=6}
par(mfrow=ROWS, mar=MARGINS); x <- CompareNodeSupports(80)

Trees 81--90

```{R, echo=FALSE, fig.width=9, fig.height=6} par(mfrow=ROWS, mar=MARGINS); x <- CompareNodeSupports(81)

```{R, echo=FALSE, fig.width=9, fig.height=6}
par(mfrow=ROWS, mar=MARGINS); x <- CompareNodeSupports(82)

```{R, echo=FALSE, fig.width=9, fig.height=6} par(mfrow=ROWS, mar=MARGINS); x <- CompareNodeSupports(83)

```{R, echo=FALSE, fig.width=9, fig.height=6}
par(mfrow=ROWS, mar=MARGINS); x <- CompareNodeSupports(84)

```{R, echo=FALSE, fig.width=9, fig.height=6} par(mfrow=ROWS, mar=MARGINS); x <- CompareNodeSupports(85)

```{R, echo=FALSE, fig.width=9, fig.height=6}
par(mfrow=ROWS, mar=MARGINS); x <- CompareNodeSupports(86)

```{R, echo=FALSE, fig.width=9, fig.height=6} par(mfrow=ROWS, mar=MARGINS); x <- CompareNodeSupports(87)

```{R, echo=FALSE, fig.width=9, fig.height=6}
par(mfrow=ROWS, mar=MARGINS); x <- CompareNodeSupports(88)

```{R, echo=FALSE, fig.width=9, fig.height=6} par(mfrow=ROWS, mar=MARGINS); x <- CompareNodeSupports(89)

```{R, echo=FALSE, fig.width=9, fig.height=6}
par(mfrow=ROWS, mar=MARGINS); x <- CompareNodeSupports(90)

Trees 91--100

```{R, echo=FALSE, fig.width=9, fig.height=6} par(mfrow=ROWS, mar=MARGINS); x <- CompareNodeSupports(91)

```{R, echo=FALSE, fig.width=9, fig.height=6}
par(mfrow=ROWS, mar=MARGINS); x <- CompareNodeSupports(92)

```{R, echo=FALSE, fig.width=9, fig.height=6} par(mfrow=ROWS, mar=MARGINS); x <- CompareNodeSupports(93)

```{R, echo=FALSE, fig.width=9, fig.height=6}
par(mfrow=ROWS, mar=MARGINS); x <- CompareNodeSupports(94)

```{R, echo=FALSE, fig.width=9, fig.height=6} par(mfrow=ROWS, mar=MARGINS); x <- CompareNodeSupports(95)

```{R, echo=FALSE, fig.width=9, fig.height=6}
par(mfrow=ROWS, mar=MARGINS); x <- CompareNodeSupports(96)

```{R, echo=FALSE, fig.width=9, fig.height=6} par(mfrow=ROWS, mar=MARGINS); x <- CompareNodeSupports(97)

```{R, echo=FALSE, fig.width=9, fig.height=6}
par(mfrow=ROWS, mar=MARGINS); x <- CompareNodeSupports(98)

```{R, echo=FALSE, fig.width=9, fig.height=6} par(mfrow=ROWS, mar=MARGINS); x <- CompareNodeSupports(99)

```{R, echo=FALSE, fig.width=9, fig.height=6}
par(mfrow=ROWS, mar=MARGINS); x <- CompareNodeSupports(100)

References



Try the CongreveLamsdell2016 package in your browser

Any scripts or data that you put into this service are public.

CongreveLamsdell2016 documentation built on Jan. 7, 2020, 5:07 p.m.