Как мне подать заявку на цикл для статистики множественных сравнений с использованием ggpubr или rstatix в facet_wrap со свободными масштабами

#r #ggplot2 #ggpubr

#r #ggplot2 #ggpubr

Вопрос:

Я довольно новичок в программировании и обучаю себя R. Я попытался написать некоторый код для выполнения статистики множественных сравнений для графиков facet_wrap со свободными масштабами, но я не могу понять, как реализовать цикл for в фасете. В качестве альтернативы, я также пытался выполнить статистику с помощью пакета rstatix, но я не могу распечатать p-значения из t-тестов, вычисленных либо с помощью функции stat_compare_means из ggpubr, либо с помощью stat.test из rstatix, поскольку я изо всех сил пытался определить y_position для фасетов со свободными масштабами. Вот код, который я написал:

 library(tidyverse)
library(dplyr) 
library(ggplot2)
library(readxl)
library(scales)
library(stringr)
library(extrafont)
library(viridisLite)
#library(RColorBrewer)
library(ggpubr)
library(reshape2)
library(rstatix)
#library(plotly)
#library(ggpmisc)
LungExtracellularPanel <- read_excel("~/Box/Welm Labs Ubox/Pavitra Viswanath/Flow Cytometry/PVIMM-2 E0771 09-01-2020/Data Analysis/Lung 09-16-2020.xlsx")
df=as.data.frame(LungExtracellularPanel)
df$collection <- str_split_fixed(df$Sample, " ",2)[,1]
rdf <- melt(df,id.vars=c("Sample","collection"))

swr = function(string, nwrap=25) {
  paste(strwrap(string, width=nwrap), collapse="n")
}
swr = Vectorize(swr)
rdf$variable2=swr(rdf$variable)

stat.test <- rdf %>% 
  add_y_position(y="value", fun="max", scales="free", step.increase = 0.1)
group_by(variable2) %>%
t_test(value~collection)
stat.test

#stuff <- combn(unique(rdf$collection),2)
# a <- NULL
# my_comparisons = list()
# j = 0
# for(i in 1:dim(stuff)[2]){
#   a <- as.character(stuff[,i])
#   g1 = rdf[which(rdf$collection == a[1]),]$value
#   g2 = rdf[which(rdf$collection == a[2]),]$value
#   if(mean(g1, na.rm=T) != 0 || mean(g2,na.rm=T) != 0){
#     j = j   1
#     my_comparisons[[j]] <- c(a[1],a[2])
#   }    
# }

p <- ggplot(data = rdf, mapping = aes(x = variable2, y = value, fill =collection))
p <- p   geom_violin(alpha=0.3, scale="width", position = position_dodge(width=1), size=0.5, facet.by="variable2", scales="free")
p <- p   geom_boxplot(alpha=0.7, outlier.shape=NA, position = position_dodge(1), scales="free")
p <- p   geom_point(position = position_jitterdodge(jitter.width=0.1,jitter.height=0, dodge.width = 1))
#p <- p   geom_jitter(position=position_jitter(width=0.1,height=0))
p <- p   theme_bw()
p <- p   theme(axis.text.x = element_blank())
p <- p   scale_fill_viridis_d(option = "D")
p <- p   facet_wrap(~variable2, scales="free", ncol=6)
p <- p   scale_y_continuous(expand = expansion(mult = c(0.1, 0.14)))
p <- p   stat_compare_means(method = "anova", size=3, hjust=0.7, label.y.npc = 'top', family="Arial", fontface="bold") 
#p <- p   stat_pvalue_manual(stat.test, label="p") 
#p <- p   stat_compare_means(comparisons = my_comparisons, size=3, family= "Arial", face= "bold")
p <- p   labs(title="Spleen Extracellular Panel Analysis")
p <- p   ylab("% Live Cells")   xlab(" ")
p <- p   theme(text=element_text(family="Arial", face = "bold"))
p
  

Вот как выглядит график:

введите описание изображения здесь

Комментарии:

1. пожалуйста, предоставьте дополнительную информацию и пересмотрите свой вопрос, чтобы он был воспроизводимым, сосредоточив внимание на вашей проблеме и так on….it неясно, какую ценность вы имеете в виду… из какого теста и где вы хотите отобразить значения на графике.

2. Обновлено. Извините. Я попытался выполнить несколько t-тестов между группами, используя функцию stat_compare_means из ggpubr, а также попытался вычислить p-значения из t-тестов вручную с помощью rstatix, но я не могу добавить p-значения, поскольку я не могу определить y_position для фасетов свободного масштаба

3. ваши данные по-прежнему невозможно воспроизвести. Предоставьте только некоторые данные и код, точно показывающие вашу проблему. Нам действительно нужен этот список дополнительных пакетов?