Рассмотрим следующий набор данных:
fictional.df <- data.frame(L1 = c(0,0,0,0,0,0,0,0),
L2 = c(0,1,0,0,0,1,1,0),
L3 = c(1,1,0,1,1,1,1,1),
L4=c(0,0,1,1,0,0,0,0))
Я преобразовал это в объект phyDat
, а затем создал матрицу попарных расстояний следующим образом:
fictional.phydat <- as.phyDat(fictional.df,
type="USER",levels=c("1","0"),
names=names(fictional.df))
fictional.hamming <- dist.hamming(fictional.phydat)
Затем из этой матрицы расстояний я оценил дерево UPGMA:
fictional.upgma <- upgma(fictional.hamming)
Затем я создал наборы данных начальной загрузки:
set.seed(187)
fictional.upgma.bs <- bootstrap.phyDat(fictional.phydat, FUN =
function(xx) upgma(dist.hamming(xx)), bs=100)
Затем я рассчитал долю разделов в загрузочном наборе:
upgma.bs.part <- prop.part(fictional.upgma.bs)
Все идет нормально. Вот где я был бы признателен за помощь. Когда я вызываю функцию prop.clades
, я не понимаю результат:
prop.clades(fictional.upgma,fictional.upgma.bs)
[1] 100 NA 71
Почему эта функция возвращает NA
, когда в наборе деревьев начальной загрузки есть свидетельство этой клады?
Второй вопрос:
prop.clades(fictional.upgma,part=upgma.bs.part)
[1] 100 49 112
Если есть только 100 образцов начальной загрузки, почему значение для конечной клады 112
?