gpt4 book ai didi

r - 用于配对 Wilcoxon 检验的带有 p 值的动画 fiddle /箱线图

转载 作者:行者123 更新时间:2023-12-01 12:37:06 25 4
gpt4 key购买 nike

我正在尝试为 R 中的配对 wilcox 测试添加 p 值。我正在使用以下代码。下面的代码为两种饮食(治疗)创建了结果读数(二头肌)的 fiddle (密度分布)。这些 fiddle 在时间 1、时间 2、时间 3 内动画。图表顶部打印 p 值。我希望这些 p 值是成对的值,这样

对于饮食“a”,将时间 2 的二头肌读数与时间 1 进行比较,将时间 3 的二头肌读数与时间 1 进行比较。

饮食“b”也是如此。因此,应该在时间 2 和时间 3 的 fiddle 顶部打印两个单独的 p 值。 指示饮食“a”和饮食“b”的配对测试(时间 2 与时间 1 和时间 3 与时间 1) .

这个测试的正确代码应该是什么?我根据昨天收到的建议在下面尝试了一些东西,但我遇到了错误。我还认为下面的代码只是对时间 2 与时间 1 以及时间 3 与时间 2 进行配对测试。这不是我想要的。

谢谢阅读。

 library(ggplot2)
library(ggpubr)
library(gganimate)
library(tidyverse)

示例数据
 structure(list(code = c(1L, 1L, 1L, 2L, 2L, 2L, 3L, 3L, 3L, 4L, 
4L, 4L, 5L, 5L, 5L, 6L, 6L, 6L, 7L, 7L, 7L, 8L, 8L, 8L), diet = c("a",
"a", "a", "b", "b", "b", "a", "a", "a", "b", "b", "b", "a", "a",
"a", "b", "b", "b", "a", "a", "a", "b", "b", "b"), time = c(1L,
2L, 3L, 1L, 2L, 3L, 1L, 2L, 3L, 1L, 2L, 3L, 1L, 2L, 3L, 1L, 2L,
3L, 1L, 2L, 3L, 1L, 2L, 3L), bicep = c(8L, 7L, 7L, 9L, 9L, 9L,
11L, 10L, 9L, 11L, 11L, 12L, 12L, 11L, 10L, 9L, 9L, 9L, 12L,
10L, 8L, 12L, 12L, 12L)), class = "data.frame", row.names = c(NA,
-24L))

示例代码
example3 %>%
group_by(time) %>%
mutate(p=pairwise.wilcox.test(example3$bicep, interaction(example3$diet, example3$time), p.adjust.method = "none")$p.value,
max=max(bicep, na.rm = T)) %>%
ggplot() +
geom_violin(aes(x=diet, y=bicep, fill=diet)) +
geom_text(data = . %>% distinct(p, max, time),
aes(x=1.5, y = max+.5, label=as.character(round(p,2))),
size=12) +
transition_time(time) +
ease_aes('linear')

这是我得到的错误
 Error in mutate_impl(.data, dots) : 
Column `p` must be length 8 (the group size) or one, not 25
In addition: There were 15 warnings (use warnings() to see them)

最佳答案

如果我理解你的问题,那么有很简单的解决方案。您收到此错误是因为 mutate 中的语法错误.无需使用 $ 调用值当您使用 mutate和管道 %>% :

此代码提供了一个带有轻微警告的所需动画:

example3 %>%
group_by(time) %>%
mutate(p=pairwise.wilcox.test(bicep, interaction(diet, time), p.adjust.method = "none")$p.value,
max=max(bicep, na.rm = T)) %>%
ggplot() +
geom_violin(aes(x=diet, y=bicep, fill=diet)) +
geom_text(data = . %>% distinct(p, max, time),
aes(x=1.5, y = max+.5, label=as.character(round(p,2))),
size=12) +
transition_time(time) +
ease_aes('linear')

enter image description here

更新

在独立 p 值的情况下,您只需要添加 facet_wrap() , 例如。这似乎是最简单的:
example3 %>%
group_by(time) %>%
mutate(p = pairwise.wilcox.test(bicep, interaction(diet, time), p.adjust.method = "none")$p.value,
max = max(bicep, na.rm = T)) %>%
ggplot() +
geom_violin(aes(x = diet, y = bicep, fill = diet)) +
geom_text(data = . %>% distinct(p, max, time),
aes(x = 1, y = max+.5, label = as.character(round(p,2))),
size = 12) +
facet_wrap(~diet, scales = "free_x") + # add facets
theme(legend.position = "none") +
transition_time(time) +
ease_aes('linear')

enter image description here

关于r - 用于配对 Wilcoxon 检验的带有 p 值的动画 fiddle /箱线图,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53398475/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com