【发布时间】:2019-12-12 00:04:06
【问题描述】:
假设我正在处理比例,我有两个主要变量(sex 和 pain_level)。绘制它们并不难:
使用 tidyverse 和 broom(感谢此处提供此链接:Calling prop.test function in R with dplyr)我可以比较比例是否在统计上不同。
现在问题来了!
我想在情节中添加错误栏。我知道这并不像我想的那么难,但我找不到办法做到这一点。我试图在此处复制此链接(http://www.andrew.cmu.edu/user/achoulde/94842/labs/lab07_solution.html),但我试图留在 tidyverse 环境中。
请随意使用下面模拟原始数据集的脚本/语法。
library(tidyverse)
ds <- data.frame(sex = rep(c("M","F"), 18),
pain_level = c("High","Moderate","low"))
#plot
ds %>%
group_by(pain_level, sex) %>%
summarise(n=n()) %>%
mutate(prop = n/sum(n)*100) %>%
ggplot(., aes(x = sex, fill = pain_level, y = prop)) +
geom_bar(stat = "summary") +
facet_wrap( ~ pain_level) +
theme(legend.position = "none")
#p values of proportion test
ds %>%
rowwise %>%
group_by(pain_level, sex) %>%
summarise(cases = n()) %>%
mutate(pop = sum(cases)) %>% #compute totals
distinct(., pain_level, .keep_all= TRUE) %>% #keep only one value of the row
mutate(tst = list(broom::tidy(prop.test(cases, pop, conf.level=0.95)))) %>%
tidyr::unnest(tst)
【问题讨论】:
-
我无法让您的代码正常运行。
tipo是一个缺失的变量。通常,geom_errorbar()可以使用来自prop.tests 的ymin = conf.low和ymax = conf.high。 -
对不起,我的错。变量名是 pain_level(而不是 tipo)。您现在可以尝试模仿它吗?我试过 ymin 和 max 但没有成功。谢谢
标签: r ggplot2 tidyverse categorical-data broom