首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >将Dunnett检验中的P值按变量提取到表中

将Dunnett检验中的P值按变量提取到表中
EN

Stack Overflow用户
提问于 2018-01-23 17:50:59
回答 1查看 661关注 0票数 4

我有一个25列的名单,我正在测试组(4级)通过一个邓尼特测试。我能够使用sapply函数使Dunnett按组处理所有列,并且在将p值拖到表中时遇到了一些困难。下面是我试图使用虹膜数据集做的一个例子。

代码语言:javascript
复制
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中提取。我想创建一个这样的桌子:

代码语言:javascript
复制
                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值提取到一个表中?

我在寻找答案时遇到了一些困难。如果有人有什么建议会很感激的话。我不期望任何代码,只是一些想法,以帮助照亮我的情况。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-01-23 18:13:26

在使用test$pvalues将模型保存在list中之后,我们需要提取lapply

代码语言:javascript
复制
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”的方法

代码语言:javascript
复制
t(sapply(dunnet_model_iris["test",], `[[`, "pvalues"))
票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/48407931

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档