这是我正在使用的数据集:
df<-read.table(header=T,text="
group, test1
2, 8212
2, 10025
2, 7054
2, 9462
2, 9875
2, 8403
2, 9566
2, 7276
2 , 9488
2, 9515
2, 11322
2, 10037
2, 9885
2, 10090
2, 9013
2 , 8682
2, 10356
2 , 9545
2 , 9646
2, 9186
2 , 8464
2, 8870
2, 9095
2, 8301
2, 10961
2, 11102
2, 9710
2, 10343
2, 10828
2 , 7371
2 ,8125
2 , 8047
2 , 9028
2 , 8149
2, 9974
2, 10255
2, 9583
2, 8423
2, 9089
1, 10915
1, 9820
1, 9809
1, 9071
1, 10610
1, 9258
1, 9047
1 , 7444
1, 10250
1 , 9538
1 ,10107
1 ,10080
1 , 9189
1 ,10319
1 , 8108
1 ,10891
1 , 7471
1 ,11864
1 ,10653
1 , 9322
1, 9609
1, 8982
1, 9962
1, 10013
1, 9832
1, 10270
1, 8882
1, 8035
1, 9103
1, 10103
1, 11999
1, 7265
1, 9457
1, 9049
1, 9166
1, 9701
1, 9465
1, 10298
1, 8404
1, 11771
1, 10249
1, 9036
1, 8056
1, 9356
1 9827")
我需要做两件事。我首先需要确定test1 BY组(2,1)存在多少离群值。
使用以下功能,发现两组中有5个离群值:
outlier <- function(x, SD = 2){
mu <- mean(x)
sigma <- sd(x)
out <- x < mu - SD*sigma | x > mu + SD*sigma
out
}
with(df, ave(test1, group, FUN = outlier)) # 5 outliers
然后我使用以下方法对这些离群值进行了分类处理:
library(robustHD)
df.wins= df%>% group_by(group) %>% mutate(measure_winsorized.test1 = winsorize(test1))
唯一的问题是当我查看多少个值被Winzorized(10)与最初的离群值(5)时,两者并不相同。应该对相同数量的离群值进行温和
代码不正确吗?还是我误会了我的所作所为?