R语言 ggplot中是否可以自定义离群值计算公式?

hwazgwia  于 2023-01-10  发布在  其他
关注(0)|答案(2)|浏览(213)
mydata3<-data.frame(x=(c(1:10,20,100,120)))

mydata3%>%ggplot(aes(x=x))+
  geom_boxplot(
  )

ggplot?Quartile1- 1.5*IQR and Quartile3 +1.5*IQR中离群值的计算公式是什么?如果是,我可以手动更改此规则吗?

tcomlyy6

tcomlyy61#

这东西有用吗?

mydata3<-data.frame(x=(c(1:10,20,100,120)))

mydata3%>%ggplot(aes(x=x))+ stat_boxplot(coef = 5) +
  geom_boxplot()
dffbzjpn

dffbzjpn2#

是的,您对离群值的计算是正确的。来自文档:
下铰链和上铰链对应于第一四分位数和第三四分位数(第25和第75百分位数)。
以及
上须从铰链延伸到最大值,距离铰链不超过1.5 * IQR(其中IQR是四分位数间距,或第一四分位数和第三四分位数之间的距离)。下须从铰链延伸到最小值,最大为铰链的1.5 * IQR。
要改变触须和铰链的位置,我们可以在geom_boxplot中使用stat = "summary",并传递我们自己的summary函数,这个函数需要接受传递的值,并返回一个包含yminlowermiddleupperymax列的 Dataframe 。
在此示例中,我们将胡须尖端设置在第10和第90百分位数,将铰链设置在第40和第60百分位数,将中间线设置在第50百分位数:

mydata3 <- data.frame(x=(c(1:10,20,100,120)))

mydata3 %>% 
  ggplot(aes(y = 0, x = x)) +
  geom_boxplot(stat = "summary",
               fun.data = ~ data.frame(ymin   = quantile(.x, 0.1),
                                       lower  = quantile(.x, 0.4),
                                       middle = quantile(.x, 0.5),
                                       upper  = quantile(.x, 0.6),
                                       ymax   = quantile(.x, 0.9)),
               orientation = "y")

请注意,如果我们改变上述函数中的分位数,我们会得到不同的箱线图:

mydata3 %>% 
  ggplot(aes(y = 0, x = x)) +
  geom_boxplot(stat = "summary",
               fun.data = ~ data.frame(ymin   = quantile(.x, 0.05),
                                       lower  = quantile(.x, 0.1),
                                       middle = quantile(.x, 0.5),
                                       upper  = quantile(.x, 0.9),
                                       ymax   = quantile(.x, 0.95)),
               orientation = "y")

相关问题