Извлечение P-значений из теста Даннета в таблицу по переменной

У меня есть список из 25 столбцов, которые я тестирую по группам (4 уровня) с помощью теста Даннета. Я смог использовать функцию sapply, чтобы заставить Dunnett работать для всех столбцов по группам, и у меня возникли проблемы с переносом p-значений в таблицу. Ниже приведен пример того, что я пытаюсь сделать, используя набор данных радужной оболочки.

iris <- iris

iris$group <- ifelse(iris$Species =='setosa', 1,
               ifelse(iris$Species =='versicolor', 2,
               ifelse(iris$Species =='virginica', 3,
               0)))

iris$group <- as.factor(iris$group)
summary(glht(aov(Sepal.Length ~ group, iris), linfct=mcp(group="Dunnett" )))
test

iris$Species

dunnet_model_iris <- sapply(iris[-c(5,6)], function(y, f) summary(glht(aov(y ~ f, iris), linfct=mcp(f="Dunnett"))), f = iris$Species)

names(dunnet_model_iris[[10]]$pvalues)

p_value <- dunnet_model[[10]]$pvalues
p_value

Я могу получить p-значения для каждого столбца через dunnet_model[[10]]$pvalues ​​(каждый столбец находится на расстоянии 10 строк друг от друга (например: второй столбец будет dunnet_model[[20]]$pvalues). Всего , в моем наборе данных 25 столбцов, поэтому я бы выбрал от 10 до 250. Я хотел бы создать такую ​​​​таблицу:

                2-1       3-1
Sepal.Length  1.44E-15  2.22E-16
Sepal.Width   1.44E-15  2.22E-16
Petal.Length  1.44E-15  2.22E-16

Вопрос. Как вывести все P-значения Dunnett Comparison для каждого столбца в одну таблицу?

У меня возникли проблемы с поиском ответа. Если у кого-то есть предложения, которые будут очень признательны. Я не ожидаю никакого кода, просто несколько идей, которые помогут пролить свет на мою ситуацию.


person daszlosek    schedule 23.01.2018    source источник
comment
У вас могут возникнуть трудности с поиском, если вы использовали это написание Dunnett. Вы должны исправить все экземпляры в вашем заголовке и теле вопроса.   -  person IRTFM    schedule 23.01.2018


Ответы (1)


Нам нужно извлечь test$pvalues после сохранения модели в list с lapply

library(multcomp)
dunnet_model_iris <- lapply(iris[-c(5,6)], function(y, f) 
      summary(glht(aov(y ~ f, iris), linfct=mcp(f="Dunnett"))), f = iris$Species)
t(sapply(dunnet_model_iris, function(x) x$test$pvalues))
#                      [,1]         [,2]
#Sepal.Length  1.443290e-15 2.220446e-16
#Sepal.Width   5.551115e-16 9.074667e-10
#Petal.Length  1.110223e-16 2.220446e-16
#Petal.Width  -2.220446e-16 1.110223e-16

Или используя метод OP для создания dunnet_model_iris.

t(sapply(dunnet_model_iris["test",], `[[`, "pvalues"))
person akrun    schedule 23.01.2018