【发布时间】:2021-03-08 13:38:26
【问题描述】:
我使用常规的“箱线图”功能来检查我的数据是否存在极值。对于项目中的演示,然后我使用包 ggpubr(它基于 ggplot2)创建了相同的箱线图。
据我所知,胡须应该代表两个印迹中的相同区域。令我惊讶的是,ggpubr boxplot 中出现了一个极值,而 r-boxplot 中没有显示。
代码 R-Boxplot:
boxplot(data$vtrust_post1, data$vtrust_post2)
代码 Ggpubr:
vtrust_a_b_long %>%
ggboxplot(x = "drive", y = "count", bxp.errorbar = TRUE)
对于 ggpubr,我必须将数据转换为长格式:
vtrust_a_b <- data.frame("subject_no" = data$id, "a" = data$vtrust_post1, "b" = data$vtrust_post2)
vtrust_a_b_long <- vtrust_a_b %>%
gather(key = "drive", value = "count", a, b)
我做错了吗?两个数据包含相同的最大值。会不会是 r-boxplot 和 ggpubr/ggplot2 对极值的定义不同?
非常感谢您的帮助!
更新:重现问题的代码
使用此代码表示仅适用于 ggpubr 版本的极值。
a <- c(1.50, 3.50, 1.50, 3.00, 1.25, 5.25, 2.50, 2.50, 1.50, 2.25, 1.75, 2.25, 2.25, 2.25, 4.50, 2.25, 3.25, 1.25, 2.50, 2.75, 1.75, 4.25, 2.75, 2.00,
1.75, 3.50, 3.25, 3.00, 1.25, 1.25, 3.75, 1.50, 1.75, 2.25, 1.25, 2.00, 1.50, 3.50, 1.75, 3.25)
boxplot(a)
ggpubr::ggboxplot(a)
更新 2 由于提示,它可能是由 R 中的本地设置引起的,我在https://rdrr.io/snippets/ 尝试了代码。再次出现差异:
【问题讨论】:
-
Base R 的箱线图应该在 1.5 x IQR 处捕获异常值,但看起来不是。您可以尝试通过将 range=1.5 设置为箱线图参数来强制它,以查看它是否有所作为。如果其范围设置为零,则须线将扩展到数据极值。没有您的数据很难检查。
-
建议在新会话中启动 R。您可能在不知情的情况下更改了某些全局设置。请参阅答案中的代码以证明缺乏可重复性。
-
您可能应该包含数据,以便人们可以重现您的问题。没有数据,代码将无法工作。
-
感谢您的帮助!我都试过了,但没有任何改变。我添加了一个新代码以将问题重现到原始帖子中。
标签: r ggplot2 statistics boxplot ggpubr