java离群值,R从数据框中按组别移除离群值

离群值(outlier)通常被定义为小于 QL - l.5 IQR 或者 大于 Qu + 1.5 IQR的值,QL称为下四分位数, Qu称为上四分位数,IQR称为四分位数间距,是Qu上四分位数和QL下四分位数之差,其间包括了全部观察值的一半。

1.方法一:

定义功能剔除离群值remove_outliers 

qnt 

y[x <= (qnt[1] - H)] 

y[x >= (qnt[2] + H)] 

y

}

制造数据框element 

value 

df 

head(df)ggplot(df, aes(x=element, y=value,color=element)) +

geom_boxplot(outlier.colour="red", outlier.shape=7,outlier.size=1) + #指出离群值

theme_bw() +

theme(legend.position="right")+

labs(title="",x="", y = "")

[图片上传失败...(image-de44df-1545189767525)]

由图可以看出确实有很多离群值

测试下分组剔除离群值df2 %

group_by(element) %>%

mutate(value = remove_outliers(value))

head(df2)df2 

geom_boxplot(outlier.colour="red", outlier.shape=7,outlier.size=1) + #指出离群值

theme_bw() +

theme(legend.position="right")+

labs(title="",x="", y = "")

[图片上传失败...(image-33a23-1545189767526)]

由图可以看出已经移除了大部分的离群值。

2.方法二element 

value 

df 

means.without.ols 

mean(x[!(abs(x - median(x)) > 2*sd(x))])

})

df1 = df %>%

group_by(element) %>%

summarise_each(funs(mean), value)

means.without.ols

df1element 

value 

df 

means.without.ols 

mean(x[!(abs(x - median(x)) > 2*sd(x))])

})# df1 = df %>%#   group_by(element) %>%#   filter(!(abs(value - median(value)) > 2*sd(value))) %>%#   summarise_each(funs(mean), value)means.without.ols

作者:LeoinUSA

链接:https://www.jianshu.com/p/80848dfb0ec8

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值