首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >盒图缺少R中的一个离群点

盒图缺少R中的一个离群点
EN

Stack Overflow用户
提问于 2020-09-29 01:21:09
回答 2查看 212关注 0票数 0

我有以下数据:

代码语言:javascript
复制
d = c(58.33333, 58.33333, 56.66667, 45.00000, 60.00000, 70.00000, 61.66667, 51.66667, 58.33333, 71.66667, 50.00000, 63.33333)

这些数据的统计摘要如下:

代码语言:javascript
复制
Min.    1st Qu.  Median    Mean    3rd Qu.    Max. 
45.00   55.42    58.33     58.75   62.08      71.67

当我使用函数boxplot(d, range=1.5)对数据进行框式绘图时,我会得到以下内容:

根据我的计算,较低的晶须应该只延伸到55.42 - 1.5*(62.08-55.42) = 45.43。尽管如此,最小数据点(45)应该显示为一个离群点,但是图实际上将晶须向下延伸到这个最小值。这一切为什么要发生?是否有我不知道的四舍五入的程序,包括45进范围?比如与这两点有多近有关的东西(45.43和45)?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2020-09-29 01:41:23

这里的问题是,boxplot使用与summaryquantile不同的方法计算四分位数。来自?boxplot.stats

两个‘铰链’是第一个和第三个四分位数的版本,即接近分位数(x,c(1,3)/4)。铰链等于奇数n的四分位数(其中n <-长度(X)),偶数n的铰链等于四分位数。

示例:

代码语言:javascript
复制
boxplot.stats(d)$stats
[1] 45.00000 54.16667 58.33333 62.50000 71.66667

fivenum(d) # the same
[1] 45.00000 54.16667 58.33333 62.50000 71.66667

quantile(d) # different
      0%      25%      50%      75%     100% 
45.00000 55.41667 58.33333 62.08333 71.66667 

quantile指定方法(类型)以获得相同的结果:

代码语言:javascript
复制
quantile(d, type = 2)
      0%      25%      50%      75%     100% 
45.00000 54.16667 58.33333 62.50000 71.66667
票数 3
EN

Stack Overflow用户

发布于 2022-10-01 08:54:33

您可以获得一个更简单的盒形图,其中包括使用ggpubr的离群点,并检查该值是否确实是rstatix的异常值。在这里,我加载了这两个库。

代码语言:javascript
复制
#### Load Libraries ####
library(ggpubr)
library(rstatix)

然后,我用您的数据运行了一个简单的单命令盒图,其中的值显然是存在的:

代码语言:javascript
复制
#### Run Simple Box ####
ggboxplot(d) # runs boxplot

然后,我检查了它是否确实是一个离群点,然后进行了并行比较:

代码语言:javascript
复制
#### Check Outliers ####
    is_outlier(d) # checks if values are outliers
    d %>% 
      as.data.frame() %>% 
      mutate(Outlier = is_outlier(.)) # side-by-side look

第二个命令如下所示,现在您可以看到异常值所在的位置:

代码语言:javascript
复制
          . Outlier
1  58.33333   FALSE
2  58.33333   FALSE
3  56.66667   FALSE
4  45.00000    TRUE
5  60.00000   FALSE
6  70.00000   FALSE
7  61.66667   FALSE
8  51.66667   FALSE
9  58.33333   FALSE
10 71.66667   FALSE
11 50.00000   FALSE
12 63.33333   FALSE

当然,您也可以稍微美化一些东西,而且该框甚至可以与ggplot2函数兼容,而无需加载它们:

代码语言:javascript
复制
#### Run Prettier Boxplot ####
d %>% 
  ggboxplot(color = "darkred",
            title = "Boxplot With Single Outlier",
            xlab = "Variable",
            ylab = "Value",
            size = 1.5)+
  theme_bw()

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/64111598

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档