【问题标题】:Extract P-Values from Dunnett Test into a Table by Variable将 Dunnett 检验中的 P 值按变量提取到表中
【发布时间】:2018-01-23 17:50:59
【问题描述】:

我有一个包含 25 列的列表,我通过 Dunnett 测试按组(4 个级别)测试这些列。我能够使用 sapply 函数让 Dunnett 按组为所有列工作,并且在将 p 值拉入表时遇到了一些麻烦。下面是我尝试使用 iris 数据集的示例。

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

我可以通过 dunnet_model[[10]]$pvalues 获取每列的 p 值(每列相隔 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

问题:如何将每一列的所有 Dunnett 比较 P 值提取到一个表中?

我在寻找答案时遇到了一些麻烦。如果有人有一些建议,将不胜感激。我不期待任何代码,只是一些有助于阐明我的情况的想法。

【问题讨论】:

  • 如果您一直使用“Dunnett”的拼写,您可能难以搜索。您应该更正标题和问题正文中的所有实例。

标签: r extract extraction


【解决方案1】:

我们需要在将模型保存在listlapply之后提取test$pvalues

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"))

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-01-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-06-26
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多