Как создать таблицу как вывод dunn.test (R)?

Я работаю с данными пиросеквенирования бактерий, и я делаю статистический анализ с R. У меня есть 21 образец и 7 различных обработок. Я загрузил свои данные в R phyloseq, получив:

> psR
phyloseq-class experiment-level object
otu_table()   OTU Table:         [ 7498 taxa and 21 samples ]
sample_data() Sample Data:       [ 21 samples by 8 sample variables ]
tax_table()   Taxonomy Table:    [ 7498 taxa by 6 taxonomic ranks ]
phy_tree()    Phylogenetic Tree: [ 7498 tips and 7497 internal nodes ]

Поскольку я обнаружил, что существуют статистически значимые различия между лечениями (с функцией адониса), я хотел знать, какие OTU имеют различное изобилие при разных методах лечения. Для этого я использовал функцию dunn.test (с включенным тестом Крускала-Уоллиса), меняя местами первые строки и столбцы в таблице OTU, чтобы применить тест:

swap_otu_table <- t(otu_table(psR))
treatment <- c('A', 'A', 'A', 'B', 'B', 'B', 'C', 'C', 'C', 'D', 'D', 'D', 'E', 'E', 'E', 'F', 'F', 'F', 'G', 'G', 'G')
swap_otu_tableDF <- as.data.frame(swap_otu_table)
ncol(swap_otu_tableDF)
[1] 7498
lapply(swap_otu_tableDF[1:7498], function(x) kruskal.test(x ~ treatment,   data=swap_otu_tableDF))

Вывод этой рекурсивной функции довольно сложно прочитать, особенно для всех 7498 OTU.

Есть ли какой-нибудь способ применить тест Крускала-Уоллиса + Данна рекурсивным способом, который дает таблицу в качестве выходных данных, предпочтительно в порядке значимости, причем не только с кодом OTU, но и с таксономической идентификацией, содержащейся в tax_table(psR)?

Большое спасибо!

Lidia

2 ответа

Это действительно старый, но я искал этот ответ и решил, что я опубликую в случае, если кто-то еще наткнется на это позже.

dunn.test имеет встроенную опцию для вывода вывода в виде списка. Это действительно все, что вам нужно, так как вы можете превратить это в data.frame и сортировать по столбцам.

Вот пример кода для этого:

table = dunn.test(X, g, list=TRUE)
table = cbind.data.frame(table$comparisons,table$Z,table$P.adjusted)
table[order(table$`table$P.adjusted`),]

Смотрите пакет dunn.test. Который имеет две разные опции для табличного вывода теста Данна после теста Крускала-Уоллиса. Начиная с версии 1.3.0 пакет также включает возможность вывода нескольких сравнений в виде списка.

Другие вопросы по тегам