0
フォローアップthis question私は数日前に投稿しました。R ggplot2 - ファセットのペアごとにペアワイズテストを実行し、ggsignifでp値を表示します。
##############################
##MWE
library(ggplot2)
library(ggsignif)
set.seed(1)
alpha.subA <- data.frame(Sample.ID=paste(sample(LETTERS, 163, replace=TRUE), sample(1:1000, 163, replace=FALSE), sep=''),
Group=c(rep('C',10),rep('FH',10),rep('I',19),rep('IF',42),rep('NA',14),rep('NF',42),rep('NI',15),rep('NS',10),rep('PGMC4',1)),
Value=rnorm(n=163))
alpha.subA$DB <- "DATABASE1"
set.seed(2)
alpha.subB <- data.frame(Sample.ID=paste(sample(LETTERS, 163, replace=TRUE), sample(1:1000, 163, replace=FALSE), sep=''),
Group=c(rep('C',10),rep('FH',10),rep('I',19),rep('IF',42),rep('NA',14),rep('NF',42),rep('NI',15),rep('NS',10),rep('PGMC4',1)),
Value=rnorm(n=163))
alpha.subB$DB <- "DATABASE2"
alpha.sub <- rbind(alpha.subA, alpha.subB)
alpha.sub$DB <- as.factor(alpha.sub$DB)
alpha.sub$both <- factor(paste(alpha.sub$Group, alpha.sub$DB), levels=paste(rep(levels(alpha.sub$Group), each=length(levels(alpha.sub$DB))), rep(levels(alpha.sub$DB), length(levels(alpha.sub$Group)))))
png(filename="test.png", height=1000, width=2000)
print(#or ggsave()
ggplot(alpha.sub, aes(x=both, y=Value, fill=Group)) + geom_boxplot() +
facet_grid(~Group, scales="free", space="free_x") +
stat_summary(fun.y=mean, geom="point", shape=5, size=4)
# + geom_signif() ##HOW TO TEST EACH PAIR IN EACH FACET (DATABASE1 vs DATABASE2 PER GROUP)?
)
dev.off()
##############################
生成します:
が私はggsignifのgeom_signifの使用は()で(グループあたりのデータベース2に各ペアをDATABASE1を比較するためにしたいと思い、次のMWE考える
各ペアワイズ比較のための有意水準(p値については< 0.05、** p値については< 0.01)を示す。
ご協力いただければ幸いです。ありがとう!!
EDIT!
が生成
##MWE
library(ggplot2)
library(ggsignif)
library(tidyverse)
library(broom)
set.seed(1)
alpha.subA <- data.frame(Sample.ID=paste(sample(LETTERS, 163, replace=TRUE), sample(1:1000, 163, replace=FALSE), sep=''),
Group=c(rep('C',10),rep('FH',10),rep('I',19),rep('IF',42),rep('NA',14),rep('NF',42),rep('NI',15),rep('NS',10),rep('PGMC4',1)),
Value=rnorm(n=163, mean=2.3, sd=0.45))
alpha.subA$DB <- "DATABASE1"
alpha.subB <- data.frame(Sample.ID=paste(sample(LETTERS, 163, replace=TRUE), sample(1:1000, 163, replace=FALSE), sep=''),
Group=c(rep('C',10),rep('FH',10),rep('I',19),rep('IF',42),rep('NA',14),rep('NF',42),rep('NI',15),rep('NS',10),rep('PGMC4',1)),
Value=rnorm(n=163, mean=2, sd=0.5))
alpha.subB$DB <- "DATABASE2"
alpha.sub <- rbind(alpha.subA, alpha.subB)
alpha.sub$DB <- as.factor(alpha.sub$DB)
alpha.sub$both <- factor(paste(alpha.sub$Group, alpha.sub$DB), levels=paste(rep(levels(alpha.sub$Group), each=length(levels(alpha.sub$DB))), rep(levels(alpha.sub$DB), length(levels(alpha.sub$Group)))))
v1 <- grep("DATABASE1", levels(alpha.sub$both), val=TRUE)[-9]
v2 <- grep("DATABASE2", levels(alpha.sub$both), val=TRUE)[-9]
CNb <- mapply(c, v1, v2, SIMPLIFY=FALSE)
CNb <- unname(CNb)
pv <- tidy(with(alpha.sub[ alpha.sub$Group != "PGMC4", ], pairwise.wilcox.test(Value, both, p.adjust.method = "BH")))#ADJUSTED PVALUES
# data preparation
CNb2 <- do.call(rbind.data.frame, CNb)
colnames(CNb2) <- colnames(pv)[-3]
# subset the pvalues, by merging the CN list
pv.final <- merge(CNb2, pv, by.x = c("group2", "group1"), by.y = c("group1", "group2"))
# fix ordering
pv.final <- pv.final[order(pv.final$group1), ]
# set signif level
pv.final$map.signif <- ifelse(pv.final$p.value > 0.05, "", ifelse(pv.final$p.value > 0.01,"*", "**"))
# subset
gr <- pv.final$p.value <= 0.05
CNb[gr]
# the plot
png(filename="test.png", height=1000, width=2000)
print(#or ggsave()
ggplot(alpha.sub, aes(x=both, y=Value, fill=Group)) + geom_boxplot() +
#facet_grid(~Group, scales="free", space="free_x") +
stat_summary(fun.y=mean, geom="point", shape=5, size=4) +
geom_signif(comparisons=CNb[gr],
vjust=0.7,
annotation=pv.final$map.signif[gr],
textsize=10,
size=1)
)
dev.off()
私の新しいMWEを参照してください...すべてが崩れ、私は適切に有意水準を配置するために管理しているが、今は私がファセットを追加します。
上記のプロットはどのように再現できますか?最初のプロットではファセットを使用していますか?ありがとう!
こんにちはJimbou、私はようやく私の実際のデータの一部に、このソリューションを実装していると私は小さな問題を抱えています。私がpdf(file = "test.pdf")プロット(ggplot_gtable(myplot2))dev.off()を行うと何らかの理由でプロットの前に空白のページが表示されます...これを解決する方法がありますか?ありがとう! – DaniCee
ここに解決:https://stackoverflow.com/questions/46357387/r-ggplot2-blank-page-before-plot-with-pdf-and-ggplot-gtable-ggplot-build – DaniCee
こんにちは@ジンボウ、私はしようとしています似たようなことをしますが、今度は複数のグループを比較し、複数のファセットを組み合わせていきます。もしあなたが一見することができたら、私は感謝します!ありがとうございましたhttps://stackoverflow.com/questions/46446392/r-ggplot2-boxplots-with-significance-level-more-than-2-groups-kruskal-test-an – DaniCee