4 votes

Extraire les valeurs P du test de Dunnett dans un tableau par variable

J'ai une liste de 25 colonnes que je teste par groupe (4 niveaux) au moyen d'un test de Dunnett. J'ai pu utiliser le sapply pour faire fonctionner la fonction Dunnett pour toutes les colonnes par groupe et j'ai quelques difficultés à faire apparaître les valeurs p dans un tableau. Vous trouverez ci-dessous un exemple de ce que j'essaie de faire en utilisant l'ensemble de données sur l'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

Je suis en mesure d'obtenir les valeurs p pour chaque colonne par le biais de dunnet_model[[10]]$pvalues (chaque colonne étant espacée de 10 lignes (par exemple : la deuxième colonne serait dunnet_model[[20]]$pvalues). Au total, mon ensemble de données comporte 25 colonnes, ce qui me permet d'extraire de 10 à 250 colonnes. Je voudrais créer un tableau comme celui-ci :

                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

Question : Comment puis-je extraire toutes les valeurs P de la comparaison de Dunnett pour chaque colonne dans un seul tableau ?

J'ai du mal à trouver la réponse. Si quelqu'un a des suggestions à faire, ce serait très apprécié. Je n'attends pas de code, juste quelques idées pour m'aider à faire la lumière sur ma situation.

3voto

akrun Points 148302

Nous devons extraire le test$pvalues après avoir conservé le modèle dans le list con 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

Ou en utilisant la méthode du PO pour créer le "dunnet_model_iris".

t(sapply(dunnet_model_iris["test",], `[[`, "pvalues"))

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X